mxlib
c++ tools for analyzing astronomical data and other tasks by Jared R. Males. [git repo]
templateCuda.hpp
Go to the documentation of this file.
1 /** \file templateCuda.hpp
2  * \author Jared R. Males
3  * \brief Utilities for a template interface to cuda
4  * \ingroup cuda_files
5  *
6  */
7 
8 //***********************************************************************//
9 // Copyright 2019,2020 Jared R. Males (jaredmales@gmail.com)
10 //
11 // This file is part of mxlib.
12 //
13 // mxlib is free software: you can redistribute it and/or modify
14 // it under the terms of the GNU General Public License as published by
15 // the Free Software Foundation, either version 3 of the License, or
16 // (at your option) any later version.
17 //
18 // mxlib is distributed in the hope that it will be useful,
19 // but WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 // GNU General Public License for more details.
22 //
23 // You should have received a copy of the GNU General Public License
24 // along with mxlib. If not, see <http://www.gnu.org/licenses/>.
25 //***********************************************************************//
26 
27 #ifndef math_templateCuda_hpp
28 #define math_templateCuda_hpp
29 
30 #include <complex>
31 
32 #include <cuda_runtime.h>
33 #include <cuComplex.h>
34 
35 namespace mx
36 {
37 namespace cuda
38 {
39 
40 template<typename realT>
41 struct complex;
42 
43 template<>
44 struct complex<float>
45 {
46  typedef cuComplex cudaType;
47 };
48 
49 template<>
50 struct complex<double>
51 {
52  typedef cuDoubleComplex cudaType;
53 };
54 
55 
56 template<typename cppType>
57 struct cpp2cudaType
58 {
59  typedef cppType cudaType;
60 };
61 
62 template<>
63 struct cpp2cudaType<std::complex<float>>
64 {
65  typedef complex<float>::cudaType cudaType;
66 };
67 
68 template<>
69 struct cpp2cudaType<std::complex<double>>
70 {
71  typedef complex<double>::cudaType cudaType;
72 };
73 
74 
75 }//namespace cuda
76 }//namespace mx
77 
78 #endif // templateCuda_hpp
The mxlib c++ namespace.
Definition: mxError.hpp:107