2016-08-02 33 views
1

Octaveの実験的なJITコンパイラ機能については、 "これはおもちゃプロジェクトでしたが、基本的には機能しません"スピードアップ"。Octave JITコンパイラ。現在の状態、および効果を実証する最小限の例

私が使用するためには、それが正常に1が実行時にJITコンパイルの好みを指定して

  • --jit-compilerオプションで--enable-jit
  • 設定時に起動オクターブとオクターブをコンパイル

    • する必要があることを承知していますjit_enablejit_startcntコマンド

    を使用して、私はすることができませんでした説得力のある効果を再現する。これが私が気づいていない他のステップを逃してしまったためか、それとも単に自分のマシンにはあまり効果がないからです。

    Q:この機能を使用したことがある人は、適切な使用法とそれが(もしあれば)そのマシン上にある場合の効果を実証するための最小限の実例を提供できますか?要するに

    答えて

    7

    • あなたはそれがうまく動作し、それができるならば、あなたのコードをスピードアップする必要があり、JITを使用するために何かをする必要はありません。
    • 単純なループでしか機能しないので、ほとんど役に立ちません。
    • これは概念の証明ではありません。
    • ので、現在それを向上させることに取り組んで誰もありません:それは複雑な問題だ
      • これは主に厄介なオクターブコードの修正です。
      • は、あまりにも不安定なLLVMを使用します。

    Q:成功した機能を使用している誰かがその適切な使用方法を示す、最小限の作業例を提供することができ、効果、それは自分のマシン上で(もしあれば)は?

    表示する内容はありません。 JITサポート付きのOctaveをビルドすると、Octaveは自動的により速いコードをいくつかのループで使用します。唯一の違いはスピードにあり、あなたは(あなたが実行時にJITを無効にすることができますが)あなたのコードを変更する必要はありません。

    octave> jit_enable (1) # confirm JIT is enabled 
    octave> tic; x = 0; for i=1:100000, x += i; endfor, toc 
    Elapsed time is 0.00490594 seconds. 
    octave> jit_enable (0) # disable JIT 
    octave> tic; x = 0; for i=1:100000, x += i; endfor, toc 
    Elapsed time is 0.747599 seconds. 
    
    ## but you should probably write it like this 
    octave> tic; x = sum (1:100000); toc 
    Elapsed time is 0.00327611 seconds. 
    
    ## If Octave was built without JIT support, you will get the following 
    octave> jit_enable (1) 
    warning: jit_enable: support for JIT was unavailable or disabled when Octave was built 
    

    これは単純な例ですが、上のより良い例と詳細を見ることができますそれに取り組んだ唯一の人のbloghis presentation at OctConf 2012が含まれています。 (古い)の詳細については、Octave's JIT wiki page

    非常に単純なループでのみ動作することに注意してください。言語に精通している人がいないので、最初はそれらを書くことができない単純なループです。この機能は概念の証明として存在し、それを拡張したい人のための出発点です(個人的には、ベクトル化されたコードを書くことを好みます)。

    OctaveのJITには、LLVMを使用するというもう1つの問題があります。オクターブ開発者は、下位互換性を崩壊させ続けるため、この目的にはあまりにも信頼性が低いと判断しました。 LLVMのすべてのマイナーリリースでOctaveビルドが壊れてしまったので、Octave開発者はLLVM 3.5がリリースされたときに修正をやめ、デフォルトで無効にしました。

    +2

    http://wiki.octave.org/FAQ#Just-In-Time_compilerを更新するか、この回答にリンクする必要があります – Andy

    関連する問題