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

PNetCDF support #278

Merged

Conversation

iulian787
Copy link
Contributor

@iulian787 iulian787 commented Oct 28, 2024

Pnetcdf changes, in order to use pnetcdf instead of netcdf4, for parallel output
Changed NCInterface to use ncmpi_* calls
removed group NC framework (not used so far)

collective calls are triggered by ncmpi_put_var*_all calls for pnetcdf.

non-blocking writes are needed to, because there is no guarantee that the number of iterations is the same on each task, for various tiling modes.

need to use
make USE_PNETCDF=TRUE DEBUG=TRUE -j8

there is no par_access anymore
collective calls will need to be made with *_all methods
so far, everything is independent, which is not allowed
this methd is collective, while some header data is written only
on master task
(descriptive data)

still need to fix the coordinates data
add the strided versions, and float and integer put_all calls
also, add all get_all calls, for doble, float, int, strided too
user has to define PKG_CONFIG_PATH
with the proper pnetcdf installation

then a cmake command would work

cmake -DCMAKE_INSTALL_PREFIX:PATH=<install_prefix>  \
      -DCMAKE_CXX_COMPILER:STRING=mpicxx \
      -DCMAKE_C_COMPILER:STRING=mpicc \
      -DCMAKE_Fortran_COMPILER:STRING=mpifort \
      -DCMAKE_BUILD_TYPE:STRING=Release \
      -DREMORA_DIM:STRING=3 \
      -DREMORA_ENABLE_MPI:BOOL=ON \
      -DREMORA_ENABLE_TESTS:BOOL=ON \
      -DREMORA_ENABLE_FCOMPARE:BOOL=ON \
      -DREMORA_ENABLE_DOCUMENTATION:BOOL=OFF \
      -DREMORA_ENABLE_PNETCDF:BOOL=ON \
      -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON \
      <source remora>
actual read is in serial, on task 0 only
need to fix read when it is actual in parallel
in fact, still read only on proc 0, and broadcast
what is important
when we write in parallel, number of iterations per task
can be different
we cannot use blocking calls in general
need to use non-blocking calls
@hklion hklion merged commit 686a138 into seahorce-scidac:development Nov 12, 2024
9 checks passed
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

Successfully merging this pull request may close these issues.

2 participants