
err = gclExecKernelAPPLE(k,ndrange,& kargs);
此错误代码转换为CL_INVALID_PROGRAM_EXECUtable.知道如何更正示例代码?
自动生成的kernel.cl.c代码如下所示(包含在顶部):
static voID initBlocks(voID);// Initialize static data structuresstatic block_kernel_pair pair_map[1] = { { NulL,NulL }};static block_kernel_map bmap = { 0,1,initBlocks,pair_map };// Block functionvoID (^square_kernel)(const cl_ndrange *ndrange,cl_float* input,cl_float* output) =^(const cl_ndrange *ndrange,cl_float* output) { int err = 0; cl_kernel k = bmap.map[0].kernel; if (!k) { initBlocks(); k = bmap.map[0].kernel; } if (!k) gcl_log_fatal("kernel square does not exist for device"); kargs_struct kargs; gclCreateArgsAPPLE(k,&kargs); err |= gclSetKernelArgMemAPPLE(k,input,output,&kargs); gcl_log_cl_fatal(err,"setting argument for square Failed"); err = gclExecKernelAPPLE(k,&kargs); gcl_log_cl_fatal(err,"Executing square Failed"); gclDeleteArgsAPPLE(k,&kargs);};// Initialization functionsstatic voID initBlocks(voID) { const char* build_opts = " -cl-std=CL1.1"; static dispatch_once_t once; dispatch_once(&once,^{ int err = gclBuildProgramBinaryAPPLE("OpenCL/kernel.cl","",&bmap,build_opts); if (!err) { assert(bmap.map[0].block_ptr == square_kernel && "mismatch block"); bmap.map[0].kernel = clCreateKernel(bmap.program,"square",&err); } });}__attribute__((constructor))static voID RegisterMap(voID) { gclRegisterBlockKernelMap(&bmap); bmap.map[0].block_ptr = square_kernel;}解决方法 在10.7.3下运行时我看到同样的问题,而10.7.5上的机器工作正常.我注意到每次调用我的应用程序后,CVMCompiler进程都崩溃了. 检查堆栈跟踪,我注意到在尝试解析bitcode以编译为本机代码时崩溃了.由于bitcode的解析失败失败,因此没有生成gclExecKernelAPPLE()的编译程序,因此错误.
尝试升级到10.7.5,或者甚至10.8,问题应该消失. (我刚测试了这个,确实解决了这个问题.)
总结以上是内存溢出为你收集整理的xcode – 来自Apple的OpenCL的基本编程示例无法在GPU上运行全部内容,希望文章能够帮你解决xcode – 来自Apple的OpenCL的基本编程示例无法在GPU上运行所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)