我有一个用于仍私有项目的自托管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而言,我没有发现任何有用的信息。
答案 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代码。