在此期间我自己找到了解决方案。比预期的要容易。
gitlab-ci 管道的 docker-image 只需要来自 amd 网站 (https://www.amd.com/en/support) 的 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"]:
[[runners]]
...
[runners.docker]
...
devices = ["/dev/dri"]
然后使用gitlab-runner restart 重新启动 gitlab 运行器。
在此之后,可以在 gitlab-ci docker runner 中执行 opencl-code。