RFE: support PrgEnv-pgi

Issue #352 wontfix
Paul Hargrove created an issue

We support PrgEnv-{gnu,intel,cray,llvm} on the Cray XC, but not PrgEnv-pgi.
Meanwhile, we support PGI compilers on non-Cray systems (both x86_64 and ppc64le).

I believe this has been almost entirely a matter of no access.
However, I currently have access to the Swiss Piz Daint system, where PrgEnv-pgi is available.

I see/hear no immediate demand for this support currently.
However, that may not be the case for long if Perlmutter includes PrgEnv-pgi (likely, IMO, since it will have Nvidia GPUs and Nvidia owns PGI).

If/when I have time, I will see if it "just works" with suitable adjustment to the supported platforms checks. However, that may not be enough to justify listing it as supported if we cannot do periodic automated CI on this platform.

Comments (4)

  1. Paul Hargrove reporter

    To be clear: this comment is NOT a statement of support, but may be of interest to potential users willing/able to use a unsupported build of UPC++.

    Testing on Piz Daint GPU nodes shows the following is sufficient to pass make check with PrgEnv-pgi/6.0.5, pgi/19.7.0, and cudatoolkit/10.1.105_3.27-7.0.1.1_4.1__ga311ce7, configured with --with-cross=cray-aries-slurm --with-cuda

    --- a/utils/system-checks.sh
    +++ b/utils/system-checks.sh
    @@ -208,10 +208,7 @@ platform_sanity_checks() {
             elif test -n "$CRAY_PRGENVCRAY" && expr x"$CRAY_PE_CCE_VARIANT" : "xCC=Classic" > /dev/null; then
                 echo 'ERROR: UPC++ on Cray XC with PrgEnv-cray does not support the "-classic" compilers such as' $(grep -o 'cce/[^:]*' <<<$LOADEDMODULES)
                 exit 1
    -        elif test -n "$CRAY_PRGENVPGI" ; then
    -            echo 'ERROR: UPC++ on Cray XC currently requires PrgEnv-gnu, intel or cray. Please do: `module switch PrgEnv-pgi PrgEnv-FAMILY` for your preferred compiler FAMILY'
    -            exit 1
    -        elif test -n "$CRAY_PRGENVGNU$CRAY_PRGENVINTEL$CRAY_PRGENVCRAY" ; then
    +        elif test -n "$CRAY_PRGENVGNU$CRAY_PRGENVINTEL$CRAY_PRGENVCRAY$CRAY_PRGENVPGI" ; then
                 if [[ -n "$CROSS" ]]; then
                   CC=${CC:-cc}
                   CXX=${CXX:-CC}
    
  2. Paul Hargrove reporter

    Pull request 202 has been created to update PrgEnv-pgi from "bad" to "unknown".
    That will permit its use without source modifications, but only after showing the user the warning about unsupported compilers (including the list of the supported alternatives).

    As described in the commit message, that change is really a matter of putting PrgEnv-pgi on the same level as other compilers we don't have enough negative information to actually prohibit.

  3. Paul Hargrove reporter

    configure: allow (unsupported) use of PrgEnv-pgi

    This commit makes our handling of PrgEnv-pgi on Cray XC consistent with that of other compilers where we lack sufficient positive or negative information to confidently identify them as COMPILER_GOOD or COMPILER_BAD. Previously we would fail at configure-time if cross-compiling for the Cray XC with PrgEnv-pgi loaded. Now we emit the warning containing the supported compilers and allow the user to continue at their own peril.

    There are no associated documentation changes, as we were already silent on the status of PrgEnv-pgi.

    Limited testing of PrgEnv-pgi on Piz-Daint shows no new issues specific to that platform, meaning COMPILER_BAD is not appropriate. However, we lack the resources to perform periodic runs (though compile-only tests are possible) necessary to make a confident claim of COMPILER_GOOD (a prerequisite for labelling this as a supported platform).

    This partially addresses issue 352.

    → <<cset 7306930b4fc0>>

  4. Log in to comment