MPI двигатели: что они собой представляют и как работают?

Особенности двигателя MPI в автомобилях Volkswagen: принцип работы, преимущества использования, описание, плюсы и минусы в эксплуатации.

Современность двигателей Multi Point Injection

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

В действительности это и происходит с двигателями MPI, многие специалисты этой отрасли утверждают, что экономичность и экологическая безопасность являются устаревшими.

Но эти выводы в большей степени верны только для европейских рынков, а что касается российских, то тут все это выглядит отчасти. Поскольку настоящий потенциал данных агрегатов, еще не выявлен в полной мере отечественными автомобилистами.

Производители, делающие ставку на дальновидность, не дают умереть данной технологии и постоянно ее внедряют на автомобили, предназначенные для российских дорог. К примеру, на Skoda Yeti или Volkswagen Polo. Самыми запоминающимися стали представители системы MPI с двигателями, объем которых составлял 1.4 или 1.6 л.

.

, , , . ,    —  , . .  , .  . ,,   .

«» , : MPI , MPI , . : , (, )., (separate memory).

MPI: (communication domains). . . .  —  . MPI , , . , . MPI MPI_COMM_WORLD. , . , .

: , , .

manual pages . , . :

— () , . , ; . («requests»), . , , .

— . , .. . MPI_Send MPI_Barrier , . , , , MPI_Recv ( MPI_Send) : , .

— — , . ( , ).

MPI .

: , .

«MPI_». . , ,  «MPID_», «MPIR_» «PMPI_», .

, : MPI_Get_count, MPI_Comm_rank., , : MPI_Sendrecv,MPI_Alltoall.

» «: «MPI_», ( Type, Comm, Group, Attr, Errhandler ..), ( MPI_Errhandler_create, MPI_Errhandler_set, …). : «-«, , MPI_Barrier, MPI_Unpack.

( ) : MPI_COMM_WORLD, MPI_FLOAT. — , : MPI_Send, MPI_Comm_size.

, . , .

MPI .

MPI . , , .

  • . MPI_Comm_rank MPI_COMM_RANK , , .
  • include ‘mpif.h’ .
  • , , . MPI ;   : : errcode = MPI_Comm_rank( MPI_COMM_WORLD, &rank ); : CALL MPI_COMM_RANK ( MPI_COMM_WORLD, rank, ierror )
  • , . , , «&» , . , rank / .

    , MPI , (, ), MPI_ADDRESS.

  • . , MPI , , :
    • : MPI_Status status; /* */MPI_Probe( MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status ); /* */if( status.MPI_SOURCE == 1 ) { … }if( status.MPI_TAG == tagMsg1 ) { … }
    • , : INTEGER status(MPI_STATUS_SIZE)CALL MPI_PROBE( MPI_ANY_SOURCE,MPI_ANY_TAG,MPI_COMM_WORLD, status )IF( status(MPI_SOURCE) .EQ. 1 ) ….IF( status(MPI_TAG) .EQ. tagMsg1 ) … …

    : — , «_SIZE», .

  • mpicc‘ ‘mpif77‘ ‘mpif90‘ -77 -90 . , ( ..) .

, MPI-UX. , Convex .

Конструкционные особенности двигателя MPI

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

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

Еще одной не привычной особенностью системы Multi Point Injection двигателя является наличие контура водяного охлаждения для топливной смеси. Это объясняется тем, что в области головки цилиндров очень высокая температура, а давление поступающего топлива очень невелико, из-за этого существует большая вероятность проявления газовоздушной пробки и следственно закипания.

. .

, , MPI. , :

  1. . main ( ): MPI_Init( &argc, &argv ); , main   . MPI- mpirun , MPI_Init. 0.
  2. . ,   , MPI: MPI_Abort( , MPI ); MPI_Abort ,   . MPI_COMM_WORLD, ( ) , , -, . MPI_ERR_OTHER, , MPI.
  3. : MPI_Finalize(); , :
    • exit ;
    • MPI_Init return main ;
    • main void, return, MPI_Finalize() main.
  4. : ( ,   ) : int size, rank; MPI_Comm_size( MPI_COMM_WORLD, &size ); MPI_Comm_rank( MPI_COMM_WORLD, &rank );

