Eu passei o dia inteiro nisto também - eu não consegui encontrar nenhuma instrução de trabalho então aqui está o que eu criei para o AMD Radeon RX 580 no sistema Ubuntu 16.04 sem desktop gráfico, instalado sobre SSH:
Assuma um novo sistema de instalação do Ubuntu
-
Obtenha o AMD APP SDK em aqui - Baixar, Descompactar e use
sudo
para executar o script de instalação. -
Faça o download do driver Linux mais recente (17.50 no momento da gravação desta resposta) em aqui , extraia o arquivo
.xz
usandotar Jxvf <filename>
ecd
no diretório criado depois de extrair o arquivo.xz
. -
Agora, execute o instalador com
sudo
:sudo ./amdgpu-pro-install --opencl=legacy -y
-
Reinicializar
-
Execute
clinfo
novamente e você verá que agora tem suporte a OpenCL 1.2 :$ clinfo|grep OpenCL Platform Version: OpenCL 2.1 AMD-APP (2527.3) Execute OpenCL kernels: Yes Device OpenCL C version: OpenCL C 1.2 Version: OpenCL 1.2 AMD-APP (2527.3)
A razão para isso é que a especificação de --legacy
extrai o opencl-amdgpu-pro-icd
, que normalmente não é instalado.
Acho que isso acontece porque os drivers mais recentes querem fazer coisas com o ROCm: link
No meu próprio equipamento, o ROCM é inutilizável porque eu tenho slots PCI-e 1x com risers e um processador Pentium básico ao invés de um i7. Você verifica que o ROCm foi desativado assim:
$ dmesg |grep atomic
[4.885958] kfd kfd: skipped device 1002:67df, PCI rejects atomics
Então eu acho que é por isso que eu tive que fazer legado para fazer o OpenCL funcionar.
Não sei quais são os prós / contras do OpenCL 1.2 vs OpenCL 2.0 vs ROCm, ou mesmo se o driver ROCm apresenta como OpenCL 2.0 externamente - seria ótimo se alguém com mais insight pudesse comentar.