]> git.ipfire.org Git - thirdparty/gcc.git/commit
libgomp: Enable USM for some nvptx devices
authorTobias Burnus <tburnus@baylibre.com>
Wed, 29 May 2024 13:14:38 +0000 (15:14 +0200)
committerTobias Burnus <tburnus@baylibre.com>
Wed, 29 May 2024 13:14:38 +0000 (15:14 +0200)
commit4ccb3366ade6ec9493f8ca20ab73b0da4b9816db
treea4f4a29116032e83903cb2352021873e7f5bfb2a
parent19c491d1848a8410559247183597096778967edf
libgomp: Enable USM for some nvptx devices

A few high-end nvptx devices support the attribute
CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS; for those, unified shared
memory is supported in hardware. This patch enables support for those -
if all installed nvptx devices have this feature (as the capabilities
are per device type).

This exposes a bug in gomp_copy_back_icvs as it did before use
omp_get_mapped_ptr to find mapped variables, but that returns
the unchanged pointer in cased of shared memory. But in this case,
we have a few actually mapped pointers - like the ICV variables.
Additionally, there was a mismatch with regards to '-1' for the
device number as gomp_copy_back_icvs and omp_get_mapped_ptr count
differently. Hence, do the lookup manually.

include/ChangeLog:

* cuda/cuda.h (CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS): Add.

libgomp/ChangeLog:

* libgomp.texi (nvptx): Update USM description.
* plugin/plugin-nvptx.c (GOMP_OFFLOAD_get_num_devices):
Claim support when requesting USM and all devices support
CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS.
* target.c (gomp_copy_back_icvs): Fix device ptr lookup.
(gomp_target_init): Set GOMP_OFFLOAD_CAP_SHARED_MEM is the
devices supports USM.
include/cuda/cuda.h
libgomp/libgomp.texi
libgomp/plugin/plugin-nvptx.c
libgomp/target.c