numpy 0.1.0 → 0.2.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGES.md +7 -0
- data/example/Gemfile +11 -0
- data/example/benchmarking.ipynb +121 -0
- data/lib/numpy.rb +1 -0
- data/lib/numpy/conversion.rb +36 -0
- data/lib/numpy/ndarray.rb +1 -18
- data/lib/numpy/version.rb +1 -1
- data/numpy.gemspec +1 -1
- metadata +11 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5e7d2063cc44796bd4b50a0b45c7374e2edc6c963cb9f47a2b0f550af5982a9b
|
4
|
+
data.tar.gz: 1f9141a62ef7ac7360a6bc745107da1bb76853ccfcabfeab2486ef58001054c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6dc0004877b66df9683820a86bc9cdcf6272d974bf1ce6bcbb8d8e9be10ab03f6995b5456d32496df9819521c986453befd355265f0d88b56c9cf3606b8d201d
|
7
|
+
data.tar.gz: c90649d97a5e8c394fa298442eb48056c807cefba49556042227e7aac692b2ac03e5a3764dd57079572c34a1c00bec634210c706b6ac9cccf7cc539f36c8ecf9
|
data/CHANGES.md
ADDED
data/example/Gemfile
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
{
|
2
|
+
"cells": [
|
3
|
+
{
|
4
|
+
"cell_type": "code",
|
5
|
+
"execution_count": 1,
|
6
|
+
"metadata": {},
|
7
|
+
"outputs": [
|
8
|
+
{
|
9
|
+
"data": {
|
10
|
+
"text/plain": [
|
11
|
+
"\"4\""
|
12
|
+
]
|
13
|
+
},
|
14
|
+
"execution_count": 1,
|
15
|
+
"metadata": {},
|
16
|
+
"output_type": "execute_result"
|
17
|
+
}
|
18
|
+
],
|
19
|
+
"source": [
|
20
|
+
"require 'benchmark'\n",
|
21
|
+
"\n",
|
22
|
+
"require 'numo/narray'\n",
|
23
|
+
"require \"numo/linalg/linalg\"\n",
|
24
|
+
"Numo::Linalg::Blas.dlopen(\"/opt/brew/opt/openblas/lib/libopenblas.dylib\")\n",
|
25
|
+
"Numo::Linalg::Lapack.dlopen(\"/opt/brew/opt/openblas/lib/libopenblas.dylib\")\n",
|
26
|
+
"\n",
|
27
|
+
"require 'pycall'\n",
|
28
|
+
"require 'numpy'\n",
|
29
|
+
"scipy_blas = PyCall.import_module('scipy.linalg.blas')\n",
|
30
|
+
"\n",
|
31
|
+
"ENV['OMP_NUM_THREADS'] = '4'"
|
32
|
+
]
|
33
|
+
},
|
34
|
+
{
|
35
|
+
"cell_type": "code",
|
36
|
+
"execution_count": 4,
|
37
|
+
"metadata": {},
|
38
|
+
"outputs": [
|
39
|
+
{
|
40
|
+
"name": "stdout",
|
41
|
+
"output_type": "stream",
|
42
|
+
"text": [
|
43
|
+
"[1500, 1500]\n",
|
44
|
+
"[1500, 1500]\n",
|
45
|
+
"(1500, 1500)\n",
|
46
|
+
"(1500, 1500)\n"
|
47
|
+
]
|
48
|
+
}
|
49
|
+
],
|
50
|
+
"source": [
|
51
|
+
"a = Numo::DFloat.new(1500,1500).seq\n",
|
52
|
+
"b = Numo::DFloat.new(1500,1500).seq\n",
|
53
|
+
"c = Numpy.arange(1500*1500, dtype: :float64).reshape(1500, 1500)\n",
|
54
|
+
"d = Numpy.arange(1500*1500, dtype: :float64).reshape(1500, 1500)\n",
|
55
|
+
"\n",
|
56
|
+
"p a.shape\n",
|
57
|
+
"p b.shape\n",
|
58
|
+
"p c.shape\n",
|
59
|
+
"p d.shape\n",
|
60
|
+
"nil"
|
61
|
+
]
|
62
|
+
},
|
63
|
+
{
|
64
|
+
"cell_type": "code",
|
65
|
+
"execution_count": 10,
|
66
|
+
"metadata": {},
|
67
|
+
"outputs": [
|
68
|
+
{
|
69
|
+
"name": "stdout",
|
70
|
+
"output_type": "stream",
|
71
|
+
"text": [
|
72
|
+
"numo-linalg 33.400000 1.460000 34.860000 ( 5.738896)\n",
|
73
|
+
"numpy-linalg 34.210000 1.440000 35.650000 ( 9.099735)\n"
|
74
|
+
]
|
75
|
+
}
|
76
|
+
],
|
77
|
+
"source": [
|
78
|
+
"n = 100\n",
|
79
|
+
"Benchmark.benchmark('', 15) do |x|\n",
|
80
|
+
" x.report('numo-linalg') { n.times{ Numo::Linalg::Blas.dgemm(a,b) } }\n",
|
81
|
+
" x.report('numpy-linalg') { n.times{ scipy_blas.dgemm(1.0, c, d) } }\n",
|
82
|
+
"end\n",
|
83
|
+
"nil"
|
84
|
+
]
|
85
|
+
},
|
86
|
+
{
|
87
|
+
"cell_type": "code",
|
88
|
+
"execution_count": null,
|
89
|
+
"metadata": {
|
90
|
+
"collapsed": true
|
91
|
+
},
|
92
|
+
"outputs": [],
|
93
|
+
"source": []
|
94
|
+
}
|
95
|
+
],
|
96
|
+
"metadata": {
|
97
|
+
"kernelspec": {
|
98
|
+
"display_name": "Ruby 2.4.1",
|
99
|
+
"language": "ruby",
|
100
|
+
"name": "ruby"
|
101
|
+
},
|
102
|
+
"language_info": {
|
103
|
+
"file_extension": ".rb",
|
104
|
+
"mimetype": "application/x-ruby",
|
105
|
+
"name": "ruby",
|
106
|
+
"version": "2.4.1"
|
107
|
+
},
|
108
|
+
"toc": {
|
109
|
+
"nav_menu": {},
|
110
|
+
"number_sections": true,
|
111
|
+
"sideBar": true,
|
112
|
+
"skip_h1_title": false,
|
113
|
+
"toc_cell": false,
|
114
|
+
"toc_position": {},
|
115
|
+
"toc_section_display": "block",
|
116
|
+
"toc_window_display": false
|
117
|
+
}
|
118
|
+
},
|
119
|
+
"nbformat": 4,
|
120
|
+
"nbformat_minor": 2
|
121
|
+
}
|
data/lib/numpy.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
module Numpy
|
2
|
+
module Conversion
|
3
|
+
module_function
|
4
|
+
|
5
|
+
def to_ruby(val)
|
6
|
+
case val
|
7
|
+
when Numpy.integer
|
8
|
+
PyCall.builtins.int.(val)
|
9
|
+
when Numpy.floating
|
10
|
+
PyCall.builtins.float.(val)
|
11
|
+
when Numpy.complexfloating
|
12
|
+
val = PyCall.builtins.complex.(val)
|
13
|
+
Complex(val.real.to_f, val.imag.to_f)
|
14
|
+
when Numpy.bool_
|
15
|
+
PyCall.builtins.bool.(val)
|
16
|
+
else
|
17
|
+
val
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
Bool_ = Numpy.bool_
|
23
|
+
Integer = Numpy.integer
|
24
|
+
Floating = Numpy.floating
|
25
|
+
ComplexFloating = Numpy.complexfloating
|
26
|
+
|
27
|
+
[ Bool_, Integer, Floating, ComplexFloating ].each do |klass|
|
28
|
+
klass.class_eval do
|
29
|
+
register_python_type_mapping
|
30
|
+
|
31
|
+
def self.wrap_pyptr(pyptr)
|
32
|
+
Conversion.to_ruby(pyptr)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/numpy/ndarray.rb
CHANGED
@@ -4,24 +4,7 @@ module Numpy
|
|
4
4
|
register_python_type_mapping
|
5
5
|
|
6
6
|
def [](*index)
|
7
|
-
to_ruby(super)
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
|
12
|
-
def to_ruby(val)
|
13
|
-
case val
|
14
|
-
when Numpy.integer
|
15
|
-
val.to_i
|
16
|
-
when Numpy.floating
|
17
|
-
val.to_f
|
18
|
-
when Numpy.complexfloating
|
19
|
-
Complex(val.real.to_f, val.imag.to_f)
|
20
|
-
when Numpy.bool_
|
21
|
-
val.to_i == 1
|
22
|
-
else
|
23
|
-
val
|
24
|
-
end
|
7
|
+
Conversion.to_ruby(super)
|
25
8
|
end
|
26
9
|
end
|
27
10
|
end
|
data/lib/numpy/version.rb
CHANGED
data/numpy.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
|
-
spec.add_dependency "pycall", ">= 1.0.
|
24
|
+
spec.add_dependency "pycall", ">= 1.2.0.beta1"
|
25
25
|
|
26
26
|
spec.add_development_dependency "bundler", "~> 1.15"
|
27
27
|
spec.add_development_dependency "rake", "~> 10.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: numpy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenta Murata
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-08-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pycall
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.0.
|
19
|
+
version: 1.2.0.beta1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.0.
|
26
|
+
version: 1.2.0.beta1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,13 +76,17 @@ files:
|
|
76
76
|
- ".gitignore"
|
77
77
|
- ".rspec"
|
78
78
|
- ".travis.yml"
|
79
|
+
- CHANGES.md
|
79
80
|
- Gemfile
|
80
81
|
- LICENSE.txt
|
81
82
|
- README.md
|
82
83
|
- Rakefile
|
83
84
|
- bin/console
|
84
85
|
- bin/setup
|
86
|
+
- example/Gemfile
|
87
|
+
- example/benchmarking.ipynb
|
85
88
|
- lib/numpy.rb
|
89
|
+
- lib/numpy/conversion.rb
|
86
90
|
- lib/numpy/ndarray.rb
|
87
91
|
- lib/numpy/version.rb
|
88
92
|
- numpy.gemspec
|
@@ -101,12 +105,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
101
105
|
version: '0'
|
102
106
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
107
|
requirements:
|
104
|
-
- - "
|
108
|
+
- - ">"
|
105
109
|
- !ruby/object:Gem::Version
|
106
|
-
version:
|
110
|
+
version: 1.3.1
|
107
111
|
requirements: []
|
108
112
|
rubyforge_project:
|
109
|
-
rubygems_version: 2.6
|
113
|
+
rubygems_version: 2.7.6
|
110
114
|
signing_key:
|
111
115
|
specification_version: 4
|
112
116
|
summary: Numpy wrapper for Ruby
|