WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 |   ...   | 3 | 4 || 6 | 7 |   ...   | 8 |
дексированный тип данных с блоками постоянного размера int MPI_Type_create_indexed_block(int count, int blocklength, int array_of_displacements[], MPI_Datatype old_type, MPI_Datatype *newtype) Входные параметры count Число блоков, а также число элементов в array_of_displacements blocklength Число элементов в каждом блоке (целое число) array_of_displacements Смещение каждого блока в множителях old_type (массив целых чисел) old_type Старый тип данных (дескриптор) Выходной параметр newtype Новый тип данных (дескриптор) MPI_Type_create_subarray Создает тип данных, описывающий подмассив многомерного массива int MPI_Type_create_subarray(int ndims, int *array_of_sizes, int *array_of_subsizes, int *array_of_starts, int order, MPI_Datatype oldtype, MPI_Datatype *newtype) Входные параметры ndims Размерность массива (положительное целое число) array_of_sizes Число элементов типа oldtype в каждом измерении полного массива (массив положительных целых чисел) array_of_subsizes Число элементов типа oldtype в каждом измерении подмассива (массив положительных целых чисел) array_of_starts Начальные координаты подмассива в каждом измерении (массив неотрицательных целых чисел) order Флажок порядка хранения массива oldtype Старый тип данных (дескриптор) Выходной параметр newtype Новый тип данных (дескриптор) MPI_Type_extent Возвращает протяженность типа данных int MPI_Type_extent(MPI_Datatype datatype, MPI_Aint *extent) Входной параметр datatype Тип данных (дескриптор) Выходной параметр extent Протяженность типа данных (целое число) MPI_Type_free Освобождает тип данных int MPI_Type_free(MPI_Datatype *datatype) Входной параметр datatype Тип данных, который будет освобожден (дескриптор) Примечание. Стандарт MPI заявляет (в разделе о «непрозрачных объектах»), что MPI обеспечивает некоторые предопределенные непрозрачные объекты и предопределенные статические дескрипторы для этих объектов.

Такие объекты не могут быть разрушены. Таким образом, освобождение предопределенного типа данных является ошибкой. Тот же самый раздел поясняет, что освобождение нулевого типа данных – также является ошибкой.

MPI_Type_get_contents Возвращает фактические параметры, использованные в вызове при создании типа данных int MPI_Type_get_contents(MPI_Datatype datatype, int max_integers, int max_addresses, int max_datatypes, int *array_of_integers, MPI_Aint *array_of_addresses, MPI_Datatype *array_of_datatypes) Входные параметры datatype Искомый тип данных (дескриптор) max_integers Число элементов в array_of_integers (неотрицательное целое число) max_addresses Число элементов в array_of_addresses (неотрицательное целое число) max_datatypes Число элементов в array_of_datatypes (неотрицательное целое число) Выходные параметры array_of_integers Содержит целочисленные параметры, используемые при построении типа данных (массив целых чисел) array_of_addresses Содержит адресные параметры, используемые при построении типа данных (массив целых чисел) array_of_datatypes Содержит параметры типов данных, используемые при построении типа данных (массив дескрипторов) MPI_Type_get_envelope Возвращает информацию относительно номера и типа входных параметров, использованных при вызове, который создал тип данных int MPI_Type_get_envelope(MPI_Datatype datatype, int *num_integers, int *num_addresses, int *num_datatypes, int *combiner) Входной параметр datatype Искомый тип данных (дескриптор) Выходные параметры num_integers Число входных целых чисел, используемых при вызове, создающем combiner (неотрицательное целое число) num_addresses Число входных адресов, используемых при вызове, создающем combiner (неотрицательное целое число) num_datatypes Число входных типов данных, используемых при вызове, создающем combiner (неотрицательное целое число) combiner Combiner (состояние) MPI_Type_hindexed Создает индексированный тип данных со смещениями в байтах int MPI_Type_hindexed(int count, int blocklens[], MPI_Aint indices[], MPI_Datatype old_type, MPI_Datatype *newtype) Входные параметры count Число блоков, а также число элементов в indices и blocklens blocklens Число элементов в каждом блоке (массив неотрицательных целых чисел) indices Байтовое смещение каждого блока (массив MPI_Aint) old_type Старый тип данных (дескриптор) Выходной параметр newtype Новый тип данных (дескриптор) MPI_Type_hvector Создает векторный (прореженный) тип данных со смещением в байтах int MPI_Type_hvector(int count, int blocklen, MPI_Aint stride, MPI_Datatype old_type, MPI_Datatype *newtype) Входные параметры count Число блоков (неотрицательное целое число) blocklength Число элементов в каждом блоке (неотрицательное целое число) stride Число байтов между началом каждого блока (целое число) old_type Старый тип данных (дескриптор) Выходной параметр newtype Новый тип данных (дескриптор) MPI_Type_indexed Создает индексированный тип данных int MPI_Type_indexed(int count, int blocklens[], int indices[], MPI_Datatype old_type, MPI_Datatype *newtype) Входные параметры count Число блоков, а также число элементов в indices и blocklens blocklens Число элементов в каждом блоке (массив неотрицательных целых чисел) indices Смещение каждого блока в множителях old_type (массив целых чисел) old_type Старый тип данных (дескриптор) Выходной параметр newtype Новый тип данных (дескриптор) MPI_Type_lb Возвращает нижнюю границу типа int MPI_Type_lb(MPI_Datatype datatype, MPI_Aint *displacement) Входной параметр datatype Тип данных (дескриптор) Выходной параметр displacement Смещение нижней границы от начала в байтах (целое число) MPI_Type_size Возвращает число байтов, занятых записями в типе данных int MPI_Type_size(MPI_Datatype datatype, int *size) Входной параметр datatype Тип данных (дескриптор) Выходной параметр size Размер типа данных (целое число) MPI_Type_struct Создает структурный тип данных int MPI_Type_struct(int count, int blocklens[], MPI_Aint indices[], MPI_Datatype old_types[], MPI_Datatype *newtype) Входные параметры count Число блоков (целое число), а также число элементов в массивах old_types, indices и blocklens blocklens Число элементов в каждом блоке (массив) indices Смещение в байтах каждого блока (массив) old_types Тип элементов в каждом блоке (массив дескрипторов объектов типов данных) Выходной параметр newtype Новый тип данных (дескриптор) Примечания. Если верхняя граница установлена явно с использованием MPI типа MPI_UB, соответствующий индекс должен быть положительным. Стандарт MPI содержит неопределенные утверждения относительно дополнения и выравнивания; это было вызвано желанием разрешить простое определение структур для посылки их в количестве, большем одной.



Например, struct { int a; char b; } foo;

может иметь sizeof(foo) > sizeof(int) + sizeof(char);

например, sizeof(foo) = 2 * sizeof(int).

Первоначальная версия MPI стандарта определила протяженность типа данных как включающую величину epsilon, которая разрешит реализации сделать протяженность MPI типа данных для этой структуры равной 2*sizeof(int). Но поскольку различные системы могли бы определять различные заполнения, было много дискуссий MPI Форума относительно правильного значения epsilon, и одно из предложений было определить epsilon как ноль. И хотя это предложение не вошло в заключительный документ, данная подпрограмма не добавляет никакого заполнения, так как необходимое его количество определяется транслятором, используемым пользователями для формирования их кода, а не транслятором, используемым для создания MPI библиотеки. Следующие версии MPICH могут предусмотреть какие-либо естественные определители заполнения (например, множитель размера самого большого члена), но пользователям не советуют зависеть от этого. Вместо этого, если Вы определяете структурный тип данных и желаете посылать или получать его многократно, Вы должны явно включить элемент MPI_UB как последний член структуры. Например, следующий код может использоваться для структуры foo:

blen[0]=1; indices[0]=0; oldtypes[0]=MPI_INT;

blen[1]=1; indices[1]=&foo.b-&foo;

oldtypes[1]=MPI_CHAR;

blen[2]=1; indices[2]=sizeof(foo); oldtypes[2]=MPI_UB;

MPI_Type_struct(3, blen, indices, oldtypes, &newtype);

