Here are some of the tools and "tricks of the trade" that I use to maintain ScaLAPACK.
The most useful options to ftnchek are:
ftnchek -declare -noextern -portability -library *.f > ~/listing
For example, if I want to check the s.p.complex and d.p.complex EIG codes (source and testers), I would type:
alias ftnchek 'ftnchek -declare -noextern -portability -library' cd SCALAPACK/TESTING/EIG ftnchek pc*.f c*.f pz*.f z*.f ../../SRC/pc*.f ../../SRC/c*.f \ ../../SRC/pz*.f ../../SRC/z*.f ~/eig.listingand then view the listing file for errors...
Be aware that d.p.complex is not part of the ANSI standard, so it won't recognize a lot of the COMPLEX*16 stuff, and will thus give a lot of extraneous error messages.
These tools polish the new codes so that they conform to to the ScaLAPACK style. I use the same for LAPACK.
SGI IRIX64 f77 -g -DEBUG:subscript_check=ON -trapuv *.f ALPHA Tru64 f77 -C=all *.f AIX xlf -C *.f Solaris f77 -C *.f
After getting ScaLAPACK to run solely on each of these machine types, you then must spawn heterogeneous jobs mixing Alphas and IRIX machines, and so on. For hints of known heterogeneous failures, consult the errata.html.
You can also try native MPI versus MPICH in testing.
If the code passes these tests, then we say that it can be included in ScaLAPACK.