MPI_Init, MPI_Finalize, MPI_Comm_size MPI_Comm_rank 0. MPI_Abort , 1.

«-«. .

: ,   —  . MPI , , :

  • 1 : int buf[10]; MPI_Send( buf, 5, MPI_INT, 1, 0, MPI_COMM_WORLD );
  • 2 : int buf[10]; MPI_Status status; MPI_Recv( buf, 10, MPI_INT, 0, 0, MPI_COMM_WORLD, &status );

:

  1. , 1 , 2 . , , , , , , , .
  2. . , . MPI_Send , ( 5 ). MPI_Recv . — , — .
  3. . MPI_Send MPI_Recv . MPI MPI_INT, MPI_CHAR, MPI_DOUBLE , MPI_Datatype. «MPI_» (int, char, double, …), . «» MPI , , , MPI . » «.
  4. , . MPI 0 ( -1). 0 1, 1 0.
  5. . 0 32767, . , , , — -:
    1. ;
    2. , , . «#define»  «const int».
  6. (). MPI_Send MPI_Recv.
  7. . : , -, .

«MPI_Status» — .

, MPI_Recv , , ; — MPI status? , MPI_Recv -(» / «),   /, MPI_SOURCE MPI_TAG status.

MPI_ERROR, , — , MPI  , MPI_Recv. , MPI_Recv status.MPI_ERROR 0 (, , MPI_SUCCESS);

MPI_Status , . :

MPI_Status status; int count; MPI_Recv( … , MPI_INT, … , &status ); MPI_Get_count( &status, MPI_INT, &count ); /* … count */ , — MPI_Recv MPI_Get_count , , :

  • count ;
  • .

В условиях России

В условиях России

Моторы с технологией MPI прекрасно подходят для использования в российских условиях.

  • Они не требовательны к качеству топлива, что актуально для российского топливного рынка. Ведь до сих пор топливо на многих российских автозаправках не отличается высоким качеством. Но MPI-моторы способны хорошо и долго работать даже на бензине с запредельным содержанием серы.
  • Простая и надежная, с дополнительной защитой от механических нагрузок, конструкция MPI-двигателя актуальна и для российских дорог, большинство из которых (так же, как и топливо) не отличается высоким качеством.
  • Двигатели MPI соответствуют российским экологическим стандартам по выхлопу в отличие от Европы, где экологические требования к двигателям намного выше.

Вполне возможно, что указанные выше факторы стали причиной открытия производственной линии по выпуску MPI-двигателей на заводе в Калуге. Однако списывать двигатели MPI с европейского рынка еще рано. И подтверждением этому может служить замена немецкими производителями TSI-двигателей 1.2 литра на неприхотливые MPI-двигатели 1.6 литра.

Видео о разборке мотора MPI:

Советы автомобилистам Статья о двигателе MPI — особенности мотора, его эксплуатация, достоинства и недостатки. В конце статьи — видео о разборе мотора MPI.

Технические характеристики движка 1.6 mpi

Мощность

110 л.с.

Рабочий объем

1595 см³

Тип топлива

бензин с октановым числом выше 91

Максимальная скорость

195 км/ч

Расход топлива (город, трасса, смешанный)

8.1 л на 100 км, 5.0, 6.3

Max крутящий момент/частота вращения Нм/мин

155/3800-4000

Время разгона до 100 км/ч

10,7 с

Содержание СО2 (город, трасса, смешанный)

187/117/142

Экологический класс

Евро-4

Впрыск

распределенный

Расположение двигателя

спереди, поперечно

Степень сжатия

10,5:1

Диаметр цилиндра

81,0 мм

Ход поршня

77,4 мм

Порядок работы цилиндров

1-3-4-2

Объем масла

4,5 л

Ресурс

250-300 тыс. км

Характерные преимущества MPI

Характерные преимущества MPI двигателя

Прежде чем пересесть на автомобиль с MPI, многие автомобилисты, которые в той или иной степени знакомы с этой системой очень хорошо подумают о получении набора достоинств, за счет которых установки с многоточечным впрыском заслужили призвание в мире.

Простота устройства

