我正在使用Fiddle调用外部C函数进行一些繁重的linear algebra计算(Mac OSX)。
模块定义类似于
module BLAS
extend Fiddle::Importer
dlload $BLAS_PATH
extern 'void cblas_dgemm(int, int, int, int, int, int, double, double*, int, double*, int, double, double*, int)'
extern 'void cblas_dgemv(int, int, int, int, double, double*, int, double*, int, double, double*, int)'
.......
这些库已针对mac osx进行了优化,可以使用所有可用的核心。不幸的是,当我从Ruby with Fiddle调用这些函数时,只使用了一个核心,而我的理解是因为GIL
而发生这种情况。
有没有办法在外部函数执行期间释放锁?
我正在使用ruby 2.0.0-p247
(不是系统Ruby)。