1

私は自分の目的のためにOpenCLを評価しています。WindowsでもMacでも、すぐに使用できるとは考えられません。理由は次のとおりです。

  • WindowsにはOpenCLドライバーが必要です(もちろん、これはインストールできます)
  • MacOSはMacOS>=10.6でのみOpenCLをサポートします

したがって、FPU / SSE / AVXコードとOpenCLを別々にコーディングして、2つのバイナリを生成する必要があります。1つはOpenCLをサポートしており、もう1つはOpenCLをサポートしています。

コンパイル時にOpenCLをSSE/AVXにコンパイルしてから、OpenCLを含まないバイナリを出荷できればはるかに良いでしょう。このように、FPU / SSE / AVXの個別の実装は必要ありません!

それを行う方法はありますか?

乾杯、-clemens

4

1 に答える 1

2

これを実現する 1 つの方法は、Intel OpenCL SDK を開発マシンにインストールし、含まれている OpenCL Offline Compiler ツールを使用して OpenCL カーネルのアセンブリ コードを生成し、そのアセンブリ コードをアプリケーションに直接コンパイル/リンクすることです。ただし、生成されたアセンブリ コードを手動で呼び出すために、正しい呼び出し規則などを理解するのは、ある程度の作業になる可能性があり、作業を複数のスレッドに分割する責任は自分にあります。

したがって、それはあなたが求めていたものではありませんが、少なくとも Windows では、アプリケーションを intelocl.dll とその依存関係 (ライセンスで許可されている場合; 私は確認していません) と共に出荷し、動的に OpenCL 関数エントリをロードする方がおそらく簡単でしょう。そこから、OpenCL カーネルをオンザフライでアセンブリにコンパイルし、OpenCL ランタイムを使用して実行します。

于 2012-01-09T10:14:39.923 に答える