Это не говорит о том, что такие системы проще по сравнению с карбюраторными моделями. Если сопоставить модель TSI, имеющую в конструкции ТНВД и турбокомпрессоры, то естественно превосходство на лицо. И стоимость автомобиля будет ниже и уменьшенные расходы на эксплуатацию и возможность осуществления самостоятельного ремонта.

Нетребовательные запросы по качеству топлива

Гарантировать надлежащее качество топлива и масел везде и всегда не возможно, что очень характерно для России. Использование низкоакктановых бензинов ниже 92 не влияет на работоспособность двигателей MPI, поскольку они очень неприхотливы. Минимальный пробег автомобилей без поломок, по мнению разработчиков, составляет 300 000 км, при условии своевременной замены масла и фильтрующих элементов.

Минимальное значение вероятности перегрева

Угол опережения зажигания регулируемый. Присутствие системы опор двигателя, которая рассчитана на применении резиновых опор. Конечно, на прямую с двигателем это не связано, но на работоспособность мотора и комфортность водителя это все таки имеет значение.

Поскольку за счет опор гасятся вибрации и различные шумы, которые возникают при езде. Интересной особенностью является то, что опоры имеют автоматическую настройку под различные режимы работы двигателя.


?

, MPI_Recv status , MPI_Get_count . , , : MPI_Probe. , , MPI_Recv. MPI_Status MPI_Get_count. MPI ,  MPI_Probe MPI_Recv ( -, ) , MPI_Probe. MPI_Probe :

  1. — . :MPI_Probe( MPI_ANY_SOURCE, tagMessageInt, MPI_COMM_WORLD, &status ); /* MPI_Probe */ /* */MPI_Get_count( &status, MPI_INT, &bufElems );buf = malloc( sizeof(int) * bufElems );MPI_Recv( buf, bufElems, MPI_INT, … /* … MPI_Recv , MPI_Probe ); */ /* MPI_Recv */ /* */ , , , , , «» .
  2. — .  MPI_Probe :MPI_Recv( floatBuf, floatBufSize, MPI_FLOAT, MPI_ANY_SOURCE, tagFloatData, … );MPI_Recv( intBuf, intBufSize, MPI_INT, MPI_ANY_SOURCE, tagIntData, … );MPI_Recv( charBuf, charBufSize, MPI_CHAR, MPI_ANY_SOURCE, tagCharData, … ); , tagCharData , MPI «» MPI_Recv. . MPI_Probe , , :for( i=0; i<3; i++ ) { MPI_Probe( MPI_ANY_SOURCE,MPI_ANY_TAG,MPI_COMM_WORLD,&status ); switch( status.MPI_TAG ) { case tagFloatData: MPI_Recv( floatBuf, floatBufSize, MPI_FLOAT, … ); break; case tagIntData: MPI_Recv( intBuf, intBufSize, MPI_INT, … ); break; case tagCharData: MPI_Recv( charBuf, charBufSize, MPI_CHAR, … ); break; } /* switch */} /* for */

, 4 MPI_Recv , MPI_Probe.
MPI_Probe 2.

.

2 : MPI_ANY_SOURCE — (»   «) MPI_ANY_TAG (» «).MPI — , 0 32767. , MPI_Recv , -.

, MPI_Probe MPI_Iprobe,   (-, , — , MPI_Recv —   ).

: , MPI_Recv /. .

Skoda Octavia 2012, л. с. — просто так

Что такое двигатель Мпи

Красноярск

Skoda Octavia, 2012

588 000 ₽

Что такое двигатель Мпи

Иркутск

Skoda Octavia, 2008

385 000 ₽

Что такое двигатель Мпи

Реж

Skoda Octavia, 2011

360 000 ₽

Что такое двигатель Мпи

Москва

Skoda Octavia, 2012

525 000 ₽

Посмотреть больше машин на Дроме

Участвовать в обсуждениях могут только зарегистрированные пользователи.

Войти Зарегистрироваться

: MPI_Sendrecv.

— :

  • ( !): MPI_Comm_size( MPI_COMM_WORLD, &size ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); if( rank % 2 ) { /* * , * */ MPI_Send(…, ( rank+1 ) % size ,…); MPI_Recv(…, ( rank+size1 ) % size ,…); } else { /* : * , * . */ MPI_Recv(…, ( rank1 ) % size ,…); MPI_Send(…, ( rank+1 ) % size ,…); }
  • : MPI_Send(…, anyRank ,…); /* */ MPI_Recv(…, anyRank ,…); /* */

, MPI , . — MPI_Sendrecv. 12 : 5 , MPI_Send, 7 MPI_Recv. , IF-ELSE . , :

  • , ;
  • MPI_Sendrecv ; , «» ;
  • MPI_Sendrecv MPI_Send MPI_Recv, . «» .

MPI_Sendrecv_replace — . , count : , . :

  • ;
  • ;
  • .

MPI_Sendrecv_replace .

? , , .

1:

— 1 — — 2 — Recv( 2 ) Recv( 1 ) Send( 2 ) Send( 1 )

1 , : , ; ; … SIG_KILL;)

