46 #include "Kokkos_Core.hpp" 50 template <
typename scalar,
typename device>
51 int mainHost(
bool test_flat,
bool test_orig,
bool test_deg,
bool test_lin,
52 bool test_block,
bool symmetric,
bool mkl);
54 template <
typename scalar>
55 int mainCuda(
bool test_flat,
bool test_orig,
bool test_lin,
56 bool test_block,
bool symmetric,
int device_id);
61 bool test_host =
true;
62 #ifdef KOKKOS_HAVE_CUDA 63 bool test_cuda =
true;
66 bool test_block =
true;
67 bool test_flat =
true;
68 bool test_orig =
true;
69 bool test_deg =
false;
70 bool test_lin =
false;
71 bool symmetric =
true;
74 #ifdef KOKKOS_HAVE_SERIAL 77 #ifdef KOKKOS_HAVE_OPENMP 80 #ifdef KOKKOS_HAVE_PTHREAD 85 bool print_usage =
false;
88 std::string s(
argv[i]);
91 else if (s ==
"no-host")
93 #ifdef KOKKOS_HAVE_CUDA 96 else if (s ==
"no-cuda")
98 else if (s ==
"device") {
103 else if (s ==
"block")
105 else if (s ==
"no-block")
107 else if (s ==
"flat")
109 else if (s ==
"no-flat")
111 else if (s ==
"orig")
113 else if (s ==
"no-orig")
117 else if (s ==
"no-deg")
119 else if (s ==
"linear")
121 else if (s ==
"no-linear")
123 else if (s ==
"symmetric")
125 else if (s ==
"no-symmetric")
129 else if (s ==
"no-mkl")
131 else if (s ==
"single")
133 else if (s ==
"double")
135 #ifdef KOKKOS_HAVE_SERIAL 136 else if (s ==
"serial")
138 else if (s ==
"no-serial")
141 #ifdef KOKKOS_HAVE_OPENMP 144 else if (s ==
"no-omp")
147 #ifdef KOKKOS_HAVE_PTHREAD 148 else if (s ==
"threads")
150 else if (s ==
"no-threads")
153 else if (s ==
"-h" || s ==
"--help")
156 std::cout <<
"Invalid argument: " << s << std::endl;
162 std::cout <<
"Usage:" << std::endl
164 <<
" [no-][cuda|host|serial|omp|threads|block|flat|orig|deg|linear|symmetric] [single|double] [device device_id]" 165 << std::endl <<
"Defaults are all enabled." << std::endl;
171 #ifdef KOKKOS_HAVE_SERIAL 174 mainHost<float,Kokkos::Serial>(
175 test_flat, test_orig, test_deg, test_lin, test_block, symmetric, mkl);
177 mainHost<double,Kokkos::Serial>(
178 test_flat, test_orig, test_deg, test_lin, test_block, symmetric, mkl);
182 #ifdef KOKKOS_HAVE_PTHREAD 185 mainHost<float,Kokkos::Threads>(
186 test_flat, test_orig, test_deg, test_lin, test_block, symmetric, mkl);
188 mainHost<double,Kokkos::Threads>(
189 test_flat, test_orig, test_deg, test_lin, test_block, symmetric, mkl);
193 #ifdef KOKKOS_HAVE_OPENMP 196 mainHost<float,Kokkos::OpenMP>(
197 test_flat, test_orig, test_deg, test_lin, test_block, symmetric, mkl);
199 mainHost<double,Kokkos::OpenMP>(
200 test_flat, test_orig, test_deg, test_lin, test_block, symmetric, mkl);
206 #ifdef KOKKOS_HAVE_CUDA
int mainHost(bool test_flat, bool test_orig, bool test_deg, bool test_lin, bool test_block, bool symmetric, bool mkl)
int main(int argc, char *argv[])
template int mainCuda< double >(bool, bool, bool, bool, bool, int)
int mainCuda(bool test_flat, bool test_orig, bool test_lin, bool test_block, bool symmetric, int device_id)
template int mainCuda< float >(bool, bool, bool, bool, bool, int)