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

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

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

чения интенсивностей изображения, которые не должны выходить из интервала [0; 255].

Правильность работы программы следует визуально проконтролировать путем просмотра исходного и полученного BMP-файлов с помощью одной из доступных программ просмотра графических файлов.

Вариант 21

Разработать параллельную программу для выполнения двумерной свертки, реализующей дифференцирование монохромного BMP-изображения, которое используется для определения границ объектов на изображении. В качестве входной информации берется произвольное изображение, представленное 256-градационным BMP-файлом размером 800х600 пикселов (или большим). Алгоритм дифференцирования определяется выражением:

 

1

a b

fi, j =

∑∑hk,l fi2+k, j2+l , i =

 

 

 

 

0, m 1 , j =0, n 1 ,

 

 

ab k =1 l=1

где f – входное/выходное изображение; m x n – размер входного изображения; h – ядро свертки; a, b – размер ядра, в данном случае a = b = 3. Значения коэффициентов ядра свертки для операции дифференцирования могут быть как положительными, так и отрицательными целыми, причем, что очень важно при реализации этой программы, они имеют курсовую ориентацию, которую необходимо реализовать для получения полного результата. Конкретные матрицы курсовой свертки следует посмотреть в теории обработки изображений.

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

Правильность работы программы следует визуально проконтролировать путем просмотра исходного и полученного BMP-файлов с помощью одной из доступных программ просмотра графических файлов.

71

Вариант 22

Разработать параллельную программу для построения гистограммы BMP-изображения по трем RGB-компонентам. В качестве исходной входной информации берется произвольное изображение, представленное 256-градационным BMP-файлом размером 800х600 пикселов (или большим). Алгоритм построения гистограммы заключается в подсчете частот появления значений интенсивности по каждой из трех RGB-компонентов изображения.

Правильность работы программы следует проконтролировать путем вычисления суммы частот по каждой из RGB-компонентов построенной гистограммы, которая должна быть равна общему количеству пикселов исходного изображения.

Правильность работы программы следует визуально проконтролировать путем просмотра исходного и полученного продифференцированного BMP-файлов с помощью одной из доступных программ просмотра графических файлов.

Вариант 23

Разработать параллельную программу для вычисления изменения яркости BMP-изображения по трем компонентам изображения. В качестве исходной входной информации берется произвольное изображение, представленное BMP-файлом размером 800х600 (или большим) пикселов. Алгоритм изменения яркости исходного изображения основан на гамма-преобразовании, вычисляемом для каждого пиксела каждой из RGB-компонентов как:

Y = X exp(1/γ),

где X – входное значение; Y – выходное значение; γ – значение коэффициента гамма-коррекции.

Типовое значение γ лежит в интервале [1, 3], является вещественной переменной и задается в качестве входной переменной. Правильность работы программы следует визуально проконтролировать путем просмотра исходного и полученного BMP-файлов с помощью одной из доступных программ просмотра графических файлов.

Сравнить скорость работы программы в двух вариантах:

без сохранения исходного изображения;

с сохранением значений матрицы исходного изображения.

72

Вариант 24

Разработать параллельную программу для нахождения безус-

ловного минимума функции:

F(x) = (X1 + 10X2)2 + 5(X3 X4)2 + (X2 X3)4 + 10(X1 X4)4,

одним из методов случайного поиска. Начальная точка поиска может быть произвольной. Использовать библиотечную функцию датчика случайных чисел (см. прил. 2).

Вариант 25

Разработать параллельную программу для определения коэффициентов аппроксимирующей функции методом наименьших квадратов для функции F(x) = sin(x). Интервал аппроксимации: [0, π].

Для решения этой задачи необходимо также разработать программу нахождения безусловного минимума функции. Массив значений xi задается массивом значений интервала аппроксимации разбитого с помощью шага h = 0,001. Шаг является переменной величиной и может меняться по согласованию с преподавателем.

В качестве массива F(xi) формируется матрица значений функции sin(xi) на интервале [0, 2π], к каждому из которых добавляется случайное значение, лежащее в интервале [–0,2, 0,2], полученное с помощью датчика случайных чисел (см. прил. 2).

Примечание. Способ формирования массива отсчетов может быть изменен по согласованию с преподавателем.

Вариант 26

Разработать параллельную программу умножения вещественной матрицы на вектор. Такая операция является типичной, например, при преобразовании координат в графике:

N

Tj = Xij Si для j = 1, …, M,

i=0

где X – входная матрица вещественных чисел размерности MxN; S – входной вектор вещественных чисел размерности N; T – выходной вектор размерности M. Значения X и S могут быть сгенерированы с помощью датчика случайных чисел или другим способом. Рекомен-

73

дуемые значения M и N лежат в пределах 1000 ÷ 15000. Размерность может быть изменена по согласованию с преподавателем.

Для проверки правильности результата следует написать программу вычисления данного произведения с помощью библиотечной функции mvmulf. Описание функции можно найти в прил. 2.

Вариант 27

Разработать параллельную программу умножения двух прямоугольных матриц вещественных чисел:

C = A х B,

где A – входная матрица вещественных чисел размерности MxK; B – входная матрица вещественных чисел размерности KxN; C – результирующая матрица размерности MxN. Рекомендуемые значения M, К и N лежат в пределах 5000 ÷ 15000. Их значения могут быть изменены по согласованию с преподавателем.

Вариант 28

Разработать параллельную программу умножения двух прямоугольных матриц вещественных чисел, с использованием библиотечной функции vmul3f, реализующей перемножение двух вещественных векторов:

C = A х B,

где A – входная матрица вещественных чисел размерности MxK; B – входная матрица вещественных чисел размерности KxN; C – результирующая матрица размерности MxN. Рекомендуемые значения M, К и N лежат в пределах 5000 ÷ 15000. Их значения могут быть изменены по согласованию с преподавателем.

Вариант 29

1.Дана квазидиагональная матрица A действительных чисел размерности NxN.

2.Ввести N, A.

3.Вычислить определитель матрицы A.

Рекомендуемое значение N лежит в пределах 1000 ÷ 15000. Его можно изменить по согласованию с преподавателем.

74

Вариант 30

1.Дана произвольная матрица A действительных чисел размерности NxN.

2.Ввести N, A.

3.Вычислить определитель матрицы A методом обращения в нуль элементов строки.

Рекомендуемое значение N лежит в пределах 1000 ÷ 15000. Его можно изменить по согласованию с преподавателем.

Вариант 31

1.Дана произвольная матрица A действительных чисел размерности NxN.

2.Ввести N, A.

3.Вычислить определитель матрицы A методом обращения в нуль элементов столбца.

Рекомендуемое значение N лежит в пределах 1000 ÷ 15000. Его можно изменить по согласованию с преподавателем.

Вариант 32

1.Дана произвольная матрица A действительных чисел размерности NxN.

2.Ввести N, A.

3.Вычислить обратную матрицу A-1.

Рекомендуемое значение N лежит в пределах 1000 ÷ 15000. Его можно изменить по согласованию с преподавателем.

Вариант 33

1.Дана произвольная матрица A действительных чисел размерности MxN.

2.Ввести A, N, M.

3.Вычислить ранг матрицы A методом окаймления. Рекомендуемые значения N и M лежат в пределах 1000 ÷ 15000.

Их можно изменить по согласованию с преподавателем.

75

Вариант 34

1.Дана произвольная матрица A действительных чисел размерности NxN.

2.Ввести N, A.

3.Вычислить определитель матрицы A методом представления

ввиде суммы определителей.

Рекомендуемые значения N и M лежат в пределах 1000 ÷ 15000. Их можно изменить по согласованию с преподавателем.

Вариант 35

1.Задан ориентированный взвешенный граф матрицей инцидентностей.

2.Найти кратчайший путь между i-й и j-й вершинами графа (алгоритм Дейкстры).

Вариант 36

1.Задан ориентированный взвешенный граф матрицей инцидентностей.

2.Найти кратчайшие пути между всеми парами вершин графа (алгоритм Флойда).

Вариант 37

1.Задан ориентированный взвешенный граф матрицей инцидентностей.

2.Найти кратчайшие пути между всеми парами вершин графа (алгоритм Данцига).

Вариант 38

