Main.cpp
------------------------------------
#include<OpenCLBinding.h>
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";
#define DATA_SIZE (1024)
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 cpu1(CPU);
cpu1.Program(KernelSource);
cpu1.Kernel("MulScalar");
cpu1.Bind("MulScalar",count);
cpu1.Bind("MulScalar",data , sizeof(double)*count, READ);
cpu1.Bind("MulScalar",results, sizeof(double)*count, WRITE);
cpu1.Bind("MulScalar",2.0);
cpu1.ToDevice("MulScalar");
cpu1.Call("MulScalar",count);
cpu1.Wait();
cpu1.FromDevice("MulScalar");
for (int t=500;t<512;t++)
cout << data[t] << " " << results[t] << "\n";
getchar();
}
CMD 32Bit: g++ Main.cpp -lopencl