cudaDeviceGetP2PAttribute代码示例
以下是一个示例代码,演示了如何使用cudaDeviceGetP2PAttribute函数来获取两个GPU之间的Peer-to-Peer属性。
#include <stdio.h>
#include <cuda_runtime.h>
int main() {
int deviceCount;
cudaGetDeviceCount(&deviceCount);
for (int i = 0; i < deviceCount; i++) {
cudaSetDevice(i);
printf("Device %d:\n", i);
for (int j = 0; j < deviceCount; j++) {
if (i != j) {
int accessSupported, nativeAtomicSupported;
cudaDeviceGetP2PAttribute(&accessSupported, cudaDevP2PAttrAccessSupported, i, j);
cudaDeviceGetP2PAttribute(&nativeAtomicSupported, cudaDevP2PAttrNativeAtomicSupported, i, j);
printf(" Peer-to-Peer access from device %d to device %d: %s\n", i, j, accessSupported ? "Supported" : "Not supported");
printf(" Native atomic operations from device %d to device %d: %s\n", i, j, nativeAtomicSupported ? "Supported" : "Not supported");
}
}
}
return 0;
}
此示例代码通过循环遍历每个GPU设备,并使用cudaDeviceGetP2PAttribute函数获取与其他GPU设备之间的P2P属性。在此示例中,我们使用cudaDevP2PAttrAccessSupported和cudaDevP2PAttrNativeAtomicSupported属性来查询两个设备之间的P2P访问和原子操作支持情况。然后,我们将结果打印到控制台上。
请注意,要运行此示例代码,您的系统必须具有支持P2P访问的多个GPU设备
原文地址: https://www.cveoy.top/t/topic/ijuj 著作权归作者所有。请勿转载和采集!