CASPT2 with just MPI instead of GA
It's possible to remove the dependency of CASPT2 on GA functionality, but it would require quite a bit of work. GA lets one allocate a global array of values across different machines, and provides convenient functions to access any elements in that global array, as well as e.g. BLAS/LAPACK operations on such arrays.
To remove the GA dependency, algorithms should not use any of GA's advanced features, like (1-sided) scattering values across the global array (GA_Scatter
/GA_Gather
), or putting values into non-local parts of memory (GA_Put
/GA_Get
).
Luckily, there are already alternatives for the most troublesome cases.
- GA
- create helpers for allocating local chunks of memory for certain array distributions
- replace all
#ifdef _GA_
blocks with their altertive implementation (and fix where necessary)
- RHS
- functionality is wrapped in the
par_rhs.f
file -
rhsod.f
was designed to remove GA dependency should replaceaddrhs.f
(for anything that's not serial computation). This would elimitate the use ofRHS_SCATTER
(andGA_Scatter
)
- functionality is wrapped in the