Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <omp.h>
- #include <stdlib.h>
- #define n 1024*1024*500
- double funk (double a)
- {
- double res = (a/n + 1.0/(2.0*n))*(a/n + 1.0/(2.0*n))/n ;
- return res;
- }
- void main()
- {
- double mas[100];
- double res = 0;
- #pragma omp parallel
- {
- int id = omp_get_thread_num();
- int num = omp_get_num_threads();
- int part = n / num;
- #pragma omp parallel for
- for( int i = id*part; i < (id+1)*part; ++i)
- {
- mas[id] += funk(i);
- }
- }
- for (int i = 0; i< 100; i++)
- {
- res += mas[i];
- }
- /*for (int i = 0; i < n; i++)
- {
- res += funk(i);
- }*/
- printf("%f\n", res);
- }
- ///////////////////////////////////////////
- #pragma omp parallel reduction (+ : thing)
- {
- #pragma omp for
- for( int i = 0; i < n; ++i)
- {
- thing += funk(i);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement