1

私の OS X マシンで正常に動作する OpenCL プログラムがあります。Xeon Phi と Intel MPSS を搭載したマシンをセットアップしました。ただし、Phi ではなく Xeon CPU を使用した場合でも、CL_PROGRAM_BUILD_STATUS得られるのはCL_BUILD_NONEです。

残念ながら、何が原因である可能性があるかについてのドキュメントは見つかりませんCL_BUILD_NONE。これをデバッグする方法について何か提案はありますか?

前もって感謝します!

バージョン:

[@memphis:~] $ cat /etc/SuSE-release 
SUSE Linux Enterprise Server 11 (x86_64)
VERSION = 11
PATCHLEVEL = 2

[@memphis:~] $ uname -a
Linux memphis 3.0.13-0.27-default #1 SMP Wed Feb 15 13:33:49 UTC 2012 (d73692b) x86_64 x86_64 x86_64 GNU/Linux

[@memphis:~] 1 $ rpm -qa |grep intel
intel-mic-2.1.6720-15.suse
intel-mic-mpm-2.1.6720-15.suse
opencl-1.2-intel-mic-3.0.67279-1
intel-mic-sysmgmt-2.1.6720-15.suse
intel-mic-kmod-2.1.6720-15.3.0.13.0.suse
intel-mic-gdb-2.1.6720-15.suse
intel-mic-flash-2.1.386-3.suse
intel-mic-cdt-2.1.6720-15.suse
opencl-1.2-intel-devel-3.0.67279-1
intel-mic-micmgmt-2.1.6720-15.3.0.13.0.suse
opencl-1.2-intel-cpu-3.0.67279-1
intel-mic-gpl-2.1.6720-15.suse
intel-mic-crashmgr-2.1.6720-15.suse
4

2 に答える 2

1

それを見つけた。の戻り値としてではなく、最後のパラメーターとして&ret(戻り値) を使用した理由がわかりません。それを移動し、最後のパラメーターを NULL に設定すると、問題が修正されます。cl_intclBuildProgram

wrong:
clBuildProgram(*program, 1, &device_id, opts.str().c_str(), NULL, &ret);
correct:
ret = clBuildProgram(*program, 1, &device_id, opts.str().c_str(), NULL, NULL);

pfn_notifyこの問題が発生した理由は理解しています。どうやら、コンパイラ/OpenCL ライブラリは、カーネルを使用して非同期的にビルドしたいことを理解していたようです。ただし、この動作が OpenCL ドキュメントに完全に準拠しているかどうかはわかりません。

If pfn_notify is NULL, clBuildProgram does not return until the build has completed.

私のコードでは、pfn_notify引数は実際NULLには でしたが、user_data は (誤って) ではありませんでした。私のコードは意味がありませんでしたが、 is の場合pfn_notifyはuser_data を無視する必要があると思いますNULL

ドキュメントの私の解釈に彼らが同意するかどうかを確認するために、これを Intel フォーラムに投稿しました。

于 2013-07-21T12:01:28.500 に答える