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

WRF-CHEM w/kpp && WRF-CHEMDA v4.6.0 - Intel LLVM Compilers #2065

Open
HathewayWill opened this issue Jun 13, 2024 · 6 comments
Open

WRF-CHEM w/kpp && WRF-CHEMDA v4.6.0 - Intel LLVM Compilers #2065

HathewayWill opened this issue Jun 13, 2024 · 6 comments
Assignees

Comments

@HathewayWill
Copy link

With the release of WRF v4.6.0, I have conducted a series of evaluations on the Weather Research and Forecasting Model Chemistry (WRF-Chem) version 4.6.0, utilizing the Intel LLVM Compilers and associated libraries. The purpose of these tests was to assess the performance and compatibility of WRF-CHEM w/kpp && WRF-CHEMDA v4.6.0 under the specified computational environment. Given the diverse nature of the issues encountered, I will be documenting each separately in subsequent communications, ensuring detailed discussions per topic. Attached to each of these communications, you will find a zip file containing all relevant logs.

System Specifications:

Operating System: Ubuntu 22.04.4
Memory: 64 GB DDR5 RAM
Processor: Intel Core i9-13900K
Storage: 1TB SSD

Compiler and Library Environment:

Intel LLVM Compilers, Version 2024.1.0:
ifx (Fortran compiler)
icx (C compiler)
icpx (DPC++/C++ compiler)
mpiifx, mpiicx, mpiicpx (Intel MPI wrappers for respective compilers)

Libraries:
HDF5 v1.14.4.2
PHDF5 v1.14.4.2
ZLIB v1.3.1
Libpng v1.6.39
Jasper v1.900.1
Pnetcdf v1.13.0
Netcdf-c v4.9.2
Netcdf-fortran v4.6.1

Preliminary Observations:
The testing required additional compiler flags to address compatibility issues with Jasper and Libpng libraries, which appear to stem from advancements in compiler technology beyond the versions recommended by NCAR. These flags include:

-Wno-implicit-function-declaration
-Wno-incompatible-function-pointer-types
-Wno-unused-command-line-argument

Methodology:
Tests were conducted in both single-threaded and multi-threaded modes to evaluate performance scalability. The procedure involved:

Fresh installation of the specified packages and configuration in a new terminal.

Execution of the WRF model using the command ./compile with -j 1 for single-threaded and -j 16 (utilizing half of the available CPU threads) for multi-threaded scenarios.

Collection, archiving, and zipping of all log files and configurations post-testing.

Conclusion:
WRF-CHEM
Single Threaded
The tests conducted in the single-threaded configuration for WRF-CHEM were sucessful.
Multi Threaded
The test conducted in the multi threaded configuration for WRF-CHEM were not sucessful, and caused extreme memory usage which froze my computer. My thoughts are that the memory allocated for each module is being called multiple times and as such causing the extreme memory usage. But I am uncertain if this is how WRF-CHEM works

WRF-CHEMDA
Single Threaded
The test conducted in the single-threaded configuration for WRF-CHEMDA were sucessful. WRF-CHEMDA has to be installed before WRF-CHEM.
Multi Threaded
The test conducted in the multi-threaded configuration for WRF-CHEMDA were sucessful. WRF-CHEMDA has to be installed before WRF-CHEM.

wrfchem_single_thread.zip
wrfchem_multi_thread_fail.zip
WRF_chem_da_single_thread.zip
wrfchem_da_multi_thread.zip

@HathewayWill
Copy link
Author

@islas is there a potential fix in the develop branch I can test for this issue?

@HathewayWill
Copy link
Author

Any updates?

@islas
Copy link
Collaborator

islas commented Jul 29, 2024

You can try integrating #2070, #2069, and #2068 to reduce memory usage of the peak files.

There still exists the limitation that the total memory used is the same so if a single file was broken into 12 files, but -j 12 is used and all 12 of those files are being compiled simultaneously then the same amount of memory will be used regardless. The PRs noted make it possible to use lower thread counts when memory-constrained by via smaller more evenly partitioned files that were causing issues.

@HathewayWill
Copy link
Author

You can try integrating #2070, #2069, and #2068 to reduce memory usage of the peak files.

There still exists the limitation that the total memory used is the same so if a single file was broken into 12 files, but -j 12 is used and all 12 of those files are being compiled simultaneously then the same amount of memory will be used regardless. The PRs noted make it possible to use lower thread counts when memory-constrained by via smaller more evenly partitioned files that were causing issues.

How would I merge different PRs? I'm not familiar with github commands very well.

@HathewayWill
Copy link
Author

You can try integrating #2070, #2069, and #2068 to reduce memory usage of the peak files.

There still exists the limitation that the total memory used is the same so if a single file was broken into 12 files, but -j 12 is used and all 12 of those files are being compiled simultaneously then the same amount of memory will be used regardless. The PRs noted make it possible to use lower thread counts when memory-constrained by via smaller more evenly partitioned files that were causing issues.

@islas

Is there any reason why GNU doesn't have this issue but Intel LLVM does?

@HathewayWill
Copy link
Author

@islas

I ran some tests today.

Looks like for the module that causes all the problems the max processes that can be run is either -j2 for less than 32gb of ram or -j4 for more than 32gb of ram.

Would it be possible to hard code a way to just make it use two processes at max?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants