next up previous contents
Next: Поиск. Up: Доступ к данным с Previous: Неколлективные операции.   Contents

Коллективные операции.

Семантика коллективного доступа с использованием общих файловых указателей состоит в том, что обращения к файлу будут идти в порядке, определяемом рангами процессов в группе. Для каждого процесса место в файле, в котором будет осуществлен доступ к данным, будет позицией общего файлового указателя, после того как все процессы, имеющие меньший ранг в группе, чем данный, осуществят доступ к данным. Кроме того, чтобы последующие обращения того же процесса к файлу не перекрывались с коллективным обращением, вызов должен завершаться только после того, как все процессы в группе инициировали свои обращения. Когда вызов завершается, общий файловый указатель указывает на следующий доступный е-тип, согласно виду файла, используемому всеми процессами, после последнего запрошенного е-типа.

Совет пользователям:

Возможны программы, в которых все процессы в группе осуществляют доступ к файлу, используя общий указатель, но сама программа не требует, чтобы доступ к данным осуществлялся в порядке рангов процессов. В таких программах использование общих упорядоченных подпрограмм (например, MPI_FILE_WRITE_ORDERED вместо MPI_FILE_WRITE_SHARED) может активизировать оптимизацию доступа, увеличивая производительность. []

Совет разработчикам:

Обращения к запрошенным данным всеми процессами не должны быть обязательно сериализованы. После того как все процессы сгенерировали свои запросы, могут быть вычислены позиции в файле для всех обращений, и обращения могут осуществляться независимо друг от друга, возможно параллельно. []





MPI_FILE_READ_ORDERED(fh, buf, count, datatype, status)



INOUT fh дескриптор файла (дескриптор)
OUT buf начальный адрес буфера (выбор)
IN count количество элементов в буфере (целое)
IN datatype тип данных каждого элемента буфера (дескриптор)
OUT status объект состояния (Status)




int MPI_File_read_ordered(MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status) MPI_FILE_READ_ORDERED(FH, BUF, COUNT, DATATYPE, STATUS, IERROR) <type> BUF(*) INTEGER FH, COUNT, DATATYPE, STATUS(MPI_STATUS_SIZE), IERROR void MPI::File::Read_ordered(void* buf, int count, const MPI::Datatype& datatype, MPI::Status& status) void MPI::File::Read_ordered(void* buf, int count, const MPI::Datatype& datatype)

MPI_FILE_READ_ORDERED - это коллективная версия интерфейса MPI_FILE_READ_SHARED.





MPI_FILE_WRITE_ORDERED(fh, buf, count, datatype, status)



INOUT fh дескриптор файла (дескриптор)
IN buf начальный адрес буфера (выбор)
IN count количество элементов в буфере (целое)
IN datatype тип данных каждого элемента буфера (дескриптор)
OUT status объект состояния (Status)




int MPI_File_write_ordered(MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status) MPI_FILE_WRITE_ORDERED(FH, BUF, COUNT, DATATYPE, STATUS, IERROR) <type> BUF(*) INTEGER FH, COUNT, DATATYPE, STATUS(MPI_STATUS_SIZE), IERROR void MPI::File::Write_ordered(const void* buf, int count, const MPI::Datatype& datatype, MPI::Status& status) void MPI::File::Write_ordered(const void* buf, int count, const MPI::Datatype& datatype) MPI_FILE_WRITE_ORDERED - это коллективная версия интерфейса MPI_FILE_WRITE_SHARED.


next up previous contents
Next: Поиск. Up: Доступ к данным с Previous: Неколлективные операции.   Contents
Alex Otwagin 2002-12-10