amd / amd-fftw

FFTW code optimized for AMD based processors
GNU General Public License v2.0
48 stars 12 forks source link

Single precision build failing 'make check' #9

Closed josh-willis closed 2 years ago

josh-willis commented 2 years ago

Hi,

I've been attempting to compile release 3.1 on an AMD EPYC 7763, with gcc 9.4.0. The configure line I've been using is:

$AMD_FFTW_SRC/configure --prefix=$AMD_PREFIX --enable-shared --enable-float --enable-sse2 --enable-avx --enable-avx2 --enable-openmp --enable-amd-opt --enable-amd-fast-planner --enable-amd-app-opt

which seems to run fine, as does make in the build directory.

But when I run make check, I get errors like the following:

make[1]: Entering directory `/tmp/build-fftw/amd/fast_planner/single/tests'
make  check-local
make[2]: Entering directory `/tmp/build-fftw/amd/fast_planner/single/tests'
perl -w /tmp/amd/fftw/3.1/amd-fftw-3.1/tests/check.pl  -r -c=30 -v `pwd`/bench
Executing "/tmp/build-fftw/amd/fast_planner/single/tests/bench --verbose=1   --verify 'okd60e10v86' --verify 'ikd60e10v86' --verify 'obr
d12v174' --verify 'ibrd12v174' --verify 'ofrd12v174' --verify 'ifrd12v174' --verify '//obcd12v174' --verify '//ibcd12v174' --verify '//o
fcd12v174' --verify '//ifcd12v174' --verify 'obcd12v174' --verify 'ibcd12v174' --verify 'ofcd12v174' --verify 'ifcd12v174' --verify 'ok1
08o11*92' --verify 'ik108o11*92' --verify '//obrd6x13x6x4' --verify '//ofrd6x13x6x4' --verify 'obrd6x13x6x4' --verify 'ibrd6x13x6x4' --v
erify 'ofrd6x13x6x4' --verify 'ifrd6x13x6x4' --verify '//obcd6x13x6x4' --verify '//ibcd6x13x6x4' --verify '//ofcd6x13x6x4' --verify '//i
fcd6x13x6x4' --verify 'obcd6x13x6x4' --verify 'ibcd6x13x6x4' --verify 'ofcd6x13x6x4' --verify 'ifcd6x13x6x4' --verify 'okd11o00x2o00x5o1
0*2' --verify 'ikd11o00x2o00x5o10*2' --verify 'obr8x7x11x3*7' --verify 'ibr8x7x11x3*7' --verify 'ofr8x7x11x3*7' --verify 'ifr8x7x11x3*7'
 --verify '//obc8x7x11x3*7' --verify '//ibc8x7x11x3*7' --verify '//ofc8x7x11x3*7' --verify '//ifc8x7x11x3*7' --verify 'obc8x7x11x3*7' --
verify 'ibc8x7x11x3*7' --verify 'ofc8x7x11x3*7' --verify 'ifc8x7x11x3*7'"
apiplan: UNSUPPORTED problem type/kind [2]
No can_do for okd60e10v86
bench: /tmp/amd/fftw/3.1/amd-fftw-3.1/libbench2/verify.c:51: assertion failed: 0
FAILED /tmp/build-fftw/amd/fast_planner/single/tests/bench:  --verify 'okd60e10v86' --verify 'ikd60e10v86' --verify 'obrd12v174' --verif
y 'ibrd12v174' --verify 'ofrd12v174' --verify 'ifrd12v174' --verify '//obcd12v174' --verify '//ibcd12v174' --verify '//ofcd12v174' --ver
ify '//ifcd12v174' --verify 'obcd12v174' --verify 'ibcd12v174' --verify 'ofcd12v174' --verify 'ifcd12v174' --verify 'ok108o11*92' --veri
fy 'ik108o11*92' --verify '//obrd6x13x6x4' --verify '//ofrd6x13x6x4' --verify 'obrd6x13x6x4' --verify 'ibrd6x13x6x4' --verify 'ofrd6x13x
6x4' --verify 'ifrd6x13x6x4' --verify '//obcd6x13x6x4' --verify '//ibcd6x13x6x4' --verify '//ofcd6x13x6x4' --verify '//ifcd6x13x6x4' --v
erify 'obcd6x13x6x4' --verify 'ibcd6x13x6x4' --verify 'ofcd6x13x6x4' --verify 'ifcd6x13x6x4' --verify 'okd11o00x2o00x5o10*2' --verify 'i
kd11o00x2o00x5o10*2' --verify 'obr8x7x11x3*7' --verify 'ibr8x7x11x3*7' --verify 'ofr8x7x11x3*7' --verify 'ifr8x7x11x3*7' --verify '//obc
8x7x11x3*7' --verify '//ibc8x7x11x3*7' --verify '//ofc8x7x11x3*7' --verify '//ifc8x7x11x3*7' --verify 'obc8x7x11x3*7' --verify 'ibc8x7x1
1x3*7' --verify 'ofc8x7x11x3*7' --verify 'ifc8x7x11x3*7'
make[2]: *** [check-local] Error 1
make[2]: Leaving directory `/tmp/build-fftw/amd/fast_planner/single/tests'
make[1]: *** [check-am] Error 2
make[1]: Leaving directory `/tmp/build-fftw/amd/fast_planner/single/tests'
make: *** [check-recursive] Error 1

