2012-01-09 11 views
1

私は私の目的のためにOpenCLを評価しています。あなたが働いて、それを前提としないことを私に発生したアウトオブボックスのWindowsまたはMacのどちらかの理由:OpenCLコードをOpenCLフリーのバイナリファイルにコンパイルできますか?

  • Windowsが(もちろん、インストールすることができ、)のOpenCLドライバ
  • を必要としますMacOSのは、唯一のMacOSでのOpenCLをサポートしています> =

10.6だから私はFPU/SSE/AVXコードをコーディングする必要があるだろうとOpenCLのは別に2つのバイナリを生成するために:なし1とOpenCLのサポートを持つものを。

私はSSE/AVXへコンパイルでのOpenCLをコンパイルし、それにOpenCLのせずにバイナリを出荷することができれば、より良いでしょう。このようにして、FPU/SSE/AVXのための別個の実装は必要ありません!

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

乾杯、 - クレメンス

答えて

2

これは/開発マシン上でインテルのOpenCL SDKをインストールして、OpenCLのカーネル用のアセンブリコードを生成し、直接コンパイルする含まOpenCLのオフラインコンパイラツールを使用することです達成する一つの方法そのアセンブリコードをアプリケーションにリンクします。しかし、生成されたアセンブリコードを手動で呼び出すために、正しい呼び出し規約などを理解する作業がいくつかあります。次に、自分の作業を複数のスレッドに分割する責任があります。

したがって、それはあなたが求めているものではありませんが、少なくともWindowsでは、アプリケーションがintelocl.dllとその依存関係で出荷される方が簡単です(ライセンスで許可されている場合はチェックしません)そこからOpenCL関数のエントリポイントを取得し、OpenCLカーネルをその場でAssemblyにコンパイルし、OpenCLランタイムを使用して実行します。

+0

私は、OpenCL-Library関数を独自のC/C++コードに置き換えるという方向で考えました... – clemens

+1

ベンダーのOpenCL実装を、部分的にしか含まれていなくても再実装しましたコンパイラはおそらく**ロット**の作業になります。私は上記のように、あなたが依存しているOpenCLランタイムを単純に再配布するほうがよいでしょう。 – sschuberth

+0

mh、確かにわかりませんが、openCLコードは私にはCコンパチブルに見えるので、少しのプリプロセッサ・マジックで...?あなたはそれをシングルスレッドのスカラーコードに制限すれば、大きな問題になることはありませんか? – clemens

関連する問題