Bufrlib C code fix for WRFDA build with intel oneAPI compiler and a run-time segfault Fortran bugfix#1972
Conversation
|
The regression test results: |
|
@weiwangncar We'd prefer to go with current flag solution given resource/time limitation. We could look at for a code fix in a future time. |
|
In my opinion, it would be much better to fix the code than to add compiler flags ( |
|
@weiwangncar @mgduda it is perhaps hard to fix this in code level in short time. It is fine to me to leave this out for now and inform users about this. |
|
Or is there a way we only add these flags for WRFDA build, but exclude them for WRF build? |
|
Tao Sun @mos3r3n told me that there are not too many C code in the bufr lib. He will look into it. |
I have modified the bufrlib.h and stseq.c in var/external/bufr. Now on Derecho with intel oneAPI compiler WRFDA can be compiled successfully. I also did two simple 3dvar tests to assimilate the conventional data from little_r format and from prepbufr format, respectively. Both tests succeed. |
|
I use the three modified files and compile WRFDA with intel oneAPI on Derecho, and yet I got error Am I missing something here? |
Can you provide more info about how you did exactly? e.g., what module environment you loaded, then followed by what configure/compile steps? |
I replaced the original files in WRFDA with the modified preproc.sh, da_fill_obs_structures.inc, and configure.defaults from this github. I loaded intel-oneAPI to replace intel compiler. The other modules I have are ncarenv/23.06, craype/2.7.20, hdf5/1.12.2, netcdf/4.9.2, cray-mpich/8.1.25, ncarcompilers/1.00. I cleaned up the WRFDA directory using ./clean -aa. Then I did the configuration i.e., ./configure wrfda with option #50, followed by the compilation i.e, ./compile all_wrfvar >& compile.out. |
Are you compiling the latest develop branch along with 3 modified files or an older version? |
I am using wrfda from wrf4.2.2. It is an older version. |
These are the modules I am using for the develop branch:
When doing configure, I chose 78 instead of 50. The option 50 is not for intel oneAPI. You need to switch to intel-classic for option 50. |
mgduda
left a comment
There was a problem hiding this comment.
The code changes look good to me. I'd only suggest filling in the details in the PR description template.
|
The last change passed the regression test: |
|
@Bayu-Risanto If you're using code prior to 4.5.2, you should not use oneAPI. Try |
Okay. Thank you. I installed the WRFDA from WRFv4.5.2 successfully, though I still have a problem with running the da_wrfvar.exe. Some ens members still crashed, producing segmentation faults. Some others were completed successfully. I am not sure where it went wrong. |
Hello... I am using da_wrfvar.exe to perturb my model (HRRR) initiation. However, in some of the members, I get something like this. the rsl.error.0000 says that it is completed but it also says segmentation fault. Can somebody help and tell me what is happening here? Thank you. `taskid: 0 hostname: dec1644 Parent domain DYNAMICS OPTION: Eulerian Mass Coordinate
|
Bufrlib C code fix for WRFDA build with intel oneAPI compiler and a run-time segfault Fortran bugfix
TYPE: bugfix
KEYWORDS: WRFDA, Intel OneAPI, segfault
SOURCE: Tao Sun (NCAR)
ISSUE: For use when this PR closes an issue.
Fixes #1957
LIST OF MODIFIED FILES:
M var/da/da_obs/da_fill_obs_structures.inc
M var/external/bufr/preproc.sh
M var/external/bufr/stseq.c
M var/external/bufr/bufrlib.h
TESTS CONDUCTED: