OpenCL CTS代码移植到RISCV平台

CTS环境搭建

下载OpenCL-CTS仓库

git clone https://github.com/KhronosGroup/OpenCL-CTS.git -b v2020-10-01-00

具体版本根据项目需要来下载,这里以2020-10-01-00为例

下载依赖仓库

下面几个操作都在OpenCL-CTS目录下执行

git clone https://github.com/KhronosGroup/OpenCL-Headers.git

git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git

git clone https://github.com/KhronosGroup/libclcxx.git

交叉编译器配置

如果要修改编译器,需要修改编译文件CMakeLists.txt以riscv为例增加:SET(CMAKE_C_COMPILER /xxx/yyy/zzz/bin/riscv64-linux-gcc)SET(CMAKE_CXX_COMPILER /xxx/yyy/zzz/bin/riscv64-linux-g++)

编译

Building OCL-ICD-Headers

编译OCL-CTS之前,需要先编译OCL-ICD-Headers,编译还会生成.so文件。这个SO后面后用来编译CTS源码。mkdir OpenCL-ICD-Loader/build; cd OpenCL-ICD-Loader/build cmake -DOPENCL_ICD_LOADER_HEADERS_DIR=OpenCL-Headers/ -DENABLE_OPENCL30_PROVISIONAL=1 .. make -j8

Building the source code

mkdir build; cd build

cmake -DCL_INCLUDE_DIR=OpenCL-Headers -DCL_LIB_DIR=OpenCL-ICD-Loader/build -DCL_LIBCLCXX_DIR=libclcxx -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=./ -DOPENCL_LIBRARIES="-lOpenCL -lpthread" -DUSE_CL_EXPERIMENTAL=ON ..

问题

  1. CXX_FLAGS里存在x86的链接flag, -msse等

查看CMakeLists.txt , 走此路径是因为CLConform_TARGET_ARCH里没有RISCV导致

进一步查看源头可以看到,此变量通过CMAKE_SYSTEM_PROCESSOR变量来选择在OpenCL-CTS/CMakeFiles/3.10.2/CMakeSystem.cmake文件里定义了相关变量

修改这里为RISCV,并且在OpenCL-CTS目录的CMakeLists.txt中增加如下代码

  1. OpenCL_CTS/test_common/harness/rounding_mode.cpp 212/236报 “Unknow arch”

从报错的地方看:

原因是没有riscv的支持函数用来支持FlushToZero和UnFlushToZero需要查阅当前的RISCV FPU的相关寄存器,来看是否可以适配

关于这里的平台宏用哪个?需要通过交叉编译器的默认选项来看,例如riscv64-linux-gcc -E -dM - < /dev/null 可以看到目前我们用的是__riscv

  1. test_common/harness/fpcontrol.h中报错

按照要求实现对应函数即可

ForceFTZ() 强制进入FTZ模式

DisableFTZ() 关闭FTZ模式

RestoreFPState() 恢复FPU状态

  1. test_common/harness/testHarness.cpp编译出现

“Unknow arch”

PrintArch()函数打印需要,参考rounding_mode.cpp中的定义实现一个即可

 

  1. test_common/harness/threadTesting.h:22:10: fatal error: CL/opencl.h

检查cmake命令中-DCL_INCLUDE_DIR路径是否正确可以通过在build目录下grep -nrw OpenCL-Headers来看实际编译时的Headers路径在哪里

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦枫Leonlew

希望这篇文章能帮到你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值