"MPI error (MPI_File_open) : MPI_ERR_FILE: invalid file"but the test programs report "pass". This message can be safely ignored. It is due to OpenMPI failing to translate system error code ENOENT into MPI_ERR_NO_SUCH_FILE, but returns MPI_ERR_FILE instead. Thanks to Edgar Gabriel, a trick to silence the messages is to add the following to the command line of make check:
TEST_SEQRUN="/path/to/OpenMPI/2.x.x/bin/mpirun --mca io romio314 -n 1"See discussion thread in OpenMPI: https://github.com/open-mpi/ompi/issues/4412 Note this error message does not appear in PnetCDF 1.9.0 and after.
During compile/link time:
/soft/perftools/darshan/lib/libdarshan-mpi-io.a(darshan-pnetcdf.o): In function `__wrap_ncmpi_create': darshan-pnetcdf.c:62: undefined reference to `ncmpi_create'During run time:
WARNING: Darshan ncmpi_create() stub called; this is probably the result of a link-time problem.
External type No. Bits Intent of use ------------- -------- --------------------------------- NC_CHAR 8 text data (the only non-numerical type in NetCDF) NC_BYTE 8 1-byte integer NC_SHORT 16 2-byte signed integer NC_INT 32 4-byte signed integer NC_FLOAT 32 4-byte floating point number NC_DOUBLE 64 8-byte real number in double precision NC_UBYTE 8 unsigned 1-byte integer NC_USHORT 16 unsigned 2-byte integer NC_UINT 32 unsigned 4-byte integer NC_INT64 64 signed 8-byte integer NC_UINT64 64 unsigned 8-byte integerNote NC_CHAR is the only non-numerical data type available in NetCDF realm. All other external types are considered numerical, which are illegal to be converted (type-casted) to and from a NetCDF variable defined in NC_CHAR type (error code NC_ECHAR will be thrown). The only legal APIs to read/write a variable of type NC_CHAR are the "_text" APIs.
Data type of Corresponding internal I/O buffer Example API MPI datatype ------------- ---------------------- ----------------- text ncmpi_put_var_text MPI_CHAR schar ncmpi_put_var_schar MPI_SIGNED_CHAR uchar ncmpi_put_var_uchar MPI_UNSIGNED_CHAR short ncmpi_put_var_short MPI_SHORT ushort ncmpi_put_var_ushort MPI_UNSIGNED_SHORT int ncmpi_put_var_int MPI_INT uint ncmpi_put_var_uint MPI_UNSIGNED long ncmpi_put_var_long MPI_LONG float ncmpi_put_var_float MPI_FLOAT double ncmpi_put_var_double MPI_DOUBLE longlong ncmpi_put_var_longlong MPI_LONG_LONG_INT ulonglong ncmpi_put_var_ulonglong MPI_UNSIGNED_LONG_LONG