Here it's failing on an r2r problem, which I would not have expected make check to have tried, given that --enable-amd-app-opt expressly does not support that. To work around this, I manually commented out this line in tests/check.pl (I don't think I should have had to do that!).

But now make check fails in a different way:

Making check in tests
make[1]: Entering directory `/tmp/build-fftw/amd/fast_planner/single/tests'
make  check-local
make[2]: Entering directory `/tmp/build-fftw/amd/fast_planner/single/tests'
perl -w /tmp/amd/fftw/3.1/amd-fftw-3.1/tests/check.pl  -r -c=30 -v `pwd`/bench
Executing "/tmp/build-fftw/amd/fast_planner/single/tests/bench --verbose=1   --verify 'ofcd3x12' --verify 'ifcd3x12' --verify '//obr9x8x
7' --verify '//ofr9x8x7' --verify 'obr9x8x7' --verify 'ibr9x8x7' --verify 'ofr9x8x7' --verify 'ifr9x8x7' --verify '//obc9x8x7' --verify 
'//ibc9x8x7' --verify '//ofc9x8x7' --verify '//ifc9x8x7' --verify 'obc9x8x7' --verify 'ibc9x8x7' --verify 'ofc9x8x7' --verify 'ifc9x8x7'
 --verify '//obr1680' --verify '//ibr1680' --verify '//ofr1680' --verify '//ifr1680' --verify 'obr1680' --verify 'ibr1680' --verify 'ofr
1680' --verify 'ifr1680' --verify '//obc1680' --verify '//ibc1680' --verify '//ofc1680' --verify '//ifc1680' --verify 'obc1680' --verify
 'ibc1680' --verify 'ofc1680' --verify 'ifc1680' --verify 'obr10x21*2' --verify 'ibr10x21*2' --verify 'ofr10x21*2' --verify 'ifr10x21*2'
 --verify '//obc10x21*2' --verify '//ibc10x21*2' --verify '//ofc10x21*2' --verify '//ifc10x21*2' --verify 'obc10x21*2' --verify 'ibc10x2
1*2' --verify 'ofc10x21*2' --verify 'ifc10x21*2'"
ofcd3x12 2.29443e-07 2.38419e-07 1.99951e-07
ifcd3x12 1.32676e-07 2.38419e-07 1.92132e-07
//obr9x8x7 1.97225e-07 3.3984e-07 2.25098e-07
//ofr9x8x7 2.03782e-07 3.3984e-07 1.89523e-07
obr9x8x7 1.93463e-07 4.248e-07 2.22474e-07
ibr9x8x7 1.73335e-07 3.3984e-07 2.25008e-07
ofr9x8x7 1.79529e-07 2.5488e-07 2.31433e-07
ifr9x8x7 1.8554e-07 2.5488e-07 1.96309e-07
//obc9x8x7 1.95973e-07 3.3984e-07 2.07795e-07
//ibc9x8x7 2.1938e-07 4.248e-07 1.9454e-07
//ofc9x8x7 2.18904e-07 4.248e-07 2.19664e-07
//ifc9x8x7 1.89425e-07 3.3984e-07 1.92071e-07
obc9x8x7 2.02438e-07 3.3984e-07 2.23317e-07
ibc9x8x7 1.81485e-07 3.3984e-07 2.04248e-07
ofc9x8x7 2.11242e-07 3.3984e-07 2.03609e-07
ifc9x8x7 2.54701e-07 4.248e-07 2.37408e-07
Found relative error 6.366191e-01 (impulse 1)
       0  20.493900299072   0.000000000000    20.493902206421   0.000000000000
       1 -13.046808242798   0.000000000000     0.000000000000   0.000000000000
       2  -0.000000057171   0.000000000000     0.000000000000   0.000000000000
<truncated>

This is quite concerning; a relative error of 64%. Do you know what might be happening here?

BiplabRaut commented 2 years ago

Hi Josh, I can see that you are making use of the configure option "--enable-amd-app-opt". This configure option is supported only for C2C, R2C, and C2R problem types in interleaved data format. So, when you want to run "make check" to verify the functionality, you need to disable the tests related to R2R and split array format. You have commented line number 249 in tests/check.pl file (this line). But you also need to comment lines 133 to 136 in test/check.pl (these lines) With this change in tests/checks.pl, you should be able to successfully run "make check".

By the way. can you share details about the application for which you are using amd-fftw?

For your information, the configure option "--enable-amd-app-opt" is specifically targeted towards "HPC/scientific applications" like Quantum Espresso and VASP.

Thank you.