mikrocontroller.net

Forum: PC Hard- und Software OpenCL funktioniert nicht


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Thoralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe eine Software, die mit OpenCL ab Version 1.1 läuft (schon auf 
anderen Rechnern getestet, funktioniert).

Auf einem älteren Rechner, um den es hier geht, ist eine Nvidia 8600 GTS 
Grafikkarte eingebaut. Laut GPUZ ist sie voll OpenCL-fähig (ohne 
Versionsangabe).

Bei Wikipedia steht, dass sie OpenCL-1.1-kompatibel ist (G80-GPU):
https://de.wikipedia.org/wiki/Nvidia-GeForce-8-Serie#Grafikprozessoren

Wenn ich aber die Software auf diesem Rechner starte, kommt folgende 
Fehlermeldung:
(X) Der Prozedureinsprungspunkt "InitOnceExecuteOnce" wurde in der DLL 
"KERNEL32.DLL" nicht gefunden.

Unter
C:\Programme\NVIDIA Corporation
findet sich ein Ordner mit dem Namen "OpenCL". Darin ist eine Datei mit 
dem Namen OpenCL.dll mit der Versionsnummer 1.0.0.0
Möglicherweise ist hier schon das Problem, weil ja für die Software die 
OpenCL-Version 1.1 benötigt wird.
Die Graka kann aber offensichtlich hardwaremäßig auch 1.1

Hat jemand eine Idee, was man machen könnte, um OpenCL 1.1 auf der 
Nvidia-8600-Graka zum Laufen zu bringen?
Schön wäre auch, wenn es eine Software gäbe, die auf einem 
Win-32bit-System die tatsächlich vorliegende OpenCL-Kompatiblität testen 
könnte (bis jetzt aber nichts gefunden, nur für 64bit).

Autor: Rene K. (xdraconix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falsch ist das sie einen G80 hat, richtig ist das es ein G84 Chip ist 
und auch OpenCL 1.1 unterstützt. Wo ich aber vorsichtig wäre. Es sind 
"gerademal" 32 Stream Prozessoren und mit gerade mal 256MB auch nicht 
gerade mit üppig Speicher ausgestattet.

In Zeiten wo aber Quadro Karten oder kleinere Fermi Karten gebraucht zu 
Schleuderpreisen unter 20€ gebraucht rausgehauen werden, wundert es mich 
das man sich heute überhaupt noch eine 8600GTS antut - und das auch noch 
mit OpenCL / CUDA.

Autor: Jim M. (turboj)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thoralf schrieb:
> (X) Der Prozedureinsprungspunkt "InitOnceExecuteOnce" wurde in der DLL
> "KERNEL32.DLL" nicht gefunden.

Windoof zu alt. Die Funktion gab es erst ab Vista, also eben nicht für 
XP.

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thoralf schrieb:

> Wenn ich aber die Software auf diesem Rechner starte, kommt folgende
> Fehlermeldung:
> (X) Der Prozedureinsprungspunkt "InitOnceExecuteOnce" wurde in der DLL
> "KERNEL32.DLL" nicht gefunden.

D.h.: Es hat mit der Grafikkarte oder deren Treiber rein garnix zu tun. 
Kernel32.dll ist Windows-Basis. Sehr wahrscheinlich ist einfach nur das 
Windows auf diesem System zu alt. Mit ein bissel Glück genügt es, dem 
System einfach mal alle verfügbaren Updates zu verpassen. Wenn nicht: 
Pech gehabt.

Upgrade auf eine neuere Windows-Version fällig.

Autor: Thoralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten!

Auf dem Rechner ist auch noch ein Win10 drauf. Habe es damit probiert, 
aber da geht es auch nicht.
Die CPU-Version läuft problemlos unter Win10 und XP (aber extrem 
langsam).

Die GPU-Version, die OpenGL nutzt, startet nach dem Anklicken einfach 
nicht und versandet.

Thoralf schrieb:
> Unter
> C:\Programme\NVIDIA Corporation
> findet sich ein Ordner mit dem Namen "OpenCL". Darin ist eine Datei mit
> dem Namen OpenCL.dll mit der Versionsnummer 1.0.0.0

Vielleicht haben die bei Nvidia wirklich die 1.0-Treiber statt der 
benötigten 1.1-Treiber eingebaut.


c-hater schrieb:
> Mit ein bissel Glück genügt es, dem
> System einfach mal alle verfügbaren Updates zu verpassen.

Das ist XP Prof. SP3 (damals) frisch von einer CD installier, da sind 
vermutlich nur sehr wenige Updates mit dabei gewesen...

Autor: Thoralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rene K. schrieb:
> In Zeiten wo aber Quadro Karten oder kleinere Fermi Karten gebraucht zu
> Schleuderpreisen unter 20€ gebraucht rausgehauen werden, wundert es mich
> das man sich heute überhaupt noch eine 8600GTS antut - und das auch noch
> mit OpenCL / CUDA.

Über eine solche Kartenempfehlung würde ich mich sehr freuen :)

