Оқулық Қазақстан Республикасы Білім және ғылым министрлігі бекіткен Алматы, 2011


int MPI_Scatter(void *sbuf, int scount, MPI_Datatype



Pdf көрінісі
бет108/121
Дата31.08.2022
өлшемі2,81 Mb.
#38343
түріОқулық
1   ...   104   105   106   107   108   109   110   111   ...   121
Байланысты:
duisembiev-parallel-esep

int MPI_Scatter(void *sbuf, int scount, MPI_Datatype 
stype, void *rbuf, int rcount, MPI_Datatype rtype, int 
source, MPI_Comm comm) 

sbuf - хабарламаны жіберу буферінің басталу адресі; 

scount - хабарламадағы жіберілетін элементтер саны; 

stype - жіберілген элементтер типтері; 

OUT 
rbuf - хабарламаны жинау буферінің басталу адресі; 

rcount – қабылданатын хабарламадағы элементтер саны; 

rtype – қабыданатын хабарламадағы элементтер типі; 

source – деректерді жинайтын процесс нӛмірі; 

comm - коммуникатор идентификаторы. 
Келесі мысалда массив жолдарын тарату үшін MPI_scatter 
функциясын пайдалану кӛрсетілген. Еске сала кетсек, Fortran тілінен 
айырмашылығы, Си тілінде массивтер жадыда жолдар бойымен сақталады. 
#include "mpi.h"
#include  
idefine SIZE 4 
int main(argc,argv) 
int argc; 
char *argv[]; 

int numtasks, rank, sendcount, recvcount, source; 
float sendbuf[SIZE] [SIZE] = { 
{1.0, 2.0, 3.0, 4.0}, 
{5.0, 6.0, 7.0, 8.0}, 
{9.0, 10.0, 11.0, 12.0}, 
{13.0, 14.0, 15.0, 16.0} }; 
float recvbuf[SIZE]; 
MPI_Init(&argc,&argv); 
MPI_Comm_rank(MPI_COMM_WORLD, 
&rank); 
MPI_Comm_size(MPI_COMM_WORLD, 
&numtasks); 


189 
if (numtasks == SIZE) {
source = 1;
sendcount = SIZE;
recvcount = SIZE; 
MPI_Scatter(sendbuf, 
sendcount, 
MPI_FLOAT, 
recvbuf, 
recvcount, 
MPI_FLOAT, 
source, 
MPI_COMM_WORLD); 
printf("rank= %d Results: %f %f %f %f\n", rank, 


Достарыңызбен бөлісу:
1   ...   104   105   106   107   108   109   110   111   ...   121




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет