Kompilieren von Code, der dynamische Parallelität enthält, schlägt fehl

7

Ich mache dynamische Parallelismus-Programmierung mit CUDA 5.5 und einer NVDIA GeForce GTX 780, deren Rechenkapazität 3,5 beträgt. Ich rufe eine Kernel-Funktion innerhalb einer Kernel-Funktion auf, aber es gibt mir einen Fehler:

  

Fehler: Aufruf einer __global__ Funktion ("kernel_6") von einer __global__ Funktion ("kernel_5") ist nur in der compute_35 Architektur oder höher erlaubt

Was mache ich falsch?

    
user2865500 10.10.2013, 05:04
quelle

3 Antworten

11
___ qstnhdr ___ Kompilieren von Code, der dynamische Parallelität enthält, schlägt fehl ___ answer19292084 ___

Aus Visual Studio 2010:

%Vor%     
___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ antwort19290380 ___

Sie können so etwas tun

%Vor%

oder

Wenn Sie 2 Dateien simple1.cu und test.c haben, können Sie etwas wie unten beschrieben tun. Dies wird als separate Zusammenstellung bezeichnet.

%Vor%

Das gleiche wird erklärt in der cuda Programmieranleitung

    
___ tag123parallelprocessing ___ Parallelverarbeitung ist, im Gegensatz zu einer Concurrent-Verarbeitung, garantiert, dass alle Tasks auf Thread- und / oder Anweisungsebene, die parallel ausgeführt werden, gestartet / ausgeführt / beendet werden und eine garantierte Beendigung des gleichzeitig ausgeführten Code- Pfade. ___ tag123cuda ___ CUDA ist eine parallele Rechenplattform und ein Programmiermodell für Nvidia GPUs (Graphics Processing Units). CUDA bietet eine Schnittstelle zu Nvidia-GPUs über eine Vielzahl von Programmiersprachen, Bibliotheken und APIs. ___ tag123dynamicexecution ___ hilf uns dieses Wiki zu bearbeiten ___ qstntxt ___

Ich mache dynamische Parallelismus-Programmierung mit CUDA 5.5 und einer NVDIA GeForce GTX 780, deren Rechenkapazität 3,5 beträgt. Ich rufe eine Kernel-Funktion innerhalb einer Kernel-Funktion auf, aber es gibt mir einen Fehler:

  

Fehler: Aufruf einer __global__ Funktion ("kernel_6") von einer __global__ Funktion ("kernel_5") ist nur in der compute_35 Architektur oder höher erlaubt

Was mache ich falsch?

    
___ answer19287554 ___

Sie müssen nvcc CC 3.5-Code für Ihr Gerät generieren lassen. Dies kann durch Hinzufügen dieser Option zur nvcc-Befehlszeile erfolgen.

%Vor%

Sie können die CUDA-Beispiele für mehr Details in dynamischer Parallelität finden. Sie enthalten sowohl Befehlszeilenoptionen als auch Projekteinstellungen für alle unterstützten Betriebssysteme.

Ссылка

    
___
Sagar Masuti 10.10.2013 08:11
quelle
5

Aus Visual Studio 2010:

%Vor%     
JackOLantern 10.10.2013 09:33
quelle
3

Sie müssen nvcc CC 3.5-Code für Ihr Gerät generieren lassen. Dies kann durch Hinzufügen dieser Option zur nvcc-Befehlszeile erfolgen.

%Vor%

Sie können die CUDA-Beispiele für mehr Details in dynamischer Parallelität finden. Sie enthalten sowohl Befehlszeilenoptionen als auch Projekteinstellungen für alle unterstützten Betriebssysteme.

Ссылка

    
kangshiyin 10.10.2013 05:11
quelle