I just tried oneAPI, came across two compiler bugs and thought I might report those. But where?
"Request support" in the support center is the wrong place to go, as I do not seek any support. Nevertheless I tried, but as I do not have any support contract, the two tickets I opened were immediately closed.
Is intel interested in bug reports at all? And if yes, how should bugs be reported?
I've tried reporting this through an active support contract but having to go through our IT department may lose something in translation. Here are the details and a working demonstrator:
Hello, I've just encountered this problem in a Fortran+OpenMP program:
laptop3:~> cat t.f90
INTEGER,PARAMETER :: N=10,M=20
INTEGER :: i
REAL,ALLOCATABLE :: r(:)
END TYPE pwdat_type
TYPE(pwdat_type) :: p(N)
REAL :: x(M)
ENDDO ! i
!$OMP PARALLEL WORKSHARE DEFAULT(none) SHARED(x,p)
!$OMP END PARALLEL WORKSHARE
END PROGRAM t
laptop3:~> ifort --version
ifort (IFORT) 2021.9.0 20230302
Copyright (C) 1985-2023 Intel Corporation. All rights reserved.
laptop3:~> ifort -O0 -check bounds -qopenmp t.f90
At least one variable in the private list was not emitted
beblk_t OMP (0x7f5778613c10)
(* emitted *) "t_$P$1_V$3f"
(* emitted *) "t_$X_V$3e"
t.f90(16): catastrophic error: **Internal compiler error: internal abort** Please report this error along with the circumstances in which it occurred in a Software Problem Report. Note: File and line given may not be explicit cause of this error.
compilation aborted for t.f90 (code 1)
I think this is more of an dpc++ library bug.
dpc++ allows you to create multiple queues on a device.
dpc++ allows you to use depends_on(event1,event2,...) to synchronize execution.
dpc++ accepts events returned from different queues in the depends_on statement, however it appears that depends_on fails to work correctly if the current queue context is not the same as the queue returning the event.
I'll provide example code modified from the dpc++ book to use multiple queues. With event.wait() it works as expected. Attempting to use the commented out depends_on(event) statements fails to execute the kernels.
Sorry, I found there was a more appropriate place for this in the dpc++ forum. Please ignore this.