Forum: PC Hard- und Software OpenCL unter Ubuntu nutzen


von UbuntuNeuling (Gast)


Lesenswert?

Hallo,
ich möchte OpenCL unter Ubuntu auf der AMD-GPU nutzen. Wenn ich das 
Programm starte, kommt allerdings folgende Fehlermeldung:

>>Error initializing OpenCL: clGetPlatformIDs (error -1001)

Deshalb habe ich das hier ausprobiert:
https://askubuntu.com/questions/850281/opencl-on-ubuntu-16-04-intel-sandy-bridge-cpu

Genau gesagt habe ich folgende Zeilen im Terminal eingegeben:
1
sudo apt install ocl-icd-libopencl1
2
sudo apt install opencl-headers
3
sudo apt install clinfo
4
5
sudo apt install ocl-icd-opencl-dev
Das wurde offensichtlich auch alles sauber ausgeführt.


Nach der Eingabe von
1
sudo apt install beignet
kommt allerdings eine Fehlermeldung, nämlich kurz gesagt, dass das Paket 
fehlt, abgelöst wurde oder nur aus einer anderen Quelle verfügbar ist.
1
Doch die folgenden Pakete ersetzen es:
2
beignet-opencl-icd

Also habe ich folgendes ins Terminal eingegeben:
1
sudo apt install beignet-opencl-icd

Damit hat die Installation auch funktioniert und es wurde
amd64 (1.3.2-8)
eingerichtet.

Nun kommt diese Fehlermeldung, wenn man das Programm startet:

>>Error initializing OpenCL: No suitable OpenCL device found.


Woran kann das liegen?


Nebenbei sei bemerkt, dass das Programm unter Win10 auf dem gleichen PC 
einwandfrei mit OpenCL läuft. Also auch auf der selben GraKa.

Verwendet wird die neuste Ubuntu-Version und das Programm, das gestartet 
werden soll, ist das hier:
https://sjeng.org/leela.html
Leela 0.11.0 for Ubuntu (deb package)

Die GraKa ist eine Radeon RX550.

von Εrnst B. (ernst)


Lesenswert?

> sudo apt install beignet
(bzw beignet-opencl-icd, intel-opencl-icd)

Das ist OpenCL auf der iGPU einer Intel-CPU. d.H. lässt deine wesentlich 
stärkere Grafikkarte außen vor.
für die bräuchtest du "opencl-amdgpu-pro-icd" (falls du den 
"Pro"-Treiber von AMD verwendest) oder könntest dein Glück mit 
"mesa-opencl-icd" versuchen.

von UbuntuNeuling (Gast)


Lesenswert?

Danke für die schnelle Antwort und die Infos!

Εrnst B. schrieb:
> für die bräuchtest du "opencl-amdgpu-pro-icd" (falls du den
> "Pro"-Treiber von AMD verwendest)

Die Graka wird so angezeigt:
1
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Baffin [Radeon RX 550 640SP / RX 560/560X] [1002:67ff] (rev ff)
2
  Subsystem: Sapphire Technology Limited Radeon RX 550 640SP [1da2:e367]
3
  Kernel driver in use: amdgpu

Von PRO steht da nichts. Bedeutet das, dass es mit 
"opencl-amdgpu-pro-icd" nicht funktionieren wird?

von Εrnst B. (ernst)


Lesenswert?

> Kernel driver in use: amdgpu

Das sollte der Open-Source (nicht-Pro) Treiber sein.

versuch
>> sudo apt install mesa-opencl-icd
und danach ein
>> clinfo

von UbuntuNeuling (Gast)


Lesenswert?

Danke!

Εrnst B. schrieb:
> versuch
>>> sudo apt install mesa-opencl-icd

Nun kommt beim Programmstart die Fehlermeldung
>>Error initializing OpenCL: clBuildProgram (error -43)


Εrnst B. schrieb:
> danach ein
>>> clinfo

Das erzeugt eine Menge Text, siehe nächstes Posting:

von UbuntuNeuling (Gast)


Lesenswert?

1
beignet-opencl-icd: no supported GPU found, this is probably the wrong opencl-icd package for this hardware
2
(If you have multiple ICDs installed and OpenCL works, you can ignore this message)
3
beignet-opencl-icd: no supported GPU found, this is probably the wrong opencl-icd package for this hardware
4
(If you have multiple ICDs installed and OpenCL works, you can ignore this message)
5
Number of platforms                               2
6
  Platform Name                                   Clover
7
  Platform Vendor                                 Mesa
8
  Platform Version                                OpenCL 1.1 Mesa 21.0.3
9
  Platform Profile                                FULL_PROFILE
10
  Platform Extensions                             cl_khr_icd
11
  Platform Extensions function suffix             MESA
12
13
  Platform Name                                   Intel Gen OCL Driver
14
  Platform Vendor                                 Intel
15
  Platform Version                                OpenCL 2.0 beignet 1.3
16
  Platform Profile                                FULL_PROFILE
17
  Platform Extensions                             cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_3d_image_writes cl_khr_image2d_from_buffer cl_khr_depth_images cl_khr_spir cl_khr_icd cl_intel_accelerator cl_intel_subgroups cl_intel_subgroups_short
18
  Platform Extensions function suffix             Intel
19
beignet-opencl-icd: no supported GPU found, this is probably the wrong opencl-icd package for this hardware
20
(If you have multiple ICDs installed and OpenCL works, you can ignore this message)
21
22
  Platform Name                                   Clover
23
Number of devices                                 1
24
  Device Name                                     Radeon RX 550 Series (POLARIS11, DRM 3.40.0, 5.11.0-31-generic, LLVM 12.0.0)
25
  Device Vendor                                   AMD
26
  Device Vendor ID                                0x1002
27
  Device Version                                  OpenCL 1.1 Mesa 21.0.3
28
  Device Numeric Version                          0x401000 (1.1.0)
29
  Driver Version                                  21.0.3
30
  Device OpenCL C Version                         OpenCL C 1.1 
31
  Device Type                                     GPU
32
  Device Profile                                  FULL_PROFILE
33
  Device Available                                Yes
34
  Compiler Available                              Yes
35
  Max compute units                               10
36
  Max clock frequency                             1071MHz
37
  Max work item dimensions                        3
38
  Max work item sizes                             256x256x256
39
  Max work group size                             256
40
=== CL_PROGRAM_BUILD_LOG ===
41
fatal error: cannot open file '/usr/local//usr/lib/clc/polaris11-amdgcn-mesa-mesa3d.bc': No such file or directory
42
  Preferred work group size multiple (kernel)     <getWGsizes:1504: create kernel : error -46>

[...]
1
  Platform Name                                   Intel Gen OCL Driver
2
Number of devices                                 0
3
4
NULL platform behavior
5
  clGetPlatformInfo(NULL, CL_PLATFORM_NAME, ...)  Clover
6
  clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, ...)   Success [MESA]
7
  clCreateContext(NULL, ...) [default]            Success [MESA]
8
  clCreateContext(NULL, ...) [other]              
9
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_DEFAULT)  Success (1)
10
    Platform Name                                 Clover
11
    Device Name                                   Radeon RX 550 Series (POLARIS11, DRM 3.40.0, 5.11.0-31-generic, LLVM 12.0.0)
12
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU)  No devices found in platform
13
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU)  Success (1)
14
    Platform Name                                 Clover
15
    Device Name                                   Radeon RX 550 Series (POLARIS11, DRM 3.40.0, 5.11.0-31-generic, LLVM 12.0.0)
16
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR)  No devices found in platform
17
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM)  No devices found in platform
18
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_ALL)  Success (1)
19
    Platform Name                                 Clover
20
    Device Name                                   Radeon RX 550 Series (POLARIS11, DRM 3.40.0, 5.11.0-31-generic, LLVM 12.0.0)
21
22
ICD loader properties
23
  ICD loader Name                                 OpenCL ICD Loader
24
  ICD loader Vendor                               OCL Icd free software
25
  ICD loader Version                              2.2.14
26
  ICD loader Profile                              OpenCL 3.0

von UbuntuNeuling (Gast)


Lesenswert?

UbuntuNeuling schrieb:
> Genau gesagt habe ich folgende Zeilen im Terminal eingegeben:sudo apt
> install ocl-icd-libopencl1
> sudo apt install opencl-headers
> sudo apt install clinfo
> sudo apt install ocl-icd-opencl-dev

UbuntuNeuling schrieb:
> sudo apt install beignet-opencl-icd

Kann es sein, dass sich die erste Installation mit der "sudo apt install 
mesa-opencl-icd"-Installation ins Gehege kommt?

von UbuntuNeuling (Gast)


Lesenswert?

Laut dem hier
https://de.wikipedia.org/wiki/AMD-Radeon-500-Serie#Grafikprozessoren
kann Polaris11 OpenCL 2.0+

>sudo apt install mesa-opencl-icd
Eventuell hat das eine zu neue OpenCL-Version für die Karte installiert 
(3.0?)

von Nano (Gast)


Lesenswert?

UbuntuNeuling schrieb:
> fatal error: cannot open file
> '/usr/local//usr/lib/clc/polaris11-amdgcn-mesa-mesa3d.bc': No such file
> or directory

Du musst das Paket libclc-amdgcn installieren.
In diesem ist die gesuchte Datei enthalten.

von Nano (Gast)


Lesenswert?

Siehe dazu auch die Ausgabe auf Debian Buster (das du Ubuntu nimmst, 
macht bezüglich dem Paketnamen keinen großen Unterschied, Ubuntu nimmt 
ohnehin die Pakete von Debian sid):
1
apt show libclc-amdgcn
2
Package: libclc-amdgcn
3
Version: 0.2.0+git20180917-3
4
Priority: optional
5
Section: libs
6
Source: libclc
7
Maintainer: Debian OpenCL team <pkg-opencl-devel@lists.alioth.debian.org>
8
Installed-Size: 155 MB
9
Depends: libclc-dev (= 0.2.0+git20180917-3), libclang-common-7-dev
10
Homepage: https://libclc.llvm.org
11
Tag: role::shared-lib
12
Download-Size: 30,0 MB
13
APT-Sources: http://deb.debian.org/debian buster/main amd64 Packages
14
Description: OpenCL C language implementation - amdgcn support
15
 libclc is an open implementation of the OpenCL C programming language,
16
 as specified by the OpenCL 1.1 Specification.
17
 .
18
 This package contains support for the amdgcn (AMD GPU) platform.
19
 Supported GPU families: Southern Islands and newe

Man beachte den letzten Satz!

>  This package contains support for the amdgcn (AMD GPU) platform.
> Supported GPU families: Southern Islands and newe

von Mike B. (mike_b97) Benutzerseite


Lesenswert?

keine Ahnung ob die beignet-Treiber von INTEL auch für AMD-GPUs 
funktionieren
probier mal dies:
https://linuxconfig.org/install-opencl-for-the-amdgpu-open-source-drivers-on-debian-and-ubuntu

von UbuntuNeuling (Gast)


Lesenswert?

Danke für die Antworten!

Nano schrieb:
> Du musst das Paket libclc-amdgcn installieren.
> In diesem ist die gesuchte Datei enthalten.

Muss ich dann einfach nur das hier im Terminal eingeben (oder gehören 
noch andere Schritte dazu)?
1
sudo apt install libclc-amdgcn

von Nano (Gast)


Lesenswert?

UbuntuNeuling schrieb:
> Muss ich dann einfach nur das hier im Terminal eingeben (oder gehören
> noch andere Schritte dazu)?
>
1
> sudo apt install libclc-amdgcn
2
>

Das sollte alles sein. Sollte es noch weitere Abhängigkeiten geben, dann 
werden die in der Regel automatisch aufgelöst.

Ob es noch optionale Pakete gibt und welche Abhängigkeiten das Paket 
hat, kannst du mit apt und dpkg herausfinden.

von UbuntuNeuling (Gast)


Lesenswert?

Nano schrieb:
> UbuntuNeuling schrieb:
>> Muss ich dann einfach nur das hier im Terminal eingeben (oder gehören
>> noch andere Schritte dazu)?
>>> sudo apt install libclc-amdgcn
>>
>
> Das sollte alles sein. Sollte es noch weitere Abhängigkeiten geben, dann
> werden die in der Regel automatisch aufgelöst.

Nach Eingabe von "sudo apt install libclc-amdgcn" in das Terminal 
erscheint dort folgender Text:
1
Paketlisten werden gelesen… Fertig
2
Abhängigkeitsbaum wird aufgebaut… Fertig
3
Statusinformationen werden eingelesen… Fertig
4
libclc-amdgcn ist schon die neueste Version (0.2.0+git20190827-8).
5
libclc-amdgcn wurde als manuell installiert festgelegt.
6
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.

Scheint also schon installiert zu sein.
Wenn man das Programm startet, kommt dann auch wieder die Fehlermeldung 
"Error initializing OpenCL: clBuildProgram (error -43)".

von Nano (Gast)


Lesenswert?

UbuntuNeuling schrieb:
> Scheint also schon installiert zu sein.
> Wenn man das Programm startet, kommt dann auch wieder die Fehlermeldung
> "Error initializing OpenCL: clBuildProgram (error -43)".

Ich habe mir die Fehlermeldung jetzt noch einmal angesehen.

Der Pfad stimmt nicht:

> fatal error: cannot open file
> '/usr/local//usr/lib/clc/polaris11-amdgcn-mesa-mesa3d.bc': No such file
> or directory

Du hast einmal
/usr/local/

das auch nicht mit einem Komma oder ähnlich getrennt ist.

und dann noch
/usr/lib/clc/polaris11-amdgcn-mesa-mesa3d.bc

wo sich die Datei befinden sollte.

Korrigere die Pfadangaben, dann sollte das gehen und er die Datei 
finden.

von UbuntuNeuling (Gast)


Lesenswert?

Danke für die Hilfe!

Wie korrigert man die Pfadangaben?

Unter dem Icon 'Dateien' finde ich leider auch keinen Ordner "usr", 
sonst hätte ich dort einfach den gesuchten Ordner mit der Datei 
erstellt.

von Nano (Gast)


Lesenswert?

Poste mal die vollständige Ausgabe von clinfo, also das Programm das du 
ausführst und den falschen Pfad verwendet.

Schieb die Ausgabe am besten in eine Textdatei und stell diese hier ein.

von UbuntuNeuling (Gast)


Angehängte Dateien:

Lesenswert?

Habe es im Anhang als .txt gepostet. Danke für Deine Hilfe!

von Nano (Gast)


Lesenswert?

Ist clang bei dir installiert?

Was zeigt
apt show clang
an?

Wenn es nicht installiert ist, installiere es mit:
sudo apt install clang

von UbuntuNeuling (Gast)


Lesenswert?

Nano schrieb:
> Was zeigt
> apt show clang
> an?

Das hier, clang scheint also installiert zu sein:
1
Package: clang
2
Version: 1:12.0-52~exp1
3
Priority: optional
4
Section: universe/devel
5
Source: llvm-defaults (0.52~exp1)
6
Origin: Ubuntu
7
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
8
Original-Maintainer: LLVM Packaging Team <pkg-llvm-team@lists.alioth.debian.org>
9
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
10
Installed-Size: 24,6 kB
11
Depends: clang-12 (>= 12~)
12
Breaks: clang-3.2, clang-3.3, clang-3.4 (<< 1:3.4.2-7~exp1), clang-3.5 (<< 1:3.5~+rc1-3~exp1)
13
Replaces: clang (<< 3.2-1~exp2), clang-3.2, clang-3.3, clang-3.4 (<< 1:3.4.2-7~exp1), clang-3.5 (<< 1:3.5~+rc1-3~exp1)
14
Download-Size: 3.432 B
15
APT-Sources: http://de.archive.ubuntu.com/ubuntu hirsute/universe amd64 Packages
16
Description: C, C++ and Objective-C compiler (LLVM based), clang binary
17
 Das Projekt Clang ist ein Frontend für C, C++, Objective C und Objective
