CUDA: .cu Dateien inkludieren



  • Hallo,

    ich habe ein funktionierendes Projekt in VC++ 10 in welchem ich CUDA nutzen will. Ein CUDA-Testprojekt funktioniert einwandfrei. Nun weiß ich allerdings nicht, wie ich die .cu in das Projekt einbinde. Ich kann zwar die .cu dem Projekt hinzufügen und sie vom nv-Compiler bauen lassen, allerdings scheint es, als ob das Inkludieren der .cu Datei nicht funktioniert (der VC++-Compiler kennt wohl die CUDA Funktionen nicht).

    Dann dachte ich, ich erstelle eine .cu Datei die die main () beinhaltet und schreibe in diese .cu alle CUDA Funktionen rein, sodass ich ein Inkludieren von CUDA Funktionen umgehe. Jedoch nutzt das Projekt Qt und hier meckert der nv-Compiler, bspw:

    C:\Qt\Qt5.0.1\5.0.1\msvc2010\include\QtCore/qobject_impl.h(82): error : too many initializer values

    Kennt ihr da einen Ausweg?



  • Hmm, hat niemand eine Idee?



  • Hi Ulf,

    ich nutze CMake zum Einbinden von CUDA, aber mit der CUDA build-rule (die Du wahrscheinlich verwendest) sollte es auch funktionieren.

    Verwende am besten eine Header Datei mit der Deklaration der aufzurufenden CUDA Funktion.

    // cudaFunc.h
    void cudaFunc(...);
    

    Packe den Cuda code in eine .cu Datei, die Du mit dem NVCC kompilierst.

    // cudaFunc.cu
    #include "cudaFunc.h"
    __global
    void cudaFunc_kernel(...)
    {
     // kernel code
    }
    
    void cudaFunc(..)
    {
    // grid, block berechnen
    cudaFunc_kernel<<<grid, block>>>(...)
    }
    

    Zum Schluß kannst Du dann den Code aus "normalem" C++ heraus aufrufen:

    // main.cpp
    #include "cudaFunc.h"
    
    int main()
    {
    cudaFunc(...);
    return 0;
    }
    


  • Danke für deine Hilfe. Leider habe ich erst jetzt Zeit gefunden, aber es klappt. Danke!


Anmelden zum Antworten