Markopy
Utilizing Markov Models for brute forcing attacks
cudaDeviceController.cu
Go to the documentation of this file.
1 /** @file cudaDeviceController.cu
2  * @brief Simple static class for basic CUDA device controls.
3  * @authors Ata Hakçıl
4  *
5  * @copydoc Markov::API::CUDA::CUDADeviceController
6  */
7 
9 #include <iostream>
10 #include <curand_kernel.h>
11 #include <cuda.h>
12 #include <cuda_runtime.h>
13 #include <device_launch_parameters.h>
14 
15 namespace Markov::API::CUDA{
16  __host__ void Markov::API::CUDA::CUDADeviceController::ListCudaDevices() { //list cuda Capable devices on host.
17  int nDevices;
18  cudaGetDeviceCount(&nDevices);
19  for (int i = 0; i < nDevices; i++) {
20  cudaDeviceProp prop;
21  cudaGetDeviceProperties(&prop, i);
22  std::cerr << "Device Number: " << i << "\n";
23  std::cerr << "Device name: " << prop.name << "\n";
24  std::cerr << "Memory Clock Rate (KHz): " << prop.memoryClockRate << "\n";
25  std::cerr << "Memory Bus Width (bits): " << prop.memoryBusWidth << "\n";
26  std::cerr << "Peak Memory Bandwidth (GB/s): " << 2.0 * prop.memoryClockRate * (prop.memoryBusWidth / 8) / 1.0e6 << "\n";
27  std::cerr << "Max Linear Threads: " << prop.maxThreadsDim[0] << "\n";
28 
29  }
30  }
31 
32  __host__ int Markov::API::CUDA::CUDADeviceController::CudaCheckNotifyErr(cudaError_t _status, const char* msg, bool bExit) {
33  if (_status != cudaSuccess) {
34  std::cerr << "\033[1;31m" << msg << " -> " << cudaGetErrorString(_status) << " ("<< _status << ")" << "\033[0m" << "\n";
35 
36  if(bExit) {
37  cudaDeviceReset();
38  exit(1);
39  }
40  }
41  return 0;
42  }
43 
44 /*
45  template <typename T>
46  __host__ cudaError_t Markov::API::CUDA::CUDADeviceController::CudaMalloc2DToFlat(T* dst, int row, int col){
47  return cudaMalloc((T **)&dst, row*col*sizeof(T));
48  }
49 
50  template <typename T>
51  __host__ cudaError_t Markov::API::CUDA::CUDADeviceController::CudaMemcpy2DToFlat(T* dst, T** src, int row, int col){
52  cudaError_t cudastatus;
53  for(int i=0;i<row;i++){
54  cudastatus = cudaMemcpy(dst + (i*col*sizeof(T)),
55  src[i], col*sizeof(T), cudaMemcpyHostToDevice);
56  if(cudastatus != cudaSuccess) return cudastatus;
57  }
58  return cudaSuccess;
59  }
60 */
61 
62 };