我如何在gitlab-ci docker executor中的AMD上使用OpenCL运行程序

时间:2020-07-04 19:35:08

标签: docker opencl gitlab-ci

我有一个用于仍私有项目的自托管gitlab,还有一个专用物理节点,用于使用AMD GPU进行测试。在该节点上,已经有一个带有docker executor的gitlab-ci运行程序。

是否可以使用OpenCL执行程序并访问由gitlab-ci运行程序创建的docker-containers中的AMD GPU?

到目前为止,我所发现的都是与Nvidia和CUDA有关的信息,可以解决此问题(例如,How can I get use cuda inside a gitlab-ci docker executor),但是对于OpenCL和AMD而言,我没有发现任何有用的信息。

1 个答案:

答案 0 :(得分:0)

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

gitlab-ci管道的docker-image只需要来自amd网站(https://www.amd.com/en/support)的amd gpu驱动程序。

用于构建Docker映像的示例Dockerfile:

function fetch(){
"use strict";var url = "https://api.pandascore.co/lol/champions?token=*my_unique_token*";
    $.ajax({
        url: url,
        type: "GET",
        crossDomain: true,
        dataType: 'jsonp',
        contentType: "application/json; charset=utf-8",
        beforeSend: function(xhr){
        xhr.setRequestHeader('Access-Control-Allow-Origin','*');
         },
        success: function(data){
            console.log(data);
    },
        done: function(data){
            console.log(data);
    },
        error: function(error){
            console.log(error);
    }
    
    });
}

根据您使用的gpu和linux版本,可能需要另一个文件,然后是本例中的文件。该文件也可能不再存在于网站上,因此您必须签出最新文件。

除此之外,仅需要对gitlab-runner配置(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 )进行少量修改。

添加docker-runner:/etc/gitlab-runner/config.toml

devices = ["/dev/dri"]

然后使用[[runners]] ... [runners.docker] ... devices = ["/dev/dri"] 重新启动gitlab运行程序。

此后,可以在gitlab-ci泊坞窗运行程序内执行opencl代码。