summaryrefslogtreecommitdiffstats
path: root/xmrstak/backend/nvidia/nvcc_code/cuda_device.hpp
blob: 078c16537cdc803ed958d8170c8c7b7b63eeaa30 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

#pragma once

#include <cuda_runtime.h>
#include <stdexcept>
#include <iostream>
#include <string>

/** execute and check a CUDA api command
 *
 * @param id gpu id (thread id)
 * @param ... CUDA api command
 */
#define CUDA_CHECK(id, ...) {														\
	cudaError_t error = __VA_ARGS__;											\
	if(error!=cudaSuccess){														\
		std::cerr << "[CUDA] Error gpu " << id << ": <" << __FILE__ << ">:" << __LINE__ << std::endl; \
		throw std::runtime_error(std::string("[CUDA] Error: ") + std::string(cudaGetErrorString(error)));	\
	}																			\
}																				\
( (void) 0 )

/** execute and check a CUDA kernel
 *
 * @param id gpu id (thread id)
 * @param ... CUDA kernel call
 */
#define CUDA_CHECK_KERNEL(id, ...)													\
	__VA_ARGS__;																\
	CUDA_CHECK(id, cudaGetLastError())
OpenPOWER on IntegriCloud