sto facendo un po 'di programmazione con nVidia CUDA C. Sto usando Visual Studio 2008 come il mio ambiente di sviluppo e sto avendo alcuni problemi con un po' di collegamento e mi chiedo se qualcuno conosce un modo per risolvere il problema o ha avuto lo stesso problema e potrebbe offrire una soluzione.Visual Studio Linking problema con Cuda
Il mio programma è costituito da 3 file. 1 file di intestazione (stuff.h), 1 file di origine C (stuff.c) e 1 file CUDA C (main.cu). (I nomi sono falsi ma è solo per illustrare il punto).
Ora stuff.h/stuff.c definire/implementare alcune funzioni di supporto che io chiamo da dentro main.cu.
Utilizzo Visual Studio 2008 e Cuda.rules dall'SDK di GPU Computing di nVidia e tutto si compila bene ma ... quando si tratta di collegare tutti i file insieme, fallisce. Sembra che tutte le funzioni definite in stuff.h (e implementate in stuff.c) non siano collegate correttamente in quanto sono contrassegnate come "simboli esterni non risolti".
Quali sono le possibili cause e come potrei risolvere questo problema?
Molte grazie,
ExtremeCoder
Va bene così sono riuscito a ottenere tutto compilazione. Sembra che tutto quello che dovevo fare era cambiare l'estensione del file di implementazione roba da .c a cpp (che significa la compilazione come C++ funziona mentre la compilazione di C non!).
Cosa potrebbe causare questo? Avrei preferito tenere tutto come .c invece cpp (in quanto questo è veramente destinata a essere il codice C ...
Tutti gli indicatori?
Grazie per l'aiuto. Ho funzionato. Esiste un modo per rendere i file .cu compilati come file C e non come file C++? Grazie. – ExtremeCoder
Puoi provare l'opzione '--host-compilation = c', ma guarda questo post per le avvertenze: http://forums.nvidia.com/index.php?showtopic=101609. In generale, preferisco mantenere la mia funzione 'main' e tutto il resto nei file C/C++ standard e quindi ho solo kernel e wrapper nei file CU. Un sacco di cose Thrust deve anche andare nei file CU ... – Tom