我編程OpenCL通過在Ubuntu 16.04.3 64位上的pyopenCL,在Nvidia的Tesla K10.G2.8GB上的 。包括標頭OpenCL(32位和64位)
到目前爲止,只要我沒有在我的OpenCL內核中包含頭文件,任何東西都可以平穩運行。一旦,因爲我把#include <stdlib.h>
我的頭文件的頂部,我的OpenCL內核的編譯失敗與不同的文件丟失,在他們之中是
gnu/stubs-32.h
sys/cdefs.h
搜索這個問題,帶來了像
Error "gnu/stubs-32.h: No such file or directory" while compiling Nachos source code答案
或
https://askubuntu.com/questions/470796/fatal-error-sys-cdefs-h-no-such-file-or-directory
baiscally提示噸o安裝libc6-dev-i386
或gcc-multilib
和g++-multilib
,假設潛在問題是64位/ 32位問題。我的問題是,我的GPU的OpenCL二進制文件是否編譯爲32位二進制文件(如何檢查?)?
如果是:
還有沒有其他的注意事項,當我想編譯一個64位操作系統的32位二進制文件?
此外:當我的內核編譯爲32位時,我可以使用64位浮點數嗎? (例如,將#pragma OPENCL EXTENSION cl_khr_fp64 : enable
還是工作?)
如果沒有:
我必須手動定位/複製所有必要的頭文件,並用手包括他們?
另外:我的一些同事甚至懷疑,這其中包括標準的C頭到OpenCL內核可能是由於缺少連接體。任何燈光也讚賞。
我不知道,但我認爲OpenCL可能只是語言https://www.khronos.org/files/opencl-1-2-quick-reference-card。pdf和相關資源:https://www.khronos.org/opencl/resources。在我對PyOpenCL非常有限的知識中,我沒有在內核中編寫或者看到過'#include _any_library_'。 – benshope
在SO上快速搜索'include header openCL',可以發現至少有些人將自己的頭文件包含在OpenCL內核代碼中。我正在談論用OpenCL C編寫的內核代碼(基本上是C的子集) – Dschoni
哦,是的,我想是的。剛剛看到這一個:https://stackoverflow.com/questions/14502925/include-headers-to-opencl-cl-file我會讓更多的人瞭解PyOpenCL回答你的問題... – benshope