首页 > 解决方案 > 如何在 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 的案例有用的信息.

标签: dockeropenclgitlab-ci

解决方案


在此期间我自己找到了解决方案。这比预期的要容易。

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。


推荐阅读