This environment variable allows users to pass I/O hints to PnetCDF library. Hints can be a combination of both PnetCDF and MPI-IO hints.
The value is a string of hints separated by ";" and each hint is in the form of "hint=value". E.g. under csh/tcsh environment, use command:
setenv PNETCDF_HINTS "romio_ds_write=disable;nc_header_align_size=1048576"
Under bash environment, use command:
Note the environment variables precede the (hint) values set in the application program.
(version 1.4.0 and later) It aligns the size of header extent of a newly created file. The default is 512 bytes. If the file striping size is known and the total size of all fixed-size variables is larger than 4 times the file striping size, then this hint will be set to the file striping size, i.e. the smallest multiple of string size that is larger than the file header size. Set the value to 1 to disable the alignment.
(version 1.4.0 and later) This hint aligns the starting file offsets of individual fixed-size variables. In PnetCDF version 1.10.0 and prior, the default is 512 bytes if file striping size is not obtainable by PnetCDF. If the file striping size is known and the total size of all fixed-size variables is larger than 4 times the file striping size, then the starting file offsets of all individual fixed-size variables are aligned to the file striping size, i.e. the smallest multiple of stripe size that is larger than the end offset of the variable defined immediately prior to this variable. Set the value to 1 to disable the alignment. Starting from version 1.11.0, the default has changed to 1, i.e. no alignment. If applications use PnetCDF nonblocking APIs to aggregate write requests to multiple variables, then the best practice is to disable the alignment. Disabling this alignment will prevent creating gaps in file space between two consecutive variables and thus the writes to file system can be contiguous.
(version 1.4.0 and later) PnetCDF reads the file headers in chunks. This hint indicates the chunk size (in bytes). The default is 256 KB.
(version 1.5.0 and later) This hint aligns the starting file offset of the record variable section. Note this is for the entire section, not individual records.
(version 1.6.0 and later) This hint enables or disables the subfiling feature. Its string value is either "enable" or "disable".
(version 1.10.0 and later) This hint enables or disables in-place byte swap on Little Endian architectures. When the hint is set to "enable", PnetCDF performs byte swap on user I/O buffers whenever possible. This option results in the least amount of internal memory usage. However, if an immutable user buffer is used, segmentation fault may occur when byte swap is performed on user buffer in place. When the hint is set to "disabled", PnetCDF allocates an internal buffer for byte swap without altering the contents of user buffer, when byte swap is required. This option will increase internal memory footprint. When the hint is set to "auto", PnetCDF allocates an internal buffer for byte swap only when the I/O request size is less than 4 KiB. For larger requests, user buffers are used for in-place byte swap. Note this hint takes effect only on Little Endian machines, as no byte swap is necessary on Big Endian machines.
(version 1.11.0 and later) It sets the size of a temporal buffer to be allocated by PnetCDF internally to pack noncontiguous user write buffers supplied to the nonblocking requests into a contiguous space. Similarly for read case to unpack the temporal buffer to user read buffers if they are noncontiguous. This affects both blocking and nonblocking APIs. On some systems, using noncontiguous user buffers in MPI collective read/write functions performs significantly worse than using contiguous buffers. Note if the size of aggregated user buffers is larger than nc_ibuf_size, packing/unpacking will be disabled to save memory footprint. The default value is 16 MiB.