From 93e71a27d483ee8661757b755c2d965e5a9073b8 Mon Sep 17 00:00:00 2001 From: pscrozi Date: Thu, 23 Aug 2012 22:32:38 +0000 Subject: [PATCH] Splitting 1d and 3d FFT timings. git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@8711 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/KSPACE/pppm.cpp | 50 +++++++++++++++++++++++++++++---------------- src/KSPACE/pppm.h | 3 ++- 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/src/KSPACE/pppm.cpp b/src/KSPACE/pppm.cpp index bea8eb2938..7bbe6ca4e8 100644 --- a/src/KSPACE/pppm.cpp +++ b/src/KSPACE/pppm.cpp @@ -3571,10 +3571,40 @@ void PPPM::slabcorr() } /* ---------------------------------------------------------------------- - perform and time the FFTs required for N timesteps + perform and time the 1d FFTs required for N timesteps ------------------------------------------------------------------------- */ -int PPPM::timing(int n, double &time3d, double &time1d) +int PPPM::timing_1d(int n, double &time1d) +{ + double time1,time2; + + for (int i = 0; i < 2*nfft_both; i++) work1[i] = ZEROF; + + MPI_Barrier(world); + time1 = MPI_Wtime(); + + for (int i = 0; i < n; i++) { + fft1->timing1d(work1,nfft_both,1); + fft2->timing1d(work1,nfft_both,-1); + if (differentiation_flag != 1) { + fft2->timing1d(work1,nfft_both,-1); + fft2->timing1d(work1,nfft_both,-1); + } + } + + MPI_Barrier(world); + time2 = MPI_Wtime(); + time1d = time2 - time1; + + if (differentiation_flag) return 2; + return 4; +} + +/* ---------------------------------------------------------------------- + perform and time the 3d FFTs required for N timesteps +------------------------------------------------------------------------- */ + +int PPPM::timing_3d(int n, double &time3d) { double time1,time2; @@ -3596,22 +3626,6 @@ int PPPM::timing(int n, double &time3d, double &time1d) time2 = MPI_Wtime(); time3d = time2 - time1; - MPI_Barrier(world); - time1 = MPI_Wtime(); - - for (int i = 0; i < n; i++) { - fft1->timing1d(work1,nfft_both,1); - fft2->timing1d(work1,nfft_both,-1); - if (differentiation_flag != 1) { - fft2->timing1d(work1,nfft_both,-1); - fft2->timing1d(work1,nfft_both,-1); - } - } - - MPI_Barrier(world); - time2 = MPI_Wtime(); - time1d = time2 - time1; - if (differentiation_flag) return 2; return 4; } diff --git a/src/KSPACE/pppm.h b/src/KSPACE/pppm.h index 78219f136f..52d46dcac3 100644 --- a/src/KSPACE/pppm.h +++ b/src/KSPACE/pppm.h @@ -42,7 +42,8 @@ class PPPM : public KSpace { virtual void init(); virtual void setup(); virtual void compute(int, int); - virtual int timing(int, double &, double &); + virtual int timing_1d(int, double &); + virtual int timing_3d(int, double &); virtual double memory_usage(); virtual void compute_group_group(int, int, int);