onnxruntime 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
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