瑞芯微Rockchip开发者社区
直播中

世态薄凉

8年用户 1167经验值
私信 关注
[经验]

如何在RK3588开发板上开发及编译OpenCL代码呢

固件类型:官方提供的固件
固件文件名称:rk3588_linux_release_20220401_v0.0.1c
固件下载地址
Log日志:log.txt
问题描述及复现步骤:
通过clinfo可以查看设备的信息,但没有找到OpenCL相关的头文件和动态库,如何开发及编译OpenCL代码?
1、首先在3588环境下使用 sudo find / -name *mali.so 找到libmali.so ,这个动态库中包含OpenCL相关操作。
2、从官网下载头文件
3、将下载的OpenCL-Headers文件按照如下方式重新组织
include/
├── CL
│ ├── cl_d3d10.h
│ ├── cl_d3d11.h
│ ├── cl_dx9_media_sharing.h
│ ├── cl_dx9_media_sharing_intel.h
│ ├── cl_egl.h
│ ├── cl_ext.h
│ ├── cl_ext_intel.h
│ ├── cl_gl_ext.h
│ ├── cl_gl.h
│ ├── cl.h
│ ├── cl_half.h
│ ├── cl_icd.h
│ ├── cl_layer.h
│ ├── cl_platform.h
│ ├── cl_va_api_media_sharing_intel.h
│ └── cl_version.h
└── opencl.h
4、此时已经有动态库和头文件,可以开始编写一段代码
#include
#include
#include
#include
int main()
{
cl_platform_id *platform;
cl_uint num_platform;
cl_int err;
err = clGetPlatformIDs(0, NULL, &num_platform);
platform = (cl_platform_id*)malloc(sizeof(cl_platform_id)*num_platform);
err = clGetPlatformIDs(num_platform, platform, NULL);
for(int i=0; i {
size_t size;
err = clGetPlatformInfo(platform, CL_PLATFORM_NAME, 0, NULL, &size);
char *PName = (char *)malloc(size);
err = clGetPlatformInfo(platform, CL_PLATFORM_NAME, size, PName, NULL);
printf("nCL_PLATFORM_NAME:%sn", PName);
free(PName);
}
return 0;
}
5、编译,执行如下编译命令
gcc platform.cpp -o platform -lmali -I/home/firefly/include -L/usr/lib/aarch64-linux-gnu/
6、执行
~/src$ ./platform
CL_PLATFORM_NAME:ARM Platform

原作者:神秘路人

更多回帖

发帖
×
20
完善资料,
赚取积分