2013-07-18 18 views
5

Próbuję dodać plik CUDA do mojego istniejącego projektu C++ Visual Studio. Mam zainstalowany pakiet CUDA 5.0 SDK, utworzyłem nowy plik .cu, a także ustawiłem jego typ elementu na CUDA/C++ we właściwościach pliku CUDA. Ale wygląda na to, że po prostu nie kompiluje się dając błędy, które mówią, że kompilator nie rozpoznaje słów kluczowych CUDA. Jednym z błędów pojawia się:Dodawanie pliku cuda do istniejącego projektu c w Visual Studio

error C2065: 'threadIdx': identyfikator nielegalna

Wszelkie sugestie?

+0

Używasz VS2010?Czy postępowałeś zgodnie z instrukcjami zawartymi w [poradniku dla początkujących dla Windows] (http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-microsoft-windows/index.html)? Czy jesteś w stanie zbudować któryś z programów przykładowych cuda? –

+0

Głosuj, aby zamknąć "niejasne, o co pytasz", ponieważ nie udzielono odpowiedzi na pytania dotyczące wyjaśnienia. –

Odpowiedz

0

Musisz wybrać odpowiedni kompilator plików .cu

Czy po którymś z samouczka, w jaki sposób skonfigurować go w visual studio?

http://blog.norture.com/2012/10/gpu-parallel-programming-in-vs2012-with-nvidia-cuda/

+0

Czy VS nie przełącza się na NVCC, gdy zmienimy typ na CUDA/C++? Próbowałem utworzyć nowy projekt CUDA i dopasować właściwości projektu. Dodałem również te same pliki nagłówkowe, które zostały użyte w nowym projekcie CUDA. Nie pomogło. – shaveenk

4

nie mogę przejść przez to wszystko w chwili, ale myślę, że te kroki są konieczne:

  1. Kliknij prawym przyciskiem myszy na projekcie w Eksploratorze projektu budowy ... (dostosowywanie?) [moja wersja jest niemiecka. Nie mogę dokładnie powiedzieć słowa kluczowego, ale chodzi o "Build ...". Musisz sprawdzić "CUDA 5.0" tutaj.
  2. Skonfiguruj "Dodatkowe katalogi dodatkowe" dla Cuda na karcie "Ogólne" opcji kompilatora (Właściwości projektu).
  3. Dodaj plik liba do "Dodatkowe zależności" w zakładce "Wejście" Linkera.
  4. Oznacz plik jako plik Cuda (zrobiłeś to).
+0

Postępowałem według dokładnie tych samych instrukcji. W kroku 3 masz na myśli cudart.lib, prawda? Nadal mam te same błędy. Jedną z rzeczy, o których muszę wspomnieć, jest to, że mój plik .cu nie ma głównej funkcji. Wywołuję funkcje zapisane w pliku .cu z plików .cpp. Mam kod urządzenia i hosta w pliku .cu, a ja dzwonię tylko do funkcji hosta z pliku .cpp. Sądzę, że to powinno być w porządku? – shaveenk

+0

Też tak myślę. – Pixelchemist

+3

W VS 2013, kliknij prawym przyciskiem myszy na projekcie, następnie Zbuduj zależności, a następnie Zbuduj modyfikacje ... a następnie pojawi się wyskakujące okienko z zainstalowanymi wersjami Cuda i zaznacz pole dla żądanej wersji. – LawfulEvil

1

stwierdziliśmy, że najlepszym sposobem, aby to zrobić, aby wykonać następujące czynności w istniejącym projekcie CPU

1) Budowa Zależności -> Budowanie dostosowywać

kliknij pole wyboru CUDA

2) Utwórz nowy prosty projekt CUDA za pomocą kreatora (prawdopodobnie i tak chcesz najpierw przetestować projekt CUDA), załaduj oba projekty do IDE, a następnie porównaj ustawienia między dwoma projektami, w projekcie musisz dodać ustawienia

$ (CudaToolkitLibDir) do dodatkowych ustawień biblioteki (tab łącznik) $ (CudaToolkitIncludeDir) dodatkowym zawierają katalogi (C++ Tab)

cudart.lib do dodatkowych zależności (tab linker)

następnie porównać Zakładki CUDA

Z jakiegoś powodu ustaliłem, że 32-bitowy został wybrany dla architektury maszyny docelowej, więc zmieniłem ją na 64-bitową.

Po tym dodałem definicję _CUDA_CODE_COMPILE_ do definicji preprocesora, aby przełączać się między kompilacją CUDA lub CPU.

#ifdef _CUDA_CODE_COMPILE_ 
    cudaCodeFunction(); 
#else 
    cpuCodeFunction(); 
#endif 

Nie idealne, ale konieczne, ponieważ nie wydaje się być nie definiuje wartość wskazują, że nvcc jest zainstalowany (innych niż wykonanie polecenia powłoki!)

Powiązane problemy