我项目中需要用嵌入式GPU的OpenCL做非图像方面的运算,目前用的芯片是RK3288,GPU是Mali-T764
因为产品功能对实时性有要求,且因为开发方式的限制,RK3288上会选用Linux系统(ubuntu),用安卓的可能性很小。
但是找了下,Mali官方提供的是T60X和T62X在Linux下的OpenCL Binary,另外我找到OpenCL的SDK中可以编译出libOpenCL.so,也就是OpenCL的binary,
不知道能不能用在Mali-T764上,如果Mali官方直接提供T7xx的OpenCL Binary最好,不知道官方是否提供。
Hi Zephyr He,
谢谢你的回复,我在Mail的英文页面下找到了T7的User Device Driver,在中文页面下似乎没有还没同步上。
现在我有OpenCL SDK,T7的kernel Device Driver和User Device Driver,我把User Device Driver(Linux)下的libmali.so(在fbdev下)替换了OpenCL SDK(Linux)下lib中的libOpenCL.so,并且修改了makefile,
libOpenCL:
#cd $(ROOT)/lib $(CONCATENATE) $(MAKE) libOpenCL.so
让它不要重新编译libOpenCL.so替换了T7的libOpenCL.so
交叉编译器用的是arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
但是编译时报错:
lr@ubuntu:~/Mali/Mali OpenCL SDK/Linux/Mali_OpenCL_SDK_v1.1.0/samples/hello_world_opencl$ make
#cd ../../lib ; make libOpenCL.so
cd ../../common/ ; make libCommon.a
make[1]: Entering directory '/home/lr/Mali/Mali OpenCL SDK/Linux/Mali_OpenCL_SDK_v1.1.0/common'
make[1]: 'libCommon.a' is up to date.
make[1]: Leaving directory '/home/lr/Mali/Mali OpenCL SDK/Linux/Mali_OpenCL_SDK_v1.1.0/common'
arm-none-linux-gnueabi-g++ hello_world_opencl.o -o hello_world_opencl -L../../lib -L../../common -lOpenCL -lCommon
/home/lr/arm_gcc/arm-2014.05/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/ld: error: ../../lib/libOpenCL.so uses VFP register arguments, hello_world_opencl does not
/home/lr/arm_gcc/arm-2014.05/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/ld: failed to merge target specific data of file ../../lib/libOpenCL.so
collect2: error: ld returned 1 exit status
Makefile:27: recipe for target 'hello_world_opencl' failed
make: *** [hello_world_opencl] Error 1
lr@ubuntu:~/Mali/Mali OpenCL SDK/Linux/Mali_OpenCL_SDK_v1.1.0/samples/hello_world_opencl$
我正在想办法解决