作者p03189 (豬內茄仔)
看板C_and_CPP
標題[問題] CUDA 如何把2維陣列資料搬到globel memory ?
時間Sat Mar 28 21:31:05 2009
假設host 端有一個2維陣列如下
int hst2way[10][10];
該如何把它的內容值搬到GPU上呢?
而且搬過去後,在GPU上也是一個二維陣列。
從Reference Manual查到很多相關的函數
如:
cudaError_t cudaMemcpy2D( void* dst, size_t dpitch, const void* src, size_t
spitch, size_t width, size_t height, enum cudaMemcpyKind kind )
cudaError_t cudaMemcpy2DArrayToArray(struct cudaArray* dstArray, size_t dstX,
size_t dstY, const struct cudaArray* srcArray, size_t srcX, size_t srcY, size_t width,
size_t height, enum cudaMemcpyKind kind)
對於 pitch 似乎是以下的函數產生的:
cudaError_t cudaMallocPitch( void** devPtr, size_t* pitch, size_t
widthInBytes, size_t height)
但此函數好像無法在host memory 上配置記憶體位置。
不論是cudaMallocPitch()中pitch的定義或cudaMemcpy2DArrayToArray()中srcX和srcY的
定義都不是很明確。
請問有人會解決這個問題嗎? 感謝大家
--
◤ ◥ ◣▲◢ ◤≡.◥
蜘蛛人 ◣╳◢ Orz ﹀▲﹀ 老人家 ═ ═
◣_ ◢▲ ◥皿 ◤▲ "︷\│▲
◤ ◤ ◤ ◤ ◤ ◤
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.128.10
※ 編輯: p03189 來自: 140.113.128.10 (03/28 21:32)
1F:→ mike0227:pitch是用來把leading dim補到16的倍數 03/31 00:04
2F:→ mike0227:減少access次數用的 基本上你要把data都看成一維的 03/31 00:07
3F:→ mike0227:programming guide p.63有個common access patterns 03/31 00:08
4F:→ mike0227:稍微看一下吧 我自己是沒在用MallocPitch啦 因為麻煩很多 03/31 00:09
5F:→ mike0227:硬是要用data(x,y)這種方式寫比較順的話 03/31 00:13
6F:→ mike0227:我是有看過有人用micro去換掉 03/31 00:14