INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Mehrere Cuda DLLs Context-Übergabe



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

08.06.2010, 14:42
Beitrag #1

grey Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Feb 2007

2010
2006
kA

56
Deutschland
Mehrere Cuda DLLs Context-Übergabe
Hallo,

ich versuche gerade mehrere DLLs, die Cuda Code ausführen sollen, zusammenzubringen. Meine Idee war, dass ich in der ersten DLL den Speicher auf der Grafikkarte allkokiere, dann in der Zweiten meine Berechnungen durchführe und schließlich in der Dritten den speicher wieder frei gebe.
Mir ist klar, dass alle drei DLLs auf dem gleichen Thread laufen müssen damit das geht, es aber suboptimal ist in ihnen den "UI Thread" als diesen Thread einzustellen. Glücklicherweise gibt es ja diesen Cuda Context und so war meine Idee, dass ich mir einen solchen in der ersten DLL erzeuge dann vom Thread löse (via. cuCtxPopCurrent() ), in der Zweiten wieder an den aktuellen Thread binde ( cuCtxPuchCurrent() ) und am Ende wieder von ihm löse. In der Dritten soll er dann schließlich gelöscht werden.
Bedauewrlicherweise scheint das nicht zu funktionieren, wenn ich mir Fehler ausgeben lasse so bekomme ich in der zweiten DLL oft die Meldung, dass das aktuelle Device nicht verfügbar ist oder bekomme nichts ausgegeben -was aber am Ergebnis nichts ändert.
Ich vermute, dass ich die Übergabe dieses cuContext nicht richtig mache, mir fällt dazu aber auch gerade nichts anderes ein. Ich hoffe, dass mir hier jemand ein paar Hinweise geben kann. Achja die LabVIEW eigene bibliothek möchte ich nicht nutzen da ich ein 64Bit System habe und ich diese Lösung etwas verworren finde, obgleich ja hinter dem Context den sie dort erzeugen, dass Gleiche stehen müsste.

Hier nun ein schemtaische Darstellung wie es bei mir gerade aussieht, wie zu erkennen wandle ich den context zur Übergabe in einen uint32_t um:


<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>float *dR, ... ;
cudaMalloc((void**)&dR,size);
...
*d_R=(uint32_t)dR;
...

cuCtxPopCurrent(&hCtx);checkCUDAError("pop ctx");
}



// Second DLL: will be executed in a while loop

void KernelCaller(float *R, ..., uint32_t hctx, float *d_R, ...) //uint32_t d_R already castet to *float i wrapper function
{
CUcontext h_Ctx;
h_Ctx=(CUcontext)hctx;

cuCtxPushCurrent(h_Ctx);

dim3 grid, block;
block.x=BLOCK_SIZE;
grid.x=(n/BLOCK_SIZE);
cudaMemcpy(d_R,R,size,cudaMemcpyHostToDevice);
Kernel_gpu<<<grid,block>>>(d_R, ... );

cuCtxPopCurrent(&h_Ctx);
}


// Third DLL: free allocated memory, executes one time after while loop

void KernelCaller(uint32_t hctx,float *d_R, ...) //uint32_t d_R already castet to *float i wrapper function
{
CUcontext h_Ctx;
h_Ctx=(CUcontext)hctx;

cudaFree(&d_R);

cuCtxDestroy(h_Ctx);
}</div>
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Nachrichten in diesem Thema
Mehrere Cuda DLLs Context-Übergabe - grey - 08.06.2010 14:42

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  DLL mit String Nullpointer Übergabe Hubert R. 5 5.121 25.08.2023 11:43
Letzter Beitrag: rolfk
  DLLs kopieren/Bibliothek nicht gefunden ares2013 4 4.602 26.11.2020 17:06
Letzter Beitrag: rolfk
  verschiedene DLLs über ein Libary Fct Node M@rRy 16 12.507 19.08.2011 12:37
Letzter Beitrag: GerdW
  Übergabe eines struct arrays an eine DDL und wieder Auslesen SK-AC 4 6.605 12.08.2010 17:01
Letzter Beitrag: rolfk
  LV 7.1, VC++-DLL (VC++2008), string-Übergabe ptillmann 1 4.823 12.03.2010 20:34
Letzter Beitrag: rolfk
  NVIDIA CUDA DLL einbinden joedoe1979 5 8.396 12.08.2009 13:08
Letzter Beitrag: joedoe1979

Gehe zu: