Gpu 0.2.0 gpucontext - CyrilB1531/lodestar GitHub Wiki

Lodestar.Gpu 0.2.0. This page is frozen at that release. Read the current documentation for what main says now. A link to a decision or a migration page follows main, and leaves the archive.

Home › GPU kernels

GpuContext

An ILGPU context and the accelerator its kernels run on.

public sealed class GpuContext : IDisposable

Example — the shape a caller writes.

using Lodestar.Gpu.Compute;

using var context = GpuContext.Create(preferCpu: true);

bool graphics = context.IsHardwareGpu;  // => False
bool named = context.DeviceName.Length > 0;  // => True

Members — one page each.

Member What it does
GpuContext.Create Opens the best available device, or the CPU accelerator
GpuContext.Dispose Frees the accelerator and then the context, in that order

Properties — Accelerator is the ILGPU accelerator kernels load onto. DeviceName is the device's own name, which a published figure has to carry. IsHardwareGpu says whether that device is real graphics hardware.

Remarks — one per process is the intended shape. Creating an accelerator is expensive and ILGPU compiles each kernel on first launch, so a context built per call measures a compiler rather than a kernel. That is also why every kernel type here takes a context and is built once.

IsHardwareGpu is not the same question as the accelerator's type, and the difference cost a whole benchmark run. An OpenCL runtime installed for a processor reports AcceleratorType.OpenCL and executes on the CPU; asked for a non-CPU device, ILGPU returned exactly that ahead of a CUDA card. A check on the type called it a GPU and the report carried a processor's figures under a graphics heading. This asks OpenCL for the device type instead.

Disposing releases the accelerator and then the context, in that order. Every Device* type built against a context must be disposed before it.

Applies to — net10.0, netstandard2.1.

See also — the namespace index, bench/README.md's GPU gate.