如何在gitlab ci docker执行器中在AMD上运行OpenCL程序

如何在gitlab ci docker执行器中在AMD上运行OpenCL程序,docker,opencl,gitlab-ci,Docker,Opencl,Gitlab Ci,我有一个自行托管的gitlab用于私人项目,还有一个专用的物理节点用于AMD GPU测试。在此节点上已经有一个带有docker executor的gitlab ci runner 是否有一种方法可以使用OpenCL执行程序,并在gitlab ci runner创建的docker容器中访问AMD GPU 到目前为止,我只找到了Nvidia和CUDA相关的信息来解决这个问题(例如这个),但我还没有发现任何对OpenCL和AMD有用的信息。同时我自己找到了解决方案。这比预期的要容易 gitlab ci

我有一个自行托管的gitlab用于私人项目,还有一个专用的物理节点用于AMD GPU测试。在此节点上已经有一个带有docker executor的gitlab ci runner

是否有一种方法可以使用OpenCL执行程序,并在gitlab ci runner创建的docker容器中访问AMD GPU


到目前为止,我只找到了Nvidia和CUDA相关的信息来解决这个问题(例如这个),但我还没有发现任何对OpenCL和AMD有用的信息。

同时我自己找到了解决方案。这比预期的要容易

gitlab ci管道的docker映像只需要来自amd网站()的amd gpu驱动程序

构建docker映像的Dockerfile示例:

from ubuntu:18.04

RUN apt-get update && apt-get upgrade -y

RUN apt-get install -y gcc g++ opencl-headers ocl-icd-opencl-dev curl apt-utils unzip tar curl xz-utils wget clinfo

RUN cd /tmp &&\
    curl --referer https://drivers.amd.com/drivers/linux -O https://drivers.amd.com/drivers/linux/amdgpu-pro-20.30-1109583-ubuntu-18.04.tar.xz &&\
    tar -Jxvf amdgpu-pro-20.30-1109583-ubuntu-18.04.tar.xz &&\
    cd amdgpu-pro-20.30-1109583-ubuntu-18.04/ &&\
    ./amdgpu-install -y  --headless  --opencl=legacy
根据您使用的gpu和linux版本,您可能需要另一个文件,然后是本例中的文件。也有可能该文件不再存在于网站上,您必须签出最新的文件

除此之外,只需对gitlab runner配置(
/etc/gitlab runner/config.toml
)进行少量修改

添加docker runner:
devices=[“/dev/dri”]

然后使用
gitlab runner restart
再次重新启动gitlab runner

在此之后,可以在gitlab ci docker runner内部执行opencl代码

[[runners]]
  ...
  [runners.docker]
    ...
    devices = ["/dev/dri"]