#include #include #include "DKSBase.h" #include "Utility/TimeStamp.h" using namespace std; int main(int argc, char *argv[]) { char *api_name = new char[10]; char *device_name = new char[4]; if (argc == 3) { strcpy(api_name, argv[1]); strcpy(device_name, argv[2]); } else if (argc == 2){ strcpy(api_name, argv[1]); strcpy(device_name, "-gpu"); } else { strcpy(api_name, "OpenCL"); strcpy(device_name, "-gpu"); } cout << "Use api: " << api_name << endl; cout << "Use device: " << device_name << endl; int ierr; int N = 10000; double *data = new double[N]; double *data_out = new double[N]; double *data_out2 = new double[N]; for (int i = 0; i < N; i++) { data[i] = i; } //init dks base class, set API to opencl and init connection with OpenCL device DKSBase base; base.setAPI(api_name, strlen(api_name)); base.setDevice(device_name, strlen(device_name)); base.initDevice(); //data ptr void *data_ptr, *data_ptr2; //allocate memory data_ptr = base.allocateMemory(N, ierr); data_ptr2 = base.allocateMemory(N, ierr); //write data to memory and fill data on device base.writeData(data_ptr, data, N); base.writeData(data_ptr2, data, N); //base.callNt(data_ptr2, data_ptr, 6, N, 1, 0); //calc sum base.callSum(data_ptr2, data_ptr2, N); //base.callSum(data_ptr, data_ptr, N); //chi^2 //base.callChi2(data_ptr, data_ptr, data_ptr, N); //base.callChi2(data_ptr2, data_ptr2, data_ptr2, N); //read data base.readData(data_ptr, data_out, N); base.readData(data_ptr2, data_out2, N); //base.oclEventInfo(); //free memory base.freeMemory(data_ptr, N); base.freeMemory(data_ptr2, N); /* for (int i = 0; i < N; i++) { cout << data[i] << "\t"; } cout << endl << endl; for (int i = 0; i < N; i++) { cout << data_out[i] << "\t"; } cout << endl << endl; for (int i = 0; i < N; i++) { cout << data_out2[i] << "\t"; } cout << endl; */ return 0; }