Ruby Fiddle 和全局解释器锁 (GIL)
Ruby Fiddle and Global Interpreter Lock (GIL)
我正在使用 Fiddle to call an external C Function for some heavy 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 进行了优化,可以使用所有可用的内核。不幸的是,当我使用 Fiddle 从 Ruby 调用这些函数时,只使用了一个核心,我的理解是这是因为 GIL
.
有没有办法在外部函数执行过程中释放锁?
我正在使用 ruby 2.0.0-p247
(不是系统 Ruby)。
我正在使用 Fiddle to call an external C Function for some heavy 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 进行了优化,可以使用所有可用的内核。不幸的是,当我使用 Fiddle 从 Ruby 调用这些函数时,只使用了一个核心,我的理解是这是因为 GIL
.
有没有办法在外部函数执行过程中释放锁?
我正在使用 ruby 2.0.0-p247
(不是系统 Ruby)。