add new method
git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@2009 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
parent
b82741d5a6
commit
2c36d7eab9
1 changed files with 23 additions and 14 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue