ndav-torch-tensor 0.0.2 → 0.0.4

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: 033bbf192b1235b16c2b5fe0f69ca5505764e1473c9c5b4abdf18d81d4b9ec94
4
- data.tar.gz: 02bca7f664f5a1fa8ec84a93202ef117f887a62b172305101c4278fc8c6cfd08
3
+ metadata.gz: '0680ecfdc12ff8c7439ae719364591beeae64666e91c0cc33b47429222848682'
4
+ data.tar.gz: 3ee2acec3f638e8918828496250a85f7b531750b9bfaa366c1f2d31b2b126f84
5
5
  SHA512:
6
- metadata.gz: 1b9360bf3dd2fce2780775dcb03d19554a7f4a67960555bec1b8e88aa3300453ea515dd827efeaf292d63f703f46b692fa6ae381ac2fb7236fc18aab2f01f7a0
7
- data.tar.gz: b88c727b786f43319043d874689f8882cbabd4737292d3e663405b1161a1b7b6b904d89b229543f103cad1786310d2ade8a78b930e50c16e82c262e0070ec07b
6
+ metadata.gz: d0aa2feab3aed3844acaea511a61eda04befd736db3a7009bb4627421cfafe486d21e9300e0bf2ea02483215879c461b555c59857ccbaf8eeaba6944db4b576f
7
+ data.tar.gz: 94eac20b44cf43b958eb817992e3c11fdb4541b0853fb70c720e5ed0d27affc061f7f528c5688c5c43c7ecf6e4b37dba5273b7958e699ae11b33da8e127f66b5
data/README.md CHANGED
@@ -1,11 +1,32 @@
1
1
  NDAV::Torch::Tensor
2
2
  ===================
3
3
 
4
- MemoryView and pointer support for [Torch]::Tensor.
4
+ [NDAV][] bridge for [Torch][]::Tensor.
5
+
6
+ SYNOPSIS
7
+ --------
8
+
9
+ ```ruby
10
+ require "ndav/torch/tensor"
11
+
12
+ torch = Torch.rand(2, 3) # => Torch::Tensor
13
+ ndav = torch.to_ndav # => NDAV
14
+ torch = ndav.to_torch_tensor # => Torch::Tensor
15
+
16
+ memory_view = Fiddle::MemoryView.new(torch) # => Fiddle::MemoryView, now it may export a MemoryView
17
+
18
+ ndav = NDAV.from_torch_tensor(torch) # => NDAV
19
+ torch = Torch::Tensor.from_ndav(ndav) # => Torch::Tensor
20
+
21
+ include NDAV::Converter
22
+ ndav = NDAV(torch) # => NDAV
23
+ torch = TorchTensor(ndav) # => Torch::NArray
24
+ ```
5
25
 
6
26
  LICENSE
7
27
  -------
8
28
 
9
29
  MIT license. See LICENSE.txt file.
10
30
 
31
+ [NDAV]: https://kitaitimakoto.gitlab.io/ndav/
11
32
  [Torch]: https://github.com/ankane/torch.rb
@@ -36,23 +36,46 @@ class NDAV
36
36
  type = case format
37
37
  when "s!", "c", "s", "l", "q", "i", "i!", "l!", "q!"
38
38
  :"int#{suffix}"
39
- when "S!", "C", "S", "L", "Q", "I", "I!", "L!", "Q!", "n", "v", "N", "V"
39
+ when "S!", "C", "S", "L", "Q", "I", "I!", "L!", "Q!"
40
40
  :"uint#{suffix}"
41
- when "f", "e", "g", "d", "E", "G"
41
+ when "f", "d"
42
42
  :"float#{suffix}"
43
+ else
44
+ case IO::Buffer::HOST_ENDIAN
45
+ when IO::Buffer::LITTLE_ENDIAN
46
+ if ["v", "V", "e", "E"].include? format
47
+ :"float#{suffix}"
48
+ end
49
+ when IO::Buffer::BIG_ENDIAN
50
+ if ["n", "N", "g", "G"].include? format
51
+ :"float#{suffix}"
52
+ end
53
+ end
43
54
  end
44
55
  [format, type]
45
56
  }
46
57
 
47
58
  TYPE_SIZES = TYPE_TO_FORMAT.transform_values {|format| ITEM_SIZES[format]}
48
59
 
49
- module ToNDAV
50
- def to_ndav
60
+ module MemoryViewable
61
+ def ndav_descriptor(**)
51
62
  format = TYPE_TO_FORMAT[dtype]
52
- raise ArgumentError, "unsupported dtype: #{dtype}, currently supported: #{TYPE_TO_FORMAT.keys}" unless format
63
+ unless format
64
+ warn "unsupported dtype: #{dtype}, currently supported: #{TYPE_TO_FORMAT.keys}"
65
+ return false
66
+ end
67
+
68
+ byte_size = numel * element_size
53
69
 
54
- ptr = Fiddle::Pointer.new(_data_ptr, numel * element_size)
55
- NDAV.new(ptr, shape:, format:, lifetime: self)
70
+ {
71
+ data: ::Fiddle::Pointer.new(_data_ptr, byte_size),
72
+ shape:,
73
+ strides: stride.collect {|s| s * element_size},
74
+ format:,
75
+ byte_size:,
76
+ readonly?: false,
77
+ sub_offsets: nil
78
+ }
56
79
  end
57
80
  end
58
81
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "ndav-torch-tensor"
3
- s.version = "0.0.2"
3
+ s.version = "0.0.4"
4
4
  s.authors = ["Kitaiti Makoto"]
5
5
  s.summary = "N-Dimensional Array View for Torch::Tensors"
6
6
  s.licenses = ["MIT"]
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
 
9
9
  s.files = Dir.chdir(__dir__) {`git ls-files -z`.split("\x0")}
10
10
 
11
- s.add_runtime_dependency "ndav", ">= 0.0.3"
11
+ s.add_runtime_dependency "ndav", ">= 0.0.6"
12
12
  s.add_runtime_dependency "torch-rb"
13
13
 
14
14
  s.add_development_dependency "rake"
@@ -14,6 +14,15 @@ class TestTorchTensor < Test::Unit::TestCase
14
14
  assert_kind_of ::Torch::Tensor, ::Torch.from_ndav(@ndav)
15
15
  end
16
16
 
17
+ def test_memory_view
18
+ Fiddle::MemoryView.export @torch_tensor do |view|
19
+ assert_equal "s", view.format
20
+ assert_equal [3], view.shape
21
+ assert_equal [2], view.strides
22
+ assert_equal [1, 2, 3].pack("s*"), view.to_s
23
+ end
24
+ end
25
+
17
26
  def test_ndav_to_torch_tensor
18
27
  assert_kind_of ::Torch::Tensor, @ndav.to_torch_tensor
19
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ndav-torch-tensor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kitaiti Makoto
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: 0.0.3
18
+ version: 0.0.6
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: 0.0.3
25
+ version: 0.0.6
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: torch-rb
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -166,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
168
  requirements: []
169
- rubygems_version: 4.0.6
169
+ rubygems_version: 4.0.16
170
170
  specification_version: 4
171
171
  summary: N-Dimensional Array View for Torch::Tensors
172
172
  test_files: []