ECP-WarpX / WarpX

WarpX is an advanced electromagnetic & electrostatic Particle-In-Cell code.
https://ecp-warpx.github.io
Other
311 stars 196 forks source link

perlmutter e4s-23.05 is end of life, please update build #5471

Open robnagler opened 6 days ago

robnagler commented 6 days ago

Description

NERSC perlmutter build script(s) needs updating for boost. The e4s 23.05 was EOL on 9/30.

Cmake finds boost 1.66 in /usr/include when it should find boost 1.82 (1.83)

Expected behavior

Compilation should find boost in BOOST_ROOT.

How to reproduce

build with perlmutter gpu

System information

Perlmutter

Steps taken so far

There are two boost configs which come up, and currently trying those:

  Matching packages:
    jn7ias4 boost@1.83.0%gcc@12.3.0 arch=linux-sles15-zen3
    2duyuvm boost@1.83.0%gcc@12.3.0 arch=linux-sles15-zen3

Additional information

The build succeeds, but running results in:

Exception: Dimensionality '3d' was not compiled in this Python install. Please recompile with -DWarpX_DIMS=3

Note: it would be great if cmake would fail if $BOOST_ROOT does not exist. Instead, it's just ignored.

EZoni commented 5 days ago

I started looking into this.

Pinging @lucafedeli88 because the build logic is probably mostly on the PICSAR end (i.e., not WarpX).

See, for example, lines 43-51 from https://github.com/ECP-WarpX/picsar/blob/6b46dbe083daf30286631c82818d4285c2676371/multi_physics/QED/CMakeLists.txt:

if(PXRMP_QED_TABLEGEN)
    find_package(Boost 1.66.0)
    if(Boost_FOUND)
        target_link_libraries(PXRMP_QED INTERFACE Boost::boost)
        target_compile_definitions(PXRMP_QED INTERFACE PXRMP_HAS_BOOST=1)
    else()
         message( FATAL_ERROR "Table generation (PXRMP_QED_TABLEGEN) requires Boost (>= 1.66)!" )
    endif()
endif()

Not sure how to tell find_package to discard anything other than what is found in BOOST_ROOT.

On the WarpX end, I can open a PR to update how we set BOOST_ROOT here and see if that is enough to fix the issue: https://github.com/ECP-WarpX/WarpX/blob/4739e10a3c22f3b870755bebcf40dfbf51d0e984/Tools/machines/perlmutter-nersc/perlmutter_gpu_warpx.profile.example#L17-L18 However, I still need to understand which one of these I should set:

$ ls /global/common/software/spackecp/perlmutter/e4s-23.08/default/spack/opt/spack/linux-sles15-zen3/gcc-12.3.0/ | grep "boost" 
boost-1.83.0-2duyuvmto7nxhdxbmtdzfqta2zd2e6gp
boost-1.83.0-2yqnluod73zoeujxzoe2tbob2d6vgbok
boost-1.83.0-7v65wrlbpdcvmjqcxl5ozjlokrmsxolu
boost-1.83.0-bofy2gbvluorrgdlsqeyw6cexrbsmpdu
boost-1.83.0-jn7ias45dtk7uwh4baobb2ndhq73ndxc
boost-1.83.0-nxqk3hnci5g3wqv75wvsmuke3w74mzxi

Will open a PR to try things out and link to this issue.

EZoni commented 5 days ago

@robnagler

Could you try the fix in #5477? I would recommend that you try from scratch (re-source profile, re-install dependencies, re-build WarpX, re-run test), just in case.