numo-linalg 0.1.1 → 0.1.2
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 +4 -4
- data/ext/numo/linalg/blas/blas.c +20 -6
- data/ext/numo/linalg/blas/extconf.rb +15 -41
- data/ext/numo/linalg/lapack/extconf.rb +14 -19
- data/ext/numo/linalg/lapack/lapack.c +20 -6
- data/ext/numo/linalg/mkmf_linalg.rb +101 -0
- data/lib/numo/linalg/loader.rb +77 -76
- data/lib/numo/linalg/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 611dd9ee204102a1688b5d199b95b5376d32239b04dfcf69a605da54599a9310
|
4
|
+
data.tar.gz: d999af4188a239e9a78b7f071d850f2b11bf822c1c0237c592c6ebe4979b278d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7da7684a72653a7718de5ff51a99ed14ca0dc3770cae735139487cf56ef2610f292cf3e970abd681320d8a1847664dcb7d6e9ac2c936867abb2cae1154bdb053
|
7
|
+
data.tar.gz: 70bb3e22d41fee16e953b53467b709cdd96bd80adceb526123df941335782054823bb84a9d703ca45e73e88c0ad34b7cbf90699a53cc7e7dcb1277251e7fa0e6
|
data/ext/numo/linalg/blas/blas.c
CHANGED
@@ -259,11 +259,17 @@ numo_cblas_check_func(void **func, const char *name)
|
|
259
259
|
s = alloca(strlen(blas_prefix)+strlen(name)+1);
|
260
260
|
strcpy(s,blas_prefix);
|
261
261
|
strcat(s,name);
|
262
|
+
#if defined(HAVE_DLFCN_H)
|
262
263
|
dlerror();
|
264
|
+
#endif
|
263
265
|
*func = dlsym(blas_handle, s);
|
264
|
-
|
265
|
-
if (error !=
|
266
|
-
|
266
|
+
#if defined(HAVE_DLFCN_H)
|
267
|
+
if ((error = dlerror()) != 0) {
|
268
|
+
func = 0;
|
269
|
+
}
|
270
|
+
#endif
|
271
|
+
if ( !func ) {
|
272
|
+
rb_raise(rb_eRuntimeError, "unknown symbol \"%s\"", s);
|
267
273
|
}
|
268
274
|
}
|
269
275
|
}
|
@@ -291,14 +297,22 @@ blas_s_dlopen(int argc, VALUE *argv, VALUE mod)
|
|
291
297
|
if (i==2) {
|
292
298
|
f = NUM2INT(flag);
|
293
299
|
} else {
|
294
|
-
f = RTLD_LAZY
|
300
|
+
f = RTLD_LAZY;
|
295
301
|
}
|
302
|
+
#if defined(HAVE_DLFCN_H)
|
296
303
|
dlerror();
|
304
|
+
#endif
|
297
305
|
handle = dlopen(StringValueCStr(lib), f);
|
298
|
-
|
299
|
-
if (error
|
306
|
+
#if defined(HAVE_DLFCN_H)
|
307
|
+
if ( !handle && (error = dlerror()) ) {
|
300
308
|
rb_raise(rb_eRuntimeError, "%s", error);
|
301
309
|
}
|
310
|
+
#else
|
311
|
+
if ( !handle ) {
|
312
|
+
error = dlerror();
|
313
|
+
rb_raise(rb_eRuntimeError, "%s", error);
|
314
|
+
}
|
315
|
+
#endif
|
302
316
|
blas_handle = handle;
|
303
317
|
return Qnil;
|
304
318
|
}
|
@@ -1,35 +1,6 @@
|
|
1
1
|
require 'mkmf'
|
2
2
|
require 'numo/narray'
|
3
|
-
|
4
|
-
|
5
|
-
ldirs = [
|
6
|
-
dir_config("mkl")[1],
|
7
|
-
dir_config("openblas")[1],
|
8
|
-
dir_config("atlas")[1],
|
9
|
-
dir_config("blas")[1],
|
10
|
-
dir_config("lapack")[1],
|
11
|
-
]
|
12
|
-
bked = with_config("backend")
|
13
|
-
|
14
|
-
FileUtils.mkdir_p "lib"
|
15
|
-
open("lib/site_conf.rb","w"){|f| f.write "
|
16
|
-
module Numo
|
17
|
-
module Linalg
|
18
|
-
BACKEND = #{bked.inspect}
|
19
|
-
MKL_LIBPATH = #{ldirs[0].inspect}
|
20
|
-
OPENBLAS_LIBPATH = #{ldirs[1].inspect}
|
21
|
-
ATLAS_LIBPATH = #{ldirs[2].inspect}
|
22
|
-
BLAS_LIBPATH = #{ldirs[3].inspect}
|
23
|
-
LAPACK_LIBPATH = #{ldirs[4].inspect}
|
24
|
-
end
|
25
|
-
end"}
|
26
|
-
|
27
|
-
$LOAD_PATH.each do |x|
|
28
|
-
if File.exist? File.join(x,'numo/numo/narray.h')
|
29
|
-
$INCFLAGS = "-I#{x}/numo " + $INCFLAGS
|
30
|
-
break
|
31
|
-
end
|
32
|
-
end
|
3
|
+
require_relative '../mkmf_linalg'
|
33
4
|
|
34
5
|
srcs = %w(
|
35
6
|
blas
|
@@ -40,13 +11,24 @@ blas_z
|
|
40
11
|
)
|
41
12
|
$objs = srcs.collect{|i| i+".o"}
|
42
13
|
|
43
|
-
|
14
|
+
dir_config("narray")
|
15
|
+
|
16
|
+
find_narray_h
|
17
|
+
if !have_header("numo/narray.h")
|
44
18
|
puts "
|
45
19
|
Header numo/narray.h was not found. Give pathname as follows:
|
46
20
|
% ruby extconf.rb --with-narray-include=narray_h_dir"
|
47
21
|
exit(1)
|
48
22
|
end
|
49
23
|
|
24
|
+
if RUBY_PLATFORM =~ /cygwin|mingw/
|
25
|
+
find_libnarray_a
|
26
|
+
unless have_library("narray","nary_new")
|
27
|
+
puts "libnarray.a not found"
|
28
|
+
exit(1)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
50
32
|
if have_header("dlfcn.h")
|
51
33
|
exit(1) unless have_library("dl")
|
52
34
|
exit(1) unless have_func("dlopen")
|
@@ -54,14 +36,6 @@ elsif have_header("windows.h")
|
|
54
36
|
exit(1) unless have_func("LoadLibrary")
|
55
37
|
end
|
56
38
|
|
57
|
-
|
58
|
-
|
59
|
-
dep_erb_path = File.join(__dir__, "depend.erb")
|
60
|
-
File.open(dep_erb_path, "r") do |dep_erb|
|
61
|
-
erb = ERB.new(dep_erb.read)
|
62
|
-
erb.filename = dep_erb_path
|
63
|
-
dep.print(erb.result)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
39
|
+
create_site_conf
|
40
|
+
create_depend
|
67
41
|
create_makefile('numo/linalg/blas')
|
@@ -1,13 +1,6 @@
|
|
1
1
|
require 'mkmf'
|
2
2
|
require 'numo/narray'
|
3
|
-
|
4
|
-
|
5
|
-
$LOAD_PATH.each do |x|
|
6
|
-
if File.exist? File.join(x,'numo/numo/narray.h')
|
7
|
-
$INCFLAGS = "-I#{x}/numo " + $INCFLAGS
|
8
|
-
break
|
9
|
-
end
|
10
|
-
end
|
3
|
+
require_relative '../mkmf_linalg'
|
11
4
|
|
12
5
|
srcs = %w(
|
13
6
|
lapack
|
@@ -18,13 +11,24 @@ lapack_z
|
|
18
11
|
)
|
19
12
|
$objs = srcs.collect{|i| i+".o"}
|
20
13
|
|
21
|
-
|
14
|
+
dir_config("narray")
|
15
|
+
|
16
|
+
find_narray_h
|
17
|
+
if !have_header("numo/narray.h")
|
22
18
|
puts "
|
23
19
|
Header numo/narray.h was not found. Give pathname as follows:
|
24
20
|
% ruby extconf.rb --with-narray-include=narray_h_dir"
|
25
21
|
exit(1)
|
26
22
|
end
|
27
23
|
|
24
|
+
if RUBY_PLATFORM =~ /cygwin|mingw/
|
25
|
+
find_libnarray_a
|
26
|
+
unless have_library("narray","nary_new")
|
27
|
+
puts "libnarray.a not found"
|
28
|
+
exit(1)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
28
32
|
if have_header("dlfcn.h")
|
29
33
|
exit(1) unless have_library("dl")
|
30
34
|
exit(1) unless have_func("dlopen")
|
@@ -32,14 +36,5 @@ elsif have_header("windows.h")
|
|
32
36
|
exit(1) unless have_func("LoadLibrary")
|
33
37
|
end
|
34
38
|
|
35
|
-
|
36
|
-
File.open(dep_path, "w") do |dep|
|
37
|
-
dep_erb_path = File.join(__dir__, "depend.erb")
|
38
|
-
File.open(dep_erb_path, "r") do |dep_erb|
|
39
|
-
erb = ERB.new(dep_erb.read)
|
40
|
-
erb.filename = dep_erb_path
|
41
|
-
dep.print(erb.result)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
39
|
+
create_depend
|
45
40
|
create_makefile('numo/linalg/lapack')
|
@@ -295,11 +295,17 @@ numo_lapacke_check_func(void **func, const char *name)
|
|
295
295
|
s = alloca(strlen(lapack_prefix)+strlen(name)+1);
|
296
296
|
strcpy(s,lapack_prefix);
|
297
297
|
strcat(s,name);
|
298
|
+
#if defined(HAVE_DLFCN_H)
|
298
299
|
dlerror();
|
300
|
+
#endif
|
299
301
|
*func = dlsym(lapack_handle, s);
|
300
|
-
|
301
|
-
if (error !=
|
302
|
-
|
302
|
+
#if defined(HAVE_DLFCN_H)
|
303
|
+
if ((error = dlerror()) != 0) {
|
304
|
+
func = 0;
|
305
|
+
}
|
306
|
+
#endif
|
307
|
+
if ( !func ) {
|
308
|
+
rb_raise(rb_eRuntimeError, "unknown symbol \"%s\"", s);
|
303
309
|
}
|
304
310
|
}
|
305
311
|
}
|
@@ -327,14 +333,22 @@ lapack_s_dlopen(int argc, VALUE *argv, VALUE mod)
|
|
327
333
|
if (i==2) {
|
328
334
|
f = NUM2INT(flag);
|
329
335
|
} else {
|
330
|
-
f = RTLD_LAZY
|
336
|
+
f = RTLD_LAZY;
|
331
337
|
}
|
338
|
+
#if defined(HAVE_DLFCN_H)
|
332
339
|
dlerror();
|
340
|
+
#endif
|
333
341
|
handle = dlopen(StringValueCStr(lib), f);
|
334
|
-
|
335
|
-
if (error
|
342
|
+
#if defined(HAVE_DLFCN_H)
|
343
|
+
if ( !handle && (error = dlerror()) ) {
|
336
344
|
rb_raise(rb_eRuntimeError, "%s", error);
|
337
345
|
}
|
346
|
+
#else
|
347
|
+
if ( !handle ) {
|
348
|
+
error = dlerror();
|
349
|
+
rb_raise(rb_eRuntimeError, "%s", error);
|
350
|
+
}
|
351
|
+
#endif
|
338
352
|
lapack_handle = handle;
|
339
353
|
return Qnil;
|
340
354
|
}
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'mkmf'
|
2
|
+
|
3
|
+
def create_site_conf
|
4
|
+
ldirs = [
|
5
|
+
dir_config("mkl")[1],
|
6
|
+
dir_config("openblas")[1],
|
7
|
+
dir_config("atlas")[1],
|
8
|
+
dir_config("blas")[1],
|
9
|
+
dir_config("lapack")[1],
|
10
|
+
]
|
11
|
+
bked = with_config("backend")
|
12
|
+
|
13
|
+
require 'fiddle'
|
14
|
+
|
15
|
+
message "creating lib/site_conf.rb\n"
|
16
|
+
|
17
|
+
FileUtils.mkdir_p "lib"
|
18
|
+
|
19
|
+
ext = detect_library_extension
|
20
|
+
need_version = false
|
21
|
+
if ext == 'so'
|
22
|
+
begin
|
23
|
+
Fiddle.dlopen "libm.so"
|
24
|
+
rescue
|
25
|
+
(5..7).each do |i|
|
26
|
+
begin
|
27
|
+
Fiddle.dlopen "libm.so.#{i}"
|
28
|
+
need_version = true
|
29
|
+
break
|
30
|
+
rescue
|
31
|
+
end
|
32
|
+
end
|
33
|
+
if !need_version
|
34
|
+
raise "failed to check whether dynamically linked shared object needs version suffix"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
open("lib/site_conf.rb","w"){|f| f.write "
|
40
|
+
module Numo
|
41
|
+
module Linalg
|
42
|
+
|
43
|
+
BACKEND = #{bked.inspect}
|
44
|
+
MKL_LIBPATH = #{ldirs[0].inspect}
|
45
|
+
OPENBLAS_LIBPATH = #{ldirs[1].inspect}
|
46
|
+
ATLAS_LIBPATH = #{ldirs[2].inspect}
|
47
|
+
BLAS_LIBPATH = #{ldirs[3].inspect}
|
48
|
+
LAPACK_LIBPATH = #{ldirs[4].inspect}
|
49
|
+
|
50
|
+
module Loader
|
51
|
+
EXT = '#{ext}'
|
52
|
+
NEED_VERSION_SUFFIX = #{need_version}
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end"
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
60
|
+
def detect_library_extension
|
61
|
+
case RbConfig::CONFIG['host_os']
|
62
|
+
when /mswin|msys|mingw|cygwin/
|
63
|
+
'dll'
|
64
|
+
when /darwin|mac os/
|
65
|
+
'dylib'
|
66
|
+
else
|
67
|
+
'so'
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def find_narray_h
|
72
|
+
$LOAD_PATH.each do |x|
|
73
|
+
if File.exist? File.join(x,'numo/numo/narray.h')
|
74
|
+
$INCFLAGS = "-I#{x}/numo " + $INCFLAGS
|
75
|
+
break
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def find_libnarray_a
|
81
|
+
$LOAD_PATH.each do |x|
|
82
|
+
if File.exist? File.join(x,'numo/libnarray.a')
|
83
|
+
$LDFLAGS = "-L#{x}/numo " + $LDFLAGS
|
84
|
+
break
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def create_depend
|
90
|
+
require 'erb'
|
91
|
+
message "creating depend\n"
|
92
|
+
dep_path = File.join(Dir.pwd, "depend")
|
93
|
+
File.open(dep_path, "w") do |dep|
|
94
|
+
dep_erb_path = File.join(Dir.pwd, "depend.erb")
|
95
|
+
File.open(dep_erb_path, "r") do |dep_erb|
|
96
|
+
erb = ERB.new(dep_erb.read)
|
97
|
+
erb.filename = dep_erb_path
|
98
|
+
dep.print(erb.result)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
data/lib/numo/linalg/loader.rb
CHANGED
@@ -12,32 +12,48 @@ module Numo
|
|
12
12
|
@@libs
|
13
13
|
end
|
14
14
|
|
15
|
-
def
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
15
|
+
def dlopen(recvr,base,dir=nil,ver=nil)
|
16
|
+
if dir && !dir.empty?
|
17
|
+
base = File.join(dir,base)
|
18
|
+
end
|
19
|
+
path = base+".#{EXT}"
|
20
|
+
if NEED_VERSION_SUFFIX
|
21
|
+
if ver
|
22
|
+
path += ".#{ver}"
|
23
|
+
end
|
24
|
+
recvr.send(:dlopen,path)
|
25
|
+
else
|
26
|
+
begin
|
27
|
+
recvr.send(:dlopen,path)
|
28
|
+
rescue => e
|
29
|
+
if ver
|
30
|
+
path += ".#{ver}"
|
31
|
+
recvr.send(:dlopen,path)
|
32
|
+
else
|
33
|
+
raise e
|
21
34
|
end
|
22
|
-
|
35
|
+
end
|
36
|
+
end
|
37
|
+
path
|
38
|
+
end
|
39
|
+
private :dlopen
|
40
|
+
|
41
|
+
def load_mkl(*dirs,exc:true)
|
42
|
+
if dirs.empty?
|
43
|
+
dirs = [MKL_LIBPATH,""].compact
|
44
|
+
end
|
45
|
+
dirs.each do |d|
|
23
46
|
if d.empty?
|
24
|
-
|
25
|
-
f_mkl_core = "libmkl_core.so"
|
26
|
-
f_intel_thread = "libmkl_intel_thread.so"
|
27
|
-
f_intel_lp64 = "libmkl_intel_lp64.so"
|
47
|
+
d = e = nil
|
28
48
|
else
|
29
49
|
e = d.sub(/\/mkl\//, "/")
|
30
|
-
f_iomp5 = File.join(e,"libiomp5.so")
|
31
|
-
f_mkl_core = File.join(d,"libmkl_core.so")
|
32
|
-
f_intel_thread = File.join(d,"libmkl_intel_thread.so")
|
33
|
-
f_intel_lp64 = File.join(d,"libmkl_intel_lp64.so")
|
34
50
|
end
|
35
51
|
begin
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
52
|
+
f_iomp5 = dlopen(Fiddle,"libiomp5",e)
|
53
|
+
f_mkl_core = dlopen(Fiddle,"libmkl_core",d)
|
54
|
+
f_intel_thread = dlopen(Fiddle,"libmkl_intel_thread",d)
|
55
|
+
f_intel_lp64 = dlopen(Blas,"libmkl_intel_lp64",d)
|
56
|
+
f_intel_lp64 = dlopen(Lapack,"libmkl_intel_lp64",d)
|
41
57
|
@@libs = [ f_iomp5, f_mkl_core, f_intel_thread, f_intel_lp64 ]
|
42
58
|
if $DEBUG
|
43
59
|
$stderr.puts "Numo::Linalg: use #{f_intel_lp64}"
|
@@ -52,20 +68,24 @@ module Numo
|
|
52
68
|
false
|
53
69
|
end
|
54
70
|
|
55
|
-
def load_openblas(
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
%w[libopenblaso.so libopenblasp.so libopenblas.so].each do |f|
|
64
|
-
f = File.join(d,f) if !d.empty?
|
71
|
+
def load_openblas(*dirs,exc:true)
|
72
|
+
if dirs.empty?
|
73
|
+
dirs = [OPENBLAS_LIBPATH,""].compact
|
74
|
+
end
|
75
|
+
dirs.each do |d|
|
76
|
+
%w[ libopenblaso
|
77
|
+
libopenblasp
|
78
|
+
libopenblas ].each do |f|
|
65
79
|
begin
|
66
|
-
|
67
|
-
|
68
|
-
|
80
|
+
f_openblas = dlopen(Blas,f,d,0)
|
81
|
+
f_openblas = dlopen(Fiddle,f,d,0)
|
82
|
+
f_lapacke = nil
|
83
|
+
begin
|
84
|
+
f_lapacke = dlopen(Lapack,"liblapacke",d,3)
|
85
|
+
rescue
|
86
|
+
f_openblas = dlopen(Lapack,f,d,0)
|
87
|
+
end
|
88
|
+
@@libs = [ f_openblas, f_lapacke ].compact
|
69
89
|
if $DEBUG
|
70
90
|
$stderr.puts "Numo::Linalg: use #{f}"
|
71
91
|
end
|
@@ -80,24 +100,19 @@ module Numo
|
|
80
100
|
false
|
81
101
|
end
|
82
102
|
|
83
|
-
def load_atlas(
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
%w[libtatlas.so libatlas.so libsatlas.so].each do |f|
|
92
|
-
f = File.join(d,f) if !d.empty?
|
103
|
+
def load_atlas(*dirs,exc:true)
|
104
|
+
if dirs.empty?
|
105
|
+
dirs = [ATLAS_LIBPATH,""].compact
|
106
|
+
end
|
107
|
+
dirs.each do |d|
|
108
|
+
%w[ libtatlas
|
109
|
+
libatlas
|
110
|
+
libsatlas ].each do |f|
|
93
111
|
begin
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
e = File.join(l,e) if l && !l.empty?
|
99
|
-
Lapack.dlopen(e)
|
100
|
-
@@libs = [ f, e ]
|
112
|
+
f_atlas = dlopen(Fiddle,f,d,3)
|
113
|
+
f_atlas = dlopen(Blas,f,d,3)
|
114
|
+
f_lapacke = dlopen(Lapack,"liblapacke",LAPACK_LIBPATH,3)
|
115
|
+
@@libs = [ f_atlas, f_lapacke ]
|
101
116
|
if $DEBUG
|
102
117
|
$stderr.puts "Numo::Linalg: use #{f}"
|
103
118
|
end
|
@@ -112,34 +127,20 @@ module Numo
|
|
112
127
|
false
|
113
128
|
end
|
114
129
|
|
115
|
-
def load_lapack(
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
(b ? [[b,l]] : []) + ["",""]
|
123
|
-
else raise ArgumentError,"invalid path"
|
124
|
-
end
|
125
|
-
a.each do |arg|
|
130
|
+
def load_lapack(*dirs,exc:true)
|
131
|
+
if dirs.empty?
|
132
|
+
b = BLAS_LIBPATH || LAPACK_LIBPATH
|
133
|
+
l = LAPACK_LIBPATH || BLAS_LIBPATH
|
134
|
+
dirs = (b ? [[b,l]] : []) + ["",""]
|
135
|
+
end
|
136
|
+
dirs.each do |arg|
|
126
137
|
b,l = *arg
|
127
|
-
if
|
128
|
-
f_blas = "libblas.so"
|
129
|
-
f_cblas = "libcblas.so"
|
130
|
-
f_lapack = "liblapack.so"
|
131
|
-
f_lapacke = "liblapacke.so"
|
132
|
-
else
|
133
|
-
f_blas = File.join(b,"libblas.so")
|
134
|
-
f_cblas = File.join(b,"libcblas.so")
|
135
|
-
f_lapack = File.join(l,"liblapack.so")
|
136
|
-
f_lapacke = File.join(l,"liblapacke.so")
|
137
|
-
end
|
138
|
+
l = b if l.nil?
|
138
139
|
begin
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
140
|
+
f_blas = dlopen(Fiddle,"libblas",b,3)
|
141
|
+
f_lapack = dlopen(Fiddle,"liblapack",l,3)
|
142
|
+
f_cblas = dlopen(Blas,"libcblas",b,3)
|
143
|
+
f_lapacke = dlopen(Lapack,"liblapacke",l,3)
|
143
144
|
@@libs = [ f_blas, f_lapack, f_cblas, f_lapacke ]
|
144
145
|
if $DEBUG
|
145
146
|
$stderr.puts "Numo::Linalg: use #{f_blas} and #{f_lapack}"
|
data/lib/numo/linalg/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: numo-linalg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masahiro TANAKA
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-03-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -134,6 +134,7 @@ files:
|
|
134
134
|
- ext/numo/linalg/lapack/tmpl/syev.c
|
135
135
|
- ext/numo/linalg/lapack/tmpl/sygv.c
|
136
136
|
- ext/numo/linalg/lapack/tmpl/trf.c
|
137
|
+
- ext/numo/linalg/mkmf_linalg.rb
|
137
138
|
- ext/numo/linalg/numo_linalg.h
|
138
139
|
- lib/numo/linalg.rb
|
139
140
|
- lib/numo/linalg/autoloader.rb
|