12 #include <starpu_opencl.h>
21 #include <OpenCL/opencl.h>
80 template <
typename ScanFunc,
typename T>
98 Scan(ScanFunc* scanFunc);
124 void setInitValue(T _init)
131 void finishAll() {m_environment->
finishAll();}
132 void setExecPlan(
ExecPlan& plan) {m_execPlan = plan;}
136 ScanFunc* m_scanFunc;
139 struct starpu_codelet *codelet;
140 struct starpu_codelet *codelet_two;
144 #ifdef USE_STARPU_HISTORY_MODEL
145 starpu_perfmodel *scan1_perf_model;
146 starpu_perfmodel *scan2_perf_model;
155 static void cpu_func(
void *buffers[],
void *arg);
159 static void omp_func(
void *buffers[],
void *arg);
164 static void cuda_func(
void *buffers[],
void *arg);
171 static void opencl_func(
void *buffers[],
void *arg);
176 struct starpu_opencl_program opencl_codelet;
177 char kernelNameScan[1024];
178 char kernelNameScanUpdate[1024];
179 char kernelNameScanAdd[1024];
181 void replaceText(std::string& text, std::string find, std::string replace);
185 std::string perfmodel1_str;
186 std::string perfmodel2_str;
Contains a class declaration for an object which represents an CUDA device memory allocation...
~Scan()
Definition: scan.inl:240
Includes the macro files needed for the defined backends.
void operator()(Vector< T > &input, ScanType type, T init=T())
Definition: scan.inl:263
static void opencl_func(void *buffers[], void *arg)
Definition: scan_cl.inl:101
T scanLargeVectorRecursively_CU(T *input, T *output, std::vector< DeviceMemPointer_CU< T > * > &blockSums, unsigned int numElements, int level, ScanType type, T init, int deviceID)
Definition: scan_cu.inl:36
void finishAll()
Definition: environment.inl:119
Contains the definitions of OpenCL specific functions for the Scan skeleton.
A class representing an OpenCL device memory allocation.
Definition: device_mem_pointer_cl.h:38
Contains a class declaration for the object that represents an OpenCL device.
Contains the definitions of OpenMP specific functions for the Scan skeleton.
void run_async()
Definition: scan.inl:220
Contains the definitions of non-backend specific functions for the Scan skeleton. ...
void createOpenCLProgram()
Definition: scan_cl.inl:48
Scan(ScanFunc *scanFunc)
Definition: scan.inl:21
Contains a class declaration for the object that represents a CUDA device.
A vector container class, implemented as a wrapper for std::vector. It is configured to use StarPU DS...
Definition: vector.h:40
static void omp_func(void *buffers[], void *arg)
Definition: scan_omp.inl:26
A class that describes an execution plan, not used very much in this case as decision is mostly left ...
Definition: exec_plan.h:75
void replaceText(std::string &text, std::string find, std::string replace)
Definition: scan_cl.inl:26
A class representing a CUDA device memory allocation.
Definition: device_mem_pointer_cu.h:34
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.
static void cpu_func(void *buffers[], void *arg)
Definition: scan_cpu.inl:21
T scanLargeVectorRecursively_CL(T *input, T *output, std::vector< DeviceMemPointer_CL< T > * > &blockSums, unsigned int numElements, int level, ScanType type, T init, Device_CL *deviceCL)
Definition: scan_cl.inl:187
A class representing an OpenCL device.
Definition: device_cl.h:37
Contains the definitions of CUDA specific functions for the Scan skeleton.
static void cuda_func(void *buffers[], void *arg)
Definition: scan_cu.inl:89
A class representing the Scan skeleton.
Definition: scan.h:81
Contains a class that stores information about which back ends to use when executing.
Contains the definitions of CPU specific functions for the Scan skeleton.
ScanType
Definition: scan.h:46