Anforderungen:
-halbwegs klein von der Aufbaugröße her
-gebraucht unter 20Euro
-kann CUDA (halbwegs neuere Version)
-kann OpenCL (halbwegs neuere Version)
-läuft unter Win10
-läuft unter WinXP
-kein allzu großer Stromverbrauch

Autor: Ben B. (Firma: Funkenflug Industries) (stromkraft)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenns Dir vor allem um möglichst neu und wenig Stromverbrauch geht, 
versuch 'ne GTX 680/780 zu bekommen, oder irgendwas kleineres aus diesen 
Serien.

Die Dinger sind im Standby/Desktop-idle recht sparsam und bieten aber 
auch Bumms wenns sein muß - wollen dann aber auch Strom sehen.

Die Serien 480/580 sind nicht gerade stromsparend. Ich hatte eine GTX 
480 als die aktuell waren, deswegen ist der Planet heute zwei Grad 
wärmer.

Die beste Leistung dürfte 'ne alte Mining-Karte bieten, sowas wie eine 
P106, aber die kostet noch mehr als 20 Euro gebraucht und ist für nichts 
anderes als solche Berechnungen zu gebrauchen. Aber die Karten sind 
recht stromsparend, auch unter Last und noch ziemlich neu, also mit 
entsprechend hoher Rechenleistung.

Autor: sid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
openCL 1.1 gabs bei Nvidia ab Treiber 280.xxx oder so;
GeForce-Treiber 332.21 sollte für XP und Deine Karte der Richtige sein;
ob das funzt kann ich Dir nicht versprechen, aber n Versuch ist es Wert,
dann kannst Du vielleicht in Ruhe nach ner besseren Graka suchen

Autor: sid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oha.. ich las grade das jemand sagt die 8800GTX sein NICHT openCL1.1 
fähig..
genauere Angaben als GPUZ soll dazu
der GPU caps viewer machen
http://www.geeks3d.com/20130618/gpu-caps-viewer-1-18-1-videocard-information-utility-opengl-opencl-geforce-radeon-gpu/
(hab ich selber nicht getestet das Tool.. kann Dir also leider nix dazu 
sagen)

Autor: Thoralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sid schrieb:
> Oha.. ich las grade das jemand sagt die 8800GTX sein NICHT openCL1.1
> fähig..

Wo hast du das gelesen?
Die verwendete Karte ist eine 8600GTS, aber so groß werden die 
Unterschiede hier wohl nicht sein.

sid schrieb:
> genauere Angaben als GPUZ soll dazu
> der GPU caps viewer machen
> 
http://www.geeks3d.com/20130618/gpu-caps-viewer-1-18-1-videocard-information-utility-opengl-opencl-geforce-radeon-gpu/

Danke für den Link!


Also unter XP 32bit sagt GPUZ: voll Open-CL-1.1-fähig

Der GPU Caps Viewer läuft leider nur unter 64bit.


Unter Win10 sagt GPUZ: kein OpenCL, Treiber R342.01

Unter Win10 sagt GPU Caps Viewer: kein OpenCL

Autor: Thoralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thoralf schrieb:
> Also unter XP 32bit sagt GPUZ: voll Open-CL-1.1-fähig

Und der Treiber unter XP ist 340.52

Autor: Thoralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss man für OpenCL eigentlich auch Zusatzsoftware wie DirectX10 oder 
NET Framework installieren?

Autor: sid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thoralf schrieb:
> sid schrieb:
>> Oha.. ich las grade das jemand sagt die 8800GTX sein NICHT openCL1.1
>> fähig..
>
> Wo hast du das gelesen?

Uhm mehr oder weniger Zusammengereimt.
aus Computing Capabiltiy:
https://developer.nvidia.com/cuda-gpus
(8600 GTS und besagte 8800 GTX  haben ComputingCapabilty 1.1)

und
diesem beitrag:
https://devtalk.nvidia.com/default/topic/499998/cuda-programming-and-performance/opencl-v1-1-support-in-latest-drivers-new-drivers-with-opencl-v1-1-support/post/3572056/#3572056
Zitat:
#################
One of the mandatory requirements for the device to support OpenCL 1.1 
is to expose at least 32KB of local memory. So if GPU has only 16KB of 
on-chip local (shared) memory then the drivers' developers have two 
options:

1) Provide 32KB of local memory by emulating local memory with global 
one.
2) Support OpenCL 1.0 only for the device. But it might support language 
feature set of OpenCL 1.1, check CL_DEVICE_OPENCL_C_VERSION.

Option 2 looks the best one and it seems it is the one implemented.

Amount of local (shared) memory per compute unit (multiprocessor):
- Compute Capability < 2.0: 16KB
- Compute Capability >= 2.0: 48KB
#################

Wenn also der Treiber die fehlenden 16KB lokalen Speicher nicht aus dem 
globalen Speicher emuliert, ist OpenCL 1.1 nicht drin.

Mach mal n systemwiederherstellungspunkt und nen Treiber downgrade auf 
kurz nach dieser 280.19 Beta
http://www.gpu-tech.org/content.php/162-Nvidia-supports-OpenCL-1.1-with-Geforce-280.19-Beta-performance-suffers

Je älter der Treiber, desto "neuer" Deine hardware ihm ggü, desto höher 
die chance dass nvidia Dich noch nicht zum neukauf auffordern will ;)

Also zB der hier:
https://www.nvidia.com/de-de/drivers/windows/280_26/winxp-280-26-whql-driver-de/

mit ein bisschen Glück haben die nur bei späteren Treiberd den Emulator 
für den Speicher wieder entfernt ;)

Autor: Thoralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Erklärungen!

sid schrieb:
> Mach mal n systemwiederherstellungspunkt und nen Treiber downgrade auf
> kurz nach dieser 280.19 Beta
> 
http://www.gpu-tech.org/content.php/162-Nvidia-supports-OpenCL-1.1-with-Geforce-280.19-Beta-performance-suffers

Habe den Nvidia-Treiber deinstalliert und dann den hier installiert:
280.26-desktop-winxp-32bit-international-whql.exe

Es kommt dann leider wieder diese Fehlermeldung, die ich schon ganz oben 
erwähnt habe, wenn die OpenCL-Software gestartet wird:

 X) Der Prozedureinsprungspunkt "InitOnceExecuteOnce" wurde in der DL 
"KERNEL32.DLL" nicht gefunden.

Autor: Thoralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe jetzt einfach als "Referenzobjekt" ein älteres Notebook rangezogen. 
Es hat eine NVIDIA GeForce GT 220M eingebaut (Grafikchip ist hier ein 
GT216).
https://de.wikipedia.org/wiki/Nvidia-GeForce-200-Serie

Die GT 220M ist von Mitte 2009 und damit ca. 2 Jahre jünger als die 
GTS8600.

Mit ihrem alten Treiber von 2009 war sie unter Win7 nicht OpenCL-fähig.

Habe dann den neusten Treiber installiert (ForceWare342.01 WHQL Win7 
64b)

Damit wird die Karte nun definitiv als OpenCL-fähig eingestuft von 
GPU-Z, GPU-Caps-Viewer und CL-Test.

Bei GPU-Caps-Viewer wird sie auf der Startseite als OpenCL-1.0 
eingestuft, dann unter dem Reiter 'Open CL' als "OpenCL 1.1 Cuda 6.5.51 
FULL_PROFILE". Local Mem. 16kB, konstant Buffer 64kB.
Wobei das 1.1 sich hier auch auf das Cuda beziehen kann.
Jedenfalls laufen die meisten der enthaltenen grafischen 
OpenCL-Testfunktionen problemlos (glaube bis auf zwei).

Mit CL-Test wird die Karte als "OpenCL 1.0 Cuda" eingestuft.



Als praktische Testsoftware habe ich dann das Go-Programm Leela11 
gewählt, es benötigt OpenCL 1.1.
https://www.sjeng.org/leela.html

