修論ツール
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[横井さんのロビー/備忘録]]
#ref(pisample.c)
#ref(random.h)
#ref(util_okuhara.h)
ーーーーー以下、pisample.cソースコードーーーーー
#include <stdio.h>
#include <math.h>
#include <mpi.h>
void main(int argc, char* argv[]){
double PI25DT = 3.141592653589793238462643;
double mypi, pi, h, sum, x, f, a;
double t1, t2, t0, t_w;
int n, myid, numprocs, i, rc;
int ierr;
ierr = MPI_Init(&argc, &argv);
ierr = MPI_Comm_rank(MPI_COMM_WORLD, &myid);
ierr = MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
if(myid==0){
printf(“Enter the number of intervals \n”);
scanf(“%d”, &n);
printf(“n=%d \n”, n)
}
ierr = MPI_Barrier(MPI_COMM_WORLD);
t1 = MPI_Wtime();
ierr = MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
h = 1.0 / n;
sum = 0.0;
for(i=myid+1; i<=n; i+=numprocs){
x = h * (i – 0.5);
sum = sum + 4.0 / (1.0 + x*x);
}
mypi = h * sum;
MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_...
if(myid == 0){
printf(“pi is approximately: %18.16lf Error is: %18...
fabs(pi-PI25DT));
}
ierr = MPI_Barrier(MPI_COMM_WORLD);
t2 = MPI_Wtime();
t0 = t2 – t1
ierr = MPI_Reduce(&t0, &t_w, 1, MPI_DOUBLE, MPI_MAX, 0...
if(myid == 0){
printf(“execution time = : %8.4lf [sec.] \n”, t_w);
}
rc = MPI_Finalize();
}
コンパイル方法~
mpicc pisample.c -o pisample
実行方法~
mpirun --hostfile host -np 3 ./pisample
↑のnpの後の3は並列数を表す
途中でEnter the number of intervalsと言われて、整数を入力...
しかし、どういう意味があるかまだ理解していない。
恐らく、正確にする最大の桁数?
**参考サイト [#w99fc29c]
http://aero.me.tut.ac.jp/Lectures/CFD/%89%89%8FK%82l%82o%...
http://www.r-ccs.riken.jp/r-ccssite/wp-content/uploads/20...
https://www.cc.u-tokyo.ac.jp/public/VOL9/special/10.pdf
終了行:
[[横井さんのロビー/備忘録]]
#ref(pisample.c)
#ref(random.h)
#ref(util_okuhara.h)
ーーーーー以下、pisample.cソースコードーーーーー
#include <stdio.h>
#include <math.h>
#include <mpi.h>
void main(int argc, char* argv[]){
double PI25DT = 3.141592653589793238462643;
double mypi, pi, h, sum, x, f, a;
double t1, t2, t0, t_w;
int n, myid, numprocs, i, rc;
int ierr;
ierr = MPI_Init(&argc, &argv);
ierr = MPI_Comm_rank(MPI_COMM_WORLD, &myid);
ierr = MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
if(myid==0){
printf(“Enter the number of intervals \n”);
scanf(“%d”, &n);
printf(“n=%d \n”, n)
}
ierr = MPI_Barrier(MPI_COMM_WORLD);
t1 = MPI_Wtime();
ierr = MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
h = 1.0 / n;
sum = 0.0;
for(i=myid+1; i<=n; i+=numprocs){
x = h * (i – 0.5);
sum = sum + 4.0 / (1.0 + x*x);
}
mypi = h * sum;
MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_...
if(myid == 0){
printf(“pi is approximately: %18.16lf Error is: %18...
fabs(pi-PI25DT));
}
ierr = MPI_Barrier(MPI_COMM_WORLD);
t2 = MPI_Wtime();
t0 = t2 – t1
ierr = MPI_Reduce(&t0, &t_w, 1, MPI_DOUBLE, MPI_MAX, 0...
if(myid == 0){
printf(“execution time = : %8.4lf [sec.] \n”, t_w);
}
rc = MPI_Finalize();
}
コンパイル方法~
mpicc pisample.c -o pisample
実行方法~
mpirun --hostfile host -np 3 ./pisample
↑のnpの後の3は並列数を表す
途中でEnter the number of intervalsと言われて、整数を入力...
しかし、どういう意味があるかまだ理解していない。
恐らく、正確にする最大の桁数?
**参考サイト [#w99fc29c]
http://aero.me.tut.ac.jp/Lectures/CFD/%89%89%8FK%82l%82o%...
http://www.r-ccs.riken.jp/r-ccssite/wp-content/uploads/20...
https://www.cc.u-tokyo.ac.jp/public/VOL9/special/10.pdf
ページ名: