如何解决在 Android (Qualcomm Adreno 630) 上链接 OpenCL 内核时的 SIGABRT
在构建 OpenCL 内核时,我有时会在链接阶段收到以下错误:
A/libc: Fatal signal 6 (SIGABRT),code -1 (SI_QUEUE) in tid 17393 (.fhe.benchmarks),pid 17393 (.fhe.benchmarks)
。
编译和链接以下内核代码时出现错误,这是迄今为止我能够生成的最短的失败示例。
struct U {
uint high;
uint mid;
uint low;
};
struct V {
uint high;
uint low;
};
struct V bar(struct U y) {
struct V res;
res.low = y.low;
res.high = y.mid;
return res;
}
uint foo(struct U y) {
struct U q;
q.high = 1;
q.mid = 2;
q.low = 3;
// If I use the following lines to set r1 instead of
// calling bar,then the kernel links without error.
//struct V r1;
//r1.low = y.low;
//r1.high = y.mid;
struct V r1 = bar(y);
struct V r2 = bar(q);
return r1.low - r2.low;
}
__kernel void Broken(__global uint *out) {
struct U A;
A.high = 0;
A.mid = 0;
A.low = 1;
// If I remove one of the calls to foo then the kernel links successfully
out[get_global_id(0)] = foo(A) + foo(A);
}
我使用的设备是 LG G7 ThinQ,我使用的是 /system/vendor/lib64/libOpenCL.so。如果有人对此问题有任何见解,将不胜感激。我对在 Android 和 OpenCL 上编程比较陌生,所以可能是我做错了什么导致或促成了这一点。
我已经包含了我的设备的一些 OpenCL 属性下面:
CL_PLATFORM_PROFILE: FULL_PROFILE
CL_PLATFORM_VERSION: OpenCL 2.0 QUALCOMM build: commit #d424b94 changeid #If195280fd4 Date: 12/24/19 Tue Local Branch: Remote Branch: quic/gfx-adreno.lnx.1.0.r72-rel
CL_PLATFORM_NAME: QUALCOMM Snapdragon(TM)
CL_PLATFORM_VENDOR: QUALCOMM
CL_PLATFORM_EXTENSIONS:
CL_DEVICE_TYPE: CL_DEVICE_TYPE_GPU CL_DEVICE_TYPE_ALL
CL_DEVICE_VENDOR_ID: 3209509963
CL_DEVICE_AVAILABLE: 1
CL_DEVICE_COMPILER_AVAILABLE: 1
CL_DEVICE_LINKER_AVAILABLE: 1
CL_DEVICE_EXECUTION_CAPABILITIES: CL_EXEC_KERNEL
CL_DEVICE_QUEUE_PROPERTIES: CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE CL_QUEUE_PROFILING_ENABLE
CL_DEVICE_NAME: QUALCOMM Adreno(TM)
CL_DEVICE_VENDOR: QUALCOMM
CL_DRIVER_VERSION: OpenCL 2.0 QUALCOMM build: commit #d424b94 changeid #If195280fd4 Date: 12/24/19 Tue Local Branch: Remote Branch: quic/gfx-adreno.lnx.1.0.r72-rel Compiler E031.37.03.00
CL_DEVICE_PROFILE: FULL_PROFILE
CL_DEVICE_VERSION: OpenCL 2.0 Adreno(TM) 630
CL_DEVICE_OPENCL_C_VERSION: OpenCL C 2.0 Adreno(TM) 630
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。