AFAR 24.3.0
59 observed issues; 0 regressions from the previous version, marked below. Most serious first: wrong results, then issues whose legality is settled, then regressions, then how widely an issue fails.
Wrong answers (26)
- A Fortran character scalar referenced in a target region is treated as a firstprivate scalar (writes lost) Open
- A declare target variable listed in shared on target teams loop is read with its host value Open
- A firstprivate scalar allocated with omp_const_mem_alloc has the wrong value on the device Open
- A sequential DO loop executed by one thread of a target parallel region runs only some of its iterations (-O2) Open
- An array private to target teams distribute and shared by a nested parallel do loses the parallel region's writes Open
- Lastprivate on target teams distribute parallel for does not imply map(tofrom), value lost Open
- Scalar with the TARGET attribute is treated as firstprivate in a target region (device write lost) Open
- Schedule(static, 4) and schedule(static) on a parallel do in a target region deal iterations out one at a time Open
- amdflang: an unnamed critical in a target parallel do does not exclude other threads (lost updates) Open
- amdflang: dist_schedule(static, 4) is not applied: 64 iterations over 4 teams go to teams 0 and 1 in two blocks of 32 Open
- amdflang: ordered regions in a parallel do in a target region do not run in iteration order Open
- A lastprivate item smaller than 8 bytes on target teams distribute parallel for comes back as 0 or a garbage value Open
- Scalar with the TARGET attribute is treated as firstprivate in a target region (device write lost) Open
- amdclang at HSA_XNACK=0: target update with an iterator modifier moves no data Open
- amdclang keeps only the first team's partial result of a reduction on target teams distribute Open
- amdflang: a parallel region with firstprivate nested in a distribute loop loses the writes of its worksharing loop Open
- amdflang: target update from a strided array section copies the whole array Open
- amdflang: teams reduction(iand: r) with firstprivate and an empty body sets r to 0 Open
- Two host threads mapping disjoint halves of an allocatable array lose one half Open
- amdflang: loop reduction inside parallel if(.false.) in a target region counts the contribution more than once Open
- AFAR offload runtime at HSA_XNACK=1: omp_target_is_present returns false after target enter data, and map(present) of an absent item does not terminate Open
- Map(present, ...) of an absent variable is accepted and ignored (no error termination) Open
- target update of a strided array section (C) copies the contiguous range instead of every second element Open
- use_device_ptr does not convert a C_PTR list item: the region sees the host address Open
- With a defaultmap clause on target, an explicitly mapped map(tofrom) scalar is not copied back, and with defaultmap(tofrom) an array in map(alloc) or map(to) is copied back Open
- amdclang on MI300A: free() in a kernel appears not to release the stores to the block before it can be reused, so records written through malloc'd temporaries come out wrong (HSA_XNACK=1) Open
Crashes, hangs and errors at run time (7)
- An absent OPTIONAL dummy array referenced with PRESENT() in a target region crashes the run Open
- amdflang: an empty target nowait with depend(inout:) on a derived-type variable with an allocatable component crashes (SIGSEGV) Open
- AFAR: pointer-root derived type with allocatable component faults in copy mode Open
- AFAR offload runtime at HSA_XNACK=1: map(close, ...) breaks presence lookup and device access (abort, memory fault) Open
- amdflang at HSA_XNACK=1: a parallel region with a reduction (or atomic) nested in a distribute loop of a reducing teams region aborts Open
- amdflang at HSA_XNACK=1: atomic min in a parallel do nested in target teams distribute with an allocatable array faults (write to a read-only page) Open
- AFAR at HSA_XNACK=0: defaultmap(present: aggregate) checks the presence of an array that is private on the same construct and aborts Open
Compiler crashes and hangs (9)
- Linear(x: for, step(2)) sends the front end into an endless loop after "too many errors" Open
- amdclang -fopenmp-version=60: compile does not finish on #pragma omp requires device_safesync Open
- Constructs documented as unsupported in offload regions (single, masked, task, ordered, scan) give internal compiler errors or device link failures instead of a diagnostic Open
- amdflang -fopenmp-version=60: compiler crash in MapInfoOp for target teams workdistribute Open
- amdflang: "Call parameter type does not match function signature!" for sections, and for reduction(task), in a target region Open
- amdflang: "verification of lowering to FIR failed" for nontemporal on an assumed-shape dummy Open
- amdflang: compiler crash in OpenMPIRBuilder::createParallel for linear on a parallel do in a target region Open
- "'omp.target' op SPMD kernel must capture an 'omp.loop_nest' operation" for lastprivate(conditional:) on target parallel do Open
- OpenMP 5.1/5.2/6.0 forms HPE does not claim are rejected, and some crash the compiler instead of a diagnostic Open
Legal code refused at compile or link time (17)
- Declare target to(f) rejected ("unexpected 'to' clause, use 'enter' instead") Open
- Defaultmap(none) rejected although every referenced variable has a data-environment attribute (ftn-1964) Open
- amdclang: ordered(1) on a parallel for in a target region fails at the device link (__kmpc_doacross_init undefined) Open
- amdclang: reduction(task, +: s) on a worksharing loop in a target region fails at the device link (__kmpc_taskred_modifier_init undefined) Open
- amdflang/amdclang: a named critical (Fortran) or a critical with hint (C) in a target region fails at the device link (__kmpc_critical_with_hint undefined) Open
- amdflang: firstprivate(p1) on one target and map(to: p1) on a later target rejected as if on the same construct Open
- amdflang: reduction on loop bind(teams) nested in a target teams region rejected Open
- amdflang: task_reduction(max: r) / in_reduction(max: r) rejected ("Internal: no symbol found for 'max'") Open
- amdflang: the deprecated - reduction identifier in task_reduction/in_reduction is rejected as not supported Open
- amdflang: thread_limit on target parallel do rejected Open
- AFAR and CCE: member of a function result in a target region rejected Open
- length type parameters of derived types are not implemented in offload code Open
- target update with a structure and a member array in one clause rejected Open
- amdflang: declare reduction on a derived type used in a target loop fails at the device link (flang runtime symbols undefined) Open
- deallocating a finalizable object in device code fails at the link Open
- amdclang -fopenmp-version=60: error at(compilation) severity(warning) in a target region fails at the device link (__kmpc_error undefined) Open
- amdflang: loop bind(thread) closely nested in teams rejected ("BIND(TEAMS) must be specified") Open
Fixed or changed in this version
None.