Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Вавренюк Основы программирования МРР-АРХИТЕКТУР 2010

.pdf
Скачиваний:
29
Добавлен:
16.08.2013
Размер:
1.59 Mб
Скачать

printf("S= %f step= %f\n",s,step);

printf("Simpson1 begins\n"); t1=timer_now();

for(ii=0;ii<10;ii++)

 

{

 

 

n=500;

 

 

intlast=12345.;

 

 

do

 

 

{

 

 

integr=0.0;

 

 

n=n*2;

 

 

step=(xk-x0)/(n-1);

 

x[0]=x0;

 

 

for(i=1;i<n;i++)

 

{

 

 

x[i]=x[i-1]+step;

 

y[i]=sin(x[i]);

 

}

 

 

/* vsin2sf(n,y,x,1,1);

*/

vsimpsonsf(n,step,y,x,1,1);

integr=y[n];

 

 

delta=intlast-integr;

 

intlast=integr;

 

 

printf("

delta=%f\n",delta);

} while (fabs(delta)>eps);

}

t2=timer_now();

printf("TIME1*10= %d \n",(t2-t1)); printf("integr_summa=%f\n",integr);

}

81

Приложение 2

Библиотека некоторых функций Параллельного Си

Библиотека «The Parallel С Run Time Library» и «Optimized DSP/Vector Library for TMS320C40/C30» –

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

Эта библиотека содержит набор функций, которые могут выполняться в программе, но не включаются сами собой. Такие функции, прежде всего, двух типов: стандартный набор функций языка Си, а также специальные канальные функции, обслуживающие обмен информацией между процессорами. Для подключения соответствующей библиотеки функций необходимо использовать стандартный для Си оператор include <заголовок.h >. В табл. П.2.1 приведены некоторые из этих функций с указанием имени заголовочного файла.

 

 

 

 

 

 

 

Таблица П.2.1

 

 

 

 

 

 

 

 

Имя

Краткое описание

Обращение и типы аргу-

Описание аргументов

Заголовочный

функ-

ментов (прототип)

файл

 

ции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

abs

Абсолютная

вели-

int abs(int arg)

 

<stdlib.h>

 

 

чина

целого

аргу-

 

 

 

 

 

мента

 

 

 

 

 

2

sin

Синус

аргумента,

double sin(double x)

 

<math.h>

 

 

заданного в

радиа-

 

 

 

 

 

нах

 

 

 

 

 

 

 

 

 

 

 

Продолжение 1 табл. П.2.1

 

 

 

 

 

 

 

 

 

Имя

 

 

Обращение и типы аргу-

 

 

Заголовочный

функ-

Краткое описание

Описание аргументов

 

ментов (прототип)

 

файл

 

ции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

cos

Косинус аргумента,

double cos(double x)

 

 

<math.h>

 

 

заданного в

радиа-

 

 

 

 

 

 

нах

 

 

 

 

 

4

tan

Тангенс аргумента,

double tan(double x)

 

 

<math.h>

 

 

заданного в

радиа-

 

 

 

 

 

 

нах

 

 

 

 

 

5

exp

Вычисление

экспо-

double exp(double x)

 

 

<math.h>

 

 

ненты

 

 

 

 

 

6

fabs

Абсолютная

вели-

double fabs(double arg)

 

 

<math.h>

 

 

чина вещественного

 

 

 

 

 

 

аргумента

 

 

 

 

 

7

fmod

Остаток от деления

double fmod(double x,

 

 

<math.h>

 

 

x/y

 

double y)

 

 

 

8

fprintf

Форматируемый

Стандартные для языка

 

 

<stdio.h>

 

 

вывод

 

Си

 

 

 

9

log

Вычисление

лога-

double log(double x)

 

 

<math.h>

 

 

рифма

 

 

 

 

 

10

log10

Вычисление

деся-

double log10(double x)

 

 

<math.h>

 

 

тичного логарифма

 

 

 

 

11

timer_n

Возвращает

значе-

int timer_now()

Разрешение таймера – одна миллисе-

<timer.h>

 

ow()

ние таймера

 

 

кунда, т.е. 1000 тиков за секунду

 

 

 

 

 

 

 

 

 

Продолжение 2 табл. П.2.1

 

 

 

 

 

 

 

 

 

 

 

 

 

Имя

 

 

 

 

 

Обращение и типы аргу-

 

Заголовочный

функ-

 

Краткое описание

 

Описание аргументов

 

 

ментов (прототип)

 

 

файл

 

ции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

vsin2sf

 

Синус

векто-

 

void vsin2sf(int n, float*x,

n – длина входного/выходного векто-

<dspvec.h>

 

 

 

ра/массива

 

 

 

float*y, intdx, intdy)

ра;

x,

y

должны

 

 

 

 

 

 

 

 

x – выходной вектор;

быть

массива-

 

 

 

 

 

 

 

 

y – входной вектор;

ми!

 

 

 

 

 

 

 

 

 

 

dx, dy – шаг внутри векторов, обычно

 

 

 

 

 

 

 

 

 

 

 

равен 1

 

 

 

13

vcos2sf

 

Косинус

векто-

 

void vsin2sf(int n, float*x,

n – длина входного/выходного векто-

<dspvec.h>

 

 

 

ра/массива

 

 

 

float*y, intdx, intdy)

ра;

x,

y

должны

 

 

 

 

 

 

 

 

x – выходной вектор;

быть

массива-

 

 

 

 

 

 

 

 

y – входной вектор;

ми!

 

 

 

 

 

 

 

 

 

 

dx, dy – шаг внутри векторов, обычно

 

 

 

 

 

 

 

 

 

 

 

равен 1

 

 

 

14

vtan2sf

 

Тангенс

векто-

 

 

void vsin2sf(int n, float*x,

n – длина входного/выходного векто-

<dspvec.h>

 

 

 

ра/массива

 

 

float*y, intdx, intdy)

ра;

x,

y

должны

 

 

 

 

 

 

 

 

x – выходной вектор;

быть

массива-

 

 

 

 

 

 

 

 

y – входной вектор;

ми!

 

 

 

 

 

 

 

 

 

 

dx, dy – шаг внутри векторов, обычно

 

 

 

 

 

 

 

 

 

 

 

равен 1

 

 

 

 

 

 

 

 

Продолжение 3 табл. П.2.1

 

 

 

 

 

 

 

 

Имя

Краткое описа-

Обращение и типы аргу-

 

Заголовочный

функ-

Описание аргументов

ние

 

ментов (прототип)

файл

 

ции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

vsimp-

Вычисление

ин-

vsimpsonsf(n,step,y,x,1,1)

n – размерность входного и выходного

<dspvec.h>

 

sonf

теграла методом

n-int

векторов;

 

 

 

Симпсона

 

step,x,y-float

step – шаг интегрирования;

 

 

 

 

 

 

y – выходной вектор частичных сумм;

 

 

 

 

 

 

x – входной вектор;

 

 

 

 

 

 

две единицы – значения шага по x и y,

 

 

 

 

 

 

которые рекомендуется задавать = 1

 

16

vtrapzf

Вычисление

ин-

vtrapzf(n,step,y,x,1,1)

n – размерность входного и выходного

<dspvec.h>

 

 

теграла методом

n-int

векторов;

 

 

 

трапеций

 

step,x,y-float

step – шаг интегрирования;

 

 

 

 

 

 

y – выходной вектор частичных сумм;

 

 

 

 

 

 

x – входной вектор;

 

 

 

 

 

 

две единицы – значения шага по x и y,

 

 

 

 

 

 

которые рекомендуется задавать = 1

 

17

vlinav-

Вычисление

 

vlinaver-

n – длина векторов;

 

 

eragesf

взвешенного

 

agesf(n,alpha,x,y,dx,dy)

alpha – скалярная величина «взвеши-

 

 

 

среднего

двух

int n,dx,dy

вания»;

 

 

 

векторов

 

float *x,*y

x – входной и выходной вектор;

 

 

 

 

 

float alpha

y – входной вектор;

 

 

 

 

 

 

dx – шаг для x;

 

 

 

 

 

 

dy – шаг для y

 

 

 

 

 

 

 

Окончание табл. П.2.1

 

 

 

 

 

 

 

 

 

Имя

Краткое описа-

Обращение и типы аргу-

 

Заголовочный

функ-

Описание аргументов

ние

 

ментов (прототип)

файл

 

ции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

18

rand

Генератор

 

псев-

int rand(void)

Функция возвращает псевдослучайное

<stdlib.h>

 

 

дослучайных

 

целое значение в интервале от нуля до

 

 

 

целых чисел

 

 

RAND_MAX, которое определено в

 

 

 

 

 

 

 

<stdlib.h> и равно 2 31 – 1

 

19

srand

Генератор

псевдо-

void arand(unsigned int seed)

Использует свой аргумент, например

<stdlib.h>

 

 

случайных

целых

 

seed, для изменения последовательно-

 

 

 

чисел,

исполь-

 

сти возвращаемых псевдослучайных

 

 

 

зующий начальное

 

чисел

 

 

 

значение

 

 

 

 

 

20

vprodsf

Вычисление

 

void vprodsf(n,x.dx)

n – длина входного вектора;

<dspvec.h>

 

 

среднего

геомет-

float vprodsf(n,x.dx)

x – входной вектор;

 

 

 

рического

 

 

int n,dx;

dx – шаг выборки элементов вектора x

 

 

 

 

 

 

float *x

 

 

21

vmul3f

Умножение

двух

void vmul3f(n, z, x, y)

n – длина входного и выходного век-

<dspvec.h>

 

 

вещественных

int n;

торов;

 

 

 

векторов

 

 

float *z;

z – выходной вектор;

 

 

 

 

 

 

float *x;

x – первый входной вектор;

 

 

 

 

 

 

float *y;

у – второй входной вектор

 

22

mvmulf

Умножение

мат-

void mvmulf(r,c,m,t,s)

r – число строк;

<dspvec.h>

 

 

рицы на вектор

int r,c;

c – число столбцов;

 

 

 

 

 

 

m – входная матрица;

 

 

 

 

 

 

float *m,*t,*s

t – результирующий вектор;

 

 

 

 

 

 

 

s – входной вектор

 

А.Б. ВАВРЕНЮК, В.В. МАКАРОВ, Е.В. ЧЕПИН

ОСНОВЫ ПРОГРАММИРОВАНИЯ MPP-АРХИТЕКТУР

Учебно-методическое пособие

Под редакцией Е.В. Чепина

Издание 2-е, исправленное и дополненное

Редактор М.В. Макарова

Оригинал-макет изготовлен М.В. Макаровой

Подписано в печать 03.03.2010. Формат 60х84 1/16 Печ.л. 5,5. Уч.-изд.л. 5,5. Тираж 300 экз.

Изд. № 011-1. Заказ № 94

Национальный исследовательский ядерный университет «МИФИ». Типография НИЯУ МИФИ.

115409, Москва, Каширское ш., 31