如何获取搭载Mali T720核心的Hi3536 Soc的OpenCL交叉编译库?
我之前帮朋友处理过类似的海思平台Mali OpenCL适配问题,给你几个实际可行的方向:
从ARM官方Mali开发者资源库获取
Mali T720属于ARM的Midgard架构GPU,ARM官方会提供对应架构的OpenCL驱动和SDK包。你需要找到匹配Hi3536使用的Linux内核版本的驱动包,下载后里面会包含交叉编译所需的头文件(比如CL/目录下的OpenCL标准头)、静态库/动态库,以及基础的OpenCL示例代码。注意要选择和你所用交叉编译工具链(比如海思自带的arm-hisiv500-linux这类)兼容的版本,ARM提供的包通常会适配主流ARM交叉编译工具链。联系海思官方技术支持补充组件
海思的基础SDK往往不会默认包含OpenCL这类GPU高级功能组件,而是作为可选补充包提供。你可以通过海思的官方开发者社区、技术支持工单渠道,说明你使用的Hi3536具体型号、SDK版本以及OpenCL开发需求,大概率能拿到官方适配好的交叉编译库和示例工程——这是兼容性最好的方案,省得自己踩坑。从开源社区寻找适配好的资源
不少开发者会在开源平台分享海思平台的GPU移植经验,你可以搜索针对Hi3536 + Mali T720的OpenCL适配项目。这类项目通常会提供已经编译完成的交叉编译库,或者详细的编译脚本(比如结合Mali驱动源码和Hi3536内核补丁重新编译),你可以直接复用或者参考他们的流程自己编译。从运行中的Hi3536设备提取并适配
如果手头有已经刷好系统的Hi3536设备,可以从设备的/usr/lib或/usr/lib/arm-linux-gnueabihf目录下提取Mali相关的动态库(比如libmali.so、libOpenCL.so),将这些库复制到你的交叉编译环境的sysroot目录中。同时从ARM官方获取对应的OpenCL头文件,这样就能在交叉编译时通过指定头文件路径-I/path/to/opencl/headers、链接库路径-L/path/to/mali/libs以及链接参数-lOpenCL -lmali来编译你的OpenCL程序。不过这种方式要注意库版本和设备内核版本的兼容性,避免运行时出现异常。
内容的提问来源于stack exchange,提问作者Venkata Subbarao