2:

— 1 — — 2 — Send( 2 ) Send( 1 ) Recv( 2 ) Recv( 1 )

2 , , . , /-.

MPI ! MPI_Send, ( MPI_Recv), , . MPI_Recv , , . — — , ( SMP-), : .

MPI_Sendrecv MPI_Sendrecv_replace : 1 2.

Характерные недостатки MPI

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

Исходя из этого не получается приличной динамики, спортивной приемистости, горячего драйва. В современных авто наличие восьми клапанов, как правило, не хватает, поэтому все эти характеристики увеличиваются. Если охарактеризовать данный автомобиль с такой системой, то он вполне сойдет за семейный и спокойный транспорт.

Именно поэтому такие автомобили перестали пользоваться спросом и отходят на задний план в прошлое. Почему же так происходит, т.е. мир сделал оценку качеств данной системы и решил, что ему этого недостаточно и конструктора разработчики принялись проектировать более современные моторы по мощности. Но нет, есть неожиданные сюрпризы в автомобилестроении.

Разработчики фирмы Skoda разработав российский вариант внедорожника для семейного пользования Yeti, в 2014 году намеренно отказались от турбированного двигателя с объемом 1.2 в пользу двигателя MPI с объемом 1.6 и мощностью 110 л.с.

Как заявили разработчики известного всемирного концерна, данный двигатель практически не имеет ничего общего по сравнению со старой моделью мощностью в 105 л.с. Больше всего он подходит к моделям TSI, но у него отсутствует непосредственный впрыск и турбирование.

MPI ?

, ? ,, memcpy, —  . MPI : (MPI_INT, ..). :

  1. MPI ,   , , , «» . , MPI .   MPI . MPI_Sendrecv, .
  2. MPI ( ). , : 3 (IEEE,IBM,Cray); char Windows ,    — KOI-8r ; Intel ( Intel — , — ). , XDR (eXternal Data Representation), Internet. / XDR. , MPI , .
  3. MPI . CHARACTER , , . MPI, , . ,   — MPI_CHARACTER. : — , — . , .
  4. , , , , ( 2, 4 8) — . . . , ( ), , . MPI . , 9 16 : typedef struct { char c; double d; } CharDouble;

.

.

— — . , , — , ( ).

1 ( , ). :

#define msgTag 10 struct { int i; float f[4]; char c[8]; } s; MPI_Send(&s.i, 1, MPI_INT, targetRank, msgTag, MPI_COMM_WORLD ); MPI_Send( s.f, 4, MPI_FLOAT, targetRank, msgTag+1, MPI_COMM_WORLD ); MPI_Send( s.c, 8, MPI_CHAR, targetRank, msgTag+2, MPI_COMM_WORLD ); … MPI_Recv.

2 («»). / , / /:

======== int bufPos = 0; char tempBuf[ sizeof(s) ]; MPI_Pack(&s.i, 1, MPI_INT, tempBuf, sizeof(tempBuf), &bufPos, MPI_COMM_WORLD ); MPI_Pack( s.f, 4, MPI_FLOAT, tempBuf, sizeof(tempBuf), &bufPos, MPI_COMM_WORLD ); MPI_Pack( s.c, 8, MPI_CHAR, tempBuf, sizeof(tempBuf), &bufPos, MPI_COMM_WORLD ); MPI_Send( tempBuf, bufPos, MPI_BYTE, targetRank, msgTag, MPI_COMM_WORLD ); ===== int bufPos = 0; char tempBuf[ sizeof(s) ]; MPI_Recv( tempBuf, sizeof(tempBuf), MPI_BYTE, sourceRank, msgTag, MPI_COMM_WORLD, &status ); MPI_Unpack( tempBuf, sizeof(tempBuf), &bufPos,&s.i, 1, MPI_INT, MPI_COMM_WORLD); MPI_Unpack( tempBuf, sizeof(tempBuf), &bufPos, s.f, 4, MPI_FLOAT,MPI_COMM_WORLD); MPI_Unpack( tempBuf, sizeof(tempBuf), &bufPos, s.c, 8, MPI_CHAR, MPI_COMM_WORLD);

2 , MPI PVM, . , . :

  1. MPI_BYTE — ; ( unsigned char). MPI_BYTE ,   — , .
  2. / ? , , . , , , / XDR (eXternal Data Representation — Sun Microsystems,   ). ,   / / , ;
  3. , MPI , bufPos. /. , , . — » » — ;
  4. : , XDR- , ; XDR- . MPI_Probe / MPI_Get_count / MPI_Recv, — MPI_Pack_size: int bufSize = 0; void *tempBuf; MPI_Pack_size( 1, MPI_INT, MPI_COMM_WORLD, &bufSize ); MPI_Pack_size( 4, MPI_FLOAT, MPI_COMM_WORLD, &bufSize ); MPI_Pack_size( 8, MPI_CHAR, MPI_COMM_WORLD, &bufSize ); tempBuf = malloc( bufSize ); /* … , */

2 : memcpy SMP- / — !

3 («»). , , :

: MPI_Send( &s, sizeof(s), MPI_BYTE, … ); : MPI_Recv( &s, sizeof(s), MPI_BYTE, … );

, , .

.

:

  • , ;
  • : MPI_INT, MPI_CHAR, MPI_LONG, MPI_FLOAT, MPI_DOUBLE ; MPI_BYTE ;
  • , MPI_Type_commit;
  • MPI_Type_free;
    .

MPI_Type_vector MPI_Type_indexed, MPI_Type_struct.

MPI_Type_contiguous : , . MPI_Send .

int a[16]; MPI_Datatype intArray16; MPI_Type_contiguous( 16, MPI_INT, &intArray16 ); MPI_Type_commit( &intArray16 ); MPI_Send( a, 16, MPI_INT, … ); MPI_Send( a, 1, intArray16, … ); MPI_Type_free( &intArray16 ); MPI_Type_count : MPI_Type_count( intArray16, &count ) count 16. , , .

MPI_Type_vector : . . — , , , ( ) :

MPI_Type_vector( int count, /* */ int blocklength, /* */ int stride, /* -, */ MPI_Datatype oldtype, /* , .. */ MPI_Datatype &newtype /* c */); :

  1. ;
  2. ;
  3. , ; , , «» .

MPI_Type_hvector , : , . .

MPI_Type_indexed : «»; , . , #2 #3 — , : .

: .

#define SIZE 100 float a[ SIZE ][ SIZE ]; int pos[ SIZE ] int len[ SIZE ]; MPI_Datatype upper; … for( i=0; i<SIZE; i++ ) { /* xxxxxx */ pos[i] = SIZE*i + i; /* .xxxxx */ len[i] = SIZE — i; /* ..xxxx */ } /* …xxx */ MPI_Type_indexed( SIZE, /* */ len, /* */ pos, /* , */ /* */ MPI_FLOAT, /* */ &upper ); MPI_Type_commit( &upper ); /* ‘float’ * ‘a’ */ MPI_Recv( a, 1, upper, …. ); MPI_Type_hindexed, , .

MPI_Type_struct : . .

MPI_Type_struct( count, /* */ int *len, /* */ /* ( , ) */ MPI_Aint *pos, /* */ /* , */ MPI_Datatype *types, /* */ MPI_Datatype *newtype ); /* */

