add new method

git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@2009 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
boufaras 2010-11-25 15:56:57 +00:00
commit 2c36d7eab9

View file

@ -61,16 +61,27 @@ public:
*@param _dataSize the size of data to copy *@param _dataSize the size of data to copy
*/ */
void operator()(T* & _data, T * _dataTocpy, unsigned _dataSize) { void operator()(T* _data, T * _dataTocpy, unsigned _dataSize) {
//copy data from CPU memory to GPU global memory
//copy data from CPU memeory to GPU memory
CUDA_SAFE_CALL(cudaMemcpy(_data, _dataTocpy, _dataSize * sizeof(T), CUDA_SAFE_CALL(cudaMemcpy(_data, _dataTocpy, _dataSize * sizeof(T),
cudaMemcpyHostToDevice)); cudaMemcpyHostToDevice));
// Check if data was successfuly copied // Check if the copy of data is failed
CUT_CHECK_ERROR("Copy of data from CPU to GPU global memory failed"); CUT_CHECK_ERROR("Copy of data from CPU to GPU global memory failed");
} }
/**
*Copy n bytes from the memory area pointed to by _dataTocpy to the memory area pointed to by offset bytes from the start of symbol _dev_data
*@param _dev_data the data destination on device
*@param _dataTocpy the source memory address
*/
void operator()(T* _dev_data, T * _dataTocpy) {
cudaMemcpyToSymbol(_dev_data, &_dataTocpy, sizeof(_dataTocpy));
}
/** /**
*Copy data from CPU memory to GPU global memory and vice versa *Copy data from CPU memory to GPU global memory and vice versa
*@param _data the data representation where the data will be copied *@param _data the data representation where the data will be copied
@ -79,28 +90,26 @@ public:
*@param _HostToDevice the direction of copy(true if copy will be done from CPU memory to GPU memory) *@param _HostToDevice the direction of copy(true if copy will be done from CPU memory to GPU memory)
*/ */
void operator()(T* & _data, T * _dataTocpy, unsigned _dataSize, void operator()(T* _data, T * _dataTocpy, unsigned _dataSize,
bool _HostToDevice) { bool _HostToDevice) {
if (_HostToDevice) { if (_HostToDevice) {
//copy data from CPU memory to GPU memory //copy data from CPU memory to GPU global memory
CUDA_SAFE_CALL(cudaMemcpy(_data, _dataTocpy, _dataSize * sizeof(T), CUDA_SAFE_CALL(cudaMemcpy(_data, _dataTocpy, _dataSize * sizeof(T),
cudaMemcpyHostToDevice)); cudaMemcpyHostToDevice));
// Check if data was successfuly copied
CUT_CHECK_ERROR("Copy of data from CPU to GPU global memory failed");
} else {
cudaMemcpy(_data, _dataTocpy, _dataSize * sizeof(T),
cudaMemcpyDeviceToHost);
// Check if data was successfuly copied from GPU memory to CPU memory
CUT_CHECK_ERROR("Copy of data from GPU global memory to CPU failed");
} }
else {
//copy data from GPU global memory to GPU memory
CUDA_SAFE_CALL(cudaMemcpy(_data, _dataTocpy, _dataSize * sizeof(T),
cudaMemcpyDeviceToHost));
}
} }
~moCudaCopy() { ~moCudaCopy() {
} }
}; };
#endif #endif