cudagpus是什么_如何在cuda中复制不同gpus之间的内存
將數據從一個GPU傳輸到另一個GPU通常需要通過主機內存進行“分段”.例外情況是GPU和系統拓撲支持對等(P2P)訪問并且已明確啟用P2P.在這種情況下,數據傳輸可以直接通過PCIE總線從一個GPU流向另一個GPU.
在任何一種情況下(有或沒有P2P可用/啟用),典型的cuda runtime API call將是cudaMemcpyPeer / cudaMemcpyPeerAsync,如cuda p2pBandwidthLatencyTest sample code中所示.
在Windows上,P2P的一個要求是在TCC模式下驅動程序支持兩個設備.大多數情況下,TCC模式不是GeForce GPU的可用選項(最近,使用CUDA 7.5RC工具包中提供的驅動程序和運行時對GeForce Titan系列GPU進行了例外處理.)
因此,在Windows上,這些GPU將無法利用直接P2P傳輸.然而,幾乎相同的序列可用于傳輸數據. CUDA運行時將檢測傳輸的性質,并在“引擎蓋下”執行分配以創建臨時緩沖區.然后,傳輸將分兩部分完成:從始發設備到登臺緩沖區的傳輸,以及從登臺緩沖區到目標設備的傳輸.
以下是一個完整的示例,展示了如何將數據從一個GPU傳輸到另一個GPU,同時利用P2P訪問(如果可用):
$cat t850.cu
#include
#include
#define SRC_DEV 0
#define DST_DEV 1
#define DSIZE (8*1048576)
#define cudaCheckErrors(msg) \
do { \
cudaError_t __err = cudaGetLastError(); \
if (__err != cudaSuccess) { \
fprintf(stderr, "Fatal error: %s (%s at %s:%d)
總結
以上是生活随笔為你收集整理的cudagpus是什么_如何在cuda中复制不同gpus之间的内存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: History 历史记录加入时间等信息
- 下一篇: 笔记本电脑的Fn键