Dort wird verlangt:
What do I need to run the "GPU Accelerated" version?

You need a video card with OpenCL 1.1 (or later) capability. This is supported on all recent AMD and NVIDIA cards. Make sure the latest drivers for the video card are installed. The detected video card can be seen in the Help->About menu.

Wenn ich Leela11 in der OpenCL-Version starte, erscheint die 
Fehlermeldung
*** caught unhandled unknown exception terminating



Muss man nun davon ausgehen, dass die GeForce GT 220M nur OpenCL1.1 
kann?

sid schrieb:
> Wenn also der Treiber die fehlenden 16KB lokalen Speicher nicht aus dem
> globalen Speicher emuliert, ist OpenCL 1.1 nicht drin.

Wie ein paar Absätze weiter oben erwähnt hat sie anscheinend auch nur 
Local Mem. 16kB.

Autor: Thoralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sid schrieb:
> Mach mal n systemwiederherstellungspunkt und nen Treiber downgrade auf
> kurz nach dieser 280.19 Beta
> 
http://www.gpu-tech.org/content.php/162-Nvidia-supports-OpenCL-1.1-with-Geforce-280.19-Beta-performance-suffers

Sicher, dass nicht der 280.19-Treiber verwendet werden soll?
http://www.gpu-tech.org/content.php/162-Nvidia-supports-OpenCL-1.1-with-Geforce-280.19-Beta-performance-suffers

Autor: Thoralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich will das jetzt von meiner Seite hier nicht überladen, aber das 
könnte zu der Frage passen, wie man die Nvidia GeForce 220M im Notebook 
treibermäßig auf OpenCL 1.1 bekommt.
https://www.nvidia.com/en-us/geforce/forums/game-ready-drivers/13/161857/any-opencl-drivers-version-11-or-higher-in-nvidia-/

326.80 = OpenCL 1.1 CUDA 4.2.1
327.23 = OpenCL 1.1 CUDA 4.2.1
331.40 = OpenCL 1.1 CUDA 6.0.1

Wobei:
https://www.nvidia.com/en-us/geforce/forums/discover/161684/what-is-the-version-of-opencl-in-the-bundle-323-27-/
the nvidia installable client driver for OpenCL are nvopencl.dll and nvopencl32.dll which return the following

331.40 is OpenCL 1.1 CUDA 6.0.1
327.23 is OpenCL 1.1 CUDA 5.5


the OpenCL and Opencl64 dll's contained in the driver are khronos supplied 1.0 dll's.

Wird da jemand schlau draus?

Autor: sid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nunja, wenn der Treiber den fehlenden Speicher nicht emuliert,
dann haste eben keine Chance auf OpenCL 1.1

Du kannst die beta gerne ausprobieren, aber beta Treiber haben häufig 
Schwächen..
der .26 ist so nah am .19, dass ich auch vermuten wollte, dass es reine 
Bugfixes waren bis dahin.

Naja und verwechsle nicht Karte und Treiber bitte..

Na klar wird mit OpenCL UNfähigem Treiber die Karte selbst als
untauglich eingestuft,
immerhin gibt es dann ja keine OpenCL Schnittstelle die die Software 
abfragen kann nach OpenCL Version.
Erst der OpenCL Treiber (und damit die Schnittstelle zwischen Software 
und Hardware) lassen die Fähigkeit erkennen
(und macht sie damit anzeigbar)

Andersherum kann ein Treiber sehr wohl OpenCL 1.1 unterstützen
für Chips mit 32KB oder mehr lokalem Speicher
und nur OpenCL 1.0 für Modelle mit 16KB

Das ändert nichts and der Treiber designation
331.40 is OpenCL 1.1 CUDA 6.0.1
327.23 is OpenCL 1.1 CUDA 5.5

Denn die ist unabhängig vom eigentlichen Grafikchip

Ich fürchte also Du wirst um eine neue Grafikkarte nicht herumkommen 
wenn Du OpenCL 1.1 brauchst.

Eventuell hast Du an einer älteren version des Programms 8das mit OpenCL 
1.0 auskommt vielleicht)
mehr Freude.

(wieder ein Grund weswegen ich Updates immer skeptisch gegenüber stehe 
[ausser virendefinitionen ;)])

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.