12 #include <starpu_opencl.h>
20 #include <OpenCL/opencl.h>
30 #include "skepu/matrix.h"
61 template <
typename MapArrayFunc,
typename T, skepu_container_type c_type=VECTOR>
78 MapArray(MapArrayFunc* mapArrayFunc);
110 void setPartitions(
int _parts)
120 void finishAll() {m_environment->
finishAll();}
121 void setExecPlan(
ExecPlan& plan) {m_execPlan = plan;}
125 MapArrayFunc* m_mapArrayFunc;
128 #ifdef USE_STARPU_HISTORY_MODEL
129 starpu_perfmodel *maparr1_perf_model;
130 starpu_perfmodel *maparr2_perf_model;
133 struct starpu_codelet *sameIOCodelet;
134 struct starpu_codelet *diffIOCodelet;
137 struct starpu_codelet *sameIOCodelet2;
138 struct starpu_codelet *diffIOCodelet2;
147 static void cpu_func(
void *buffers[],
void *arg);
151 static void omp_func(
void *buffers[],
void *arg);
156 static void cuda_func(
void *buffers[],
void *arg);
161 static void opencl_func(
void *buffers[],
void *arg);
164 struct starpu_opencl_program opencl_codelet;
165 char kernelNameArray[1024];
167 void replaceText(std::string& text, std::string find, std::string replace);
173 std::string perfmodel1_str;
174 std::string perfmodel2_str;
219 template <
typename MapArrayFunc,
typename T>
236 MapArray(MapArrayFunc* mapArrayFunc);
238 MapArray(MapArrayFunc* mapArrayFunc, Vector<T> *in1, Matrix<T> *in2, Matrix<T> *out,
int _parts=1);
240 MapArray(MapArrayFunc* mapArrayFunc, Vector<T> *in1, Matrix<T> *in2, Vector<T> *out,
int _parts=1);
244 void finishAll() {m_environment->
finishAll();}
245 void setExecPlan(ExecPlan& plan) {m_execPlan = plan;}
248 Environment<int>* m_environment;
249 MapArrayFunc* m_mapArrayFunc;
252 #ifdef USE_STARPU_HISTORY_MODEL
253 starpu_perfmodel *maparr1_matr_perf_model;
254 starpu_perfmodel *maparr2_matr_perf_model;
258 struct starpu_codelet *sameIOCodelet;
259 struct starpu_codelet *diffIOCodelet;
262 struct starpu_codelet *sameIOCodelet2;
263 struct starpu_codelet *diffIOCodelet2;
267 Matrix<T>& getOutput()
278 void setInput1(Vector<T> *in)
283 void setInput2(Matrix<T> *in)
288 void setOutput(Matrix<T> *out)
293 void setPartitions(
int _parts)
300 template <
typename U>
301 void setConstant(U constant) { m_mapArrayFunc->setConstant(constant); }
306 void operator()(Vector<T>& input1, Matrix<T>& input2, Matrix<T>& output,
int parts=1);
308 void operator()(Vector<T>& input1, Matrix<T>& input2, Vector<T>& output,
int parts=1);
311 static void cpu_func(
void *buffers[],
void *arg);
313 static void cpu_func_blockwise(
void *buffers[],
void *arg);
317 static void omp_func(
void *buffers[],
void *arg);
319 static void omp_func_blockwise(
void *buffers[],
void *arg);
324 static void cuda_func(
void *buffers[],
void *arg);
326 static void cuda_func_blockwise(
void *buffers[],
void *arg);
331 static void opencl_func(
void *buffers[],
void *arg);
333 static void opencl_func_blockwise(
void *buffers[],
void *arg);
336 struct starpu_opencl_program opencl_codelet;
338 char kernelNameArray[1024];
340 void replaceText(std::string& text, std::string find, std::string replace);
346 std::string perfmodel1_str;
347 std::string perfmodel2_str;
353 Vector<T> *output_blockwise;
Contains the definitions of CUDA specific functions for the MapArray skeleton.
Contains a class declaration for the SparseMatrix container.
Contains the definitions of non-backend specific member functions for the MapArray skeleton...
A class representing the MapArray skeleton.
Definition: maparray.h:62
Includes the macro files needed for the defined backends.
void finishAll()
Definition: environment.inl:119
Contains the definitions of OpenCL specific functions for the MapArray skeleton.
Contains the definitions of CPU specific functions for the MapArray skeleton.
static void omp_func(void *buffers[], void *arg)
Definition: maparray_omp.inl:25
Contains a class declaration for the object that represents an OpenCL device.
static void cuda_func(void *buffers[], void *arg)
Definition: maparray_cu.inl:27
void operator()(Vector< T > &input1, Vector< T > &input2, Vector< T > &output)
Definition: maparray.inl:310
A vector container class, implemented as a wrapper for std::vector. It is configured to use StarPU DS...
Definition: vector.h:40
~MapArray()
Definition: maparray.inl:259
A class that describes an execution plan, not used very much in this case as decision is mostly left ...
Definition: exec_plan.h:75
Contains a class definition for Task.
A class representing a Task for the farm skeleton.
Definition: task.h:31
Contains a class declaration for the Vector container.
Contains a class declaration for Environment class.
void replaceText(std::string &text, std::string find, std::string replace)
Definition: maparray_cl.inl:25
void run_async()
Definition: maparray.inl:283
static void cpu_func(void *buffers[], void *arg)
Definition: maparray_cpu.inl:22
Contains the definitions of OpenMP specific member functions for the MapArray skeleton.
MapArray(MapArrayFunc *mapArrayFunc)
Definition: maparray.inl:21
Contains a class that stores information about which back ends to use when executing.
static void opencl_func(void *buffers[], void *arg)
Definition: maparray_cl.inl:95
void createOpenCLProgram()
Definition: maparray_cl.inl:47