Н., Пескова Е. Е., Шаманаев П. А. Основы параллельного программирования с использованием технологий mpi и openmp учебное пособие саранск издательство свмо 2013 2



Pdf көрінісі
бет33/53
Дата07.06.2023
өлшемі6.58 Mb.
#474796
1   ...   29   30   31   32   33   34   35   36   ...   53
ParProg MPI OpenMP

Пример 3.3. 
#include 


52 
#include 
int main() 
{
double start, end;
start= omp_get_wtime();
end= omp_get_wtime();
printf("Время выполнения %lf\n", end_time-start_time);
return 0; 

 
В примере происходит замер начального времени, а затем 
конечного. Результатом программы является время на замер времени, 
которое дает разность времен.
В параллельной области каждой имеющейся нитью может быть 
порождена параллельная секция и последующее их соединение с 
сохранением главенства порождающей нити. Число нитей в параллельной 
секции можно задавать с помощью функции omp_set_num_threads(). Эта 
функция устанавливает значение переменной OMP_NUM_THREADS.
 
Пример 3.4. 
int main() 

 
omp_set_num_threads(3); 
 
int thread; 
#pragma omp parallel

thread=omp_get_thread_num();
 
printf (thread); 

return 0; 

В примере каждая из порожденных нитей выводит на экран свой 
номер. 
В некоторых случаях система может динамически изменять 
количество нитей, используемых для выполнения параллельной области, 
например, для оптимизации использования ресурсов системы. Это 
разрешено делать, если значение переменной среды OMP_DYNAMIC 
установлено 
в 
1
что 
можно 
сделать 
с 
помощью 
функции 
omp_set_dynamic(). Получить значение переменной OMP_DYNAMIС 
можно с помощью функции omp_get_dynamic()


53 
Пример 3.5. 
#include 
#include 
int main()
{
omp_set_dynamic(1);
printf("Значение OMP_DYNAMIC: %d\n", omp_get_dynamic());
#pragma omp parallel num_threads(100)
{
#pragma omp master
{
printf("Параллельная область, %d нитей\n", 
omp_get_num_threads());
}
}
return 0; 

В 
примере 
сначала 
устанавливается 
значение 
переменной 
OMP_DYNAMIC в true. Затем порождается параллельная область со 100 
потоками, в которой главным потоком выводится реальное число 
выполняющих операцию нитей. 
Стратегию обработки вложенных секций можно менять с помощью 
задания 
значений 
переменной 
среды 


Достарыңызбен бөлісу:
1   ...   29   30   31   32   33   34   35   36   ...   53




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет