Existing: MPI_FILE_READ_AT - MPI_FILE_READ_AT_ALL MPI_FILE_WRITE_AT - MPI_FILE_WRITE_AT_ALL MPI_FILE_IREAD_AT - MPI_FILE_IREAD_AT_ALL MPI_FILE_IWRITE_AT - MPI_FILE_IWRITE_AT_ALL MPI_FILE_READ - MPI_FILE_READ_ALL MPI_FILE_WRITE - MPI_FILE_WRITE_ALL MPI_FILE_IREAD - MPI_FILE_IREAD_ALL MPI_FILE_IWRITE - MPI_FILE_IWRITE_ALL Proposed: Discussion points: - Tempting to add 'offset' for buffer, to make parameters symmetric - Probably not though... - No "count" parameters, only derived datatypes - Sidesteps the "big count" discussion - Naming - 't' prefix? (for 'type read', etc) e.g. MPI_File_tread_at() - 't' suffix? (like "big count", for 'type read', etc) e.g. MPI_File_read_at_t() - 'dt' prefix / suffix? (for 'datatype read', etc) e.g. MPI_File_dtread_at() / MPI_File_read_at_dt() - Other ideas? - No shared file pointer versions int MPI_File_new_read_at(MPI_File fh, MPI_Offset offset, MPI_Datatype file_datatype, void *buf, MPI_Datatype buf_datatype, MPI_Status *status); int MPI_File_new_read_at_all(MPI_File fh, MPI_Offset offset, MPI_Datatype file_datatype, void *buf, MPI_Datatype buf_datatype, MPI_Status *status); int MPI_File_new_write_at(MPI_File fh, MPI_Offset offset, MPI_Datatype file_datatype, const void *buf, MPI_Datatype buf_datatype, MPI_Status *status); int MPI_File_new_write_at_all(MPI_File fh, MPI_Offset offset, MPI_Datatype file_datatype, const void *buf, MPI_Datatype buf_datatype, MPI_Status *status); int MPI_File_new_iread_at(MPI_File fh, MPI_Offset offset, MPI_Datatype file_datatype, void *buf, MPI_Datatype buf_datatype, MPI_Request *request); int MPI_File_new_iread_at_all(MPI_File fh, MPI_Offset offset, MPI_Datatype file_datatype, void *buf, MPI_Datatype buf_datatype, MPI_Request *request); int MPI_File_new_iwrite_at(MPI_File fh, MPI_Offset offset, MPI_Datatype file_datatype, const void *buf, MPI_Datatype buf_datatype, MPI_Request *request); int MPI_File_new_iwrite_at_all(MPI_File fh, MPI_Offset offset, MPI_Datatype file_datatype, const void *buf, MPI_Datatype buf_datatype, MPI_Request *request); int MPI_File_new_read(MPI_File fh, MPI_Datatype file_datatype, void *buf, MPI_Datatype buf_datatype, MPI_Status *status); int MPI_File_new_read_all(MPI_File fh, MPI_Datatype file_datatype, void *buf, MPI_Datatype buf_datatype, MPI_Status *status); int MPI_File_new_write(MPI_File fh, MPI_Datatype file_datatype, const void *buf, MPI_Datatype buf_datatype, MPI_Status *status); int MPI_File_new_write_all(MPI_File fh, MPI_Datatype file_datatype, const void *buf, MPI_Datatype buf_datatype, MPI_Status *status); int MPI_File_new_iread(MPI_File fh, MPI_Datatype file_datatype, void *buf, MPI_Datatype buf_datatype, MPI_Request *request); int MPI_File_new_iread_all(MPI_File fh, MPI_Datatype file_datatype, void *buf, MPI_Datatype buf_datatype, MPI_Request *request); int MPI_File_new_iwrite(MPI_File fh, MPI_Datatype file_datatype, const void *buf, MPI_Datatype buf_datatype, MPI_Request *request); int MPI_File_new_iwrite_all(MPI_File fh, MPI_Datatype file_datatype, const void *buf, MPI_Datatype buf_datatype, MPI_Request *request);