2011-01-31 7 views
4

Hey all、 私は現在、研究プロジェクトのために、FORTRAN 77からCにraytracerを移植しています。openCLコードを書くとき、GPUなしでシングルコアマシンでどのように動作しますか?

本質を移植した後、問題は並列化に進む方法です。
ラボでは、2〜8コアのGPUを使用しない、いくつかの異なるOpteronマシンにアクセスできます(現在は)。 64b gentooを実行しています。

GPGPUのバージョンは非常に望ましいですが、プロジェクトには1人のプログラマーしかいないため、別々の非GPUとGPUのバージョンを管理することはオプションではありません。
また、コードはGPLされており、ハードウェアが大きく異なる可能性のある他の人が使用していることを確認したいと考えています。

したがって、GPUやマルチコアシステムがなくても、プログラム全体を簡単にコンパイル/実行することができます。
OpenClはGPUを搭載していないマシンでも実行できますが、このコードはシングルコアまたは32bシステムでどのように動作しますか?
openCLなしで簡単にコンパイルできるようにコードを書くことは可能でしょうか?

答えて

8

現在、AMD、nVidia(Cuda)、Apple、Intelの4つの主要なOpenCL実装があります。おそらく、おそらくおそらくOpenCL implementationsになります。 OpenCLは、GPUコンピューティングを対象とした言語ではありません。異種デバイス用の汎用コンピューティング言語として設計されています。例えば。 GPUや非AMD CPU(もちろんx86)がなくてもAMDの実装を使用することができます。

openCLなしで簡単にコンパイルできるようにコードを書くことは可能でしょうか?

あなたが言うように、それは1人のプロジェクトだと私はそれが努力する価値があるとは思わない。

このコードは、シングルコアまたは32bシステムでどのように動作しますか?

どのようなネイティブプログラムも実行可能です。あなたはOpenCLベクトル型を介してSIMDにアクセスできます。また、ワークグループ構成を介してスレッドを処理することもできます。

しかし、同じカーネル/ワークグループ設定ですべてのデバイスから100%のパフォーマンスを得ることは期待できません。デバイス固有の調整が可能です(OpenCL CPU Tutorial for a start)。

私はOpenCLのために行くと言うでしょう。それはあなたのアプリケーションのためのより多くの可能性を提供し、プラットフォームは独立しています。

+0

これは助けになりました。ありがとう。 –

2

OpenCLとC99の共通性を活用し、相違を処理するためにプリプロセッサを使用することは可能でしょう。次に、C99とOpenCLコードベースを1つにします。 SmallPT-GPU

しかし、CPU用のOpenCL実装は、移植可能なスカラーCコードと同じくらいよく、ベクタータイプのOpenCLを使用して移植可能なSIMDを使用する方がよいでしょう。

+0

いいですね。私はSmallPT-GPUをより詳細にチェックして、それがどのように動作するかを確認します。 –

関連する問題