xcode – 来自Apple的OpenCL的基本编程示例无法在GPU上运行

xcode – 来自Apple的OpenCL的基本编程示例无法在GPU上运行,第1张

概述我刚开始学习一些关于OpenCL的基础知识,并决定从苹果公司获得 “Basic programming sample”.我在CPU上运行正常,但是当我选择GPU作为目标设备时,我得到err = -45 err = gclExecKernelAPPLE(k,ndrange,& kargs); 此错误代码转换为CL_INVALID_PROGRAM_EXECUTABLE.知道如何更正示例代码? 自动生成 我刚开始学习一些关于OpenCL的基础知识,并决定从苹果公司获得 “Basic programming sample”.我在cpu上运行正常,但是当我选择GPU作为目标设备时,我得到err = -45

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上运行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1004690.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存