Читайте также: |
|
start_time = omp_get_wtime();
end_time = omp_get_wtime();
tick = omp_get_wtick();
printf(" Время на замер времени %lf\n", end_time-start_time);
printf(" Точность таймера %lf\n", tick);
}
Пример 2a. Работа с системными таймерами на языке Си.
Program example2b
include "omp_lib.h"
Double precision start_time, end_time, tick
start_time = omp_get_wtime()
end_time = omp_get_wtime()
tick = omp_get_wtick()
print *, " Время на замер времени ", end_time-start_time
print *, " Точность таймера ", tick
End
кажись ця канає… якшо нє то шось мутити тре з тою шо вище
#include <stdio.h>
#include <iostream>
#include <omp.h>
using namespace std;
int i,s;
double time,start;
//Тіло програми
main()
{
//Розпаралелення
start = clock();omp_set_num_threads(50);
#pragma omp parallel
{
for(int i=0; i<=10000000; ++i)
{ s+=pow(i,2)};
};
time = clock() - start;printf("%g\t\n", s, time);
return 0;
}
81. Написати програму з використанням бібліотеки OpenMP на мові С/С++ обчислення числа методом чисельного інтегрування (метод середніх прямокутників).
#include <stdio.h>
#include <omp.h>
int main ()
{
int n =100000, i;
double pi, h, sum, x;
h = 1.0 / (double) n;
sum = 0.0;
#pragma omp parallel default (none) private (i,x) shared (n,h,sum)
{
int id = omp_get_thread_num();
int numt = omp_get_num_threads();
for (i = id + 1; i <= n; i=i+numt)
{
x = h * ((double)i - 0.5);
sum += (4.0 / (1.0 + x*x));
}
}
pi = h * sum;
printf("pi is approximately %.16f”, pi);
return 0;
}
82. Написати програму з використанням бібліотеки OpenMP на мові С/С++ додавання двох матриць. Матриця заповнюється значеннями з генератора псевдовипадкових чисел.
#include <stdio.h>
#include <iostream>
#include <omp.h>
using namespace std;
#define M 2
class vvid_N {
public:
double array[N][N];
void Str();
};
//Метод
void vvid_M::Str() {
for(int i=1; i<=N; ++i)
array
for(int j=1; j<=N; ++j)
{
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
array[i][j]=0+rand()%10;
};
}
//Тіло програми
main()
{
//Введення матриць
vvid_N arrayA, arrayB, arrayZ;
cout << "\t\tМатриця А\n";
arrayA.Str();
cout << "\t\tМатриця B\n";
arrayB.Str();
cout << "\t\tМатриця C\n";
arrayC.Str();
//Розпаралелення
omp_set_num_threads(4);
#pragma omp parallel
{
//Цикл обрахунку матриць
for(int a=0; a<N; ++a)
for(int b=0; b<<N; ++b)
{
arrayZ.array[a][b]=arrayA.array[a][b]+arrayB.array[a][b];
};
};
//Цикл виводу матриці
for(int a=1; a<=N; ++a){
for(int b=1; b<=N; ++b){
printf("%g\t\n", arrayZ.array[a][b]);
}
};
return 0;
}
83---84---
85---
86---
87---
88. написати програму з використанням бібліотеки Posix threads на мові С з метою тестування роботи кластера під керуванням OpenMosix. Тестування провести з замірами часу.
void print_message_function(void *ptr);
main()
{
pthread_t thread1, thread2;
char *message1 = "Hello";
char *message2 = "World";
pthread_create(&thread1, pthread_attr_default,
(void*)&print_message_function, (void*) message1);
pthread_create(&thread2, pthread_attr_default,
(void*)&print_message_function, (void*) message2);
exit(0);
}
void print_message_function(void *ptr)
{
char *message;
message = (char *) ptr;
printf("%s ", message);
}
Дата добавления: 2015-08-18; просмотров: 83 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Метод Гауса - паралельний алгоритм | | | Октябрь |