欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

cudagpus是什么_如何在cuda中复制不同gpus之间的内存

发布时间:2024/1/18 编程问答 46 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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之间的内存的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。