20
Привязка к языку Fortran
В
программах
на
языке
Fortran
директивы
компилятора
,
имена
подпрограмм
и
переменных
окружения
начинаются
с
OMP
или
OMP_
.
Формат
директивы
компилятора
:
{!|C|*}$OMP директива [оператор_1[, оператор_2, …]]
Директива
начинается
в
первой
(
фиксированный
формат
записи
текста
языка
Fortran 77)
или
произвольной
(
свободный
формат
)
позиции
строки
.
Допускается
продолжение
директивы
в
следующей
строке
,
в
этом
случае
действует
стандартное
в
данной
версии
языка
правило
для
обозначения
строки
продолжения
(
непробельный
символ
в
шестой
позиции
для
фиксированного
формата
записи
и
амперсанд
для
свободного
формата
).
Пример программы на языке Fortran с использованием OpenMP
program omp_example
integer i, k, N
real*4 sum, h, x
print *, "Please, type in N:"
read *, N
h = 1.0 / N
sum = 0.0
C$OMP PARALLEL DO SCHEDULE(STATIC) REDUCTION(+:sum)
do i = 1, N
x = i * h
sum = sum + 1.e0 * h / (1.e0 + x**2)
enddo
print *, 4.0 * sum
end
Привязка к языку C
В
программах
на
языке
C
прагмы
,
имена
функций
и
переменных
окружения
OMP
начинаются
с
omp
,
omp_
или
OMP_
.
Формат
директивы
:
#pragma omp директива [оператор_1[, оператор_2, …]]
В
OpenMP-
программе
используется
заголовочный
файл
omp.h
.
Пример программы на языке С с использованием OpenMP
#include "omp.h"
#include <stdio.h>
double f(double x)
{
return 4.0 / (1 + x * x);
}
main () {
const long N = 100000;
long i;
double h, sum, x;
sum = 0;