OpenCL
-
Richtig machst du's wenn du den Watchdog Timer für den Grafiktreiber ausschalten musst :p
-
Heute endlich wieder zum Programmieren gekommen. Seit fast einer Stunde möchte ich ein einfaches OpenCl-Beispiel ans Laufen bringen. Habe mir dazu schon NVIDEA SDK 11 runtergeladen und installiert.
Kann jemand mir bitte den Link zu einem einfachen C++-Beispiel schicken, damit ich dieses einfache Beispiel versuchen kann, zu installieren?
Edit: Zu compelieren meine ich selbstverständlich.
Edit: Ich bräuchte nach erster Einschätzung die Headers und die Libs.
-
nvidia's sdk hat eigentlich viele beispiele, einfaches ist z.b. der bandwidth test.
kannst dir auch das intel oder ati sdk installieren (ocl ist nicht abhaengig von deiner GPU).
-
Also ein Beispiel habe ich jetzt.
Die richtigen Dateien im richtigen Verzeichnis CL/ auch.
Jetzt wird die OpenCl.lib nicht gefunden. Ich verzweifel. Ich finde auch kein OpenCl for dummies oder sowas.
-
rapso schrieb:
falls du physics hast die mehr als ein frame braucht, hast du eh probleme, weil du irgendwas rendern musst was noch nicht bereitsteht. das naechste problem waere, wenn ein job mehr als 2sekunden braucht, wird windows den treiber neustarten (kann man in der registry aendern, aber das haben die aller wenigsten).
Kannst Du bitte erläutern, wie man diese Zeitbeschränkung in der Registry abschaltet?
-
erster treffer wenn man z.b. nach "windows driver restart 2 second" googlet
http://msdn.microsoft.com/en-us/library/windows/hardware/gg487368.aspx
-
vernunftmensch@ubuntu:~/NVIDIA_GPU_Computing_SDK/OpenCL$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/cuda/bin:/usr/local/cuda/lib
vernunftmensch@ubuntu:~/NVIDIA_GPU_Computing_SDK/OpenCL$ echo $LD_LIBRARY_PATH
:/usr/local/cuda/lib64:/usr/local/cuda/lib
vernunftmensch@ubuntu:~/NVIDIA_GPU_Computing_SDK/OpenCL$ make
make[1]: Betrete Verzeichnis '/home/vernunftmensch/NVIDIA_GPU_Computing_SDK/OpenCL/common'
a - obj/release/oclUtils.cpp.o
make[1]: Verlasse Verzeichnis '/home/vernunftmensch/NVIDIA_GPU_Computing_SDK/OpenCL/common'
make[1]: Betrete Verzeichnis '/home/vernunftmensch/NVIDIA_GPU_Computing_SDK/shared'
make[1]: Verlasse Verzeichnis '/home/vernunftmensch/NVIDIA_GPU_Computing_SDK/shared'
make[1]: Betrete Verzeichnis '/home/vernunftmensch/NVIDIA_GPU_Computing_SDK/OpenCL/src/oclSortingNetworks'
/usr/bin/ld: cannot find -lOpenCL
collect2: ld gab 1 als Ende-Status zurück
make[1]: *** [../../..//OpenCL//bin//linux/release/oclSortingNetworks] Fehler 1
make[1]: Verlasse Verzeichnis '/home/vernunftmensch/NVIDIA_GPU_Computing_SDK/OpenCL/src/oclSortingNetworks'
make: *** [src/oclSortingNetworks/Makefile.ph_build] Fehler 2
vernunftmensch@ubuntu:~/NVIDIA_GPU_Computing_SDK/OpenCL$
Bei mir läuft jetzt der neuste Treiber NVIDEA GEFORCE GT 540M CUDA 2GB. Nach der Installation der Treiber habe ich erst das Toolkit CODA, dann das GPUPROGRAMMING-Zeugs von http://developer.nvidia.com/cuda-downloads heruntergeladen unb beides ordentlich installiert. Danach habe ich PATH und LD_LIBRARY_PATH ~/.bashrc angepaßt.
Warum meckert ld?
-
Vernunftmensch schrieb:
Warum meckert ld?
Deswegen:
Vernunftmensch schrieb:
/usr/bin/ld: cannot find -lOpenCL
Offenbar gibt es keine Datei namens libOpenCL.irgendwas im Library-Suchpfad.
-
Warum fragst du nicht Google? Zweiter Treffer.
-
Problem durch richtiges Setzen der Umgebungsvariablen gelöst.
Neues Problem: ../../..//shared//inc/GL/glxew.h:62:22: schwerwiegender Fehler: X11/Xlib.h: Datei oder Verzeichnis nicht gefunden
-
Auch danach kanns du googeln. Tip: Mehr Treffer gibt's, wenn du die Sprache der Ausgaben auf Englisch stellst.
-
vernunftmensch@ubuntu:~/NVIDIA_GPU_Computing_SDK/OpenCL/bin/linux/release$ sudo optirun ./oclDotProduct [oclDotProduct] starting... Error -1001 in clGetPlatformIDs Call !!! !!! Error # -1000 (Unspecified Error) at line 81 , in file oclDotProduct.cpp !!! Exiting... vernunftmensch@ubuntu:~/NVIDIA_GPU_Computing_SDK/OpenCL/bin/linux/release$
Mitlerweile weiß ich, daß damit gemeint sein könnte, daß keine GPUs gefunden werden.
Was nu?
-
Vernunftmensch schrieb:
Mitlerweile weiß ich, daß damit gemeint sein könnte, daß keine GPUs gefunden werden.
frage vorweg, google hat nichts ergeben? ich haette gedacht, dass du da nicht der einzige mit diesem fehler bist.
-
Im Netz finde ich garnichts. Das ist ja das Problem.
-
versuch es mit
linux Error "-1001" in clGetPlatformIDs
das sieht nach einer ganzen menge aus, klingt als ob es ein generischer error waere der viele gruende haben koennte.
-
Ich weiß nicht mehr weiter. Google kriege ich auch nichts raus.
-
Jetzt habe ich es unter Windows geschafft. OpenCl läuft.
-
void Dummy() { int i=0; while (i<1000) { i++; }; } // OpenCL Kernel Function for element by element vector addition __kernel void VectorAdd(__global const float* a, __global const float* b, __global float* c, int iNumElements) { // get index into global data array int iGID = get_global_id(0); // bound check (equivalent to the limit on a 'for' loop for standard/serial C code if (iGID >= iNumElements) { return; } dummy (); // add the vector elements c[iGID] = a[iGID] + b[iGID]; }
Das klappt nicht. Wie muß man das abändern?
-
Sorry, klappt doch. Problem nur, daß dummy einmal klein und Dummy einmal groß geschrieben ist.
-