ページロックホストメモリ
をテンプレートにして作成
[
トップ
|
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
*Page-Locked Host Memory [#y8f6ee77]
ホストメモリにmalloc()やnewで領域を確保する代わりに,
[[cudaMallocHost():http://developer.download.nvidia.com/c...
や
[[cudaHostAlloc():http://developer.download.nvidia.com/co...
を使うとPage-locked host memoryを確保できます(解放は[[cud...
このPage-locked host memoryを用いる利点は,
-page-lockedメモリはホストとデバイス間の転送をより高速に...
-ホストとデバイスでの同時実行をサポートしているデバイスで...
-デバイスによってはpage-lockedメモリはデバイスのアドレス...
詳しくはProgramming Guideの3.2.5参照.
Page-lockedメモリは,
cudaError_t cudaMallocHost(void ** ptr, size_t size);
cudaError_t cudaHostAlloc(void ** ptr, size_t size, unsi...
で確保することができます.
ドライバはこの関数で割り当てられた仮想領域をトラックし,
cudaMemcpyなどの命令が呼ばれたときに自動的に高速化してく...
ただし,ホスト側でそのメモリ領域がページングされることも...
それによりシステム全体のパフォーマンスが低下する可能性も...
ホストとデバイス間で頻繁に転送があるデータのみに適用した...
それぞれ引数は,
-ptr : 確保されたメモリ領域のポインタ
-size : 確保したいサイズ(バイト数)
-flags : 確保メモリの設定
flagsとしては,
-cudaHostAllocDefault: フラグの値としては0となる.
-cudaHostAllocPortable: 上記のPage-lockedメモリの利点は通...
-cudaHostAllocMapped : デバイスのアドレス空間にPage-locke...
そのため,このブロックは2つのアドレス(ホストとデバイス)を...
デバイス側はcudaHostGetDevicePointer()で取得することがで...
-cudaHostAllocWriteCombined : write-combining(WC)としてPa...
他のアプリケーションが利用可能になる.また,WCメモリはPCI...
snoopされないので最大40%の高速化となる.ただし,ホストか...
を指定できます.
cudaMallocHostはcudaHostAllocの最後の引数にcudaHostAllocD...
cudaHostAllocMappedを指定した場合,カーネルから直接ホスト...
これにより,デバイスメモリブロックを明示的に確保する必要...
ホストメモリブロックとデバイスメモリブロック間のデータ転...
暗黙に実行されます.また,[[ストリーム]]を使わなくてもデ...
デバイス側のアドレスを得るためにはcudaHostGetDevicePointe...
そのためには,他のCUDA呼び出しが実行される前にcudaSetDevi...
また,cudaHostGetDevicePointer()はデバイスがデバイスがpag...
cudaGetDeviceProperties()でcanMapHostMemoryをチェックして...
終了行:
*Page-Locked Host Memory [#y8f6ee77]
ホストメモリにmalloc()やnewで領域を確保する代わりに,
[[cudaMallocHost():http://developer.download.nvidia.com/c...
や
[[cudaHostAlloc():http://developer.download.nvidia.com/co...
を使うとPage-locked host memoryを確保できます(解放は[[cud...
このPage-locked host memoryを用いる利点は,
-page-lockedメモリはホストとデバイス間の転送をより高速に...
-ホストとデバイスでの同時実行をサポートしているデバイスで...
-デバイスによってはpage-lockedメモリはデバイスのアドレス...
詳しくはProgramming Guideの3.2.5参照.
Page-lockedメモリは,
cudaError_t cudaMallocHost(void ** ptr, size_t size);
cudaError_t cudaHostAlloc(void ** ptr, size_t size, unsi...
で確保することができます.
ドライバはこの関数で割り当てられた仮想領域をトラックし,
cudaMemcpyなどの命令が呼ばれたときに自動的に高速化してく...
ただし,ホスト側でそのメモリ領域がページングされることも...
それによりシステム全体のパフォーマンスが低下する可能性も...
ホストとデバイス間で頻繁に転送があるデータのみに適用した...
それぞれ引数は,
-ptr : 確保されたメモリ領域のポインタ
-size : 確保したいサイズ(バイト数)
-flags : 確保メモリの設定
flagsとしては,
-cudaHostAllocDefault: フラグの値としては0となる.
-cudaHostAllocPortable: 上記のPage-lockedメモリの利点は通...
-cudaHostAllocMapped : デバイスのアドレス空間にPage-locke...
そのため,このブロックは2つのアドレス(ホストとデバイス)を...
デバイス側はcudaHostGetDevicePointer()で取得することがで...
-cudaHostAllocWriteCombined : write-combining(WC)としてPa...
他のアプリケーションが利用可能になる.また,WCメモリはPCI...
snoopされないので最大40%の高速化となる.ただし,ホストか...
を指定できます.
cudaMallocHostはcudaHostAllocの最後の引数にcudaHostAllocD...
cudaHostAllocMappedを指定した場合,カーネルから直接ホスト...
これにより,デバイスメモリブロックを明示的に確保する必要...
ホストメモリブロックとデバイスメモリブロック間のデータ転...
暗黙に実行されます.また,[[ストリーム]]を使わなくてもデ...
デバイス側のアドレスを得るためにはcudaHostGetDevicePointe...
そのためには,他のCUDA呼び出しが実行される前にcudaSetDevi...
また,cudaHostGetDevicePointer()はデバイスがデバイスがpag...
cudaGetDeviceProperties()でcanMapHostMemoryをチェックして...
ページ名: