Co to jest najłatwiejsza do zrozumienia/wydajna organizacja kodu dla cuda. Po pewnym dochodzeniu odkryłem, że deklaracje funkcji cuda powinny znajdować się w pliku .cuh, a implementacje znajdują się w plikach .cu i implementacjach funkcji jądra w plikach .curnel. Inne rzeczy w C++ zwykle w plikach .cpp i .h. Niedawno opublikowałem pytanie: visual studio .cu file shows syntax error but compile successfully. Czy ta organizacja jest poprawna? gdzie .cpp wywołuje .cu i wywołuje funkcję jądra, która w .curnel.skuteczny sposób organizacji plików CUDA: .cpp .h .cu .cuh. Plików z numerami
5
A
Odpowiedz
1
Jako przykład, przypuśćmy, że mamy kod FDTD oparty na GPU. Zwykle wykonuję następujące czynności (Visual Studio 2010).
- plik main.cpp, w tym transfery pamięci CPU-GPU;
- FDTD.cu, w tym funkcja
extern "C" void E_update(...)
, która zawiera wywołanie jądra<<< >>>
; - plik main.h, w tym prototyp
extern "C" void E_update(...)
; - FDTD.cuh, w tym funkcja
__global__ void E_update_kernel(...)
.
+0
Czy możesz podać treści dla plików z pustymi implementacjami funkcji? Dzięki! – Yola
5
- h, CPP, c, HPP, inc - pliki, które nie zawierają kodu CUDA C (np __ __ urządzenie i inne słowa kluczowe, połączenia jądra , itp.) i nie wywołują żadnych wywołań cuda runtime (cuda ... functions). Jest całkiem dobrze wywoływać funkcje API sterownika CUDA (cu ...) z tych plików. Zauważ, że możliwe jest skompilowanie tych plików za pomocą kompilatorów innych niż NVCC.
- cu - Pliki źródłowe CUDA C. Pliki te są przekazywane do kompilatora NVCC w celu kompilacji w obiekty do połączenia (host/urządzenie).
- cuh, cuinc - pliki zawarte w plikach .cu. Pliki te mogą zawierać słowa kluczowe CUDA C i/lub wywoływać funkcje uruchomieniowe CUDA.
Powiązane problemy
- 1. CUpewnij + Cuda: skompilować pliki cpp w trybie CUDA (--x = Cu)
- 2. Tworzenie plików .cpp z .h plików wizualnych studio
- 3. Rozpocznij podświetlanie składni C++ dla plików .cu (CUDA)
- 4. Jak włączyć podświetlanie składni plików CUDA .cu w Visual Studio 2010?
- 5. Bezpieczny i skuteczny sposób modyfikacji wielu plików w systemach POSIX?
- 6. Używanie wielu plików .cpp w programie C++?
- 7. Wiele głównych plików CPP w VisualStudio?
- 8. Automatyczne dzielenie (refaktoryzacja) .h na nagłówek i implementację (h + cpp)
- 9. Zmień nazwę wszystkich plików w folderze z rosnącymi numerami
- 10. Dlaczego używać plików .cpp, jeśli mogę mieć cały mój kod C++ w pliku .h?
- 11. Tworzenie plików obiektów CUDA przy użyciu cmake
- 12. automatycznie generuje .h od .cpp/.c
- 13. VS2010 Dodatek cpp/h automatyczne grupy kart
- 14. CMake: jak dodać cuda do istniejącego projektu
- 15. Kod XCode nie włamuje się do # include'd plików CPP
- 16. Sposób tworzenia plików SVN ADD z ignorowaniem plików binarnych
- 17. Miksowanie Celów C, (* .m, * .mm & .c /.cpp) plików
- 18. Obliczanie CU Multi-GPU
- 19. Kompilacja wszystkich plików CPP pomocą makefile pod MinGW
- 20. jak zachować kod jądra w osobnym pliku .cu innym niż główny .cpp?
- 21. Jak skompilować wiele plików .c i .h w gcc linux?
- 22. W .cpp, czy istnieje sposób automatycznego zaimplementowania wszystkich funkcji z pliku .h?
- 23. W Vimie, jak szybko przełączać się między plikami .h i .cpp o tej samej nazwie?
- 24. Oddzielne pliki .h i .cpp w implementacji klasy szablonów
- 25. Tworzenie ctags tylko dla plików c i h w kodzie
- 26. Wyszukiwanie wszystkich plików .h i .m w kodzie X
- 27. Eclipse CDT: Skrót do przełączania między .h i .cpp?
- 28. Załóż skuteczny sposób podsumować
- 29. Czy mogę dodać pliki .h i .cpp do projektu C#?
- 30. Instalacja niektórych plików z CMake
Pliki 'curnel'? Uważam się za rozsądnie doświadczonego w obsłudze CUDA i przyjrzałem się wielu innym projektom, i nie mogę * nigdy * pamiętać o pojedynczym rozszerzeniu pliku 'curnel'. Z pewnością nie jest to coś, co NVCC rozumie lub ma predefiniowaną trajektorię dla ... – talonmies
To zależy od ciebie, możesz pogrupować pliki według funkcjonalności, według typu (.cu, .h, .cpp) lub połączyć je (w grupy funkcyjne, które można przechowywać razem z plikiem .cu). –