onnxruntime 0.3.2 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0b017fa8896c64bbeeda0ba6582ca9bfa626de3f13023ec9f3f91000031e88b8
4
- data.tar.gz: 16344db9151ca3f388539e05772a7172129613f949dbff77d89bfb9c307d0de2
3
+ metadata.gz: b7d22851572b35128d1e2bbcc041b4989851e02354cace5389afc25855674b11
4
+ data.tar.gz: f1eee285e5dbff1fbf6de4e350560e3e386e1f4d26d53810f154cd16117e38e6
5
5
  SHA512:
6
- metadata.gz: 21011ae8d875230858ff148a27ff29caf005210aae6f6e6a347ed9a02dfb85bceac6714957718d3f17872f07f0ace21c3ba7d7ba8884c1dff4b79fd08b43e40b
7
- data.tar.gz: 000f4575890f92c2b1de308e052977f159ead243aef3984cd4190a5a873ecbe2868fe586fdbe14f2963f0518a75d8c4600d47ba2fbdd6a77c84cf3da1fc84292
6
+ metadata.gz: f89ba13181bfcc8cdf35356efae175d0e2c7a0787a13af8d46788645046f057bce466e28566c0f2982f52893dbb7cc1553a741b1ca4923066e90c0a5fb230edf
7
+ data.tar.gz: 3843b9c1e5a9432d3b72ebb33498aaef0fb6edf8942a9f0b6794bed36fb95df67290e6c4385e19927e5404510d89ad8965b15de0a96246b7f1770c4fb01216f6
@@ -1,3 +1,7 @@
1
+ ## 0.3.3 (2020-06-17)
2
+
3
+ - Fixed segmentation fault on exit on Linux
4
+
1
5
  ## 0.3.2 (2020-06-16)
2
6
 
3
7
  - Fixed error with FFI 1.13.0+
@@ -50,6 +50,7 @@ module OnnxRuntime
50
50
  else
51
51
  check_status api[:CreateSession].call(env.read_pointer, path_or_bytes, session_options.read_pointer, @session)
52
52
  end
53
+ ObjectSpace.define_finalizer(self, self.class.finalize(@session))
53
54
 
54
55
  # input info
55
56
  allocator = ::FFI::MemoryPointer.new(:pointer)
@@ -80,6 +81,8 @@ module OnnxRuntime
80
81
  check_status api[:SessionGetOutputTypeInfo].call(read_pointer, i, typeinfo)
81
82
  @outputs << {name: name_ptr.read_pointer.read_string}.merge(node_info(typeinfo))
82
83
  end
84
+ ensure
85
+ # release :SessionOptions, session_options
83
86
  end
84
87
 
85
88
  # TODO support logid
@@ -105,6 +108,13 @@ module OnnxRuntime
105
108
  output_names.size.times.map do |i|
106
109
  create_from_onnx_value(output_tensor[i].read_pointer)
107
110
  end
111
+ ensure
112
+ release :RunOptions, run_options
113
+ if input_tensor
114
+ input_feed.size.times do |i|
115
+ release :Value, input_tensor[i]
116
+ end
117
+ end
108
118
  end
109
119
 
110
120
  def modelmeta
@@ -133,7 +143,6 @@ module OnnxRuntime
133
143
  check_status api[:ModelMetadataGetGraphName].call(metadata.read_pointer, @allocator.read_pointer, graph_name)
134
144
  check_status api[:ModelMetadataGetProducerName].call(metadata.read_pointer, @allocator.read_pointer, producer_name)
135
145
  check_status api[:ModelMetadataGetVersion].call(metadata.read_pointer, version)
136
- api[:ReleaseModelMetadata].call(metadata.read_pointer)
137
146
 
138
147
  {
139
148
  custom_metadata_map: custom_metadata_map,
@@ -143,6 +152,8 @@ module OnnxRuntime
143
152
  producer_name: producer_name.read_pointer.read_string,
144
153
  version: version.read(:int64_t)
145
154
  }
155
+ ensure
156
+ release :ModelMetadata, metadata
146
157
  end
147
158
 
148
159
  def end_profiling
@@ -232,6 +243,8 @@ module OnnxRuntime
232
243
  output_tensor_size = api[:GetTensorShapeElementCount].call(typeinfo.read_pointer, out_size)
233
244
  output_tensor_size = read_size_t(out_size)
234
245
 
246
+ release :TensorTypeAndShapeInfo, typeinfo
247
+
235
248
  # TODO support more types
236
249
  type = FFI::TensorElementDataType[type]
237
250
  arr =
@@ -264,6 +277,7 @@ module OnnxRuntime
264
277
  check_status api[:GetValue].call(out_ptr, 1, @allocator.read_pointer, map_values)
265
278
  check_status api[:GetTensorTypeAndShape].call(map_keys.read_pointer, type_shape)
266
279
  check_status api[:GetTensorElementType].call(type_shape.read_pointer, elem_type)
280
+ release :TensorTypeAndShapeInfo, type_shape
267
281
 
268
282
  # TODO support more types
269
283
  elem_type = FFI::TensorElementDataType[elem_type.read_int]
@@ -304,6 +318,7 @@ module OnnxRuntime
304
318
  case type
305
319
  when :tensor
306
320
  tensor_info = ::FFI::MemoryPointer.new(:pointer)
321
+ # don't free tensor_info
307
322
  check_status api[:CastTypeInfoToTensorInfo].call(typeinfo.read_pointer, tensor_info)
308
323
 
309
324
  type, shape = tensor_type_and_shape(tensor_info)
@@ -344,7 +359,7 @@ module OnnxRuntime
344
359
  unsupported_type("ONNX", type)
345
360
  end
346
361
  ensure
347
- api[:ReleaseTypeInfo].call(typeinfo.read_pointer)
362
+ release :TypeInfo, typeinfo
348
363
  end
349
364
 
350
365
  def tensor_type_and_shape(tensor_info)
@@ -375,7 +390,24 @@ module OnnxRuntime
375
390
  end
376
391
 
377
392
  def api
378
- @api ||= FFI.OrtGetApiBase[:GetApi].call(1)
393
+ self.class.api
394
+ end
395
+
396
+ def release(*args)
397
+ self.class.release(*args)
398
+ end
399
+
400
+ def self.api
401
+ @api ||= FFI.OrtGetApiBase[:GetApi].call(3)
402
+ end
403
+
404
+ def self.release(type, pointer)
405
+ api[:"Release#{type}"].call(pointer.read_pointer) if pointer && !pointer.null?
406
+ end
407
+
408
+ def self.finalize(session)
409
+ # must use proc instead of stabby lambda
410
+ proc { release :Session, session }
379
411
  end
380
412
 
381
413
  def env
@@ -384,7 +416,7 @@ module OnnxRuntime
384
416
  @@env ||= begin
385
417
  env = ::FFI::MemoryPointer.new(:pointer)
386
418
  check_status api[:CreateEnv].call(3, "Default", env)
387
- at_exit { api[:ReleaseEnv].call(env.read_pointer) }
419
+ at_exit { release :Env, env }
388
420
  # disable telemetry
389
421
  # https://github.com/microsoft/onnxruntime/blob/master/docs/Privacy.md
390
422
  check_status api[:DisableTelemetryEvents].call(env)
@@ -1,3 +1,3 @@
1
1
  module OnnxRuntime
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onnxruntime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-16 00:00:00.000000000 Z
11
+ date: 2020-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi