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/
_______________________________________________
Beowulf mailing list, Beowulf@beowulf.org
To change your subscription (digest mode or unsubscribe) visit 
http://www.beowulf.org/mailman/listinfo/beowulf

Reply via email to