2013-03-05 5 views
5

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

+4

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

+0

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). –

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