https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108098

            Bug ID: 108098
           Summary: OpenMP/nvptx reverse offload execution test FAILs
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Keywords: openmp
          Severity: normal
          Priority: P3
         Component: libgomp
          Assignee: unassigned at gcc dot gnu.org
          Reporter: tschwinge at gcc dot gnu.org
                CC: burnus at gcc dot gnu.org, jakub at gcc dot gnu.org,
                    vries at gcc dot gnu.org
  Target Milestone: ---

With commit r13-4593-gea4b23d9c82d9be3b982c3519fe5e8e9d833a6a8 "libgomp: Handle
OpenMP's reverse offloads", I'm seeing PASSes for a number of testing
configurations (see below), but regressions/FAILs on others:

    PASS: libgomp.c/../libgomp.c-c++-common/reverse-offload-1.c (test for
excess errors)
    [-PASS:-]{+FAIL:+} libgomp.c/../libgomp.c-c++-common/reverse-offload-1.c
execution test

    libgomp: cuCtxSynchronize error: unspecified launch failure (perhaps abort
was called)

Or:

    libgomp: cuCtxSynchronize error: an illegal instruction was encountered

Same for C++.

    PASS: libgomp.c/../libgomp.c-c++-common/reverse-offload-2.c (test for
excess errors)
    [-PASS:-]{+FAIL:+} libgomp.c/../libgomp.c-c++-common/reverse-offload-2.c
execution test

    libgomp: cuModuleGetFunction error: named symbol not found

Same for C++.

    PASS: libgomp.fortran/reverse-offload-1.f90   -O0  (test for excess errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/reverse-offload-1.f90   -O0  execution
test

    STOP 2

    libgomp: cuCtxSynchronize error: unspecified launch failure (perhaps abort
was called)

Or:

    libgomp: cuCtxSynchronize error: an illegal instruction was encountered

Same for other torture testing flags.

..., and for the new test cases:

    +PASS: libgomp.fortran/reverse-offload-2.f90   -O  (test for excess errors)
    +FAIL: libgomp.fortran/reverse-offload-2.f90   -O  execution test

    +PASS: libgomp.fortran/reverse-offload-3.f90   -O  (test for excess errors)
    +FAIL: libgomp.fortran/reverse-offload-3.f90   -O  execution test

    +PASS: libgomp.fortran/reverse-offload-4.f90   -O  (test for excess errors)
    +FAIL: libgomp.fortran/reverse-offload-4.f90   -O  execution test

    +PASS: libgomp.fortran/reverse-offload-5.f90   -O  (test for excess errors)
    +XFAIL: libgomp.fortran/reverse-offload-5.f90   -O  execution test

    +PASS: libgomp.fortran/reverse-offload-5a.f90   -O  (test for excess
errors)
    +FAIL: libgomp.fortran/reverse-offload-5a.f90   -O  execution test

These fail with different host-side or device-side STOP codes.

I haven't analyzed further.

That's with standard option on a system with:

    $ nvidia-smi
    [...]
    | NVIDIA-SMI 440.33.01    Driver Version: 440.33.01    CUDA Version: 10.2
    [...]
    |   0  Tesla K80  [...]
    [...]
    |   1  Tesla K80  [...]

... as well as (separately tested):

    |   2  GeForce GTX 1080  [...]

..., and with '-foffload-options=nvptx-none=-mptx=3.1' on a system with:

    $ nvidia-smi
    [...]
    | NVIDIA-SMI 361.93.02              Driver Version: 361.93.02
    [...]
    |   0  Tesla K20c  [...]

These test cases PASS on a system with:

    $ nvidia-smi
    [...]
    | NVIDIA-SMI 455.38       Driver Version: 455.38       CUDA Version: 11.1
    [...]
    |   0  Tesla K20c  [...]

... as well as (separately tested):

    |   1  Tesla K40c  [...]

..., and:

    $ nvidia-smi
    [...]
    | NVIDIA-SMI 455.23.05    Driver Version: 455.23.05    CUDA Version: 11.1
    [...]
    |   0  TITAN V  [...]

Is maybe CUDA 11 (or rather, corresponding Nvidia Driver version) a hard
requirement, and if yes, how to deal with that?

Reply via email to