CUV  0.9.201304091348
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
cuv_general.hpp
1 //*LB*
2 // Copyright (c) 2010, University of Bonn, Institute for Computer Science VI
3 // All rights reserved.
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are met:
7 //
8 // * Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright notice,
11 // this list of conditions and the following disclaimer in the documentation
12 // and/or other materials provided with the distribution.
13 // * Neither the name of the University of Bonn
14 // nor the names of its contributors may be used to endorse or promote
15 // products derived from this software without specific prior written
16 // permission.
17 //
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 //*LE*
29 
30 
31 
32 
33 
34 
35 #ifndef __CUV_GENERAL_HPP__
36 #define __CUV_GENERAL_HPP__
37 
38 #ifndef CUDA_TEST_DEVICE
39 # define CUDA_TEST_DEVICE 0
40 #endif
41 
42 #define MAX_GRID_SIZE 65535
43 
44 // use this macro to make sure no error occurs when cuda functions are called
45 #ifdef NDEBUG
46 # define cuvSafeCall(X) \
47  if(strcmp(#X,"cudaThreadSynchronize()")!=0){ X; cuv::checkCudaError(#X); }
48 #else
49 # define cuvSafeCall(X) X; cuv::checkCudaError(#X);
50 #endif
51 
60 #define cuvAssert(X) \
61  if(!(X)){ cuv::cuvAssertFailed(#X); }
62 
74 #define DBG(X) #X <<":"<<(X)<<" "
75 
76 namespace cuv{
80  struct host_memory_space {};
84  struct dev_memory_space {};
85 
89  void cuvAssertFailed(const char *msg);
90 
94  void checkCudaError(const char *msg);
95 
104  void initCUDA(int dev=0);
105 
109  void exitCUDA();
110 
114  void safeThreadSync();
115 }
116 
117 #endif /* __CUV_GENERAL_HPP__ */