Seite 1 von 1

[Solved] Ausführen eines leeren Kernels

Verfasst: 19. Jan 2012 19:35
von SupeRalF
Ich habe versucht, das Praktikum auf der GPU auszuführen, indem ich den Kernel erst einmal leer gelassen habe. Leider stürzt das Programm in der Mitte ab. Auf meinem Rechner (Linux 32bit, AMD APP SDK) bekomme ich gar keine Fehlermeldung, auf dem Cluster bekomme ich "CL_DEVICE_NOT_FOUND".
Zumindest mein Rechner kommt nich über folgenden Code in der oclutil.cpp hinaus:

Code: Alles auswählen

	if (oclError != CL_SUCCESS) {
		std::cout << oclErrorString(oclError);
		exit(oclError);
	}
Ich habe einen SandyBridge Prozessor und eine AMD Grafikkarte. Was mache ich falsch? ich habe ja nicht einmal etwas am Projekt geändert...

Re: Ausführen eines leeren Kernels

Verfasst: 19. Jan 2012 19:43
von xshisdi32
Auf die Gris-Rechner funktioniert das CPU/OpenCL code nicht. Vielleicht hast du jetzt das selbe Problem (oclutil.cpp kann keine CPU devices finden). Versuch mal mit "-oclgpu" für GPU/OpenCL Ausführung.

Re: Ausführen eines leeren Kernels

Verfasst: 19. Jan 2012 19:50
von SupeRalF
[EDIT]

Ok, danke, das mit dem Cluster hat sich erledigt! Der Kernel lag an der falschen Stelle.
Der Kernel muss neben die CMakeList; bei mir also direkt in den AMD Ordner. ich hatte die Datei neben die executable gelegt, also in meinen build ordner.

Auf meinem eigenen Rechner funktioniert es leider immer noch nicht.

Re: Ausführen eines leeren Kernels

Verfasst: 19. Jan 2012 19:57
von xshisdi32

Code: Alles auswählen

janus@Zeus:~/Dropbox/TUD/gdi3/praktikum5/code$ grep -inH "oclMIcomputation" *.cpp *.h
oclutil.h:8:#define KERNEL_SOURCE 	"../oclMIcomputation.cl"	// location of the kernel file relative to pr5 executable
oclutil.h:9:#define KERNEL_NAME 	"oclMIcomputation"			// the name of the kernel to execute
janus@Zeus:~/Dropbox/TUD/gdi3/praktikum5/code$ 

Re: Ausführen eines leeren Kernels

Verfasst: 19. Jan 2012 20:14
von SupeRalF
Ok, damit funktioniert das jetzt zwar auf den Cluster, aber nicht auf der CPU, wo wir eigentlich testen sollen. Und auf meinem eigenen Rechner, wo ich die GPU bedenkenlos abschießen dürfte, komme ich dadurch nicht weiter, denn es kommt immer noch nicht über diesen einen Punkt hinweg. Könnte das daran liegen, dass ich 2 Grafikkarten habe (Integrierte Sandy Bridge Grafik und dedizierte AMD)?

Re: Ausführen eines leeren Kernels

Verfasst: 20. Jan 2012 09:38
von mw1039
S. Aufgabenstellung:
Auf dem GRIS-Cluster ist nur das NVIDIA-OpenCL-SDK installiert. Es ist daher nur möglich den Code auf einer der GPUs auszuführen.
Ihr solltet den Code am besten auf eurem eigenen Rechner auf der CPU testen (auf der CPU kann ja nichts passieren), bis er korrekt arbeitet, und ihn dann erst auf dem Cluster auf der GPU laufen lassen.

Re: Ausführen eines leeren Kernels

Verfasst: 20. Jan 2012 13:48
von SupeRalF
[Edit]: Ich habe es jetzt hinbekommen. Ich habe in MIcomputation.cpp und oclutil.cpp die cstdlib included (keine Ahnung ob das notwendig ist) und das AMD SKD neu installiert. jetzt geht es über die CPU. Für die GPU bräuchte ich wohl die Catalyst Treiber, die mir dann aber verhindern, die stromhungrige radeon abzuschalten. Über die CPU reicht mir das aber sowieso zum testen vollkommen aus.