Лабораторная работа №1
Синхронизация параллельных процессов. Производитель-потребитель.
1 Задание на лабораторную работу
1. Разработать параллельную программу, выполняющую копирование данных из одного массива (A) в другой массив (B) с использованием промежуточного буфера. Программа должна состоять из двух потоков. Первый поток – производитель – содержит исходный массив А и копирует данные из него в буфер по одному элементу. Второй поток содержит массив В и производит чтение данных из буфера по одному элементу и запись их в массив В. Запись в буфер возможна при наличии в нем хотя бы одного свободного элемента. Чтение из буфера возможно при наличии в нем хотя бы одного несчитанного элемента. С буфером связаны два счетчика: первый счетчик содержит индекс первого доступного элемента для чтения (начало данных), второй счетчик содержит индекс первого доступного для записи элемента. Если счетчики равны, буфер пуст. Буфер циклический, то есть второй счетчик может быть меньше первого. Если второй счетчик меньше первого на 1, то буфер заполнен. Альтернативным подходом может служить учет только занятых элементов буфера. В этом случае первый счетчик содержит индекс первого занятого элемента, второй счетчик содержит индекс последнего занятого элемента.
2. Измерить время работы программы для различных значений длины буфера. Размер массивов должен таким, чтобы массивы A, B и буфер
заполняли максимум свободной оперативной памяти. Минимальный размер массива A – 10 в 8 степени элементов. Размер буфера – от 10 элементов до половины длины массива A. Рекомендуется использовать не менее 10 различных значений размера буфера при проведении вычислительных экспериментов.
3. Объяснить наблюдаемые изменения длительности работы программы.
4. Сравнить время работы параллельной программы с временем работы ее последовательного аналога, осуществляющего последовательное копирование путем чередования фаз заполнения и освобождения буфера.
5. Объяснить наблюдаемые закономерности.
6. Составить отчет по результатам работы.
2 Содержание отчета
1. Постановка задачи.
2. Словесное описание работы параллельного алгоритма.
3. Исходный текст различных вариантов программы.
4. Результаты вычислительных экспериментов с объяснением полученных зависимостей. Результаты должны содержать таблицы с длительностью различных вариантов программы и ускорением. Графики достаточно построить только для ускорения.
5. Выводы по работе.
| Гарантия на работу | 1 год |
| Средний балл | 4.53 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |