onnxruntime 0.9.3-x64-mingw → 0.10.0-x64-mingw

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.
@@ -17,28 +17,24 @@ module OnnxRuntime
17
17
  FFI.api
18
18
  end
19
19
 
20
- def self.release(type, pointer)
21
- FFI.api[:"Release#{type}"].call(pointer.read_pointer) if pointer && !pointer.null?
22
- end
23
-
24
20
  def self.unsupported_type(name, type)
25
21
  raise Error, "Unsupported #{name} type: #{type}"
26
22
  end
27
23
 
28
24
  def self.tensor_type_and_shape(tensor_info)
29
25
  type = ::FFI::MemoryPointer.new(:int)
30
- check_status api[:GetTensorElementType].call(tensor_info.read_pointer, type)
26
+ check_status api[:GetTensorElementType].call(tensor_info, type)
31
27
 
32
28
  num_dims_ptr = ::FFI::MemoryPointer.new(:size_t)
33
- check_status api[:GetDimensionsCount].call(tensor_info.read_pointer, num_dims_ptr)
29
+ check_status api[:GetDimensionsCount].call(tensor_info, num_dims_ptr)
34
30
  num_dims = num_dims_ptr.read(:size_t)
35
31
 
36
32
  node_dims = ::FFI::MemoryPointer.new(:int64, num_dims)
37
- check_status api[:GetDimensions].call(tensor_info.read_pointer, node_dims, num_dims)
33
+ check_status api[:GetDimensions].call(tensor_info, node_dims, num_dims)
38
34
  dims = node_dims.read_array_of_int64(num_dims)
39
35
 
40
36
  symbolic_dims = ::FFI::MemoryPointer.new(:pointer, num_dims)
41
- check_status api[:GetSymbolicDimensions].call(tensor_info.read_pointer, symbolic_dims, num_dims)
37
+ check_status api[:GetSymbolicDimensions].call(tensor_info, symbolic_dims, num_dims)
42
38
  named_dims = num_dims.times.map { |i| symbolic_dims[i].read_pointer.read_string }
43
39
  dims = named_dims.zip(dims).map { |n, d| n.empty? ? d : n }
44
40
 
@@ -47,25 +43,28 @@ module OnnxRuntime
47
43
 
48
44
  def self.node_info(typeinfo)
49
45
  onnx_type = ::FFI::MemoryPointer.new(:int)
50
- check_status api[:GetOnnxTypeFromTypeInfo].call(typeinfo.read_pointer, onnx_type)
46
+ check_status api[:GetOnnxTypeFromTypeInfo].call(typeinfo, onnx_type)
51
47
 
52
48
  type = FFI::OnnxType[onnx_type.read_int]
53
49
  case type
54
50
  when :tensor
55
- tensor_info = ::FFI::MemoryPointer.new(:pointer)
56
51
  # don't free tensor_info
57
- check_status api[:CastTypeInfoToTensorInfo].call(typeinfo.read_pointer, tensor_info)
52
+ tensor_info = ::FFI::MemoryPointer.new(:pointer)
53
+ check_status api[:CastTypeInfoToTensorInfo].call(typeinfo, tensor_info)
54
+ type, shape = Utils.tensor_type_and_shape(tensor_info.read_pointer)
58
55
 
59
- type, shape = Utils.tensor_type_and_shape(tensor_info)
60
56
  {
61
57
  type: "tensor(#{FFI::TensorElementDataType[type]})",
62
58
  shape: shape
63
59
  }
64
60
  when :sequence
61
+ # don't free sequence_info
65
62
  sequence_type_info = ::FFI::MemoryPointer.new(:pointer)
66
- check_status api[:CastTypeInfoToSequenceTypeInfo].call(typeinfo.read_pointer, sequence_type_info)
63
+ check_status api[:CastTypeInfoToSequenceTypeInfo].call(typeinfo, sequence_type_info)
64
+
67
65
  nested_type_info = ::FFI::MemoryPointer.new(:pointer)
68
66
  check_status api[:GetSequenceElementType].call(sequence_type_info.read_pointer, nested_type_info)
67
+ nested_type_info = ::FFI::AutoPointer.new(nested_type_info.read_pointer, api[:ReleaseTypeInfo])
69
68
  v = node_info(nested_type_info)[:type]
70
69
 
71
70
  {
@@ -73,8 +72,9 @@ module OnnxRuntime
73
72
  shape: []
74
73
  }
75
74
  when :map
75
+ # don't free map_type_info
76
76
  map_type_info = ::FFI::MemoryPointer.new(:pointer)
77
- check_status api[:CastTypeInfoToMapTypeInfo].call(typeinfo.read_pointer, map_type_info)
77
+ check_status api[:CastTypeInfoToMapTypeInfo].call(typeinfo, map_type_info)
78
78
 
79
79
  # key
80
80
  key_type = ::FFI::MemoryPointer.new(:int)
@@ -84,6 +84,7 @@ module OnnxRuntime
84
84
  # value
85
85
  value_type_info = ::FFI::MemoryPointer.new(:pointer)
86
86
  check_status api[:GetMapValueType].call(map_type_info.read_pointer, value_type_info)
87
+ value_type_info = ::FFI::AutoPointer.new(value_type_info.read_pointer, api[:ReleaseTypeInfo])
87
88
  v = node_info(value_type_info)[:type]
88
89
 
89
90
  {
@@ -93,8 +94,6 @@ module OnnxRuntime
93
94
  else
94
95
  Utils.unsupported_type("ONNX", type)
95
96
  end
96
- ensure
97
- release :TypeInfo, typeinfo
98
97
  end
99
98
 
100
99
  def self.numo_array?(obj)
@@ -135,7 +134,7 @@ module OnnxRuntime
135
134
  @allocator ||= begin
136
135
  allocator = ::FFI::MemoryPointer.new(:pointer)
137
136
  check_status api[:GetAllocatorWithDefaultOptions].call(allocator)
138
- allocator
137
+ allocator.read_pointer # do not free default allocator
139
138
  end
140
139
  end
141
140
  end
@@ -1,3 +1,3 @@
1
1
  module OnnxRuntime
2
- VERSION = "0.9.3"
2
+ VERSION = "0.10.0"
3
3
  end