MPI_Aint: , . , «». MPI_Address: ( & offsetof() ); , MPI_Address.

«»:

#include <stddef.h> /* ‘offsetof()’ */typedef struct { int i; double d[3]; long l[8]; char c;} AnyStruct;AnyStruct st;MPI_Datatype anyStructType;int len[5] = { 1, 3, 8, 1, 1 };MPI_Aint pos[5] = { offsetof(AnyStruct,i), offsetof(AnyStruct,d), offsetof(AnyStruct,l), offsetof(AnyStruct,c), sizeof(AnyStruct) };MPI_Datatype typ[5] = { MPI_INT,MPI_DOUBLE,MPI_LONG,MPI_CHAR,MPI_UB };MPI_Type_struct( 5, len, pos, typ, &anyStructType );MPI_Type_commit( &anyStructType ); /* */MPI_Send( st, 1, anyStructType, … );

: 4 , 5 . , MPI , . MPI_UB («upper bound»).
, , , : typ MPI_LB.

MPI_Type_extent MPI_Type_size : . :

sizeof MPI_Type_extent MPI_type_size
sizeof(1)+sizeof(2)+…
MPI
+
sizeof( )
sizeof( ) +
sizeof( ) + …

, MPI_Type_extent , , MPI_Type_size — ( ). MPI_Type_size , WinMPICH — binding.h , .
sizeof ( — ).

Основные значения MPI

На следующем изображении представлены наиболее часто используемые значения MPI. Вы можете записать файл изображения в формате PNG для автономного использования или отправить его своим друзьям по электронной почте.Если вы являетесь веб-мастером некоммерческого веб-сайта, пожалуйста, не стесняйтесь публиковать изображение определений MPI на вашем веб-сайте.

Что означает аббревиатура mpi

.

«» MPI :

  • ;
  • , ;
  • .

(). , — , ( , ). : , ; .

, , — ? / / , .

, .

:

int MPI_Barrier( MPI_Comm comm );

MPI_Barrier , , . , MPI_Barrier .

MPI , ! , ; — , MPI_Barrier.

? : 0 , MPI_Abort -, MPI_Abort .

, : , , . — . , .

, , . , «» ( «backmasking»; , ). ,:

