我项目中需要用嵌入式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 Ir6410,
你是否是在http://malideveloper.arm.com/develop-for-mali/sdks/mali-opencl-sdk/ 下到的SDK?
lib应该是可以通用的, 'support for ARM Linux based platforms with Mali-T600 Family of GPUs and OpenCL' 这里泛指的是我们的Midgard系列设备,
如遇到问题,欢迎向我们反馈
Best Regards,
Zephyr He
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$
我正在想办法解决
Hi Zephyr He,
OpenCL SDK我是在你给出来的链接下的。想问一下,你说的lib是通用的,是指OpenCL SDK的lib路径下的libOpenCL.so可以在给T6和T7使用吗?
嗯,对lib并不是硬件相关,T6和T7使用的是同一架构
请问下,对于安卓平台下Mali的GPU,OpenCL的driver。这个是看SOC厂家提供是么?
目前有两款带有T628的手机,一个是华为的Mate7,一个是魅族MX4 pro。对于MX4 pro,OpenCL可以检测到GPU的信息;对于Mate7,OpenCL不能检测到GPU信息。
对于没有自带OpenCL driver的设备,我需要开发OpenCL程序,这个问题,请问该如何解决呢?
Android平台上OpenCL的driver是需要设备厂商提供的,如果测试代码都一样,没有检测到GPU信息很有可能是设备厂商没有开放OpenCL接口。
建议到华为Mate7的官方论坛咨询一下有没有支持OpenCL的版本。