MPI_Type_ub Возвращает верхнюю границу типа int MPI_Type_ub(MPI_Datatype datatype, MPI_Aint *displacement) Входной параметр datatype Тип данных (дескриптор) Выходной параметр displacement Смещение верхней границы от начала в байтах (целое число) MPI_Type_vector Создает векторный (прореженный) тип int MPI_Type_vector(int count, int blocklen, int stride, MPI_Datatype oldtype, MPI_Datatype *newtype) Входные параметры count Число блоков (неотрицательное целое число) blocklen Число элементов в каждом блоке (неотрицательное целое) stride Число элементов между началами каждого блока (целое число) oldtype Старый тип данных (дескриптор) Выходной параметр newtype Новый тип данных (дескриптор) MPI_Unpack Распаковывает тип данных из непрерывной памяти int MPI_Unpack(void *inbuf, int insize, int *position, void *outbuf, int outcount, MPI_Datatype datatype, MPI_Comm comm) Входные параметры inbuf Начало входного буфера (указатель) insize Размер входного буфера в байтах (целое число) position Текущая позиция в байтах (целое число) outcount Число элементов, которые будут распакованы (целое число) datatype Тип данных каждого элемента выходных данных (дескриптор) comm Коммуникатор для упакованного сообщения (дескриптор) Выходной параметр outbuf Начало выходного буфера (указатель) См. также MPI_Pack, MPI_Pack_size MPI_Wait Ждет завершения посылки или приема int MPI_Wait(MPI_Request *request, MPI_Status *status) Входной параметр request Запрос (дескриптор) Выходной параметр status Объект состояния (статус) MPI_Waitall Ждет завершения всех указанных связей int MPI_Waitall(int count, MPI_Request array_of_requests[], MPI_Status array_of_statuses[]) Входные параметры count Длина списков (целое число) array_of_requests Массив запросов (массив дескрипторов) Выходной параметр array_of_statuses Массив объектов состояния (массив статусов) MPI_Waitany Ждет завершения любых из указанных посылок или приемов int MPI_Waitany(int count, MPI_Request array_of_requests[], int *index, MPI_Status *status) Входные параметры count Длина списка (целое число) array_of_requests Массив запросов (массив дескрипторов) Выходные параметры index Индекс дескриптора завершившейся операции (целое число в диапазоне от 0 до count-1).

status Объект состояния (статус) Примечание. Если все запросы – MPI_REQUEST_NULL, index возвращается как MPI_UNDEFINED, а status – как пустое состояние.

MPI_Waitsome Ждет завершения каких-либо из указанных связей int MPI_Waitsome(int incount, MPI_Request array_of_requests[], int *outcount, int array_of_indices[], MPI_Status array_of_statuses[]) Входные параметры incount Длина array_of_requests (целое число) array_of_requests Массив запросов (массив дескрипторов) Выходные параметры outcount Число завершенных запросов (целое число) array_of_indices Массив индексов операций, которые завершились (массив целых чисел в диапазоне от 0 до incount-1) array_of_statuses Массив объектов состояния для операций, которые завершились (массив статусов) Примечания. Пустые запросы игнорируются; если все запросы пустые, outcount возвращается установленным в MPI_UNDEFINED.





MPI_Wtick Возвращает разрешающую способность MPI_Wtime double MPI_Wtick() Возвращаемое значение Значение в секундах разрешающей способности MPI_Wtime MPI_Wtime Возвращает прошедшее время на вызывающем процессоре double MPI_Wtime() Возвращаемое значение Время в секундах, начиная с произвольного времени в прошлом.

Примечание. Используйте MPI_Wtick для определения разрешения MPI_Wtime. Если атрибут MPI_WTIME_IS_GLOBAL определен и true, значение синхронизировано по всем процессам в MPI_COMM_WORLD.

См. также MPI_Wtick, MPI_Attr_get Составитель: Фертиков Вадим Валериевич Редактор: Бунина Т.Д.

Параллельное программирование Message Passing Interface Справочные материалы Часть Для студентов 3 курса дневного отделения Составитель:

Фертиков В.В.

Введение Перед Вами вторая часть пособия, представляющего справочные материалы по использованию MPI (Message Passing Interface, Интерфейса с передачей сообщений) в целях создания переносимых параллельных приложений. Пособие адресовано, прежде всего, программистам на языках C и C++, выбравшим в качестве инструментария параллельного программирования наиболее представительную реализацию стандарта – пакет MPICH (MPI CHameleon).

Пакет распространяется Аргоннской национальной лабораторией США, головной организацией проекта MPI, и считается базовой реализацией стандарта.

Пособие состоит из двух частей. Данная вторая часть будет полезна программисту, накопившему уже некоторый опыт создания MPI-приложений, и содержит сведения, необходимые для дальнейшего совершенствования. Среди них – описание архитектурно-независимого интерфейса для работы с файлами, являющегося частью реализации новой спецификации MPI-2, сведения о работе с пользовательскими топологиями, интеркоммуникаторами, информационными объектами, кэшируемыми атрибутами и пользовательскими обработчиками ошибок. Начинающих MPI-программистов мы отсылаем к части первой, содержащей наиболее часто используемый материал по основным функциям, константам и типам данных, определяемых MPI и реализованных MPICH.

Так же как и в первой части, ниже приводится таблица ссылок на страницы пособия, позволяющая ускорить поиск нужной информации, руководствуясь принятой в MPI нотацией записи идентификаторов.

Таблица ссылок содержит номера страниц пособия 4. Attr_delete 14. File_get_view 24. File_write_all_end 4. Attr_get 14. File_iread 25. File_write_at 4. Attr_put 15. File_iread_at 25. File_write_at_all 5. Cart_coords 15. File_iread_shared 26. File_write_at_all_begin 5. Cart_create 15. File_iwrite 24. File_write_at_all_end 6. Cart_get 16. File_iwrite_at 26. File_write_ordered 6. Cart_map 16. File_iwrite_shared 27. File_write_ordered_begin 7. Cart_rank 17. File_open 27. File_write_ordered_end 7. Cart_shift 17. File_preallocate 27. File_write_shared 7. Cart_sub 17. File_read 28. Graph_create 8. Cartdim_get 18. File_read_all 28. Graph_get 8. Comm_test_inter 18. File_read_all_begin 29. Graph_map 8. DUP_FN 18. File_read_all_end 29. Graph_neighbors 8. Dims_create 19. File_read_at 29. Graph_neighbors_count 9. Errhandler_create 19. File_read_at_all 30. Graphdims_get 9. Errhandler_free 20. File_read_at_all_begin 30. Info_create 9. Errhandler_get 20. File_read_at_all_end 30. Info_delete 10. Errhandler_set 20. File_read_ordered 30. Info_dup 10. Error_class 21. File_read_ordered_begin 31. Info_free 10. Error_string 21. File_read_ordered_end 31. Info_get 11. File_close 21. File_read_shared 31. Info_get_nkeys 11. File_delete 22. File_seek 31. Info_get_nthkey 11. File_get_amode 22. File_seek_shared 32. Info_get_valuelen 11. File_get_atomicity 22. File_set_atomicity 32. Info_set 12. File_get_byte_offset 22. File_set_info 32. Intercomm_create 12. File_get_group 23. File_set_size 34. Intercomm_merge 12. File_get_info 23. File_set_view 32. Keyval_create 13. File_get_position 23. File_sync 35. Keyval_free 13. File_get_position_shared 23. File_write 35. NULL_COPY_FN 13. File_get_size 24. File_write_all 35. NULL_DELETE_FN 14. File_get_type_extent 24. File_write_all_begin 35. Topo_test MPI_Attr_delete Удаляет значение атрибута, связанное с ключом int MPI_Attr_delete(MPI_Comm comm, int keyval) Входные параметры comm Коммуникатор, к которому присоединен атрибут (дескриптор) keyval Значение ключа удаляемого атрибута (целое число) MPI_Attr_get Возвращает значение атрибута ключа int MPI_Attr_get(MPI_Comm comm, int keyval, void *attr_value, int *flag) Входные параметры comm Коммуникатор, к которому присоединен атрибут (дескриптор) keyval Значение ключа (целое число) Выходные параметры attr_value Значение атрибута, если флажок = true flag true, если значение атрибута было извлечено; false, если с ключом никакой атрибут не связан MPI_Attr_put Сохраняет значение атрибута, связанного с ключом int MPI_Attr_put(MPI_Comm comm, int keyval, void *attr_value) Входные параметры comm Коммуникатор, к которому атрибут будет присоединен (дескриптор) keyval Значение ключа, как возвращаемое MPI_KEYVAL_CREATE (целое число) attribute_val Значение атрибута Примечания. Значения постоянных атрибутов MPI_TAG_UB, MPI_HOST, MPI_IO и MPI_WTIME_IS_GLOBAL не могут быть изменены.

Тип значения атрибута – указатель (void*).

Если атрибут уже представлен, будет вызвана функция удаления, определенная при создании соответствующего ключа.

Pages:     | 1 |   ...   | 3 | 4 || 6 | 7 |   ...   | 8 |










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.