Openholo  v4.0
Open Source Digital Holographic Library
CUDA.cpp
Go to the documentation of this file.
1 #include "CUDA.h"
2 #include "define.h"
3 
4 static void HandleError(cudaError_t err,
5  const char *file,
6  int line) {
7  if (err != cudaSuccess) {
8  printf("%s in %s at line %d\n", cudaGetErrorString(err),
9  file, line);
10  exit(EXIT_FAILURE);
11  }
12 }
13 #define HANDLE_ERROR( err ) (HandleError( err, __FILE__, __LINE__ ))
14 
15 
16 #define HANDLE_NULL( a ) {if (a == NULL) { \
17  printf( "Host memory failed in %s at line %d\n", \
18  __FILE__, __LINE__ ); \
19  exit( EXIT_FAILURE );}}
20 
21 
22 CUDA* CUDA::instance = nullptr;
23 
24 CUDA::CUDA()
25 {
26  printDevInfo();
27  m_nThread = 512;
28 }
29 
30 
31 CUDA::~CUDA()
32 {
33 }
34 
35 
36 bool CUDA::printDevInfo()
37 {
38  int devID;
39  HANDLE_ERROR(cudaGetDevice(&devID));
40  HANDLE_ERROR(cudaGetDeviceProperties(&devProp, devID));
41 
42  LOG("GPU Spec : %s\n", devProp.name);
43 #ifdef _WIN64
44  LOG(" - Global Memory : %llu\n", devProp.totalGlobalMem);
45  LOG(" - Const Memory : %llu\n", devProp.totalConstMem);
46 #else
47  LOG(" - Global Memory : %zu\n", devProp.totalGlobalMem);
48  LOG(" - Const Memory : %zu\n", devProp.totalConstMem);
49 #endif
50  LOG(" - MP(Multiprocessor) Count : %d\n", devProp.multiProcessorCount);
51  LOG(" - Maximum Threads per MP : %d\n", devProp.maxThreadsPerMultiProcessor);
52  LOG(" - Warp Size : %u\n", devProp.warpSize);
53 #ifdef _WIN64
54  LOG(" - Shared Memory per MP : %llu\n", devProp.sharedMemPerMultiprocessor);
55 #else
56  LOG(" - Shared Memory per MP : %zu\n", devProp.sharedMemPerMultiprocessor);
57 #endif
58  LOG(" - Block per MP : %d\n", devProp.maxThreadsPerMultiProcessor / devProp.maxThreadsPerBlock);
59 #ifdef _WIN64
60  LOG(" - Shared Memory per Block : %llu\n", devProp.sharedMemPerBlock);
61 #else
62  LOG(" - Shared Memory per Block : %zu\n", devProp.sharedMemPerBlock);
63 #endif
64  LOG(" - Maximum Threads per Block : %d\n", devProp.maxThreadsPerBlock);
65  LOG(" - Maximum Threads of each Dimension of a Block (X: %d / Y: %d / Z: %d)\n",
66  devProp.maxThreadsDim[_X], devProp.maxThreadsDim[_Y], devProp.maxThreadsDim[_Z]);
67  LOG(" - Maximum Blocks of each Dimension of a Grid, (X: %d / Y: %d / Z: %d)\n",
68  devProp.maxGridSize[_X], devProp.maxGridSize[_Y], devProp.maxGridSize[_Z]);
69  LOG(" - Device supports allocating Managed Memory on this system : %d\n\n", devProp.managedMemory);
70 
71 
72  return true;
73 }
#define HANDLE_ERROR(err)
Definition: CUDA.cpp:13
#define _Y
Definition: define.h:96
#define _X
Definition: define.h:92
Definition: CUDA.h:7
#define _Z
Definition: define.h:100