²é¿´: 862  |  »Ø¸´: 0

_ÁúÆé_

гæ (³õÈëÎÄ̳)

[½»Á÷] MPI²¢ÐÐÇó½âһά²´ËÉ·½³Ì£¬sendrecvº¯ÊýÓÐÎÊÌ⣬´úÂëÈçÏ£¬Ï£Íû´ó¼Ò°ï°ïæ

//һά²´ËÉ·½³Ì u(x)=x^3,cpuΪËĺË
#include "stdio.h"
#include "math.h"
#define MPICH_SKIP_MPICXX  //ûÓÐÕâ¾ä¾Í»á³öÏÖoverriding virtual function differs from 'MPI::µÄ±àÒë´íÎó
#include "mpi.h"//½«º¯Êý¿â°üº¬½øÀ´
#include <stdio.h>
#pragma comment (lib, "mpi.lib"//ûÓÐÕâ¾ä¾Í»á³öÏÖunresolved external symbol _MPI_FinalizeµÄÁ¬½Ó´íÎó¡£
double f(double x)
{double y;
y=6*x;
return y;
}
int main( int argc, char *argv[])
{
double l=1;//³¤¶È
double w=0,e=1;//×óÓұ߽çÌõ¼þ
int num=4;//½ø³ÌÊý
int n=5;//Íø¸ñÊý
double dd=l/n/num;//Íø¸ñ´óС
double u[7],u0[7];
double eps=0;
int i,j;
int  myid, numprocs, namelen;//¶¨Òå½ø³ÌºÅ¡¢½ø³ÌÊý¡¢½ø³ÌÃû
double startwtime, endwtime;//¶¨ÒåÆðֹʱ¼ä£¬ÎªÁ˼ÆËãЧÂÊ
char processor_name[MPI_MAX_PROCESSOR_NAME];//Óýø³ÌÃû×µÄ×÷Ϊ³¤¶È
MPI_Init(&argc,&argv);//³õʼ»¯Óï¾ä£¬Ã¿¸ö³ÌÐò¶¼Ò»Ä£Ò»Ñù
MPI_Status  status;
MPI_Datatype  onerow;
startwtime = MPI_Wtime();//µÃµ½¿ªÊ¼Ê±¼ä
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);//µÃµ½½ø³ÌÊý
MPI_Comm_rank(MPI_COMM_WORLD,&myid);//µÃµ½½ø³ÌºÅ
MPI_Get_processor_name(processor_name,&namelen);//µÃµ½½ø³ÌÃû£¬Æäʵ½ø³ÌÃû²»ÊDZØÐëµÄ
MPI_Type_contiguous(1,MPI_DOUBLE,&onerow);
MPI_Type_commit( &onerow );
for(j=0;j<n+2;j++){       
u[j]=0;
u[0]=0;
u[n+1]=1;}//³õʼ»¯
te:
eps=0;
for(j=1;j<n+1;j++){
        u0[j]=u[j];}
//for(j=0;j<n+2;j++){
                   //u0[j]=pow(((j-0.5)*dd+myid*n*dd),3);
//u0[j]=u[j];}
int up=myid-1;
if (up<0) {up=MPI_PROC_NULL;}
int down=myid+1;
if (down>1){ down=MPI_PROC_NULL;}
//if(myid<3&&myid>0) {
//MPI_Send(&u[1],1,MPI_DOUBLE,myid+1,1000,MPI_COMM_WORLD);
///MPI_Recv(&u[n+1],1,MPI_DOUBLE,myid,1000,MPI_COMM_WORLD,&status);
//MPI_Send(&u[n],1,MPI_DOUBLE,myid-1,1000,MPI_COMM_WORLD);
//MPI_Recv(&u[0],1,MPI_DOUBLE,myid,1000,MPI_COMM_WORLD,&status);}
//if (myid>0) {}
if(myid>0&&myid<3){
MPI_Sendrecv(&u[1],1,onerow,down,1000,&u[n+1],1,onerow,myid,1000,MPI_COMM_WORLD,&status);//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
MPI_Sendrecv(&u[n],1,onerow,up,1000,&u[0],1,myid,up,1000,MPI_COMM_WORLD,&status);}//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
for(i=1;i<=n;i++)
{
double t=(i-0.5)*dd+myid*n*dd;
if(i==1){
u=(u[i+1]+2*u[0]-f(t)*dd*dd)/3.0;
continue;}
if(i==(n)){
u=(2*u[n+1]+u[i-1]-f(t)*dd*dd)/3.0;
continue;}
u=(u[i-1]+u[i+1]-f(t)*dd*dd)/2;
}
//if(myid<num-1){u[myid][n+1]=/*u[myid+1][0];}*/(u[myid+1][1]+u[myid][n]-f((myid+1)*n*dd)*dd*dd)/2;
//u[myid+1][0]=u[myid][n+1];}
//if(myid>0){u[myid][0]=/*u[myid-1][n+1];}*/(u[myid][1]+u[myid-1][n+1]-f(myid*n*dd)*dd*dd)/2;
//u[myid-1][n+1]=u[myid][0];}
for(j=1;j<n+1;j++){
        eps=eps+fabs(u0[j]-u[j]);}
if(eps>0.1){goto te;}
endwtime = MPI_Wtime();//µÃµ½ÖÕֹʱ¼ä
printf("wall clock time = %f\n", endwtime-startwtime);//µÃµ½Ç½ÉÏʱ¼ä
MPI_Type_free( &onerow );
MPI_Finalize();//¹Ø±ÕMPI
        for(j=1;j<n+1;j++){
                printf("u[%d]=%f\n",j,u[j]);}
return 0;
}
»Ø¸´´ËÂ¥
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ _ÁúÆé_ µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 284Çóµ÷¼Á +15 Zhao anqi 2026-03-22 15/750 2026-03-25 12:51 by wht0531
[¿¼ÑÐ] »¯Ñ§µ÷¼Á +6 yzysaa 2026-03-21 6/300 2026-03-25 09:27 by aa331100
[¿¼ÑÐ] 318Çóµ÷¼Á +5 plumÀî×Ó 2026-03-21 8/400 2026-03-25 09:26 by aa331100
[¿¼ÑÐ] 085601Çóµ÷¼Á×Ü·Ö293Ó¢Ò»Êý¶þ +3 ¸ÖÌú´óÅÚ 2026-03-24 3/150 2026-03-24 22:03 by bingxueer79
[¿¼ÑÐ] ʳƷר˶ һ־Ը˫һÁ÷ 328 +3 xiaom99 2026-03-21 4/200 2026-03-24 21:20 by lailaisimei
[¿¼ÑÐ] 292Çóµ÷¼Á +4 ¶ì¶ì¶ì¶î¶î¶î¶î¶ 2026-03-24 4/200 2026-03-24 16:41 by peike
[¿¼ÑÐ] Ò»Ö¾Ô¸¹ú¿Æ¹ý³ÌËù081700£¬274Çóµ÷¼Á +3 ÈýË®ÑÐ0Ë®Á¢·½ 2026-03-23 3/150 2026-03-23 23:11 by MajorWen
[¿¼ÑÐ] »¯Ñ§308·ÖÇóµ÷¼Á +3 ÄãºÃÃ÷ÌìÄãºÃ 2026-03-23 3/150 2026-03-23 20:11 by macy2011
[¿¼ÑÐ] ½ÓÊÕ2026˶ʿµ÷¼Á(ѧ˶+ר˶) +4 allen-yin 2026-03-23 6/300 2026-03-23 15:04 by Íô£¡£¿£¡
[¿¼ÑÐ] 276Çóµ÷¼Á +3 YNRYG 2026-03-21 4/200 2026-03-23 08:31 by ×íÔÚ·çÀï
[¿¼ÑÐ] Çóµ÷¼ÁԺУÐÅÏ¢ +6 CX 330 2026-03-21 6/300 2026-03-22 15:25 by ÎÞи¿É»÷111
[¿¼ÑÐ] Çóµ÷¼Á +3 13341 2026-03-20 3/150 2026-03-21 18:28 by ѧԱ8dgXkO
[¿¼ÑÐ] Ò»Ö¾Ô¸Éî´ó£¬0703»¯Ñ§£¬×Ü·Ö302£¬Çóµ÷¼Á +4 ÆßÔÂ-ÆßÆß 2026-03-21 4/200 2026-03-21 18:20 by ѧԱ8dgXkO
[¿¼ÑÐ] ÇóÖú +5 ÃÎÀïµÄÎÞÑÔ 2026-03-21 6/300 2026-03-21 17:51 by ѧԱ8dgXkO
[¿¼ÑÐ] 313Çóµ÷¼Á +4 ËÁÈþ·¡Ò¼22 2026-03-19 4/200 2026-03-21 17:33 by ColorlessPI
[»ù½ðÉêÇë] ѧУÒѾ­Ìá½»µ½NSFC£¬»¹ÄÜÐÞ¸ÄÂ𣿠40+4 babangida 2026-03-19 9/450 2026-03-21 16:12 by babangida
[¿¼ÑÐ] Çóµ÷¼Á +6 Mqqqqqq 2026-03-19 6/300 2026-03-21 08:04 by JourneyLucky
[¿¼ÑÐ] ²ÄÁÏѧ˶297ÒѹýËÄÁù¼¶Çóµ÷¼ÁÍÆ¼ö +11 adaie 2026-03-19 11/550 2026-03-20 21:30 by laoshidan
[¿¼ÑÐ] Ò»Ö¾Ô¸Î÷°²½»Í¨´óѧ ѧ˶ 354Çóµ÷¼Á211»òÕß˫һÁ÷ +3 ÎÒÏëÒª¶ÁÑо¿Éú 2026-03-20 3/150 2026-03-20 20:13 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸ÄÏÀí¹¤085701»·¾³302Çóµ÷¼ÁԺУ +3 ¿ûè÷ÎÀ¶Ó 2026-03-20 3/150 2026-03-20 19:28 by zhukairuo
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û