: 0 xxxx….xxxxxxxxxxxxxxxxxxxx 1 xxxxxxxxxxxx….xxxxxxxxxxxx 2 xxxxxxxxxxxxxxxxxxxxxx….xx : 0 xxxx….xx(xxxxxxxx(||||xxxxxxxx(||xx 1 xxxxxx(||||x….xxxxxxx(xxxxxxxx(||xx 2 xxxxxx(||||xxxxxxxx(||||..xxxxxxxx(xx —————————— > : x . — ( MPI_Barrier | MPI_Barrier

«» .

.

: . (// / ..), .. .

MPI_Reduce : root:

int vector[16];int resultVector[16];MPI_Comm_rank( MPI_COMM_WORLD, &myRank );for( i=0; i

MPI 12:

  • MPI_MAX MPI_MIN ;
  • MPI_SUM ;
  • MPI_PROD ;
  • MPI_LAND, MPI_BAND, MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR — , , ;
  • MPI_MAXLOC, MPI_MINLOC — / — .

: ? :

MPI_MAX, MPI_MIN
MPI_SUM, MPI_PROD , ,
MPI_LAND, MPI_LOR, MPI_LXOR
MPI_LAND, MPI_LOR, MPI_LXOR ( .. )

:

MPI_INT, MPI_UNSIGNED_INT, MPI_LONG, MPI_UNSIGNED_LONG, MPI_SHORT, MPI_UNSIGNED_SHORT MPI_INTEGER
MPI_BYTE ()
MPI_FLOAT, MPI_DOUBLE, MPI_LONG_DOUBLE MPI_REAL, MPI_DOUBLE_PRECISION
(, int) MPI_LOGICAL
() MPI_COMPLEX

. ! , ( «(a+b)+c = a+(b+c)» ) ( «a+b = b+a» ).

MPI_Allreduce : , ‘root’ .

MPI_Reduce_scatter : -, . — . .

MPI_Scan : MPI_Allreduce , . : — i 0 i .

, , . MPI_Op_create MPI_Op_free, MPI_User_function.

, .

— . . MPI_Group , . , ,: MPI_GROUP_EMPTY , , ; MPI_GROUP_NULL , . MPI, — .

(«communication domain») — : , , . . , .

, — (, , ), «» : , , .
.
» «: , — , — .

, ?

  • , , — — — , ;
  • — , . , , . , , MPI_COMM_WORLD ;
  • , , , «-«, ;
  • , .

( » «), (» «) — . ( ) , :

  • , , ;
  • , , .

, , , ! ., , :

  • ;
  • — .

. — «—» :

MPI_Comm tempComm; MPI_Comm_dup( MPI_COMM_WORLD, &tempComm ); /* … tempComm … */ MPI_Comm_free( &tempComm ); — . .. 6

. , .

MPI_Comm_split( existingComm, /* , MPI_COMM_WORLD */ indexOfNewSubComm, /* , */ rankInNewSubComm, /* */ &newSubComm ); /* */ , — ; ( , ). indexOfNewSubComm MPI_UNDEFINED, newSubComm MPI_COMM_NULL, .. 7

. , : , . :

  1. MPI_Comm_group , ;
  2. MPI_Group_xxx ;
  3. MPI_Comm_create ; , — , ;
  4. MPI_Group_free.

, , MPI_Comm_split, . MPI 7 .

, ?
. MPI, . .
«» (, , MPI_Send/MPI_Recv , , ) , , , .

: .

, (). «caching». ; , , :

  • — ;
  • ;
  • .

, MPI . : MPI_TAG_UB, MPI_HOST, MPI_IO, MPI_WTIME_IS_GLOBAL. , ; , , ,, MPI_Errhandler_xxx.

— ; , (, MPP-, , , , .. ).

MPI_Keyval_create MPI_Keyval_free; MPI_Attr_put, MPI_Attr_get MPI_Attr_delete. MPI_Copy_function, .
: MPI_Delete_function, .

.

, MPI_Xxx_free ( MPI_XXX_NULL). MPI-I 7 ( , mpi.h ):

  1. ;
  2. ;
  3. ;
  4. ;
  5. (request’s);
  6. ;
  7. (errhandler’s).

, .

, . — MPI_Xxx_free . , :

  • , MPI_Xxx_free ;
  • MPI, .

( ); , ( ).

:

MPI_Comm subComm; MPI_Group subGroup; int rank; MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_split( MPI_COMM_WORLD, rank / 3, rank % 3, &subComm ); /* subComm, * , . * — subComm. * . */ MPI_Comm_group( subComm, &subGroup ); /* — * , subGroup. */ MPI_Group_free( &subGroup ); /* , * subGroup MPI_GROUP_NULL. * , * . */ MPI_Comm_free( &subComm ); /* , * subComm MPI_COMM_NULL. * , . * . * , * . */ : MPI , MPI_Xxx_free, .

MPI_COMM_WORLD MPI_CHAR: — MPI.

.

a: .MPI_COMM_WORLD . — , . , , «-» «-» , «-«. :

  • : MPI_Bcast ;
  • ;
  • MPI_Comm_xxx, MPI_Group_xxx, , MPI_Comm_size; MPI_Comm_remote_xxx.

. 0 ( -1). . MPI : n- ( ), . (MPI_Topo_test, MPI_Cart_xxx, MPI_Graph_xxx) . — , , , : , .

. , MPI , . , (malloc,open,write,…;), MPI. : , MPI . , MPI_Errhandler_xxx. , , , -.

. MPI , . : MPI , (threads) . , , , MPI_Recv, , . : MPI_Comm_dup !

. MPI-2 , MPI-1 . (Unix/Parix/NFS/…) , MPP-, . / MPI-1 — MPI_IO — , / ; MPI . MPI , , , .

; , — (?), main() :

setvbuf( stdout, NULL, _IOLBF, BUFSIZ ); setvbuf( stderr, NULL, _IOLBF, BUFSIZ ); «#include <stdio.h>» …

13 98 — .20 98 — . , » «

:

Inferno Solutions
Hosting by Hoster.ru

:

Оставьте комментарий