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 +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/onnxruntime/inference_session.rb +36 -4
- data/lib/onnxruntime/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7d22851572b35128d1e2bbcc041b4989851e02354cace5389afc25855674b11
|
4
|
+
data.tar.gz: f1eee285e5dbff1fbf6de4e350560e3e386e1f4d26d53810f154cd16117e38e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f89ba13181bfcc8cdf35356efae175d0e2c7a0787a13af8d46788645046f057bce466e28566c0f2982f52893dbb7cc1553a741b1ca4923066e90c0a5fb230edf
|
7
|
+
data.tar.gz: 3843b9c1e5a9432d3b72ebb33498aaef0fb6edf8942a9f0b6794bed36fb95df67290e6c4385e19927e5404510d89ad8965b15de0a96246b7f1770c4fb01216f6
|
data/CHANGELOG.md
CHANGED
@@ -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
|
-
|
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
|
-
|
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 {
|
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)
|
data/lib/onnxruntime/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2020-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|