linear algebraの計算(Mac OSX)で外部C関数を呼び出すためにFiddleを使用しています。モジュール定義はRuby Fiddle and Global Interpreter Lock(GIL)
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からこれらの関数をFiddleと呼ぶとき、1つのコアだけが使用され、私の理解はGIL
のために起こります。
外部機能の実行中にロックを解除する方法はありますか?
ruby 2.0.0-p247
(システムRubyではありません)を使用しています。
私はFiddleがruby 2.3でgilをリリースしたことに気付きました。もしおそらく最も簡単な解決策であるrubyを更新できたら –