docker - 如何在 gitlab-ci docker executor 中使用 AMD 上的 OpenCL 运行程序
问题描述
我有一个用于私有项目的自托管 gitlab 和一个用于测试 AMD GPU 的专用物理节点。在这个节点上已经有一个带有 docker executor 的 gitlab-ci runner。
有没有办法使用 OpenCL 执行程序并访问由 gitlab-ci 运行程序创建的 docker-containers 中的 AMD GPU?
到目前为止,我发现的只是解决此问题的 Nvidia 和 CUDA 相关信息(例如,我如何在 gitlab-ci docker executor 中使用 cuda),但我没有发现任何对 OpenCL 和 AMD 的案例有用的信息.
解决方案
在此期间我自己找到了解决方案。这比预期的要容易。
gitlab-ci 管道的 docker-image 只需要来自 amd 网站 ( https://www.amd.com/en/support ) 的 amd gpu 驱动程序。
Example-Dockerfile 构建 docker 镜像:
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 config ( /etc/gitlab-runner/config.toml
) 进行一些必要的修改。
添加 docker-runner: devices = ["/dev/dri"]
:
[[runners]]
...
[runners.docker]
...
devices = ["/dev/dri"]
并使用 重新启动 gitlab 运行器gitlab-runner restart
。
在此之后,可以在 gitlab-ci docker runner 中执行 opencl-code。
推荐阅读
- msmq - MSMQ enumerator.RemoveCurrent 退出消息队列迭代
- c# - 我可以让用户选择要导入 Datagridview 的 excel 文件吗?
- ckeditor5 - 在 CKEditor 5 的 modifyselection 中更改参数的任何副作用?
- javascript - 无法读取属性“未定义的导航”
- .net - 无法获得任何响应 - 发送 HTTP 标头后服务器无法附加标头
- javascript - 与 Safari 9 的 Javascript 兼容性
- php - 致命错误:未捕获的 SoapFault 异常:[HTTP] 发送 HTTP SOAP 失败
- vue.js - 如何使用 vuetify image srcset - vuejs
- maven - gitlab中的maven settings.xml重复
- google-cloud-firestore - firebase friendlychat-web 如何在新集合中添加数据?