Main.cpp
------------------------------------
#include<OpenCLSimple.h>
#include<OpenCLSimple.cpp>
const char *KernelSource = "\n" \
"#pragma OPENCL EXTENSION cl_khr_fp64 : enable \n" \
" \n" \
"__kernel void MulScalar( \n" \
" const unsigned int count, \n" \
" __global double* input, \n" \
" __global double* output, \n" \
" double factor) \n" \
"{ \n" \
" int i = get_global_id(0); \n" \
" if(i < count) \n" \
" output[i] = input[i] * factor; \n" \
"} \n" \
"\n";
int main()
{
double data [DATA_SIZE];
double results[DATA_SIZE];
for(int i = 0; i < DATA_SIZE; i++)
data[i] = rand() / (double)RAND_MAX;
int count = DATA_SIZE;
// ----------------------- OpenCL ----------------------------
OpenCL cpu1(CPU);// CL_DEVICE_TYPE_CPU
cpu1.Program(KernelSource);
cpu1.Kernel("MulScalar");
cl_mem input = cpu1.MallocRead(sizeof(double) * DATA_SIZE);
cl_mem output = cpu1.MallocWrite(sizeof(double) * DATA_SIZE);
cpu1.KernelArg("MulScalar",0, count);
cpu1.KernelArg("MulScalar",1, input);
cpu1.KernelArg("MulScalar",2, output);
cpu1.KernelArg("MulScalar",3, 2.0);
cpu1.ToGPU(input,data,sizeof(double)*count);
cpu1.Call("MulScalar",count);
cpu1.Wait();
cpu1.ToCPU(output,results,sizeof(double)*count);
// ---------------------- Output ----------------------------
for (int t=500;t<512;t++) {
cout << data[t] << " " << results[t] << "\n";
}
getchar();
}
CMD 32Bit: g++ Main.cpp -lopencl