1. 개요
2. C code
#include <stdio.h>
#include <math.h>
#include <omp.h>
int main()
{
const long num_step=100000000;
long i;
double sum = 0.0, step, pi, x;
step= (1.0/(double) num_step);
# pragma omp parallel for private(i) reduction(+:sum)
for (i=0; i<num_step; i++){
x = ((double) i - 0.5) * step;
sum += 4.0 / (1.0 + x*x);
}
pi = step * sum;
printf("PI = %17.15lf (Error = %e)\n", pi, fabs(acos(-1.0) - pi));
}
3. Result
1. C code
#include <stdio.h>
#include <string.h>
void ReadMesh(char *Input, char* Output);
int main(void)
{
int i;
char Inputfile[20], Outputfile[20];
omp_set_num_threads(4)
#pragma omp parallel for private(i, Inputfile, Outputfile)
for (i=1; i<=4; i++)
{
sprintf(Inputfile, "t1_%ld.msh",i);
sprintf(Outputfile, "t1Out_%ld.msh",i);
ReadMesh(Inputfile, Outputfile);
}
return 0;
}
void ReadMesh(char *Input, char* Output)
{
// ReadMesh() 정의
}
2. Result
#pragma omp sections
활용