@@ -20,12 +20,7 @@ void pop_sync_check_last_error( const char* file, size_t line )
2020void pop_check_last_error ( const char * file, size_t line )
2121{
2222 cudaError_t err = cudaGetLastError ( );
23- if ( err != cudaSuccess ) {
24- std::cerr << __FILE__ << " :" << __LINE__ << std::endl
25- << " called from " << file << " :" << line << std::endl
26- << " cudaGetLastError failed: " << cudaGetErrorString (err) << std::endl;
27- exit ( -__LINE__ );
28- }
23+ POP_CUDA_FATAL_TEST (err, " cudaGetLastError failed: " );
2924}
3025
3126namespace popsift { namespace cuda {
@@ -34,11 +29,7 @@ void malloc_dev( void** ptr, int sz,
3429{
3530 cudaError_t err;
3631 err = cudaMalloc ( ptr, sz );
37- if ( err != cudaSuccess ) {
38- std::cerr << file << " :" << line << std::endl
39- << " cudaMalloc failed: " << cudaGetErrorString (err) << std::endl;
40- exit ( -__LINE__ );
41- }
32+ POP_CUDA_FATAL_TEST (err, " cudaMalloc failed: " );
4233#ifdef DEBUG_INIT_DEVICE_ALLOCATIONS
4334 popsift::cuda::memset_sync ( *ptr, 0 , sz, file, line );
4435#endif // NDEBUG
@@ -51,11 +42,7 @@ void malloc_hst( void** ptr, int sz,
5142{
5243 cudaError_t err;
5344 err = cudaMallocHost ( ptr, sz );
54- if ( err != cudaSuccess ) {
55- std::cerr << file << " :" << line << std::endl
56- << " cudaMallocHost failed: " << cudaGetErrorString (err) << std::endl;
57- exit ( -__LINE__ );
58- }
45+ POP_CUDA_FATAL_TEST (err, " cudaMallocHost failed: " );
5946#ifdef DEBUG_INIT_DEVICE_ALLOCATIONS
6047 memset ( *ptr, 0 , sz );
6148#endif // NDEBUG
@@ -74,16 +61,13 @@ void memcpy_async( void* dst, const void* src, size_t sz,
7461 cudaError_t err;
7562 err = cudaMemcpyAsync ( dst, src, sz, type, stream );
7663 if ( err != cudaSuccess ) {
77- cerr << file << " :" << line << endl
78- << " " << " Failed to copy "
79- << (type==cudaMemcpyHostToDevice?" host-to-device" :" device-to-host" )
80- << " : " ;
81- cerr << cudaGetErrorString (err) << endl;
82- cerr << " src ptr=" << hex << (size_t )src << dec << endl
83- << " dst ptr=" << hex << (size_t )dst << dec << endl;
84- exit ( -__LINE__ );
64+ std::stringstream ss;
65+ ss << " Failed to copy " << (type == cudaMemcpyHostToDevice ? " host-to-device" : " device-to-host" ) << " : " ;
66+ ss << cudaGetErrorString (err) << endl;
67+ ss << " src ptr=" << hex << (size_t )src << dec << endl
68+ << " dst ptr=" << hex << (size_t )dst << dec << endl;
69+ POP_FATAL (ss.str ());
8570 }
86- POP_CUDA_FATAL_TEST ( err, " Failed to copy host-to-device: " );
8771}
8872
8973void memcpy_sync ( void * dst, const void * src, size_t sz, cudaMemcpyKind type, const char * file, size_t line )
@@ -95,37 +79,27 @@ void memcpy_sync( void* dst, const void* src, size_t sz, cudaMemcpyKind type, co
9579 cudaError_t err;
9680 err = cudaMemcpy ( dst, src, sz, type );
9781 if ( err != cudaSuccess ) {
98- cerr << " " << " Failed to copy "
99- << (type==cudaMemcpyHostToDevice?" host-to-device" :" device-to-host" )
100- << " : " ;
101- cerr << cudaGetErrorString (err) << endl;
102- cerr << " src ptr=" << hex << (size_t )src << dec << endl
103- << " dst ptr=" << hex << (size_t )dst << dec << endl;
104- exit ( -__LINE__ );
82+ std::stringstream ss;
83+ ss << " Failed to copy " << (type == cudaMemcpyHostToDevice ? " host-to-device" : " device-to-host" ) << " : " ;
84+ ss << cudaGetErrorString (err) << endl;
85+ ss << " src ptr=" << hex << (size_t )src << dec << endl
86+ << " dst ptr=" << hex << (size_t )dst << dec << endl;
87+ POP_FATAL (ss.str ())
10588 }
106- POP_CUDA_FATAL_TEST ( err, " Failed to copy host-to-device: " );
10789}
10890
10991void memset_async ( void * ptr, int value, size_t bytes, cudaStream_t stream, const char * file, size_t line )
11092{
11193 cudaError_t err;
11294 err = cudaMemsetAsync ( ptr, value, bytes, stream );
113- if ( err != cudaSuccess ) {
114- std::cerr << file << " :" << line << std::endl
115- << " cudaMemsetAsync failed: " << cudaGetErrorString (err) << std::endl;
116- exit ( -__LINE__ );
117- }
95+ POP_CUDA_FATAL_TEST (err, " cudaMemsetAsync failed: " );
11896}
11997
12098void memset_sync ( void * ptr, int value, size_t bytes, const char * file, size_t line )
12199{
122100 cudaError_t err;
123101 err = cudaMemset ( ptr, value, bytes );
124- if ( err != cudaSuccess ) {
125- std::cerr << file << " :" << line << std::endl
126- << " cudaMemset failed: " << cudaGetErrorString (err) << std::endl;
127- exit ( -__LINE__ );
128- }
102+ POP_CUDA_FATAL_TEST (err, " cudaMemset failed: " );
129103}
130104} }
131105
@@ -135,68 +109,44 @@ cudaStream_t stream_create( const char* file, size_t line )
135109 cudaStream_t stream;
136110 cudaError_t err;
137111 err = cudaStreamCreate ( &stream );
138- if ( err != cudaSuccess ) {
139- std::cerr << file << " :" << line << std::endl
140- << " cudaStreamCreate failed: " << cudaGetErrorString (err) << std::endl;
141- exit ( -__LINE__ );
142- }
112+ POP_CUDA_FATAL_TEST (err, " cudaStreamCreate failed: " );
143113 return stream;
144114}
145115void stream_destroy ( cudaStream_t s, const char * file, size_t line )
146116{
147117 cudaError_t err;
148118 err = cudaStreamDestroy ( s );
149- if ( err != cudaSuccess ) {
150- std::cerr << file << " :" << line << std::endl
151- << " cudaStreamDestroy failed: " << cudaGetErrorString (err) << std::endl;
152- exit ( -__LINE__ );
153- }
119+ POP_CUDA_FATAL_TEST (err, " cudaStreamDestroy failed: " );
154120}
155121cudaEvent_t event_create ( const char * file, size_t line )
156122{
157123 cudaEvent_t ev;
158124 cudaError_t err;
159125 err = cudaEventCreate ( &ev );
160- if ( err != cudaSuccess ) {
161- std::cerr << file << " :" << line << std::endl
162- << " cudaEventCreate failed: " << cudaGetErrorString (err) << std::endl;
163- exit ( -__LINE__ );
164- }
126+ POP_CUDA_FATAL_TEST (err, " cudaEventCreate failed: " );
165127 return ev;
166128}
167129void event_destroy ( cudaEvent_t ev, const char * file, size_t line )
168130{
169131 cudaError_t err;
170132 err = cudaEventDestroy ( ev );
171- if ( err != cudaSuccess ) {
172- std::cerr << file << " :" << line << std::endl
173- << " cudaEventDestroy failed: " << cudaGetErrorString (err) << std::endl;
174- exit ( -__LINE__ );
175- }
133+ POP_CUDA_FATAL_TEST (err, " cudaEventDestroy failed: " );
176134}
177135void event_record ( cudaEvent_t ev, cudaStream_t s, const char * file, size_t line )
178136{
179137 cudaError_t err;
180138 err = cudaEventRecord ( ev, s );
181- if ( err != cudaSuccess ) {
182- std::cerr << file << " :" << line << std::endl
183- << " cudaEventRecord failed: " << cudaGetErrorString (err) << std::endl;
184- exit ( -__LINE__ );
185- }
139+ POP_CUDA_FATAL_TEST (err, " cudaEventRecord failed: " );
186140}
187141void event_wait ( cudaEvent_t ev, cudaStream_t s, const char * file, size_t line )
188142{
189143 cudaError_t err;
190144 err = cudaStreamWaitEvent ( s, ev, 0 );
191- if ( err != cudaSuccess ) {
192- std::cerr << file << " :" << line << std::endl
193- << " cudaStreamWaitEvent failed: " << cudaGetErrorString (err) << std::endl;
194- exit ( -__LINE__ );
195- }
145+ POP_CUDA_FATAL_TEST (err, " cudaStreamWaitEvent failed: " );
196146}
197147
198148float event_diff ( cudaEvent_t from, cudaEvent_t to )
199- {
149+ {
200150 float ms;
201151 cudaEventElapsedTime ( &ms, from, to );
202152 return ms;
0 commit comments