我也是opencl小白,所以简单记录下opencl使用。(使用XUbuntu系统,而非Ubuntu系统)
首先开发板确定是否已经安装opencl库(clinfo命令查看,如果显示没有此命令,使用sudo apt-get install clinfo安装),如果出现下图所示界面,则系统已经安装,直接跳到 第四步、QT开发,看QT的引用即可。
如果没有安装,可以参照如下操作
第一步:下载opencl,我的GPU是MALI-T860,所以去arm官网下载对应的SDK
链接如下:
https://developer.arm.com/technologies/compute-library
GitHub下载SDK,Documentation是对应的文档使用手册
第二步:编译opencl
参考官网上的opencl文档,找到下图说明
因为我的是64位Ubuntu系统,所以进入第一步下载库的根目录下,执行红色框里面的内容(如果没有安装scons,则先执行sudo apt-get install scons命令安装scons)
我在安装过程中遇到了internal compiler error: Killed()的错误,我按照
https://blog.csdn.net/qq_29573053/article/details/69665996
给出的方法解决了
internal compiler error: Killed (program cc1plus)
在 640M 内存的 vps 做编译的时候出现了上述错误.
几经搜索, 才发可能是系统没有交换分区, 编译过程中内存耗尽, 导致了编译中断 …
解决方式也很简单, 就是增加一个交换分区:
1. 创建分区文件, 大小 2G
dd if=/dev/zero of=/swapfile bs=1k count=2048000
2. 生成 swap 文件系统
mkswap /swapfile
3. 激活 swap 文件
swapon /swapfile
这样就木有问题了, 但是这样并不能在系统重启的时候自动挂载交换分区, 这样我们就需要修改 fstab.
修改 /etc/fstab 文件, 新增如下内容:
/swapfile swap swap defaults 0 0
这样每次重启系统的时候就会自动加载 swap 文件了.
第三步、安装QT系统
安装步骤可参看如下链接
http://dev.t-firefly.com/forum.php?mod=viewthread&tid=12745&highlight=3399%2B%B0%B2%D7%B0%2BQT
为防止链接失效,现把链接内容复制如下
更新软件源和升级更新软件
在第二步upgrade的时候老是卡到70%左右,显示连接超时,此时使用sudo apt-get clean命令清除一下,重新upgrade一下,会发现运行到了98%后卡住了。百度没办法,因此在upgrade命令后面添加了 --fix-missing ,让它先安装已经下载好的库。然后在执行sudo apt-get clean命令,在重复执行sudo apt-get upgrade即可
PS:
安装过程中还遇到了dpkg: error processing /var/cache/apt/archives/***.deb的问题,按照网上sudo dpkg -i --force-overwrite /var/cache/apt/archives/***.deb解决。
还有一个libglvnd-dev和mesa-common-dev库缺失问题,使用sudo apt-get install libglvnd-dev mesa-common-dev解决
2、安装qt5
安装完后,在命令行输入qtcreator,会弹出以下界面。
3、配置环境
在option下,选择Build&Run,在Compilers下按add按钮,选择GCC,选择Compilers path:如下图所示。
然后,选择Kits栏,首先要Remove原有的Manual,然后按Add,配置如下图所示。
以上步骤不能弄反,否则无法成功配置。
4、编译运行
新建工程,按左下角的第一个绿色按钮,如果又空白弹窗出现表示配置成功了。
在上面链接的第三步,我的板子中没有这个arm-linux-guneabihf-gcc这个文件
这时执行一下$ sudo apt-get install gcc-arm-linux-gnueabihf device-tree-compiler lzop libncurses5-dev libssl1.0.0命令就行了
第四步、QT开发
新建一个QT工程,打开pro文件,添加
LIBS += -lOpenCL
INCLUDEPATH += ./CL
将第二步编译好的libOpenCL.so和从网站上下载的CL文件夹放到刚新建的工程下面,(如果系统已经安装好OpenCL,只需考CL文件夹即可)这样就可以引用opencl库函数了