以下是一个示例代码,演示了如何使用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设备

cudaDeviceGetP2PAttribute代码示例

原文地址: https://www.cveoy.top/t/topic/ijuj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录