Files
DKS/test/testMICOpenCL.cpp
2016-10-10 14:49:32 +02:00

94 lines
2.0 KiB
C++

#include <iostream>
#include <cstdlib>
#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<double>(N, ierr);
data_ptr2 = base.allocateMemory<double>(N, ierr);
//write data to memory and fill data on device
base.writeData<double>(data_ptr, data, N);
base.writeData<double>(data_ptr2, data, N);
//base.callNt<double>(data_ptr2, data_ptr, 6, N, 1, 0);
//calc sum
base.callSum<double>(data_ptr2, data_ptr2, N);
//base.callSum<double>(data_ptr, data_ptr, N);
//chi^2
//base.callChi2<double>(data_ptr, data_ptr, data_ptr, N);
//base.callChi2<double>(data_ptr2, data_ptr2, data_ptr2, N);
//read data
base.readData<double>(data_ptr, data_out, N);
base.readData<double>(data_ptr2, data_out2, N);
//base.oclEventInfo();
//free memory
base.freeMemory<double>(data_ptr, N);
base.freeMemory<double>(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;
}