也许这只是我,但我没有运气构建“你好OCL”部分提到的代码.
我已经开始Xcode并创建了一个空项目;创建了一个main.c和.cl内核文件,粘贴了苹果开发者网站上的内容,即使添加了目标,我也无法建立任何内容.
AD站点没有要下载的项目,所以我不知道失败的原因(这可能是我最有可能的,或者站点采取步骤,没有提及).
我也尝试过macresearch.org的示例项目,但它们很古老,第三课中的测试项目根本没有运行.
现在,我很确定其他人使用Xcode来运行OCL代码,但是我找不到任何一个页面(除了上述的macresearch.org),它提供了一个关于如何使用OCL运行Xcode项目的清晰设置.有没有人知道一个教程,显示如何使用OCL和Xcode?
我已经在OCL上购买了3本书(Gaster的异构计算与OpenCL,Scarpino的OpenCL和Munshi的OpenCL编程指南),并没有提到如何设置Xcode,而他们详细介绍了可视化工作室设置,甚至是eclipse设置.
在一边;是否有任何应用程序能够在OCL应用程序中运行之前验证内核代码?
预先感谢您可能有任何建议.
解决方法
长命令衬垫的答案:
使用最近的Xcode(和Lion或更高版本),您甚至不需要调用clCreateProgramWithSource,只需编写内核并从您的应用程序中调用它,那么还需要一些额外的编译步骤.
我使用默认的编译器标志(见https://developer.apple.com/library/mac/#documentation/Performance/Conceptual/OpenCL_MacProgGuide/ExampleHelloWorld/Example_HelloWorld.html),从苹果公司获取OpenCL Hello World示例,并显示了Xcode在后台执行的步骤.
为了让您开始,请执行以下操作:
/System/Library/Frameworks/OpenCL.framework/Libraries/openclc -x cl -cl-std=CL1.1 -cl-auto-vectorize-enable -emit-gcl mykernel.cl
这将创建2个文件,mykernel.cl.h和mykernel.cl.c(和mykernel.cl.c都将将内核加载到应用程序中的所有魔力).接下来你需要编译内核:
/System/Library/Frameworks/OpenCL.framework/Libraries/openclc -x cl -cl-std=CL1.1 -Os -triple i386-applecl-darwin -emit-llvm-bc -o mykernel.cl.i386.bc mykernel.cl /System/Library/Frameworks/OpenCL.framework/Libraries/openclc -x cl -cl-std=CL1.1 -Os -triple x86_64-applecl-darwin -emit-llvm-bc -o mykernel.cl.x86_64.bc mykernel.cl /System/Library/Frameworks/OpenCL.framework/Libraries/openclc -x cl -cl-std=CL1.1 -Os -triple gpu_32-applecl-darwin -emit-llvm-bc -o mykernel.cl.gpu_32.bc mykernel.cl
最后但并非最不重要的是,构建应用程序本身:
clang -c -Os -Wall -arch x86_64 -o mykernel.cl.o mykernel.cl.c clang -c -Os -Wall -arch x86_64 -o square.o square.c clang -framework OpenCL -o square mykernel.cl.o square.o
就是这样在Apple的示例代码中,您将看不到任何clCreateProgramWithBinary或clCreateProgramWithSource.一切都是通过由openclc生成的mykernel.cl.c完成的.