Minor remark to the test: On 11.03.22 13:30, Marcel Vollweiler wrote:
+ int d = omp_get_default_device ();
...
+ int shared_mem = 0; + #pragma omp target map (alloc: shared_mem) device (d) + shared_mem = 1; + if (omp_target_is_accessible (p, sizeof (int), d) != shared_mem) + __builtin_abort ();
I wonder whether it makes sense to do instead for (d = 0; d <= omp_get_num_devices(); ++d) instead of just d = omp_get_default_device(); given that we have already found once in a while bugs when testing more than just the default device - be it because devices differed or because '0' was special. In particular, I could image having at the same time two or three devices available of type intelmic + gcn + nvptx, possibly mixing shared memory, nonshared memory and semi-shared memory* Tobias (* semi-shared: I am especially thinking of nvptx with %dynamic_smem_size, which requires some special handling. By contrast with HMM and Pascal GPUs, real USM is possible.) ----------------- 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