Hi! Maybe I'm just totally confused -- as so often ;-) -- but things seem strange here:
On 2022-01-12T10:43:05+0100, Marcel Vollweiler <mar...@codesourcery.com> wrote: > Currently omp_get_device_num does not work on gcn targets with more than > one offload device. The reason is that GOMP_DEVICE_NUM_VAR I understand the 'GOMP_DEVICE_NUM_VAR' "macro indirection" is so that we define the actual symbol name ('__gomp_device_num') in one place ('libgomp/libgomp-plugin.h'), and then use it (via macro expansion) in several places, right? > is static in > icv-device.c and thus "__gomp_device_num" is not visible in the offload > image. That behavior seems correct -- but undesired indeed? > This patch removes "static" such that "__gomp_device_num" is now part of > the offload image and can now be found in GOMP_OFFLOAD_load_image in the > plugin. That seems correct? Or, is there a reason to have it 'static', say, so that several such local variables can co-exist, instead of just one global one? > This is not an issue for nvptx. There, "__gomp_device_num" is in the > offload image even with "static". That's unexpected then, and should be looked into? Still, should 'static' be removed here, too? Grüße Thomas > The patch was tested on x86_64-linux with amdgcn offloading with no > regressions. > libgomp, OpenMP: Fix issue for omp_get_device_num on gcn targets. > > Currently omp_get_device_num does not work on gcn targets with more than one > offload device. The reason is that GOMP_DEVICE_NUM_VAR is static in > icv-device.c and thus "__gomp_device_num" is not visible in the offload image. > > This patch removes "static" such that "__gomp_device_num" is now part of the > offload image and can now be found in GOMP_OFFLOAD_load_image in the plugin. > > This is not an issue for nvptx. There, "__gomp_device_num" is in the offload > image even with "static". > > libgomp/ChangeLog: > > * config/gcn/icv-device.c: Make GOMP_DEVICE_NUM_VAR public (remove > "static") to make the device num available in the offload image. > > diff --git a/libgomp/config/gcn/icv-device.c b/libgomp/config/gcn/icv-device.c > index fcfa0f3..f70b7e6 100644 > --- a/libgomp/config/gcn/icv-device.c > +++ b/libgomp/config/gcn/icv-device.c > @@ -60,7 +60,7 @@ omp_is_initial_device (void) > > /* This is set to the device number of current GPU during device > initialization, > when the offload image containing this libgomp portion is loaded. */ > -static volatile int GOMP_DEVICE_NUM_VAR; > +volatile int GOMP_DEVICE_NUM_VAR; > > int > omp_get_device_num (void) ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955