Mila 0.13.48
Deep Neural Network Library
Loading...
Searching...
No Matches
CudaUtils.h
Go to the documentation of this file.
1#pragma once
2
3#include <cuda_runtime.h>
4#include <cstdio>
5#include <cstdlib>
6#include <stdexcept>
7#include <string>
8#include <source_location>
9
10// Convenience function for calculating grid/block dimensions for kernels
11constexpr int ceil_div(int M, int N) {
12 return (M + N - 1) / N;
13}
14
15class CudaException : public std::runtime_error {
16public:
17 CudaException( cudaError_t error, const std::string& file, int line )
18 : std::runtime_error( buildMessage( error, file, line ) ) , error_( error ) {}
19
20 cudaError_t getError() const { return error_; }
21
22private:
23 static std::string buildMessage( cudaError_t error, const std::string& file, int line ) {
24 return "[CUDA ERROR] at file " + file + ":" + std::to_string( line ) +
25 ":\n" + cudaGetErrorString( error );
26 }
27
28 cudaError_t error_;
29};
30
31inline void cudaCheck( cudaError_t error, const std::source_location& loc = std::source_location::current() ) {
32 if ( error != cudaSuccess ) {
33 throw CudaException( error, loc.file_name(), loc.line() );
34 }
35}
constexpr int ceil_div(int M, int N)
Definition CudaUtils.h:11
void cudaCheck(cudaError_t error, const std::source_location &loc=std::source_location::current())
Definition CudaUtils.h:31
Definition CudaUtils.h:15
static std::string buildMessage(cudaError_t error, const std::string &file, int line)
Definition CudaUtils.h:23
CudaException(cudaError_t error, const std::string &file, int line)
Definition CudaUtils.h:17
cudaError_t getError() const
Definition CudaUtils.h:20
cudaError_t error_
Definition CudaUtils.h:28
Definition DeviceId.ixx:130