5 #ifndef MAPARRAY_KERNELS_H
6 #define MAPARRAY_KERNELS_H
32 "__kernel void MapArrayKernel_KERNELNAME(__global TYPE* input1, __global TYPE* input2, __global TYPE* output, unsigned int n)\n"
34 " int i = get_global_id(0);\n"
35 " unsigned int gridSize = get_local_size(0)*get_num_groups(0);\n"
38 " output[i] = FUNCTIONNAME(&input1[0], input2[i]);\n"
64 "__kernel void MapArrayKernel_Matrix_KERNELNAME(__global TYPE* input1, __global TYPE* input2, __global TYPE* output, unsigned int n, unsigned int xsize, unsigned int ysize, int yoffset, CONST_TYPE const1)\n"
66 " int xindex = get_global_id(0);\n"
67 " int yindex = get_global_id(1);\n"
68 " int i = yindex*xsize + xindex; \n"
69 " if(i < n && xindex<xsize && yindex <ysize)\n"
71 " output[i] = FUNCTIONNAME(&input1[0], input2[i], xindex, yindex+yoffset, const1);\n"
83 "__kernel void MapArrayKernel_Matrix_Blockwise_KERNELNAME(__global TYPE* input1, __global TYPE* input2, __global TYPE* output, unsigned int outSize, int p2BlockSize, CONST_TYPE const1)\n"
85 " int i = get_global_id(0);\n"
86 " unsigned int gridSize = get_local_size(0)*get_num_groups(0);\n"
89 " output[i] = FUNCTIONNAME(&input1[0], &input2[i*p2BlockSize], const1);\n"
102 "__kernel void MapArrayKernel_Sparse_Matrix_Blockwise_KERNELNAME(__global TYPE* input1, __global TYPE* in2_values, __global unsigned int *in2_row_offsets, __global unsigned int *in2_col_indices, __global TYPE* output, unsigned int outSize, int indexOffset, CONST_TYPE const1)\n"
104 " int i = get_global_id(0);\n"
105 " unsigned int gridSize = get_local_size(0)*get_num_groups(0);\n"
108 " int rowId = in2_row_offsets[i] - indexOffset;\n"
109 " int row2Id = in2_row_offsets[i+1] - indexOffset;\n"
110 " output[i] = FUNCTIONNAME(&input1[0], &in2_values[rowId], (row2Id-rowId), &in2_col_indices[rowId], const1);\n"
145 template <
typename T,
typename ArrayFunc>
146 __global__
void MapArrayKernel_CU(ArrayFunc mapArrayFunc, T* input1, T* input2, T* output,
unsigned int n)
148 unsigned int i = blockIdx.x * blockDim.x + threadIdx.x;
149 unsigned int gridSize = blockDim.x*gridDim.x;
153 output[i] = mapArrayFunc.CU(&input1[0], input2[i]);
178 template <
typename T,
typename ArrayFunc>
179 __global__
void MapArrayKernel_CU_Matrix(ArrayFunc mapArrayFunc, T* input1, T* input2, T* output,
unsigned int n,
unsigned int xsize,
unsigned int ysize,
unsigned int yoffset)
181 unsigned int xindex = blockIdx.x * blockDim.x + threadIdx.x;
182 unsigned int yindex = blockIdx.y * blockDim.y + threadIdx.y;
183 unsigned int outaddr = yindex*xsize + xindex;
185 if(outaddr < n && xindex<xsize && yindex <ysize)
187 output[outaddr] = mapArrayFunc.CU(&input1[0], input2[outaddr], xindex, yindex+yoffset);
197 template <
typename T,
typename ArrayFunc>
200 unsigned int i = blockIdx.x * blockDim.x + threadIdx.x;
201 unsigned int gridSize = blockDim.x*gridDim.x;
205 output[i] = mapArrayFunc.CU(&input1[0], &input2[i*p2BlockSize]);
216 template <
typename T,
typename ArrayFunc>
217 __global__
void MapArrayKernel_CU_Sparse_Matrix_Blockwise(ArrayFunc mapArrayFunc, T* input1, T* in2_values,
unsigned int *in2_row_offsets,
unsigned int *in2_col_indices, T* output,
unsigned int outSize,
int indexOffset)
219 unsigned int i = blockIdx.x * blockDim.x + threadIdx.x;
220 unsigned int gridSize = blockDim.x*gridDim.x;
224 int rowId = in2_row_offsets[i] - indexOffset;
225 int row2Id = in2_row_offsets[i+1] - indexOffset;
226 output[i] = mapArrayFunc.CU(&input1[0], &in2_values[rowId], (row2Id-rowId), &in2_col_indices[rowId]);
static std::string MapArrayKernel_CL("__kernel void MapArrayKernel_KERNELNAME(__global TYPE* input1, __global TYPE* input2, __global TYPE* output, unsigned int n)\n""{\n"" int i = get_global_id(0);\n"" unsigned int gridSize = get_local_size(0)*get_num_groups(0);\n"" while(i < n)\n"" {\n"" output[i] = FUNCTIONNAME(&input1[0], input2[i]);\n"" i += gridSize;\n"" }\n""}\n")
static std::string MapArrayKernel_CL_Sparse_Matrix_Blockwise("__kernel void MapArrayKernel_Sparse_Matrix_Blockwise_KERNELNAME(__global TYPE* input1, __global TYPE* in2_values, __global unsigned int *in2_row_offsets, __global unsigned int *in2_col_indices, __global TYPE* output, unsigned int outSize, int indexOffset, CONST_TYPE const1)\n""{\n"" int i = get_global_id(0);\n"" unsigned int gridSize = get_local_size(0)*get_num_groups(0);\n"" if(i < outSize)\n"" {\n"" int rowId = in2_row_offsets[i] - indexOffset;\n"" int row2Id = in2_row_offsets[i+1] - indexOffset;\n"" output[i] = FUNCTIONNAME(&input1[0], &in2_values[rowId], (row2Id-rowId), &in2_col_indices[rowId], const1);\n"" i += gridSize;\n"" }\n""}\n")
__global__ void MapArrayKernel_CU_Matrix_Blockwise(ArrayFunc mapArrayFunc, T *input1, T *input2, T *output, unsigned int outSize, int p2BlockSize)
Definition: maparray_kernels.h:198
static std::string MapArrayKernel_CL_Matrix_Blockwise("__kernel void MapArrayKernel_Matrix_Blockwise_KERNELNAME(__global TYPE* input1, __global TYPE* input2, __global TYPE* output, unsigned int outSize, int p2BlockSize, CONST_TYPE const1)\n""{\n"" int i = get_global_id(0);\n"" unsigned int gridSize = get_local_size(0)*get_num_groups(0);\n"" if(i < outSize)\n"" {\n"" output[i] = FUNCTIONNAME(&input1[0], &input2[i*p2BlockSize], const1);\n"" i += gridSize;\n"" }\n""}\n")
__global__ void MapArrayKernel_CU_Matrix(ArrayFunc mapArrayFunc, T *input1, T *input2, T *output, unsigned int n, unsigned int xsize, unsigned int ysize, unsigned int yoffset)
Definition: maparray_kernels.h:179
static std::string MapArrayKernel_CL_Matrix("__kernel void MapArrayKernel_Matrix_KERNELNAME(__global TYPE* input1, __global TYPE* input2, __global TYPE* output, unsigned int n, unsigned int xsize, unsigned int ysize, int yoffset, CONST_TYPE const1)\n""{\n"" int xindex = get_global_id(0);\n"" int yindex = get_global_id(1);\n"" int i = yindex*xsize + xindex; \n"" if(i < n && xindex<xsize && yindex <ysize)\n"" {\n"" output[i] = FUNCTIONNAME(&input1[0], input2[i], xindex, yindex+yoffset, const1);\n"" }\n""}\n")
__global__ void MapArrayKernel_CU(ArrayFunc mapArrayFunc, T *input1, T *input2, T *output, unsigned int n)
Definition: maparray_kernels.h:146
__global__ void MapArrayKernel_CU_Sparse_Matrix_Blockwise(ArrayFunc mapArrayFunc, T *input1, T *in2_values, unsigned int *in2_row_offsets, unsigned int *in2_col_indices, T *output, unsigned int outSize, int indexOffset)
Definition: maparray_kernels.h:217