Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Installation on MARCONI (Cineca) #5377

Draft
wants to merge 1 commit into
base: development
Choose a base branch
from

Conversation

EZoni
Copy link
Member

@EZoni EZoni commented Oct 8, 2024

Close #5211.

  • add profile script
  • add submission script
  • update docs

@EZoni EZoni added install machine / system Machine or system-specific issue labels Oct 8, 2024
@EZoni
Copy link
Member Author

EZoni commented Oct 10, 2024

@JohanKoelsenDeWit

Let's try to start simple and add complexity step by step.

I ping @WeiqunZhang here, who might be able to guide the installation more efficiently than me.

The first step would be to load the modules listed in the file currently added in this PR, Tools/machines/marconi-cineca/marconi_cpu_warpx.profile.example, and see what needs to be fixed/added for a minimal WarpX build:

cmake --fresh -S . -DWarpX_DIMS="1;2;3" -DWarpX_OPENPMD=OFF -DWarpX_QED=OFF -B build

Please report here the output of the build and we iterate from there.

@JohanKoelsenDeWit
Copy link

@JohanKoelsenDeWit

Let's try to start simple and add complexity step by step.

I ping @WeiqunZhang here, who might be able to guide the installation more efficiently than me.

The first step would be to load the modules listed in the file currently added in this PR, Tools/machines/marconi-cineca/marconi_cpu_warpx.profile.example, and see what needs to be fixed/added for a minimal WarpX build:

cmake --fresh -S . -DWarpX_DIMS="1;2;3" -DWarpX_OPENPMD=OFF -DWarpX_QED=OFF -B build

Please report here the output of the build and we iterate from there.

Thank you kindly, Ezoni. I have imported the modules but cmake could not recognize --fresh. I believe this is due to the fact that the only available versions of cmake on MARCONI are cmake/3.18.2 and cmake/3.23.3. By removing the --fresh, it stated that I need 3.24.0 or higher.
To proceed, do you want me to request a newer version of cmake from the support on Marconi?

@EZoni
Copy link
Member Author

EZoni commented Oct 11, 2024

Thanks, @JohanKoelsenDeWit.

We can definitely skip the --fresh option, but regardless of that we do require minimum version 3.24 indeed:

cmake_minimum_required(VERSION 3.24.0)

I do recommend inquiring with the MARCONI support and asking them if they can support CMake 3.24 (noting that the latest available version is now 3.31).

@JohanKoelsenDeWit
Copy link

Thanks, @JohanKoelsenDeWit.

We can definitely skip the --fresh option, but regardless of that we do require minimum version 3.24 indeed:

cmake_minimum_required(VERSION 3.24.0)

I do recommend inquiring with the MARCONI support and asking them if they can support CMake 3.24 (noting that the latest available version is now 3.31).

Thanks @EZoni, I heard the MARCONI support, and they are sadly unable to install the newest version on CMake. They mentioned that version 22.06 of WarpX only required version 3.24 of CMake. Will we be able to use this version instead?

@EZoni
Copy link
Member Author

EZoni commented Oct 15, 2024

I think the requirement of CMake 3.24+ was introduced in #5179, which was included in the 24.09 release.

So we can try to use the 24.08 release without going as far in the past as 22.06 and see if we can get something to work.

Not sure how/if we would document this in the main repo though, to be discussed internally with other maintainers.

Do you want to check out the 24.08 release and see what errors come up when you try to configure and build WarpX with the minimal options above (except --fresh), so we can proceed with understanding which modules are missing and/or need a fix?

  • Configure:
    cmake -S . -DWarpX_DIMS="1;2;3" -DWarpX_OPENPMD=OFF -DWarpX_QED=OFF -B build
  • Build:
    cmake --build build -j 8

@JohanKoelsenDeWit
Copy link

JohanKoelsenDeWit commented Oct 16, 2024

I think the requirement of CMake 3.24+ was introduced in #5179, which was included in the 24.09 release.

So we can try to use the 24.08 release without going as far in the past as 22.06 and see if we can get something to work.

Not sure how/if we would document this in the main repo though, to be discussed internally with other maintainers.

Do you want to check out the 24.08 release and see what errors come up when you try to configure and build WarpX with the minimal options above (except --fresh), so we can proceed with understanding which modules are missing and/or need a fix?

* Configure:
  ```
  cmake -S . -DWarpX_DIMS="1;2;3" -DWarpX_OPENPMD=OFF -DWarpX_QED=OFF -B build
  ```

* Build:
  ```
  cmake --build build -j 8
  ```

That sounds excellent. I managed to configure version 24.08 with cmake -S . -DWarpX_DIMS="1;2;3" -DWarpX_OPENPMD=OFF -DWarpX_QED=OFF -B build, but the compilation failed.

Attached is the error I received.
build_output.txt

Thank you for your patience with this. :)

@EZoni
Copy link
Member Author

EZoni commented Oct 18, 2024

I see errors like

error: namespace "std" has no member "underlying_type_t"

but I'm not sure why.

We require at least C++17,

WarpX/CMakeLists.txt

Lines 525 to 546 in 09f9e8b

# C++ properties: at least a C++17 capable compiler is needed
if(WarpX_COMPUTE STREQUAL CUDA)
# AMReX helper function: propagate CUDA specific target & source properties
foreach(warpx_tgt IN LISTS _ALL_TARGETS)
setup_target_for_cuda_compilation(${warpx_tgt})
endforeach()
foreach(warpx_tgt IN LISTS _ALL_TARGETS)
target_compile_features(${warpx_tgt} PUBLIC cuda_std_17)
endforeach()
set_target_properties(${_ALL_TARGETS} PROPERTIES
CUDA_EXTENSIONS OFF
CUDA_STANDARD_REQUIRED ON
)
else()
foreach(warpx_tgt IN LISTS _ALL_TARGETS)
target_compile_features(${warpx_tgt} PUBLIC cxx_std_17)
endforeach()
set_target_properties(${_ALL_TARGETS} PROPERTIES
CXX_EXTENSIONS OFF
CXX_STANDARD_REQUIRED ON
)
endif()

so errors like the one above should not happen.

Could you also share the output of

  • module list;
  • the cmake configuration step;

so that we can look at the compiler info printed there?

Also, could you double check with the MARCONI support that they have an Intel compiler that supports C++17?

Based on what I see in the PR description of #2300 (where we introduced the C++17 requirement), I think you should be using at least Intel icpc 19.0.1+ (version 2021+ recommended). Although, if that is not the case, I would expect the configuration step to fail as well...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
install machine / system Machine or system-specific issue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Installation on MARCONI (Cineca)
2 participants