Suggestion: abstraction for integrated GPUs?

bremez
Mon, 15 Jul 2024 16:46:22 +0000
GPU

I have had the following thought: many people do not have regular access to HPC or high-end GPUs (where Nvidia seems most popular), and/or prioritize the benefit of interactive sessions on their personal laptops and low end machines. The latter may or may not have a discrete GPU, but is almost guaranteed[1] to have an integrated GPU (so typically Intel/AMD/Apple silicon). I suppose in principle these integrated GPU can already present significant performance uplift for certain workloads. The near-ubiquity of integrated GPUs might also mean that package developers can assume the availability of and advantage of this resource in a way transparent to the end-user.

Would it be worthwhile to have have functionality that abstracts the local integrated GPU? As a minimal functionality, something like GPUArrays.IntegratedGPUArray(...) that inspects the local machine and returns the appropriate array type from oneAPI/Metal/ROCm? (some other methods like an abstracted synchronize() etc would also need to be exposed). Then dispatch on generically written code would do the rest.

[1] I’m not sure which CPU-attached resources are presented to a job running on a managed cluster.

8 posts - 5 participants