我正在imx6q(freescale - 带有openCL EP的Vivante gc200)上开发一个带有openCL的应用程序,其中一个Linux suse 13.1发行版适用于armv7。
我基于以下教程:https://community.freescale.com/docs/DOC-93984#comment-12585。我安装了以下软件包:gpu-viv-bin-mx6q。
当我尝试示例代码时,它适用于笔记本电脑版本,但在imx6上,它在调用函数clGetDeviceIds时给出了分段错误。
程序编译正确但在运行时不起作用;
我试过在函数中传递不同的空变量。我不确定这是否是由于内存分配(因为我的笔记本电脑上的代码相同,我可以认为这不是问题)。当我在调试模式下启动它时,程序似乎找不到文件:“gc_hal_user_query.c”(hal用于硬件抽象层)。
我在网上找不到足够的文档,而且我在linux和openCL上都很新手,所以如果有人可以帮助我的话。提前谢谢。
答案 0 :(得分:0)
我猜问题是,当你打电话
时clGetPlatformIDs(1, &cpPlatform, NULL);
如果没有检测到平台,则cpPlatform收到0。这会在下次调用
期间导致分段错误clGetDeviceIDs(cpPlatform, CL_DEVICE_TYPE_GPU, 1, &cdDevice, NULL);
我很遗憾无法提供进一步帮助,我遇到了同样的问题。
答案 1 :(得分:0)
您的权限不足。尝试以root身份运行。