- Published on
HelloCuda 系列: CUDA CheckP2P
这部分是一段代码片段,用来检查CUDA设备之间的P2P(点对点)通信能力。P2P通信允许多个GPU直接交换数据,而无需通过主机内存,从而提高数据传输效率。
#include <cuada_runtime.h>
#include <iostream>
void checkCudaDeviceCanAccessPeer() {
int deviceCount;
cudaGetDeviceCount(&deviceCount);
if (deviceCount < 2) {
std::cerr << "This test requires at least two CUDA devices." << std::endl;
return;
}
std::cout << "Number of CUDA devices: " << deviceCount << std::endl;
int devID0 = 0, devID1 = 1;
cudaSetDevice(devID0);
int canAccessPeer = 0;
cudaError_t err = cudaDeviceCanAccessPeer(&canAccessPeer, devID0, devID1);
if (err != cudaSuccess) {
std::cerr << "Error checking P2P access: " << cudaGetErrorString(err) << std::endl;
return;
}
if (canAccessPeer) {
std::cout << "Device " << devID0 << " can access device " << devID1 << " directly." << std::endl;
} else {
std::cout << "Device " << devID0 << " cannot access device " << devID1 << " directly." << std::endl;
}
}
THE END