Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VOPROSY_Kolesnikov.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
613.39 Кб
Скачать
  1. Функції mpi_Wtime(). Призначення, опції, приклади застосування

MPI определяет таймеры, поскольку таймер необходим для изучения характеристик параллельных программ, а существующие таймеры (в POSIX, в языке ФОРТРАН90) неудобны или не обеспечивают доступ к таймерам с высоким разрешением.

Синтаксис функции MPI_WTIME() представлен ниже.

MPI_WTIME()

double MPI_Wtime(void)

DOUBLE PRECISION MPI_WTIME()

Функция MPI_WTIME возвращает количество секунд, представляя полное время по отношению к некоторому моменту времени в прошлом. Этот момент в прошлом не изменяется на протяжении времени жизни процесса. Эта функция универсальна, поскольку она возвращает секунды, а не количество тактовых импульсов.

Функцию можно использовать следующим образом:

{ double starttime, endtime;

starttime = MPI_Wtime();

.... stuff to be timed ...

endtime = MPI_Wtime();

printf("That took %f seconds\n",endtime-starttime); }

Измеренное время локально относительно узла, вызвавшего эту функцию. Разные узлы не обязательно возвращают одинаковое время.

Синтаксис функции MPI_WTICK() представлен ниже.

MPI_WTICK ()

double MPI_Wtick(void)

DOUBLE PRECISION MPI_WTICK()

Функция MPI_WTICK возвращает величину разрешения MPI_WTIME в секундах, то есть время в секундах между последовательными импульсами, представленное с двойной точностью. Например, если часы выполнены как аппаратный счетчик, который инкрементируется каждую миллисекунду, то значение, возвращаемое MPI_WTICK, должна быть  .

  1. Функції omp_get_thread_num() та omp_get_num _thread(). Призначення, опції, приклади застосування

Функция omp_get_num_threads

Возвращает число нитей в группе выполняющих параллельную работу на момент обращения к функции (аналог MPI_Comm_size(…)).

int omp_get_num_threads(void)

Если число нитей явным образом не установлено пользователем (ф-ция omp_set_num_threads или пер-ная OMP_NUM_THREADS), то по умолчанию устанавливается значение, определяемое конкретной реализацией. Эта функция возвращает значение числа нитей ближайшей к вызову параллельной области программы. Если вызов осуществляется из последовательной части программы или вложенной параллельной области, которая выполняется последовательно, то функция возвращает значение равное 1.

Функция omp_get_thread_num

Возвращает номер нити, которая вызвала эту функцию в группе. Номер нити располагается между 0 и значением функции omp_get_num_threads()–1 включительно. Основная нить группы всегда имеет номер 0.

int omp_get_thread_num(void);

Если функция вызывается из последовательной области, то вызов функции omp_get_num_threads() возвращает 0.

Используя функцию omp_get_thread_num можно распределить работу между нитями. Например:

if (omp_get_thread_num() == 3 )

< код для нити с номером 3 >

else < код для всех остальных нитей >

часть программы в if будет выполнена только нитью с номером 3, а часть else - всеми остальными.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]