|
Sharov rashiov nomidagi samarqand davlat
|
bet | 15/18 | Sana | 07.02.2024 | Hajmi | 435,82 Kb. | | #152842 |
Bog'liq Mustaqil ishi Xakimov Allamurod (3)OUT flag - ayirboshlash operatsiyalarining tugallanganligi belgisiagar )aloqa hodisasi tugallangan bo’lsa TRUE (OUT));
OUT statuses - xabar parametrlari;
Belgilangan identifikatorlar bilan bog'liq barcha operatsiyalar bajarilgan bo'lsa (statuslar massividagi xabar parametrlarini ko'rsatgan holda) flag parametrida 1 qiymatini qaytaradi. Aks holda, 0 qaytariladi va statuslar massivining elementlari aniqlanmagan.
intMPI_Testany(int count, MPI_Request*requests, int*index, int*flag, MPI_Status*status)
OUT index - tugallangan almashinuv operatsiyalari soni
OUT status - xabar parametrlari
Agar pastki dastur chaqirilganda, xabar almashish operatsiyalaridan kamida bittasi tugallangan bo'lsa, u holda flag parametrida 1 qiymati qaytariladi, indeks requests massividagi mos keladigan elementning raqamini o'z ichiga oladi ,status esa xabar parametrlari hisoblanadi. .
intMPI_Testsome( int incount, MPI_Request*requests, int*outcount, int*indexes, MPI_Status*statuses)
incount - identifikatorlar soni
OUT outcount - yakunlangan ayirboshlash operatsiyalari identifikatorlari soni
OUT indexes - yakunlangan almashinuv operatsiyalari raqamlari massivi
OUT statuses - tugallangan operatsiyalar parametrlari
Quyidastur MPI_Waitsome kabi ishlaydi, ammo qaytish darhol bo'ladi. Agar ko'rsatilgan operatsiyalarning hech biri bajarilmagan bo'lsa, u holda outcount qiymati nolga teng.
Blokirovkasiz xabar almashish holatini tekshirish funksiyalari va ularni amalda qoʻllanilishi
Blokirovkasiz xabar almashishning MPI_Test funksiyasi dastur kodi va natijasi .
#include
#include
using namespace std;
int main(int argc,char *argv[]){
int rank , a , b , flag ;
MPI_Request reqs1,reqs;
MPI_Status status;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
a = 0 ;
b = 0 ;
if(rank == 0){
a = 2806;
b = 2005;
MPI_Isend(&a,1,MPI_INT,1,10,MPI_COMM_WORLD,&reqs1);
MPI_Isend(&b,1,MPI_INT,1,15,MPI_COMM_WORLD,&reqs1);
}
if(rank == 1){
MPI_Irecv(&a,1,MPI_INT,0,10,MPI_COMM_WORLD,&reqs1);
MPI_Test(&reqs1,&flag,&status);
cout<<"Flag = "<MPI_Irecv(&b,1,MPI_INT,0,15,MPI_COMM_WORLD,&reqs1);
MPI_Test(&reqs1,&flag,&status);
cout<<"Flag = "<MPI_Wait(&reqs1,&status);
MPI_Test(&reqs1,&flag,&status);
cout<<"Flag = "<}
cout<<"Prossesor : "<}
cout<<"jarayon : "<}
}
cout<<"jarayon : "<Download 435,82 Kb. |
| |