Задача: Генериране на страници на книга Изготвил : Александър Боянов Тодоров, фак.№: 80435, 3 курс, Компютърни науки



Дата25.06.2017
Размер86.38 Kb.
#24504
ТипЗадача




Софийски Университет „Св. Климент Охридски”

Факултет по математика и информатика

Курсов проект

По Системи за паралелна обработка

Задача: Генериране на страници на книга

Изготвил: Александър Боянов Тодоров, фак.№: 80435, 3 курс, Компютърни науки

Ръководител: ас. Христо Христов

Дата: 17.06.2011г. Проверил: ………………….. (подпис)

1.Условие на курсовата задача.

Задачата е да се генерира книга по параметри. За всяка страница от книгата имаме следните параметри: главен герой (момче или момиче), тип на косата (за момче – къса, за момиче – къса, къдрава, дълга), цвят на очите, цвят на косата и цвят на тялото. Цветовете са в шестнайсетичен формат #RRGGBB. Дадени са 33 страници, като всяка страница е изображение в PNG формат 5128х3626 пиксела. За всяка страница имаме следната файлова структура:




Файл

Описание

base.png

фон на страницата

boy\base.png

основа за момче

boy\eye_colour.png

маска за очи (оцветява се за произволен цвят)

boy\hair_short_colour.png

маска за цвят на косата (оцветява се за произволен цвят)

boy\hair_short_highlight.png

светлосенки на косата

boy\hair_short_outline.png

очертания на косата

boy\highlight.png

светлосянка на момчето

boy\skin_colour.png

маска за кожата (оцветява се за произволен цвят)

girl\base.png

основа за момиче

girl\eye_colour.png

маска за очи (оцветява се за произволен цвят)

girl\hair_curly_colour.png

маска за цвят на къдрава коса (оцветява се за произволен цвят)

girl\hair_curly_highlight.png

светлосенки на къдрава коса

girl\hair_curly_outline.png

очертания на къдрава коса

girl\hair_long_colour.png

маска за цвят на дълга коса (оцветява се за произволен цвят)

girl\hair_long_highlight.png

светлосенки на дълга коса

girl\hair_long_outline.png

очертания на дълга коса

girl\hair_short_colour.png

маска за цвят на къса коса (оцветява се за произволен цвят)

girl\hair_short_highlight.png

светлосенки на къса коса

girl\hair_short_outline.png

очертания на къса коса

girl\highlight.png

светлосянка на момчето

girl\skin_colour.png

маска за кожата (оцветява се за произволен цвят)

Всеки файл от тази файлова структура поддържа прозрачност. Целта е по зададени параметри да се сглоби книжка от всички страници, като всяка страница трябва да е в отделен PNG файл. Сглобяването трябва да може да става и на повече от една нишка.


Изискванията към програмата са следните:


  1. Програмата да работи с бази данни MySQL, в която са записани командите, които трябва да изпълни както и зависимостите между тях.

  2. Друг параметър задава максималния брой нишки (задачи) на които разделяме работата.

  3. Програмата извежда подходящи съобщения на различните етапи от работата си, и записва в базата данни времето отделено за изчисление на всяка команда.

  4. Програмата да приема единствен аргумент – конфигурационен файл в ini формат със следната структура:

HOST=localhost

хост на Mysql базата данни

USER=root

потребител за базата данни

PASSWORD=***********

парола за базата данни

DATABASE=storytime

база данни, която се ползва

MAX_THREADS=8

максимален брой нишки

MAGICK_HOME=C:\\Program Files\\ImageMagick-6.7.3-Q16

път за пакета ImageMagick

DYLD_LIBRARY_PATH="C:\\Program Files\\ImageMagick-6.7.3-Q16\\lib"

път за пакета ImageMagick

MAGICK_TEMPORARY_PATH=E:\\Temp

временна папка за пакета ImageMagick

MAGICK_MEMORY_LIMIT=1Gb

лимит на паметта за пакета ImageMagick

MAGICK_MAP_LIMIT=1GB

лимит на паметта за пакета ImageMagick

MAGICK_THREAD_LIMIT=1

лимит за използваните нишки за пакета ImageMagick

MAGICK_SYNCHRONIZE=true

синхронизиране на I/O операциите за пакета ImageMagick


ЗАБЕЛЕЖКА: В условието на задачата се говори за разделянето на работата на две или повече нишки. Работата върху съответната задача на една нишка ще служи за еталон, по който да измерваме евентуално ускорение. Тоест в кода реализиращ решенията на задачите трябва да се предвиди и тази възможност – задачата да бъде решавана от единствена нишка; Пускайки програмата да работи върху задачата с помощта на единствена нишка, ще считаме че използваме серийното решение на задачата;
2.Анализ на задачата
За да се сглоби една страница се изпълняват следните команди, които ползват софтуерния пакет ImgeMagick (http://www.imagemagick.org):


1

convert music_02/girl/skin_colour.png +level-colors '#ffdfbe' skin_colour_temp.png

2

convert music_02/girl/eye_colour.png +level-colors '#a38336' eye_colour_temp.png

3

convert music_02/girl/hair_curly_colour.png +level-colors '#e68e4f' hair_colour_temp.png

4

composite -gravity center -compose Multiply music_02/girl/base.png skin_colour_temp.png temp0.png

5

composite -gravity center -compose Multiply temp0.png eye_colour_temp.png temp1.png

6

composite -gravity center music_02/girl/hair_curly_outline.png temp1.png temp2.png

7

composite -gravity center -compose Multiply temp2.png hair_colour_temp.png temp3.png

8

convert music_02/base.png temp3.png music_02/girl/highlight.png music_02/girl/hair_curly_highlight.png -layers merge result_music_02.png

Зависимостта между командите може да бъде описана чрез следната диаграма:


На следващата страница са показани примерни изображения в процеса на сглобяването на страницата.

girl/skin_colour.png



temp0.png



skin_colour_temp.png



girl/hair_curly_outline.png



girl/eye_colour.png



temp1.png



eye_colour_temp.png



temp2.png



girl/hair_curly_colour.png



temp3.png



hair_colour_temp.png



base.png



girl/base.png



girl/highlight.png



girl/hair_curly_highlight.png



result_music_02.png




2.Описание на курсовия проект

Проекта е реализирана на PHP, Mysql и Java. Чрез PHP се реализира WEB интерфейс за задаване на параметрите. След това се генерират нужните команди и заедно със зависимостите между тях се записват в MySQL база данни. На тази част от проекта няма да се спирам подробно. Чрез Java с помощта на многонишково програмиране, което спомага за разпределянето на работата на няколко нишки, се постига по-добро ускорение и ефективност на целия процес.

За осъществяване на процеса са реализирани 4 класа: class Storytime, class Worker, class Scheduler и class MyProcess.

1) Класа Storytime е за създаден за да прочете данните от конфигурационния файл и да създаде връзка към базата данни. Той стартира едно копие на класа Scheduler

2) Класа Scheduler наследява класа Thread и допрочита конфигурационния файл и зарежда environment variables за бъдещите процеси. Създава и нишка, която на всяка своя итерация следи има ли неизпълнени задачи в базата данни и ако има пуска нишка чрез класа Worker, като следи броят на пуснатите нишки да не надвишава зададения лимит. Ако няма текущи задачи минава в изчакващ режим (заспива за 10 секунди).

3) Класа Worker наследява класа Thread и взима от базата данни първата свободна задача и я възлага на класа MyProcess за изпълнение. Отбелязва в базата данни кога е започнала и кога е свършила работа по съответната задача. Всички действия със базата данни са синхронизирани чрез ключалка (ReentrantLock).

4) Класа MyProcess създава нов процес от софтуерния пакет ImageMagick с параметри зададени от класа Worker, които са взети от базата данни. Изчаква процеса да завърши и следи за нередности по изпълнението му.
Класовете Scheduler и Worker създават нишки като наследяват класа Thread, който е част от пакета java.lang в Java. В този класа имаме метод run(), в който е написан програмния код на всяка нишка, т.е. какво да прави нишката, когато я стартираме.
4.Диаграми на ускорението и ефективността.
Тестването на проекта е на следната конфигурация:

CPU: Intel® Core™ i7-2630QM (2.60GHz, 6MB cache, 4 ядра, 8 нишки)

RAM: 8GB DDR3

SSD: Crucial M4 128GB

HDD: Seagate Momentus 750GB 7200RPM
Разлики между SSD и HDD технологиите:

Дисково устройство

последователно писане

последователно четене

време за достъп

Crucial M4 128GB

200Mb/с

500Mb/s

0.217ms

Seagate Momentus 750GB

90Mb/s

90Mb/s

7.06ms

Целта на тестовете е освен да се покаже ефективността на описания алгоритъм и да се види значението от ползваната технология за съхранение на данни( Solid State Disk и Hard Disk Drive).


За целта ще се оценят ускорението S и ефективността Е на описания алгоритъм при използването на HDD и SSD. Формулите за изчисляването им са:

S(n) =T1/Tn и E(n) = S(n)/n, където n е броя нишки, а Tn е времето необходимо за завършване на работата на алгоритъм с n на брой нишки.

SSD

HDD





Каталог: docs -> example.projects
docs -> Опит в група чрез психодрама, социометрия и групова терапия
docs -> Дв бр. 103 от 2 Декември 2008г., изм дв бр. 24 от 31 Март 2009г
docs -> Фондация «Гъривер клиринг хауз» (c/o Център за култура и дебат „Червената къща”)
docs -> Иван (Ванчо) Флоров и м а г и н е р н о с т а
docs -> Соу „СВ. Св. Кирил и методий
docs -> Рискови фактори на тютюнопушенето
example.projects -> Проект по Системи за Паралелна Обработка Паралелен Алгоритъм за
example.projects -> Проект по Системи за Паралелна Обработка Паралелен Алгоритъм за пресмятане на Детерминанта на матрица


Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница