# FFTXlib (ompss)

Version's name: FFTXlib (ompss) ; a version of the FFTXlib program.
Patterns and behaviours: Implemented best practices: Coarse grain (comp + comm) taskyfication with dependencies ·

This version of FFTXlib parallelized with the OmpSs programming model targets the low computation scalability. The objective is to soften the resource contention by replacing the second MPI layer (the FFT task groups). Instead of applying parallelism to each loop in each step, as in the original version, the approach converts each loop iteration, i.e. each FFT, into a single task. Since there are no dependencies between the loop iterations each task can be scheduled without any further constraints.

    DO I = 1, NB, NTG
!$omp task default(shared) firstprivate(ipsi) & !$omp & private(aux, time, i, j) inout(psis) &
!$omp & reduction(+:ncount, my_time) CALL pack NTG bands CALL multi-band FW-FFT along Z CALL multi-band Scatter CALL multi-band FW-FFT along XY CALL VOFR CALL multi-band BW-FFT along XY CALL multi-band Scatter CALL multi-band BW-FFT along Z CALL unpack NTG bands !$omp end task
END DO