Probleme GRIS: CL_BUILD_PROGRAM_FAILURE

Stefan Heitmann
Erstie
Erstie
Beiträge: 16
Registriert: 18. Okt 2009 20:31
Wohnort: am liebsten Daheim ;-)
Kontaktdaten:

Probleme GRIS: CL_BUILD_PROGRAM_FAILURE

Beitrag von Stefan Heitmann »

Hallo,

kopiert man den Coderahmen auf den GRIS-Cluster und verändert am Coderahmen nichts, so kann man alles erfolgreich kompilieren und ausführen (mit -oclgpu). Gibt man dann allerdings irgendetwas in der "oclMIcomputation.cl" ein, so erhält man einen CL_BUILD_PROGRAM_FAILURE. Also die Ausgabe ist schon mal nicht möglich, soweit habe ich das schonmal verstanden. Allerdings bekommt man den gleichen Fehler wenn man irgendeinen OpenCL Code eingibt, oder zum Beispiel eine "size_t" o.Ä. deklarieren möchte.

Weiß da jemand was?


oliver_g
Mausschubser
Mausschubser
Beiträge: 62
Registriert: 17. Nov 2008 16:27

Re: Probleme GRIS: CL_BUILD_PROGRAM_FAILURE

Beitrag von oliver_g »

Rein interessehalber: Was heißt denn "gibt man allerdings irgendetwas [...] ein"? Kannst du mal ein Beispiel geben?

Stefan Heitmann
Erstie
Erstie
Beiträge: 16
Registriert: 18. Okt 2009 20:31
Wohnort: am liebsten Daheim ;-)
Kontaktdaten:

Re: Probleme GRIS: CL_BUILD_PROGRAM_FAILURE

Beitrag von Stefan Heitmann »

ich versuche ein cl_mem zu deklarieren oder einen size_t, etc...das reicht schon genauso wie ein banaler cout.

kbraden
Mausschubser
Mausschubser
Beiträge: 98
Registriert: 15. Okt 2010 20:35

Re: Probleme GRIS: CL_BUILD_PROGRAM_FAILURE

Beitrag von kbraden »

Wie gesagt: folge Dennis Link, pack den Patch hinter den Aufruf von clBuildProgram, kompilieren, ausfuehren und Fehlermeldung lesen.
Und/Oder: kompletten Code vom Kernel hier posten.

Dennis Albrecht
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 222
Registriert: 4. Okt 2010 18:15

Re: Probleme GRIS: CL_BUILD_PROGRAM_FAILURE

Beitrag von Dennis Albrecht »

kbraden hat geschrieben:Und/Oder: kompletten Code vom Kernel hier posten.
Würde ich vielleicht nicht empfehlen, dann eher Assistent oder Tutor per e-Mail oder PM anschreiben. Ich weiß ja nicht, was alles in deinem Kernel schon drin steht.

Gruß

mw1039
Computerversteher
Computerversteher
Beiträge: 346
Registriert: 12. Apr 2011 12:18

Re: Probleme GRIS: CL_BUILD_PROGRAM_FAILURE

Beitrag von mw1039 »

Stefan Heitmann hat geschrieben:ich versuche ein cl_mem zu deklarieren
Solche Sachen sind eigentlich Aufgabe des Hostcodes. Speicher im global memory wird eigentlich schon in der MIcomputation.cpp angefordert.
Wenn du lokalen Speicher brauchst, kann du ihn z.B. mit

Code: Alles auswählen

__local int someArray[22][22];
anfordern.
Schau dir vielleicht mal Kernelbeispiele aus dem NVIDIA-SDK (die muessten irgendwo unterhalb von /usr/local/cuda_sdk/ liegen) an.
Stefan Heitmann hat geschrieben:das reicht schon genauso wie ein banaler cout.
cout funktioniert definitiv nicht. Saemtliche CPU-Funktionen sind von der GPU aus nicht nutzbar. Vom Devicecode aus kannst du hoechstens anderen Devicecode aufrufen. printf kannst du nutzen (siehe irgendein anderer Thread). Das ist dann aber nicht das normale printf, sondern eine OpenCL-Erweiterung die nur "zufaellig" genauso wie das normale printf heisst.

Ansonsten ist auch am Montag wieder Sprechstunde zum Praktikum.

tacu
Mausschubser
Mausschubser
Beiträge: 64
Registriert: 13. Apr 2011 18:35

Re: Probleme GRIS: CL_BUILD_PROGRAM_FAILURE

Beitrag von tacu »

kbraden hat geschrieben:Wie gesagt: folge Dennis Link, pack den Patch hinter den Aufruf von clBuildProgram, kompilieren, ausfuehren und Fehlermeldung lesen.

kannst du das bitte bisschen genau erklären wo und wie ich den patch einfügen muss? :oops:

kbraden
Mausschubser
Mausschubser
Beiträge: 98
Registriert: 15. Okt 2010 20:35

Re: Probleme GRIS: CL_BUILD_PROGRAM_FAILURE

Beitrag von kbraden »

In oclutil.cpp, Zeile 77 (+-2) sollte der Aufruf zu clBuildProgram sein. Darunter ist im Original eine kurze Abfrage auf oclError != CL_SUCCESS.
Diesen if-Block ersetzen durch folgenden Code (im Prinzip o.g. Patch, nur die Bedingung geaendert):

Code: Alles auswählen

	if (oclError != CL_SUCCESS) {
          size_t length;
          oclError = clGetProgramBuildInfo(oclProgram,
             oclDevice,
             CL_PROGRAM_BUILD_LOG,
             0,
             NULL,
             &length);
          if(oclError != CL_SUCCESS) 
			  std::cout << "Can't get program build info (clGetProgramBuildInfo)" << std::endl;
		  else {
			  char* buffer = (char*)malloc(length);
			  oclError = clGetProgramBuildInfo(oclProgram,
				 oclDevice,
				 CL_PROGRAM_BUILD_LOG,
				 length,
				 buffer,
				 NULL);
    
			  std::cout << "Compile Error: " << buffer << std::endl;
		  }
		  exit(oclError);
	}
Dahinter sollte dann "// finally create the kernel" kommen.

tacu
Mausschubser
Mausschubser
Beiträge: 64
Registriert: 13. Apr 2011 18:35

Re: Probleme GRIS: CL_BUILD_PROGRAM_FAILURE

Beitrag von tacu »

dankeschön :)

Antworten

Zurück zu „Archiv“