[Beowulf] fftw2, mpi, from 32 bit to 64 and fortran
Ricardo Reis
rreis at aero.ist.utl.pt
Tue Aug 5 02:57:42 PDT 2008
On Mon, 4 Aug 2008, Mark Kosmowski wrote:
> So, why did the 32-bit test case work? Shouldn't the same problem
> crash both systems if it is a code issue?
I asked the same question myself... The function interface is:
call rfftwnd_f77_mpi(plan_c2r, &
1, local_data, work, use_work, FFTW_NORMAL_ORDER)
where use_work is an integer, value 1 if you use the work temporary
array, 0 otherwise. This was the variable I wasn't passing.
FFTW_NORMAL_ORDER instructs fftw to return a proper ordering of the array
and FFTW_TRANSPOSE_ORDER cuts some comm steps making it more efficient
(and then you have to workout the array ordering yourself).
The wrapper function for this is (from rfftw_f77_mpi.c):
void F77_FUNC_(rfftwnd_f77_mpi,RFFTWND_F77_MPI)
(rfftwnd_mpi_plan *p, int *n_fields, fftw_real *local_data,
fftw_real *work, int *use_work, int *ioutput_order)
{
fftwnd_mpi_output_order output_order = *ioutput_order ?
FFTW_TRANSPOSED_ORDER : FFTW_NORMAL_ORDER;
rfftwnd_mpi(*p, *n_fields, local_data, *use_work ? work : NULL,
output_order);
}
and the code was blocking in the
fftwnd_mpi_output_order output_order = *ioutput_order ?
FFTW_TRANSPOSED_ORDER : FFTW_NORMAL_ORDER;
line. So it must be a pointer issue revealed by the 64 bit, no? When I
wasn't doing it "properly" the value of *ioutput_order wasn't set.
greets,
Ricardo Reis
'Non Serviam'
PhD student @ Lasef
Computational Fluid Dynamics, High Performance Computing, Turbulence
http://www.lasef.ist.utl.pt
&
Cultural Instigator @ Rádio Zero
http://www.radiozero.pt
http://www.flickr.com/photos/rreis/
More information about the Beowulf
mailing list