CCE 20.0.2
94 observed issues; 2 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 (35)
- ftn (OpenACC): some of 200 integer(8) sum reductions on one parallel loop are wrong Open · regression
- 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 distribute in a target region loses the final value, even with an explicit map Open
- Lastprivate on target teams distribute parallel do simd collapse(2) with num_threads gives a varying wrong value Open
- Lastprivate on target teams distribute parallel for does not imply map(tofrom), value lost Open
- Schedule(static, 4) and schedule(static) on a parallel do in a target region deal iterations out one at a time Open
- craycc: dist_schedule(static, 4) on target teams distribute parallel for puts every iteration on team 0 Open
- craycc: map(delete:) on target exit data acts as release for an array entered twice (still present) Open
- craycc: parallel for schedule(static) in a target region runs 1 of 64 iterations Open
- craycc: sections in a target parallel region is accepted without a message and gives a wrong result Open
- ftn -h acc: a loop seq construct inside a routine seq procedure gives wrong sums Open
- ftn -h acc: a module scalar in declare create is treated as firstprivate in a serial region (write lost) Open
- ftn: lastprivate on a parallel do in a target region gives a wrong final value when the variable is firstprivate in the target region (not mapped) Open
- A lastprivate item smaller than 8 bytes on target teams distribute parallel for comes back as 0 or a garbage value Open
- Lastprivate on target teams distribute parallel for accepted silently, value lost Open
- SELECT TYPE in a device procedure takes the CLASS DEFAULT branch for mapped objects Open
- Two host threads mapping disjoint halves of an allocatable array lose one half Open
- a component of an array element mapped tofrom does not come back with separate memory Open · regression
- ftn at -O2: a target region's write to a VALUE dummy, firstprivate there, becomes visible to the host Open
- ftn: lastprivate(conditional:) on target simd does not imply map(tofrom), value lost Open
- ftn: target update from(b(lo:hi)) inside a host parallel region moves no data in copy mode (HSA_XNACK=0) Open
- target update of a strided array section (C) copies the contiguous range instead of every second element Open
- A Fortran character scalar referenced in a target region is treated as a firstprivate scalar (writes lost) Fixed in 21.0.3
- A reduction on target teams distribute parallel do with num_teams(65536) gives a wrong sum (8192 teams is correct) Fixed in 21.0.3
- map(to: x) with map(tofrom: x%a) loses the component's copy back Open
- the second of two member sections of a structure is not copied back Open
- use_device_ptr does not convert a C_PTR list item: the region sees the host address Open
- A minimized program with defaultmap and teams distribute computes checksum 0 on the device (fuzz seed 85) Mixed evidence
- ftn: a target construct with in_reduction in an internal subroutine loses the writes to an implicitly mapped dummy array 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 · regression
- 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) Fixed in 21.0.3
- ftn in copy mode: the map list item after a map clause with a mapper modifier is not copied back Fixed in 21.0.3
Crashes, hangs and errors at run time (18)
- craycc: every map with the present (or close) modifier aborts in the runtime: Assertion `clang_flags == 0' failed Open
- ftn -h acc: !$acc init and !$acc set default_async abort in the runtime ("Incorrect device type set") Open
- ftn: ALLOCATE/DEALLOCATE of a local allocatable in device code aborts (SIGABRT), OpenMP and OpenACC Open
- ftn: an IF statement guarding STOP in device code: the STOP runs although its condition is false (target loop), or an internal compiler error (directly in a target region) Open
- ftn: map(present, tofrom: xc) of an allocatable character array mapped by the enclosing target data stops with "Variable not found in present table" Open
- CCE: "unsupported flags for typed transfer" for a nested allocatable scalar component Open
- mapping the allocatable component of an array element aborts as a partial overlap Open
- craycc: dist_schedule(static) on target teams distribute parallel for crashes (SIGSEGV) at HSA_XNACK=1 Open
- ftn (OpenACC): a module allocatable in declare create faults at HSA_XNACK=1 Open
- ftn 19 and 20: target teams distribute with map(mapper(...)) of a use-associated declare mapper aborts (SIGABRT) Fixed in 21.0.3
- CCE: nested allocatable component faults in copy mode Changed in 21.0.3
- ftn: target teams with reduction(max) reading an allocatable component of an implicitly mapped structure ends in an illegal memory access Changed in 21.0.3
- deallocating a finalizable object in device code aborts Open
- mapping a section of an allocatable component faults on the GPU with separate memory Open
- craycc -flto: the offload code is dropped; the program fails under OMP_TARGET_OFFLOAD=mandatory Open
- CCE: update to of a pointer root with an allocatable scalar component fails Open
- craycc stops with "overlaps present region but is not contained" when a target region implicitly maps a partly mapped structure Open
- ftn: a list-directed PRINT in a target region aborts the run in copy mode Fixed in 21.0.3
Compiler crashes and hangs (20)
- Linear(x: for, step(2)) sends the front end into an endless loop after "too many errors" Open
- ftn 20: the device link crashes in "Infer address spaces" (an MFC kernel, reduced) Fixed in 21.0.3 · regression
- 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
- ftn -h acc: internal compiler error "Object DEV_VAL is host associated to itself" for routine bind between two module procedures Open
- ftn: internal compiler error "ACC - barrier/reset/protected last private not supported" for linear and lastprivate on a loop in a target region Open
- ftn: internal compiler error "Should never reach this code (doehmke)" for in_reduction on target reading a character substring Open
- ftn: internal compiler error "Too few arguments on the stack" for uses_allocators with an allocate clause in a target region Open
- ftn: internal compiler error (optcg signal 11) for a character scalar in target enter data / exit data Open
- "'omp.target' op SPMD kernel must capture an 'omp.loop_nest' operation" for lastprivate(conditional:) on target parallel do Open
- CCE: compiler crash on nested pointee sections in one target construct Open
- ftn -h acc: internal compiler error "Bad cast from fcd" for a CHARACTER(len=*) dummy of a routine seq procedure Open
- ftn: internal compiler error "Couldn't find an atomic update statement" for an atomic update whose factor folds to a constant Open
- ftn: internal compiler error "Error getting dope vector information" mapping a component section of a structure dummy Open
- ftn: internal compiler error "Unexpected schedule" for distribute parallel do schedule(dynamic) dist_schedule(static, 16) Open
- ftn: internal compiler error "Unhandled contexts must be fixed!!!" for teams distribute simd with lastprivate, private and nontemporal Open
- ftn: internal compiler error ("Could not find call") when a target parallel region assigns omp_get_num_threads() or omp_get_thread_num() Open
- ftn: internal compiler error on reduction(inscan) with a scan directive Fixed in 21.0.3
- craycc: compiler crash on a recursive function called in a target region Fixed in 21.0.3
- craycc: internal compiler error on long double arithmetic in a target loop 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 (21)
- 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
- craycc -fopenmp-version=45: omp_is_initial_device called in a target region is an undefined symbol at the device link Open
- ftn/craycc: reduction(task, +: s) on a worksharing loop in a target region fails at the device link (taskred_modifier_init undefined) Open
- ftn: C_F_POINTER called in a target region fails at the device link (_C_F_POINTER undefined) Open
- ftn: OpenMP 5.0 form uses_allocators(my_alloc(my_traits)) rejected as a function reference (ftn-451) Open
- ftn: a common block name in a map clause is rejected (ftn-534) Open
- ftn: firstprivate(i) on a parallel do nested in a teams distribute loop over i rejected under default(none) (ftn-1510) Open
- ftn: target update from(iterator(k = 1:1): b(k:n)) fails at the host link (OmpIt$k undefined) Open
- ftn: target update to(a(1:n:2)) rejected (ftn-1747, stride must not be greater than 1) Open
- AFAR and CCE: member of a function result in a target region rejected Open
- a CLASS IS guard of SELECT TYPE in device code fails at the link Open
- craycc: allocate(allocator(...), align(8): t) in a target region fails at the device link (__kmpc_aligned_alloc undefined) Open
- declare reduction on a derived type cannot be used in a target region Open
- ftn rejects a module's named-constant array referenced in a declare target routine Open
- target update with a structure and a member array in one clause rejected Open
- craycc rejects defaultmap(private) (OpenMP 6.0) Fixed in 21.0.3
- ftn rejects the enter clause of declare target (the OpenMP 5.2 name of the to clause) Fixed in 21.0.3
- dynamic dispatch of a type-bound procedure in device code fails at the link Open
- a derived type with a length type parameter cannot be mapped Open
- ftn 20 rejects the self map-type modifier (OpenMP 6.0) Changed in 21.0.3
Fixed or changed in this version
- An array mapped always, from next to defaultmap(firstprivate: aggregate) is not copied back (fuzz seed 1978) Fixed in 20.0.2
- An array mapped tofrom next to defaultmap(firstprivate: aggregate) is not copied back (fuzz seed 98) Fixed in 20.0.2
- craycc 19: with 63 or more int64 sum reductions on target teams distribute parallel for, one is wrong Fixed in 20.0.2
- ftn 19 (OpenACC): a two-dimensional automatic array in copyout crashes the run in copy mode Fixed in 20.0.2
- ftn 19 does not finish compiling target regions with map(always, tofrom:) of a structure component and a depend on a declare target array Fixed in 20.0.2
- craycc rejects the allocator modifier of the allocate clause Fixed in 20.0.2
- ftn 19: internal compiler error (invalid addrspacecast) on reduction(task) Changed in 20.0.2