КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Производные типы
Производные типы данных MPI используются для пересылки данных, элементы которых располагаются в памяти не подряд, а с "пробелами". Производный тип сначала создается с помощью вызова подпрограммы-конструктора, а потом регистрируется. Перед завершением программы производный тип должен быть удален. Конструктор векторного типа int MPI_Type_vector(int count, int blocklen, int stride, MPI_Datatype oldtype, MPI_Datatype *newtype) MPI_TYPE_VECTOR(COUNT, BLOCKLEN, STRIDE, OLDTYPE, NEWTYPE, IERR) Входные параметры:
Выходной параметр:
Исходные данные однотипные. Конструктор векторного типа (рис. 3.12) int MPI_Type_hvector(int count, int blocklen, MPI_Aint stride, MPI_Datatype oldtype, MPI_Datatype *newtype)
MPI_TYPE_HVECTOR(COUNT, BLOCKLEN, STRIDE, OLDTYPE, NEWTYPE, IERR) Смысл и назначение параметров этой подпрограммы совпадают с подпрограммой MPI_Type_vector, только значение параметра stride задается в байтах.
Конструктор структурного типа int MPI_Type_struct(int count, int blocklengths[], MPI_Aint indices[], MPI_Datatype oldtypes[], MPI_Datatype *newtype)
MPI_TYPE_STRUCT(COUNT, BLOCKLENGTHS, INDICES, OLDTYPES, NEWTYPE, IERR) Входные параметры:
Выходной параметр:
MPI_Aint - представляет собой скалярный тип, длина которого имеет размер, одинаковый с указателем. Конструктор индексированного типа int MPI_Type_indexed(int count, int blocklens[], int indices[], MPI_Datatype oldtype, MPI_Datatype *newtype)
MPI_TYPE_INDEXED(COUNT, BLOCKLENS, INDICES, OLDTYPE, NEWTYPE, IERR) Входные параметры:
Конструктор индексированного типа int MPI_Type_hindexed(int count, int blocklens[], MPI_Aint indices[], MPI_Datatype oldtype, MPI_Datatype *newtype)
MPI_TYPE_HINDEXED(COUNT, BLOCKLENS, INDICES, OLDTYPE, NEWTYPE, IERR) Смещения indices задаются в байтах: Конструктор типа данных с непрерывным расположением элементов int MPI_Type_contiguous(int count, MPI_Datatype oldtype, MPI_Datatype *newtype)
MPI_TYPE_CONTIGUOUS(COUNT, OLDTYPE, NEWTYPE, IERR) Входные параметры:
Выходной параметр:
Конструктор индексированного типа с блоками постоянного размера int MPI_Type_create_indexed_block(int count, int blocklength, int displacements[], MPI_Datatype oldtype, MPI_Datatype *newtype) MPI_TYPE_CREATE_INDEXED_BLOCK(COUNT, BLOCKLENGTH, DISPLACEMENTS, OLDTYPE, NEWTYPE, IERR) Входные параметры:
Выходной параметр:
Конструктор типа данных, соответствующего подмассиву многомерного массива int MPI_Type_create_subarray(int ndims, int *sizes, int *subsizes, int *starts, int order, MPI_Datatype oldtype, MPI_Datatype *newtype)
MPI_TYPE_CREATE_SUBARRAY(NDIMS, SIZES, SUBSIZES, STARTS, ORDER, OLDTYPE, NEWTYPE, IERR) Входные параметры:
Выходной параметр:
Регистрация производного типа datatype, сконструированного программистом int MPI_Type_commit(MPI_Datatype *datatype)
MPI_TYPE_COMMIT(DATATYPE, IERR) Удаление производного типа datatype int MPI_Type_free(MPI_Datatype *datatype)
MPI_TYPE_FREE(DATATYPE, IERR) Базовые типы данных не могут быть удалены. Определение размера типа datatype в байтах (объем памяти, занимаемый одним элементом данного типа) int MPI_Type_size(MPI_Datatype datatype, int *size)
MPI_TYPE_SIZE(DATATYPE, SIZE, IERR) Выходной параметр - размер size. Определение количества элементов данных в одном объекте типа datatype (его экстент) int MPI_Type_extent(MPI_Datatype datatype, MPI_Aint *extent)
MPI_TYPE_EXTENT(DATATYPE, EXTENT, IERR) Выходной параметр - extent. Смещения могут даваться относительно базового адреса, значение которого содержится в константе MPI_BOTTOM. Определение адреса (address) по заданному положению (location) int MPI_Address(void *location, MPI_Aint *address)
MPI_ADDRESS(LOCATION, ADDRESS, IERR) Может использоваться в программах на языках C и FORTRAN. В C она обычно возвращает тот же адрес, что и оператор &, хотя иногда это не так. Данная подпрограмма может понадобиться в программе на языке FORTRAN, в C есть собственные средства для определения адреса. Определение фактических параметров, использованных при создании производного типа int MPI_Type_get_contents(MPI_Datatype datatype, int max_integers, int max_addresses, int max_datatypes, int *integers, MPI_Aint *addresses, MPI_Datatype *datatypes)
MPI_TYPE_GET_CONTENTS(DATATYPE, MAX_INTEGERS, MAX_ADDRESSES, MAX_DATATYPES, INTEGERS, ADDRESSES, DATATYPES, IERR) Входные параметры:
Выходные параметры:
Определение нижней границы типа данных datatype int MPI_Type_lb(MPI_Datatype datatype, MPI_Aint Misplacement)
MPI_TYPE_LB(DATATYPE, DISPLACEMENT, IERR) Выходной параметр:
Определение верхней границы типа int MPI_Type_ub(MPI_Datatype datatype, MPI_Aint Misplacement) MPI_TYPE_UB(DATATYPE, DISPLACEMENT, IERR) Упаковка данных int MPI_Pack(void *inbuf, int incount, MPI_Datatype datatype, void *outbuf, int outcount, int *position, MPI_Comm comm)
MPI_PACK(INBUF, INCOUNT, DATATYPE, OUTBUF, OUTCOUNT, POSITION, COMM, IERR) При вызове incount элементов указанного типа выбираются из входного буфера и упаковываются в выходном буфере, начиная с положения position. Входные параметры:
Выходной параметр:
Распаковка данных int MPI_Unpack(void *inbuf, int insize, int *position, void *outbuf, int outcount, MPI_Datatype datatype, MPI_Comm comm)
MPI_UNPACK(INBUF, INSIZE, POSITION, OUTBUF, OUTCOUNT, DATATYPE, COMM, IERR) Входные параметры:
Выходной параметр:
Определение объема памяти size (в байтах), необходимого для распаковки сообщения int MPI_Pack_size(int incount, MPI_Datatype datatype, MPI_Comm comm, int *size) MPI_PACK_SIZE(INCOUNT, DATATYPE, COMM, SIZE, IERR) Входные параметры:
Дата добавления: 2014-01-07; Просмотров: 351; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |