リニアメモリとCUDA配列
をテンプレートにして作成
[
トップ
|
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
*Linear Memory [#lc2b8c0b]
2次元,3次元配列のメモリ領域を確保したとき,メモリ内での...
CUDAではデバイスメモリ内の連続した領域(Linear memoryとよ...
(1次元の場合は,通常のcudaMalloc()でLinear memoryが確保さ...
cudaError_t cudaMallocPitch(void **devPtr, size_t *pitch...
cudaError_t cudaMalloc3D(struct cudaPitchedPtr* pitchedD...
それぞれ2D,3DのLinear memoryを確保します.
[[cudaMallocPitch:http://developer.download.nvidia.com/co...
[[cudaMalloc3D:http://developer.download.nvidia.com/compu...
2Dで(width/sizeof())×height,3Dでextent.width×extent.heig...
widthはバイト数で指定(width*sizeof(float)など)し,pitchに...
つまり,(i,j)要素のアドレスは,
devPtr+j*pitch+i
cudaExtent変数は[[make_cudaExtent(size_t w, size_t h, siz...
関数で初期化可能です.w,h,dはそれぞれwidth, height, depth...
[[cudaPitchedPtr:http://developer.download.nvidia.com/com...
pitch : ピッチ幅(size_t,バイト数),ptr : 確保されたメモリ...
xsize,ysize : 要素の幅と高さ(size_t)
のメンバ変数を持つ構造体です.
Linear memoryのコピーには以下の命令を用います.
cudaError_t cudaMemcpy2D(void *dst, size_t dpitch, const...
cudaError_t cudaMemcpy3D(const struct cudaMemcpy3DParms ...
参照 : [[cudaMemcpy2D:http://developer.download.nvidia.co...
[[cudaMemcpy3D:http://developer.download.nvidia.com/compu...
2Dの場合の引数はそれぞれ,
-dst : コピー先アドレス
-dpitch : コピー先配列のピッチ幅(バイト数)
-src : コピー元アドレス
-spitch : コピー元配列のピッチ幅(バイト数)
-width : コピーする領域の幅(バイト数)
-height : コピーする領域の高さ(要素数)
-kind : コピータイプ : cudaMemcpyHostToHost, cudaMemcpyHo...
です.
3Dの場合は引数に以下の構造体の変数を指定する.
#code(C){{
struct cudaMemcpy3DParms {
struct cudaArray *srcArray;
struct cudaPos srcPos;
struct cudaPitchedPtr srcPtr;
struct cudaArray *dstArray;
struct cudaPos dstPos;
struct cudaPitchedPtr dstPtr;
struct cudaExtent extent;
enum cudaMemcpyKind kind;
};
}}
*CUDA配列 [#p197a9fc]
CUDA配列(CUDA array)はテクスチャフェッチに最適化されたメ...
テクスチャメモリとして用いる方法は,[[テクスチャメモリ]]...
CUDA配列の確保には[[cudaMallocArray:http://developer.down...
を用います.
cudaError_t cudaMallocArray(struct cudaArray ** arrayPtr...
引数はそれぞれ,
-arrayPtr : 確保されたメモリのアドレス
-desc : テクスチャのデータ構造を示す構造体
-width,height : 確保幅と高さ
です.
[[cudaChannelFormatDesc:http://developer.download.nvidia....
#code(C){{
struct cudaChannelFormatDesc{
int x, y, z, w;
enum cudaChannelFormatKind f;
};
}}
であり,x,y,z,wはテクスチャの各チャネルのビット数(0,8,16,...
fは型の種類を示し,cudaChannelFormatKindSigned (符号付整...
を指定します.cudaChannelFormatDesc構造体の初期化にはcuda...
CUDA配列のコピーを行う関数は,コピーの方向に応じて3種類用...
cudaError_t cudaMemcpyToArray(struct cudaArray * dst, si...
cudaError_t cudaMemcpyFromArray(void * dst, const struct...
cudaError_t cudaMemcpyArrayToArray(struct cudaArray * ds...
[[cudaMemcpyToArray:http://developer.download.nvidia.com/...
は通常のメモリ領域(アドレスsrc)からCUDA配列(アドレスdstか...
[[cudaMemcpyFromArray:http://developer.download.nvidia.co...
はCUDA配列(アドレスsrcから(wOffset,hOffset)だけオフセット...
[[cudaMemcpyArrayToArray:http://developer.download.nvidia...
はCUDA配列(アドレスsrcから(wOffsetSrc,hOffsetSrc)だけオフ...
kindにはコピー元,コピー先の場所に対応して,
cudaMemcpyHostToHost, cudaMemcpyHostToDevice, cudaMemcpyD...
終了行:
*Linear Memory [#lc2b8c0b]
2次元,3次元配列のメモリ領域を確保したとき,メモリ内での...
CUDAではデバイスメモリ内の連続した領域(Linear memoryとよ...
(1次元の場合は,通常のcudaMalloc()でLinear memoryが確保さ...
cudaError_t cudaMallocPitch(void **devPtr, size_t *pitch...
cudaError_t cudaMalloc3D(struct cudaPitchedPtr* pitchedD...
それぞれ2D,3DのLinear memoryを確保します.
[[cudaMallocPitch:http://developer.download.nvidia.com/co...
[[cudaMalloc3D:http://developer.download.nvidia.com/compu...
2Dで(width/sizeof())×height,3Dでextent.width×extent.heig...
widthはバイト数で指定(width*sizeof(float)など)し,pitchに...
つまり,(i,j)要素のアドレスは,
devPtr+j*pitch+i
cudaExtent変数は[[make_cudaExtent(size_t w, size_t h, siz...
関数で初期化可能です.w,h,dはそれぞれwidth, height, depth...
[[cudaPitchedPtr:http://developer.download.nvidia.com/com...
pitch : ピッチ幅(size_t,バイト数),ptr : 確保されたメモリ...
xsize,ysize : 要素の幅と高さ(size_t)
のメンバ変数を持つ構造体です.
Linear memoryのコピーには以下の命令を用います.
cudaError_t cudaMemcpy2D(void *dst, size_t dpitch, const...
cudaError_t cudaMemcpy3D(const struct cudaMemcpy3DParms ...
参照 : [[cudaMemcpy2D:http://developer.download.nvidia.co...
[[cudaMemcpy3D:http://developer.download.nvidia.com/compu...
2Dの場合の引数はそれぞれ,
-dst : コピー先アドレス
-dpitch : コピー先配列のピッチ幅(バイト数)
-src : コピー元アドレス
-spitch : コピー元配列のピッチ幅(バイト数)
-width : コピーする領域の幅(バイト数)
-height : コピーする領域の高さ(要素数)
-kind : コピータイプ : cudaMemcpyHostToHost, cudaMemcpyHo...
です.
3Dの場合は引数に以下の構造体の変数を指定する.
#code(C){{
struct cudaMemcpy3DParms {
struct cudaArray *srcArray;
struct cudaPos srcPos;
struct cudaPitchedPtr srcPtr;
struct cudaArray *dstArray;
struct cudaPos dstPos;
struct cudaPitchedPtr dstPtr;
struct cudaExtent extent;
enum cudaMemcpyKind kind;
};
}}
*CUDA配列 [#p197a9fc]
CUDA配列(CUDA array)はテクスチャフェッチに最適化されたメ...
テクスチャメモリとして用いる方法は,[[テクスチャメモリ]]...
CUDA配列の確保には[[cudaMallocArray:http://developer.down...
を用います.
cudaError_t cudaMallocArray(struct cudaArray ** arrayPtr...
引数はそれぞれ,
-arrayPtr : 確保されたメモリのアドレス
-desc : テクスチャのデータ構造を示す構造体
-width,height : 確保幅と高さ
です.
[[cudaChannelFormatDesc:http://developer.download.nvidia....
#code(C){{
struct cudaChannelFormatDesc{
int x, y, z, w;
enum cudaChannelFormatKind f;
};
}}
であり,x,y,z,wはテクスチャの各チャネルのビット数(0,8,16,...
fは型の種類を示し,cudaChannelFormatKindSigned (符号付整...
を指定します.cudaChannelFormatDesc構造体の初期化にはcuda...
CUDA配列のコピーを行う関数は,コピーの方向に応じて3種類用...
cudaError_t cudaMemcpyToArray(struct cudaArray * dst, si...
cudaError_t cudaMemcpyFromArray(void * dst, const struct...
cudaError_t cudaMemcpyArrayToArray(struct cudaArray * ds...
[[cudaMemcpyToArray:http://developer.download.nvidia.com/...
は通常のメモリ領域(アドレスsrc)からCUDA配列(アドレスdstか...
[[cudaMemcpyFromArray:http://developer.download.nvidia.co...
はCUDA配列(アドレスsrcから(wOffset,hOffset)だけオフセット...
[[cudaMemcpyArrayToArray:http://developer.download.nvidia...
はCUDA配列(アドレスsrcから(wOffsetSrc,hOffsetSrc)だけオフ...
kindにはコピー元,コピー先の場所に対応して,
cudaMemcpyHostToHost, cudaMemcpyHostToDevice, cudaMemcpyD...
ページ名: