ViennaCL - The Vienna Computing Library  1.7.0
Free open-source GPU-accelerated linear algebra and solver library.
matrix_product.hpp
Go to the documentation of this file.
1 #ifndef VIENNACL_DEVICE_SPECIFIC_BUILTIN_DATABASE_MATRIX_PRODUCT_HPP_
2 #define VIENNACL_DEVICE_SPECIFIC_BUILTIN_DATABASE_MATRIX_PRODUCT_HPP_
3 
4 /* =========================================================================
5  Copyright (c) 2010-2015, Institute for Microelectronics,
6  Institute for Analysis and Scientific Computing,
7  TU Wien.
8  Portions of this software are copyright by UChicago Argonne, LLC.
9 
10  -----------------
11  ViennaCL - The Vienna Computing Library
12  -----------------
13 
14  Project Head: Karl Rupp rupp@iue.tuwien.ac.at
15 
16  (A list of authors and contributors can be found in the manual)
17 
18  License: MIT (X11), see file LICENSE in the base directory
19 ============================================================================= */
20 
22 
24 
26 
28 
30 
32 
35 
38 
40 
43 
44 
46 
47 
50 
55 
61 namespace viennacl
62 {
63 namespace device_specific
64 {
65 namespace builtin_database
66 {
67 
69 {
71 
74 
77 
80 
101 
102  return result;
103 }
104 
106 {
108 
111 
114 
138 
139  return result;
140 }
141 
143 {
145 
148 
151 
154 
168 
169 
178 
179  return result;
180 }
181 
183 {
185 
188 
191 
214 
215  return result;
216 }
217 
218 static database_type<matrix_product_template::parameters_type> matrix_product_N_N = init_matrix_product_N_N();
219 static database_type<matrix_product_template::parameters_type> matrix_product_T_N = init_matrix_product_T_N();
220 static database_type<matrix_product_template::parameters_type> matrix_product_N_T = init_matrix_product_N_T();
221 static database_type<matrix_product_template::parameters_type> matrix_product_T_T = init_matrix_product_T_T();
222 
223 template<class NumericT>
225 {
226  assert(A_trans=='N' || A_trans=='T');
227  assert(B_trans=='N' || B_trans=='T');
229  if (A_trans=='N' && B_trans=='N')
230  db = &matrix_product_N_N;
231  else if (A_trans=='T' && B_trans=='N')
232  db = &matrix_product_T_N;
233  else if (A_trans=='N' && B_trans=='T')
234  db = &matrix_product_N_T;
235  else
236  db = &matrix_product_T_T;
237  return get_parameters<NumericT>(*db, device);
238 }
239 
240 
241 }
242 }
243 }
244 #endif
void add_4B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
Definition: barts.hpp:43
database_type< matrix_product_template::parameters_type > init_matrix_product_T_N()
void add_8B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
void add_4B(database_type< reduction_template::parameters_type > &db)
Definition: cypress.hpp:48
void add_8B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
Definition: tahiti.hpp:43
A class representing a compute device (e.g. a GPU)
Definition: device.hpp:49
void add_8B(database_type< vector_axpy_template::parameters_type > &db)
Definition: fallback.hpp:83
void add_4B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
Definition: hawaii.hpp:63
void add_8B(database_type< vector_axpy_template::parameters_type > &db)
Definition: fallback.hpp:83
database_type< matrix_product_template::parameters_type > init_matrix_product_N_N()
Main namespace in ViennaCL. Holds all the basic types such as vector, matrix, etc. and defines operations upon them.
Definition: cpu_ram.hpp:34
void add_4B(database_type< reduction_template::parameters_type > &db)
Definition: cedar.hpp:43
database_type< matrix_product_template::parameters_type > init_matrix_product_N_T()
void add_4B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
void add_4B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
Definition: scrapper.hpp:43
void add_4B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
Definition: tesla_k20m.hpp:63
void add_4B(database_type< vector_axpy_template::parameters_type > &db)
Definition: fallback.hpp:37
Various utility implementations for dispatching with respect to the different devices available on th...
void add_4B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
Definition: tahiti.hpp:63
Provides the datastructures for dealing with a single statement such as 'x = y + z;'.
void add_4B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
void add_4B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
Definition: tesla_c2050.hpp:63
void add_4B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
database_type< matrix_product_template::parameters_type > init_matrix_product_T_T()
void add_8B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
Definition: hawaii.hpp:43
void add_4B(database_type< vector_axpy_template::parameters_type > &db)
Definition: fallback.hpp:37
void add_4B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
void add_8B(database_type< vector_axpy_template::parameters_type > &db)
Definition: fallback.hpp:84
void add_8B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
void add_8B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
void add_4B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
Definition: devastator.hpp:43
void add_8B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
Definition: tesla_k20m.hpp:43
void add_4B(database_type< vector_axpy_template::parameters_type > &db)
void add_8B(database_type< matrix_product_template::parameters_type > &db, char_to_type<'T'>, char_to_type<'T'>)
Definition: tesla_c2050.hpp:43
matrix_product_template::parameters_type const & matrix_product_params(ocl::device const &device, char A_trans, char B_trans)
void add_4B(database_type< vector_axpy_template::parameters_type > &db)
Definition: fallback.hpp:37