横井さんのロビー/分散ネットワーク
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[横井]]
#ref(seito.docx,,生徒側テキスト)
http://www.cenav.org/raspi2a/
↑で構築now
/* mpicc pix_graph.c -o ./pix_graph -lm -lX11 -L/usr/X11/...
#include "mpi.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define NUM_MAX 100000000
#define PI 3.141592653589793
typedef struct
{
double x;
double y;
}POINT;
int main(int argc, char* argv[])
{
POINT p;
double r, pi, s, e;
int cnt, total_cnt, i, rank, size, local_cnt, start, en...
MPI_Init(&argc, &argv); /* MPI 初期化 (プロセス数、プロ...
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
s=MPI_Wtime();
local_cnt=(int)((double)NUM_MAX/(double)size);
start=rank*local_cnt;
end=(rank+1)*local_cnt;
srand((unsigned int)time(NULL)*(rank+1));
cnt = 0;
for (i = start; i < end-start; i++){ /* ランダムに点を...
p.x = (double)rand() / (double)RAND_MAX;
p.y = (double)rand() / (double)RAND_MAX;
r = sqrt(p.x * p.x + p.y * p.y);
if ( r < 1.0 ){
cnt++;
}
}
sendbuf = cnt;
recvbuf = 0;
MPI_Allreduce(&sendbuf, &recvbuf, 1, MPI_INT, MPI_SUM, ...
total_cnt =recvbuf;
pi = 4.0 * (double)total_cnt / (double)NUM_MAX;
if(rank==0){
printf("pi: %18.16lf, Error: %18.16lf \n",pi, fabs(pi...
e=MPI_Wtime();
printf("時間 = %f[s]\n",e-s);
}
MPI_Finalize();
return 0;
}
終了行:
[[横井]]
#ref(seito.docx,,生徒側テキスト)
http://www.cenav.org/raspi2a/
↑で構築now
/* mpicc pix_graph.c -o ./pix_graph -lm -lX11 -L/usr/X11/...
#include "mpi.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define NUM_MAX 100000000
#define PI 3.141592653589793
typedef struct
{
double x;
double y;
}POINT;
int main(int argc, char* argv[])
{
POINT p;
double r, pi, s, e;
int cnt, total_cnt, i, rank, size, local_cnt, start, en...
MPI_Init(&argc, &argv); /* MPI 初期化 (プロセス数、プロ...
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
s=MPI_Wtime();
local_cnt=(int)((double)NUM_MAX/(double)size);
start=rank*local_cnt;
end=(rank+1)*local_cnt;
srand((unsigned int)time(NULL)*(rank+1));
cnt = 0;
for (i = start; i < end-start; i++){ /* ランダムに点を...
p.x = (double)rand() / (double)RAND_MAX;
p.y = (double)rand() / (double)RAND_MAX;
r = sqrt(p.x * p.x + p.y * p.y);
if ( r < 1.0 ){
cnt++;
}
}
sendbuf = cnt;
recvbuf = 0;
MPI_Allreduce(&sendbuf, &recvbuf, 1, MPI_INT, MPI_SUM, ...
total_cnt =recvbuf;
pi = 4.0 * (double)total_cnt / (double)NUM_MAX;
if(rank==0){
printf("pi: %18.16lf, Error: %18.16lf \n",pi, fabs(pi...
e=MPI_Wtime();
printf("時間 = %f[s]\n",e-s);
}
MPI_Finalize();
return 0;
}
ページ名: