Closed jacobmogic closed 7 years ago
Thank you, I will have a look. Dne 28. 5. 2016 9:08 napsal uživatel "Praxist" notifications@github.com:
Compiled the library using
scons comp=intel openmp=yes
then the tests
scons comp=intel openmp=yes test
And these tests failed
$ ./c_testpoisson FAIL, residuum 2.815387
$ ./cc_testpoisson FAIL, residuum2.81539
$ ./testpoisson
3D |Dirichlet regular|Dirichlet regular|Dirichlet regular|Dirichlet regular|Dirichlet regular|Dirichlet regular| Spectral FAIL Spectral residuum: 0.141491213006055 FD2 FAIL Finite difference 2 residuum: 1.92554165807776
3D |Dirichlet staggered|Dirichlet staggered|Dirichlet staggered|Dirichlet staggered|Dirichlet staggered|Dirichlet staggered| Spectral FAIL Spectral residuum: 0.132820078333749 FD2 FAIL Finite difference 2 residuum: 1.95833611599937
3D |Neumann regular|Neumann regular|Neumann regular|Neumann regular|Neumann regular|Neumann regular| FD2 FAIL Finite difference 2 residuum: 2.52419027322218
3D |Neumann staggered|Neumann staggered|Neumann staggered|Neumann staggered|Neumann staggered|Neumann staggered| FD2 FAIL Finite difference 2 residuum: 2.48632335787074
Other tests in testpoisson were passed.
Recompiled the tests, but not the library, without OpenMP
scons comp=intel openmp=no test
And then all tests were passed, for all three interfaces.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/LadaF/PoisFFT/issues/3, or mute the thread https://github.com/notifications/unsubscribe/AAskEZhXajw6Eiqy51010zLapqIowXYkks5qF_gMgaJpZM4IpBiy .
Could you report the compiler version you use?
$ ifort -v
ifort version 16.0.2
I tried gcc with OpenMP just now. And it worked. So I guess it is a compiler problem.
There was a serious bug in Intel v. 15 which prevented even a successful compilation. I will try to have a look with v. 16, but it can be again a compiler bug. There are other OpenMP bugs in Intel compilers and they don't seem to be interested in fixing them https://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/509671
I see. I as well encountered some strange behaviors before using Intel OpenMP. Thanks.
I suspect it is a clash of OpenMP in the Intel compiler and GCC OpenMP used in your FFTW3 library. You may try to use FFTW compiled for Intel compilers and see. When the program is run with OMP_NUM_THREADS=1 the result is correct.
No luck. make check
for FFTW3 ran successfully. But PoisFFT tests still failed.
However, I don't think I really need OpenMP feature for now.
In my case, there are many independent poisson equations. It should be more efficient distributing them among cores than solving them one by one, right?
I believe the point is in the incompatibility between FFTW compiled by GCC and PoisFFT compiled by Intel. If you have a problem and your FFTW is compiled with Intel, please report it.
Yes, I think if you have multiple transforms it is better to distribute them. You should be able to re-use a common PoisFFT object. Pass nthreads=1
to be sure.
Compiled the library using
then the tests
And these tests failed
Other tests in
testpoisson
were passed.Recompiled the tests, but not the library, without OpenMP
And then all tests were passed, for all three interfaces.