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
|
||||
*/
|
||||
|
||||
void operator()(T* & _data, T * _dataTocpy, unsigned _dataSize) {
|
||||
|
||||
//copy data from CPU memeory to GPU memory
|
||||
void operator()(T* _data, T * _dataTocpy, unsigned _dataSize) {
|
||||
//copy data from CPU memory to GPU global memory
|
||||
CUDA_SAFE_CALL(cudaMemcpy(_data, _dataTocpy, _dataSize * sizeof(T),
|
||||
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");
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*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
|
||||
*@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)
|
||||
*/
|
||||
|
||||
void operator()(T* & _data, T * _dataTocpy, unsigned _dataSize,
|
||||
void operator()(T* _data, T * _dataTocpy, unsigned _dataSize,
|
||||
bool _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),
|
||||
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() {
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue