From 88ee328e000f6c345b584b57eadab6764d0c2f4d Mon Sep 17 00:00:00 2001 From: boufaras Date: Wed, 25 May 2011 21:46:06 +0000 Subject: [PATCH] Update specific data problem git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@2264 331e1502-861f-0410-8da2-ba01fb791d7f --- .../ParadisEO-GPU/src/problems/data/PPPData.h | 63 ++++++++++--------- .../ParadisEO-GPU/src/problems/data/QAPData.h | 26 ++++---- 2 files changed, 45 insertions(+), 44 deletions(-) diff --git a/branches/ParadisEO-GPU/src/problems/data/PPPData.h b/branches/ParadisEO-GPU/src/problems/data/PPPData.h index d90970eb5..8160eeea0 100644 --- a/branches/ParadisEO-GPU/src/problems/data/PPPData.h +++ b/branches/ParadisEO-GPU/src/problems/data/PPPData.h @@ -35,23 +35,23 @@ #ifndef _PPPData_H_ #define _PPPData_H_ -#include +#include template -class PPPData: public moCudaSpecificData { +class PPPData: public moGPUSpecificData { public: - using moCudaSpecificData::cudaObject; + using moGPUSpecificData::GPUObject; /** * Default Constructor */ PPPData() : - moCudaSpecificData() { + moGPUSpecificData() { - (*this).load(); + //(*this).load(); } /** @@ -62,18 +62,18 @@ public: PPPData(const PPPData & _pppData) { a_h = new int[Md * Nd]; - H_h = new int[Nd + 1]; + H_h = new int[Nd]; for (int i = 0; i < Md; i++) for (int j = 0; j < Nd; j++) { a_h[i * Nd + j] = _pppData.a_h[i * Nd + j]; } - for (int k = 0; k <= Nd; k++) { + for (int k = 0; k < Nd; k++) { H_h[k] = _pppData.H_h[k]; } - cudaObject.memCopy(a_d, a_h, Nd * Md); - cudaObject.memCopy(H_d, H_h, Nd + 1); + GPUObject.memCopy(a_d, a_h, Nd * Md); + GPUObject.memCopy(H_d, H_h, Nd); } @@ -86,17 +86,17 @@ public: PPPData & operator=(const PPPData & _pppData) { a_h = new int[Md * Nd]; - H_h = new int[Nd + 1]; + H_h = new int[Nd]; for (int i = 0; i < Md; i++) for (int j = 0; j < Nd; j++) { a_h[i * Nd + j] = _pppData.a_h[i * Nd + j]; } - for (int k = 0; k <= Nd; k++) { + for (int k = 0; k < Nd; k++) { H_h[k] = _pppData.H_h[k]; } - cudaObject.memCopy(a_d, a_h, Nd * Md); - cudaObject.memCopy(H_d, H_h, Nd + 1); + GPUObject.memCopy(a_d, a_h, Nd * Md); + GPUObject.memCopy(H_d, H_h, Nd); return (*this); } @@ -106,8 +106,8 @@ public: */ ~PPPData() { - cudaObject.memFree(a_d); - cudaObject.memFree(H_d); + GPUObject.memFree(a_d); + GPUObject.memFree(H_d); delete[] a_h; delete[] H_h; } @@ -124,22 +124,20 @@ public: int *v = new int[Nd]; int *s = new int[Md]; a_h = new int[Md * Nd]; - H_h = new int[Nd + 1]; + H_h = new int[Nd]; + for (int i = 0; i < Nd; i++) + H_h[i] = 0; for (int i = 0; i < Md; i++) { for (int j = 0; j < Nd; j++) { - if (rng.rand() % 2) - a_h[i * Nd + j] = 1; - else - a_h[i * Nd + j] = -1; + a_h[i * Nd + j] =pow(-1,rand()); } } - + cout <<"v: "<0) + H_h[s[i]-1]++; } + for (int i = 0; i < Nd; i++) + printf("%d ", H_h[i]); + cout< +#include template -class QAPData: public moCudaSpecificData { +class QAPData: public moGPUSpecificData { public: - using moCudaSpecificData::sizeData; - using moCudaSpecificData::cudaObject; + using moGPUSpecificData::sizeData; + using moGPUSpecificData::GPUObject; /** * Default Constructor */ QAPData() : - moCudaSpecificData() { + moGPUSpecificData() { } /** @@ -83,8 +83,8 @@ public: } - cudaObject.memCopy(a_d, a_h, sizeData * sizeData); - cudaObject.memCopy(b_d, b_h, sizeData * sizeData); + GPUObject.memCopy(a_d, a_h, sizeData * sizeData); + GPUObject.memCopy(b_d, b_h, sizeData * sizeData); } @@ -107,8 +107,8 @@ public: b_h[i * sizeData + j] = _qapData.b_h[i * sizeData + j]; } - cudaObject.memCopy(a_d, a_h, sizeData * sizeData); - cudaObject.memCopy(b_d, b_h, sizeData * sizeData); + GPUObject.memCopy(a_d, a_h, sizeData * sizeData); + GPUObject.memCopy(b_d, b_h, sizeData * sizeData); return (*this); } @@ -117,8 +117,8 @@ public: */ ~QAPData() { - cudaObject.memFree(a_d); - cudaObject.memFree(b_d); + GPUObject.memFree(a_d); + GPUObject.memFree(b_d); delete[] a_h; delete[] b_h; } @@ -151,8 +151,8 @@ public: file >> b_h[i * sizeData + j]; //Allocate and copy QAP data from CPU memory to GPU global memory - cudaObject.memCopy(a_d, a_h, sizeData * sizeData); - cudaObject.memCopy(b_d, b_h, sizeData * sizeData); + GPUObject.memCopy(a_d, a_h, sizeData * sizeData); + GPUObject.memCopy(b_d, b_h, sizeData * sizeData); }