-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmulti_device_query.zig
More file actions
32 lines (26 loc) · 984 Bytes
/
multi_device_query.zig
File metadata and controls
32 lines (26 loc) · 984 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// examples/kernel/10_Integration/A_DriverLifecycle/multi_device_query.zig
// Reference: cuda-samples/0_Introduction/simpleMultiGPU
// API: driver.CudaContext, deviceCount, computeCapability, totalMem
const cuda = @import("zcuda");
const driver = cuda.driver;
/// Query all available CUDA devices.
/// Demonstrates multi-device enumeration via zcuda driver API.
pub fn main() !void {
const count = try driver.deviceCount();
if (count == 0) return error.NoCudaDevices;
// Query each device
var dev: u32 = 0;
while (dev < count) : (dev += 1) {
var ctx = try driver.CudaContext.new(dev);
defer ctx.deinit();
const cc = try ctx.computeCapability();
const total = try ctx.totalMem();
const free = try ctx.freeMem();
// Sanity checks
if (cc.major < 3) continue; // Skip very old devices
if (free > total) return error.InvalidMemoryReport;
_ = cc;
_ = total;
_ = free;
}
}