PARALUTION  1.0.0
PARALUTION
ocl_kernels_mcsr.hpp
Go to the documentation of this file.
1 #ifndef PARALUTION_OCL_KERNELS_MCSR_HPP_
2 #define PARALUTION_OCL_KERNELS_MCSR_HPP_
3 
4 namespace paralution {
5 
6 const char *ocl_kernels_mcsr =
7  "__kernel void kernel_mcsr_spmv_scalar(const int nrow, __global const int *row_offset, \n"
8  " __global const int *col, __global const ValueType *val, \n"
9  " __global const ValueType *in, __global ValueType *out) {\n"
10  "\n"
11  " int ai = get_global_id(0);\n"
12  " int aj;\n"
13  "\n"
14  " if (ai < nrow) {\n"
15  "\n"
16  " ValueType sum = val[ai] * in[ai];\n"
17  "\n"
18  " for (aj=row_offset[ai]; aj<row_offset[ai+1]; ++aj)\n"
19  " sum += val[aj] * in[col[aj]];\n"
20  "\n"
21  " out[ai] = sum;\n"
22  "\n"
23  " }\n"
24  "\n"
25  "}\n"
26  "\n"
27  "__kernel void kernel_mcsr_add_spmv_scalar(const int nrow, __global const int *row_offset, \n"
28  " __global const int *col, __global const ValueType *val, \n"
29  " const ValueType scalar, __global const ValueType *in,\n"
30  " __global ValueType *out) {\n"
31  "\n"
32  " int ai = get_global_id(0);\n"
33  " int aj;\n"
34  "\n"
35  " if (ai < nrow) {\n"
36  "\n"
37  " out[ai] += scalar * val[ai] * in[ai];\n"
38  "\n"
39  " for (aj=row_offset[ai]; aj<row_offset[ai+1]; ++aj)\n"
40  " out[ai] += scalar * val[aj] * in[col[aj]];\n"
41  "\n"
42  " }\n"
43  "\n"
44  "}\n"
45  "\n"
46  "\n"
47 ;
48 }
49 
50 #endif // PARALUTION_OCL_KERNELS_MCSR_HPP_
const char * ocl_kernels_mcsr
Definition: ocl_kernels_mcsr.hpp:6
Definition: backend_manager.cpp:43