1.Задан неориентированный взвешенный граф матрицей инцидентностей.

2.Построить минимальное покрывающее дерево графа (алгоритм Прима).

76

Вариант 39

1.Задан ориентированный взвешенный граф матрицей смежно-

сти.

2.Построить цикломатическую матрицу графа.

Примечания к вариантам 35-39.

1.Следует рассматривать только связные графы.

2.Число вершин графа для каждой задачи согласуется с преподавателем.

3.Для вариантов задач на графах рекомендуется искать подробное описание алгоритмов в литературе [15, 16].

77

СПИСОК ЛИТЕРАТУРЫ

Основной

1.Вавренюк А.Б., Макаров В.В. Чепин Е.В. Основы программирования на параллельном Си для МРР-систем. Лабораторный практикум / Под ред. Е.В. Чепина [Электронный ресурс]. М.:

МИФИ, 2008. ISBN 978-5-7262-0944-9.

2.Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. СПб.: БХВ-Петербург, 2002.

3.Эндрюс Г.Р. Основы многопоточного, параллельного и распределенного программирования: Пер. с англ. М.: Изд. дом «Виль-

ямс», 2003.

4.Майника Э. Алгоритмы оптимизации на сетях и графах. М.:

Мир, 1981.

5.Транспьютеры. Архитектура и программное обеспечение / Пер. с англ.; под ред. Г. Харпа. М.: Радио и связь, 1993.

Дополнительный

6.Levin V.K. Some questions on Development and Applications Transputers Systems in the USSR: British-Soviet Symposium on Transputers Systems. Moscow, 26 – 28/06/90.

7.Аляутдинов Д.А., Далевич А.Н. Параллельный Си: Учеб. изд.

М.: МАИ, 1991.

8.Красковский А.Ю., Чепин Е.В. Транспьютеры: технические характеристики и опыт использования // Зарубежная радиоэлектро-

ника. 1991. № 4. С. 43 – 50.

9.Удаленный коллективный доступ к многопроцессорной системе / А.Б. Вавренюк Л.Д. Забродин В.В. Макаров А.Н. Никитин, Е.В. Чепин // Труды Всерос. научн. конф. «Высокопроизводительные вычисления и их приложения», г.Черноголовка, 2000. С. 72 – 73.

10.Хокни Р., Джессхоуп К. Параллельные ЭВМ. Архитектура, программированиеи алгоритмы: Пер. с англ. М.: Радиоисвязь, 1986.

78

11.Чепин Е.В. Структурная нотация современных микропроцессоров // Научная сессия МИФИ-99. Сб. научн. трудов. В 13 т.

Т. 7. М.: МИФИ, 1999. С. 99 – 100.

12.Parallel С. User Guide. Texas Instruments TMS320C40. 3L Ltd.

13.Optimized DSP/Vector Library for TMS320C40/C30/. Reference Manual. Sinoctonalysis Inc., 1995.

14.Configuration Guide for Sundance SMT320, SMT 320 User

Guide.

15.Кристофидес Н. Теория графов. Алгоритмический подход.

М.: Мир, 1978.

16.Рублев А.Н. Линейная алгебра. М.: Высшая школа, 1968.

79

Приложение 1

Пример программы на языке Параллельный Си: интегрирование методом Симпсона на одном процессоре

сиспользованием библиотеки Veclib

итехнологии таймирования

Приложение состоит из одной программы h1. Задача h1 располагается на Root-процессоре. Текст приложения на языке Параллельный Си:

#include <stdio.h> #include <chan.h> #include <string.h> #include <dspvec.h> #include <timer.h> #include <math.h>

/* Интегрирование методом Симпсона на 1 процессоре с использованием стандартной библиотеки Veclib */

/* отрезок [0.0 ;3.0], функция - синус*/

main(argc,argv,envp,in_ports,ins,out_ports,outs) int argc,ins,outs;

char *argv[], *envp[];

CHAN *in_ports[], *out_ports[];

{

int i,ii,t1,t2;

double y[13000],x[13000]; int n;

float eps=0.001,integr,intlast; double x0=0.0,xk=3.0; double s,delta,step;

step=-0.50607; s=-0.045; s=fabs(s); step=fabs(step);

80