Hi!

On 2026-07-01T16:55:21+0200, I wrote:
> On 2026-07-01T16:30:41+0200, I wrote:
>> On 2026-06-26T09:42:43-0700, Gio T <[email protected]> wrote:
>>> This patch refactors 'hashtab.h' from a prime-sized double-hash
>>> map to a power of two sized Robin Hood hashing regime. [...]
>>
>>
>>> The data structure was microbenchmarked [...]
>>
>> Curious what the effects on real-world code (benchmarks) is going to be?
>>
>>
>>> Built/tested x86_64-pc-linux-gnu.
>>
>> I've not reviewd your patch, but at least put it into my usual testing
>> trees, and
>
> I see libgomp test suite regressions as follows, testing on a system with
> NVIDIA GPU (didn't test AMD GPU code offloading, so far):
>
>     PASS: libgomp.c/../libgomp.c-c++-common/declare-target-indirect-1.c (test 
> for excess errors)
>     [-PASS:-]{+FAIL:+} 
> libgomp.c/../libgomp.c-c++-common/declare-target-indirect-1.c execution test
>
>     PASS: libgomp.c/../libgomp.c-c++-common/declare-target-indirect-2.c (test 
> for excess errors)
>     [-PASS:-]{+FAIL:+} 
> libgomp.c/../libgomp.c-c++-common/declare-target-indirect-2.c execution test
>
>     PASS: libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-1.c 
> (test for excess errors)
>     [-PASS:-]{+FAIL:+} 
> libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-1.c execution test
>
>     PASS: libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-2.c 
> (test for excess errors)
>     [-PASS:-]{+FAIL:+} 
> libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-2.c execution test
>
>     PASS: libgomp.fortran/declare-target-indirect-1.f90   -O0  (test for 
> excess errors)
>     [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90   -O0  
> execution test
>     PASS: libgomp.fortran/declare-target-indirect-1.f90   -O1  (test for 
> excess errors)
>     PASS: libgomp.fortran/declare-target-indirect-1.f90   -O1  execution test
>     PASS: libgomp.fortran/declare-target-indirect-1.f90   -O2  (test for 
> excess errors)
>     [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90   -O2  
> execution test
>     PASS: libgomp.fortran/declare-target-indirect-1.f90   -O3 
> -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions  
> (test for excess errors)
>     [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90   -O3 
> -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions  
> execution test
>     PASS: libgomp.fortran/declare-target-indirect-1.f90   -O3 -g  (test for 
> excess errors)
>     [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90   -O3 -g 
>  execution test
>     PASS: libgomp.fortran/declare-target-indirect-1.f90   -Os  (test for 
> excess errors)
>     PASS: libgomp.fortran/declare-target-indirect-1.f90   -Os  execution test
>
>     PASS: libgomp.fortran/declare-target-indirect-2.f90   -O0  (test for 
> excess errors)
>     [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90   -O0  
> execution test
>     PASS: libgomp.fortran/declare-target-indirect-2.f90   -O1  (test for 
> excess errors)
>     PASS: libgomp.fortran/declare-target-indirect-2.f90   -O1  execution test
>     PASS: libgomp.fortran/declare-target-indirect-2.f90   -O2  (test for 
> excess errors)
>     [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90   -O2  
> execution test
>     PASS: libgomp.fortran/declare-target-indirect-2.f90   -O3 
> -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions  
> (test for excess errors)
>     [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90   -O3 
> -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions  
> execution test
>     PASS: libgomp.fortran/declare-target-indirect-2.f90   -O3 -g  (test for 
> excess errors)
>     [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90   -O3 -g 
>  execution test
>     PASS: libgomp.fortran/declare-target-indirect-2.f90   -Os  (test for 
> excess errors)
>     PASS: libgomp.fortran/declare-target-indirect-2.f90   -Os  execution test
>
> These are:
>
>     libgomp: cuCtxSynchronize error: an illegal memory access was encountered

Similar, plus a few more libgomp test suite regressions on a system with
AMD GPU:

    PASS: libgomp.c/../libgomp.c-c++-common/declare-target-indirect-1.c (test 
for excess errors)
    [-PASS:-]{+FAIL:+} 
libgomp.c/../libgomp.c-c++-common/declare-target-indirect-1.c execution test
    
    PASS: libgomp.c/../libgomp.c-c++-common/declare-target-indirect-2.c (test 
for excess errors)
    [-PASS:-]{+FAIL:+} 
libgomp.c/../libgomp.c-c++-common/declare-target-indirect-2.c execution test
    
    PASS: libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-1.c (test 
for excess errors)
    [-PASS:-]{+FAIL:+} 
libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-1.c execution test
    
    PASS: libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-2.c (test 
for excess errors)
    [-PASS:-]{+FAIL:+} 
libgomp.c++/../libgomp.c-c++-common/declare-target-indirect-2.c execution test
    
    PASS: libgomp.fortran/declare-target-indirect-1.f90   -O0  (test for excess 
errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90   -O0  
execution test
    PASS: libgomp.fortran/declare-target-indirect-1.f90   -O1  (test for excess 
errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90   -O1  
execution test
    PASS: libgomp.fortran/declare-target-indirect-1.f90   -O2  (test for excess 
errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90   -O2  
execution test
    PASS: libgomp.fortran/declare-target-indirect-1.f90   -O3 
-fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions  
(test for excess errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90   -O3 
-fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions  
execution test
    PASS: libgomp.fortran/declare-target-indirect-1.f90   -O3 -g  (test for 
excess errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90   -O3 -g  
execution test
    PASS: libgomp.fortran/declare-target-indirect-1.f90   -Os  (test for excess 
errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-1.f90   -Os  
execution test
    
    PASS: libgomp.fortran/declare-target-indirect-2.f90   -O0  (test for excess 
errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90   -O0  
execution test
    PASS: libgomp.fortran/declare-target-indirect-2.f90   -O1  (test for excess 
errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90   -O1  
execution test
    PASS: libgomp.fortran/declare-target-indirect-2.f90   -O2  (test for excess 
errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90   -O2  
execution test
    PASS: libgomp.fortran/declare-target-indirect-2.f90   -O3 
-fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions  
(test for excess errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90   -O3 
-fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions  
execution test
    PASS: libgomp.fortran/declare-target-indirect-2.f90   -O3 -g  (test for 
excess errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90   -O3 -g  
execution test
    PASS: libgomp.fortran/declare-target-indirect-2.f90   -Os  (test for excess 
errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-2.f90   -Os  
execution test
    
    PASS: libgomp.fortran/declare-target-indirect-3.f90   -O0  (test for excess 
errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-3.f90   -O0  
execution test
    PASS: libgomp.fortran/declare-target-indirect-3.f90   -O1  (test for excess 
errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-3.f90   -O1  
execution test
    PASS: libgomp.fortran/declare-target-indirect-3.f90   -O2  (test for excess 
errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-3.f90   -O2  
execution test
    PASS: libgomp.fortran/declare-target-indirect-3.f90   -O3 
-fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions  
(test for excess errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-3.f90   -O3 
-fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions  
execution test
    PASS: libgomp.fortran/declare-target-indirect-3.f90   -O3 -g  (test for 
excess errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-3.f90   -O3 -g  
execution test
    PASS: libgomp.fortran/declare-target-indirect-3.f90   -Os  (test for excess 
errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-3.f90   -Os  
execution test
    
    PASS: libgomp.fortran/declare-target-indirect-4.f90   -O  (test for excess 
errors)
    [-PASS:-]{+FAIL:+} libgomp.fortran/declare-target-indirect-4.f90   -O  
execution test
    PASS: libgomp.fortran/declare-target-indirect-4.f90   -O   scan-tree-dump 
gimple "#pragma omp parallel shared\\(i\\) if\\(0\\) default\\(none\\) 
firstprivate\\(g\\)"
    PASS: libgomp.fortran/declare-target-indirect-4.f90   -O   scan-tree-dump 
gimple "#pragma omp target num_teams\\(-2\\) thread_limit\\(0\\) 
firstprivate\\(h\\) map\\(from:j \\[len: 4\\]\\) defaultmap\\(none\\)"

These are:

    Memory access fault by GPU node-2 (Agent handle: 0x224bfaf0) on address 
0x401000. Reason: Page not present or supervisor privilege.


Grüße
 Thomas


> Grüße
>  Thomas
>
>
>> see the build fail for 32-bit (x86_64 with '-m32'):
>>
>>     In file included from ../../../source-gcc/libgomp/task.c:49:
>>     ../../../source-gcc/libgomp/hashtab.h: In function ‘rup2’:
>>     ../../../source-gcc/libgomp/hashtab.h:136:17: error: right shift count 
>> >= width of type [-Werror=shift-count-overflow]
>>       136 |     num |= (num >> 32);
>>           |                 ^~
>>
>>     In file included from ../../../source-gcc/libgomp/target.c:61:
>>     [same]
>>
>>
>> Grüße
>>  Thomas

Reply via email to