-1

Windows7 + Cygwin + AMD APP (数週間前にダウンロード) で OpenCL コードを書いています。私のコードは動作しますが、ヘッダー ファイルにカーネルからアクセス可能な関数の一部がありません。たとえば、次のようになります。

void barrier(cl_mem_fence_flags flags)

event_t async_work_group_copy(
    __local gentype *dst,
    const __global gentype *src,
    size_t  num_gentypes,
    event_t event)

event_tデータ型も。私が言ったように、カーネルは私の C コンパイラではなく OpenCL ライブラリによってコンパイルされるため、これはコンパイルを妨げません。これはなぜですか?どうすればよいですか?

4

1 に答える 1

2

要約すると:

OP は、カーネル内で使用される OpenCL C 関数を定義するヘッダー ファイルを検索していました。これらのヘッダー ファイルは、コードの強調表示、自動補完、構文エラーの検出などのために IDE で使用される可能性があるためです。これは OpenCL 標準の一部ではないため、 AMD APP SDK がヘッダー ファイルでいくつかの機能を提供したという事実は、OP にとって幸運なことです。

答え:

この IDE 要件に取り組む正しい方法は、専用の OpenCL C IDE を使用するか、お気に入りの IDE へのプラグインを使用することです。私は良いプラグインを知らないので、残っているのは特別な IDE だけです。AMD GPU および CPU の場合、AMD APP SDK の一部として提供される KernelAnalyzer を使用できます。ただし、これは AMD GPU のないシステムでは機能しません (特定の .dll がありません)。そのような場合は、OpenCL Studioを試すことができます。これは、11.9 以降の Catalyst ドライバーとの互換性がないため、AMD GPU では機能しないことに注意してください。最後に、Notepad++ には OpenCL 1.0 用のユーザー定義言語ファイルがあります (まだ試していません)。

于 2013-08-21T16:38:29.393 に答える