opencl库移植

版权声明:本文为博主原创文章,转载需注明出处,谢谢合作 https://blog.csdn.net/QQ2010899751/article/details/82533214

一、概念:


1.1、一个完整的opencl框架,从内核层到用户层,可分为四部分:

    内核层GPU驱动   -  kernel device drive        ,存在于Image or modules
    用户层动态库       -  user-space binary drive ,存在于/usr/lib/libOpenCL.so
    头文件                  -  opencl head file             ,存在于/usr/include/CL/
    应用程序              -  opencl application program

1.2、大体流程
    内核层GPU驱动 - 用户层动态库 - 头文件 - 应用程序
 
 
二、各部分资源如何得到?


2.1、内核层GPU驱动(kernel device drive)
    
    A、需要确定GPU的型号,因作者使用RK3399,通过RK3399对应数据手册可知,
          GPU型号是Mali T860MP4。(在本说明中使用Mali T860MP4作例子)
    B、通过浏览器进入Mali ARM官网,
          网址为 https://developer.arm.com/products/software/mali-drivers/midgard-kernel
          通过本网址的文本描述可知,支持Mali-T8xx series GPUs,文本描述如下。
              The Android and Linux version of the Mali GPUs Device Driver
              provide low-level access to the Mali-T6xx, Mali-T7xx and Mali-T8xx series GPUs.
          下载对应linux版本的源码
    C、此时将下载出来后的源码,整合到linux kernel源码中,配置,编译。
          
    注意:如果读者与作者一样使用rockchip linux SDK进行开发RK3399,
          内核层GPU驱动(kernel device drive)这一部分,不需要自己移植,
          默认rockchip linux SDK已移植。

2.2、用户层动态库(user-space binary drive)   

    有4种路径可获得:
    A、如果读者十分熟悉opencl规范,可以通过阅读KhronosGroup-opencl相关文档,
       进行编写动态库,连接 内核层GPU驱动 - 应用程序。
       KhronosGroup-opencl相关文档,
       网址为 https://github.com/KhronosGroup?utf8=%E2%9C%93&q=opencl&type=&language=
    B、通过浏览器进入Mali ARM官网,
       网址为 https://developer.arm.com/products/software/mali-drivers/user-space
       (通过本网址的文本描述可知, 此网页的用户层动态库 支持 OpenCL 1.1, 1.2, 2.0规范的API)
       寻找RK3399的用户层动态库(user-space binary drive) ,
       此处有两种类型的动态库:fbdev、X11(目前作者不清楚两者区别,后续再补充说明)
       下载后,将libMali.so存放在ARM的/usr/lib/,同时建立软链接libOpenCL.so指向libMali.so即可。
    C、直接采用rockchip linux SDK中提供的 用户层动态库(user-space binary drive) ,
       软链接libOpenCL.so指向libMali.so。
    D、由SOC厂商提供。
    
2.3、头文件

    有3种路径可获得:
    A、通过以下网址进行下载
       网址为 https://github.com/KhronosGroup/OpenCL-Headers   
    B、直接采用rockchip linux SDK中提供的头文件/usr/include/CL/
    C、由SOC厂商提供。
   
    注意:头文件的版本需要与用户层动态库的版本 一致。

2.4、应用程序

三、总结
    在rockchip linux SDK中,芯片为RK3399,
    内核层GPU驱动默认已支持,
    用户层动态库libOpenCL.so默认已支持,
    头文件/usr/include/CL/默认已支持

四、参考资料
    http://developer.t-firefly.com/forum.php?mod=viewthread&tid=798
    http://bbs.t-firefly.com/forum.php?mod=viewthread&tid=321&extra=page%3D2

猜你喜欢

转载自blog.csdn.net/QQ2010899751/article/details/82533214
今日推荐