18
 C++ für den LLVM-Compiler. Ziel ist es eine Alternative zur GNU Compiler
19
 Collection anzubieten.
20
 .
21
 Clang implementiert die ISO-C++-Standards 1998, 11 und 14 vollständig und
22
 unterstützt darüber hinaus den Großteil von C++17.
23
 .
24
 Dieses Paket installiert den Clang-Standardcompiler.

von Nano (Gast)


Lesenswert?

UbuntuNeuling schrieb:
> Nano schrieb:
>> Was zeigt
>> apt show clang
>> an?
>
> Das hier, clang scheint also installiert zu sein:

Ne, mein Fehler. apt show holt nur die Daten vom Repo und zeigt sie.
Was gibt folgender Befehl aus:

apt search clang

von UbuntuNeuling (Gast)


Angehängte Dateien:

Lesenswert?

siehe Anhang

von Nano (Gast)


Lesenswert?

UbuntuNeuling schrieb:
> siehe Anhang

Dann lag ich mit meiner Vermutung richtig.
clang ist nicht installiert.

Gib mal folgenden Befehl ein:
sudo apt install clang

und danach führe noch einmal clinfo aus.

von UbuntuNeuling (Gast)


Angehängte Dateien:

Lesenswert?

Nano schrieb:
> Gib mal folgenden Befehl ein:
> sudo apt install clang

Nach der Eingabe werden jede Menge Sachen installiert, das dauert ca. 
3min.

Nano schrieb:
> und danach führe noch einmal clinfo aus.

Siehe Anhang.


Wenn man das Programm startet, kommt leider weiterhin die Fehlermeldung
"Error initializing OpenCL: clBuildProgram (error -43)".
Die ersten Zeilen im Anhang sagen "no supported GPU found", woran das 
wohl liegt?
1
beignet-opencl-icd: no supported GPU found, this is probably the wrong opencl-icd package for this hardware
2
(If you have multiple ICDs installed and OpenCL works, you can ignore this message)
3
beignet-opencl-icd: no supported GPU found, this is probably the wrong opencl-icd package for this hardware
4
(If you have multiple ICDs installed and OpenCL works, you can ignore this message)
5
[...]
Vielleicht ein Kompatibilitätsproblem zwischen der OpenCL-2-Graka und 
dem installierten OpenCL-3?

von Εrnst B. (ernst)


Lesenswert?

UbuntuNeuling schrieb:
> Die ersten Zeilen im Anhang sagen "no supported GPU found", woran das
> wohl liegt?

Das liegt an deinen ersten Installationsversuchen,

UbuntuNeuling schrieb:
> sudo apt install beignet
usw.

das musst du wieder rückgängig machen um die Warnung loszuwerden.
"If you have multiple ICDs installed... " Trifft auf deinen Rechner im 
Moment zu, du hast beignet-opencl-icd und mesa-opencl-icd installiert, 
wobei dir für Ersteres die Hardware fehlt. Das wird angemeckert.


Also:
sudo apt purge beignet-opencl-icd
sudo apt autoremove



UbuntuNeuling schrieb:
> fatal error: cannot open file
> '/usr/local//usr/lib/clc/polaris11-amdgcn-mesa-mesa3d.bc'

Bist du sicher, dass du keine weiteren "Tutorials" aus dem Internet 
befolgt hast, irgendwas mit "./configure --prefix=/usr/local/ && make && 
sudo make install" oder so war da nicht dabei?
Falls doch, solltest du das auch rückgängig machen.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.