OpenCLカーネルを.cl
ファイルに書きました。いくつかのヘッダーを#include
にしようとします。OpenCL .clファイルへのヘッダーが含まれています
含まれているヘッダーファイルが「見つからない」ため、コンパイルに失敗します。 私はclBuildProgram
がヘッダファイルを検索するディレクトリのリストにディレクトリを追加しますdir
-I dir
オプションを取ることができることを承知しています。 khronusサイトのフォーラムの問題については、この記事http://www.khronos.org/message_boards/viewtopic.php?f=37&t=2535会談で
彼らは(.hファイルを含む)すべてのソースを指定するclCreateProgramWithSource
を使用することを提案します。
- 良いオプションです: 私は、この問題に関する質問がありますか? (
clBuildProgram
対clCreateProgramWithSource
、上記のように) - 私は
clCreateProgramWithSource
を使用している場合はどのようにコンパイラが含まれるように知っているのでしょうか?つまり、どのソースがファイル名を含むのかを表していますか? clBuildProgram
を使用し、インクルードファイルを含む複数のディレクトリがある場合、どのように指定するのですか?
AMD APPは、-Iで問題あまりにも私の経験から(それは単に動作しません)があります。 – Thomas
それは面白いです。私はCPU上でそれをテストしましたが。私はAMD GPUを持っていないので、GPUでテストすることはできません。多分それはGPU対CPUの問題ですか? –
いいえ、Windows下で両方のデバイスの下で試しましたが、コンパイラは単に相対インクルードパスを処理していないようです。基本的に私のコンパイラのコマンドラインには "-I cl /"があり、私のカーネルはcl /ディレクトリにうまく配置されていますが、Intel/Linuxではうまく動作しますが、AMDはまったく問題がありません私が試したこと、そして私が見つけた唯一の解決策は、#includeディレクティブで各.clファイルの*絶対パス*をハードコーディングするか、システム$ PATHにcl /フォルダを追加することでした。それは私のインストールは、壊れているかもしれませんが、私は私のLinuxシステムと同じくらい私のWindowsシステムを維持しません。 – Thomas