OpenMP ва openCV компилятори ёрдамида ишлаш унумдорлиги
Автор: Уразматов Тохир Куранбаевич
Рубрика: Спецвыпуск
Опубликовано в Техника. Технологии. Инженерия №2 (4) апрель 2017 г.
Дата публикации: 04.05.2017
Статья просмотрена: 53 раза
Библиографическое описание:
Уразматов, Т. К. OpenMP ва openCV компилятори ёрдамида ишлаш унумдорлиги / Т. К. Уразматов. — Текст : непосредственный // Техника. Технологии. Инженерия. — 2017. — № 2.1 (4.1). — С. 30-32. — URL: https://moluch.ru/th/8/archive/57/2326/ (дата обращения: 16.11.2024).
В данной статье описывается процесс OpenMР и OpenCV было предложено использование компиляторов, результаты работы в обоих компилятором. Производительность OpenMР и OpenCV компилятора ясно показано на примере диаграммы.
Ключевые слова: OpenMР, OpenCV, производительность
This article describes the process of OpenMР and OpenCV has been offered the use of compilers, the results of working in both the compiler. OpenMР and OpenCV compiler's performance is clearly shown in the chart view.
Keywords: OpenMР, OpenCV, productivity
Мультимедиа тизимларида тасвирларни қайта ишлаганда вейлет жараёнларини тадбиғ этиш яхши натижа беради. Айниқса параллелаштириш алгоритмларидан фойдаланиш унумдорлик даражасини оширишга ёрдам беради. Тасвирларни қайта ишлаганда биринчи усул ёрдамида амалга оширамиз. Бу усулнинг амалга ошиш алгоритми қуйидагича амалга ошади: дастурга юкланган тасвир 2^N қиймат билан амалга ошади. N нинг қиймати тасвир бўлинган матрицаси 16х16 ўлчамга эга бўлгунча амалга ошади. Бу ҳолатда мисол сифатида N = 1 га тенг бўлганда тасвир 4 та матрицага ажралада.
Танланган мавзунинг долзарблиги ҳисоблаш техникасидан фойдаланган ҳолда жараёнларни математик моделлаштиришда, шунингдек маълумотлар базаси кўринишида берилган турли табиатли маълумотларни таҳлил қилинишида қурилган илмий ишларнинг тез ривожланишининг натижаси ҳисобланади.
Бундан кўринади алгоритм OpenMP дан фойдаланганда 2 ядроли процессорда амалга оширилганда 2 та оқимга 2 марта бўлиб берилади ва цикл 2 марта айланишга тўғри келади. Кетма кет амалга оширганда эса бу амаллар бажарилганда цикл 4 маротаба айланишга тўғри келади. Бу ҳолатни назарий жихатдан тахлил қиладиган бўлсак, унумдорлик 2 маротаба ошади деган хулосага келишимиз мумкин. Аммо OpenMP ёрдамида оқимларга ажратганда хотира ва процессор билан оқимларни ташкиллаштирганда маълум вақт сарфланади. Чунки оқим яратилганда хотирага ҳосил бўлаётган оқим учун динамик хотира яратиш лозим ва оқим ўз жараёнини якунлаганда динамик хотирани ўчириш керак бўлади. Кейинги жараён бу оқимларни процессорда бажарилиш учун навбатга қўйиш. [1.-78с] Бу ҳолда ҳам маълум даражада вақт сарфланади. OpenMP пакетидан фойдаланган ҳолда тасвирни қайта ишлаганда 2 ядроли процессорда қайта ишлаганда қуйидаги 1 – жадвалда кўрсатилган натижаларга эришилди. Жадвалнинг биринчи устунида қайта ишланаётган тасвирнинг нечта матрицага бўлиниши ва бўлинган ҳар бир матрицанинг қандай ўлчамга эга эканлиги кўрсатилган.
1 – жадвал
2 ядроли процессорда тасвирларни қайта ишлаганда сарфланган вақт ва унумдорлик
N x N |
Оддий алгоритмёрдамиа |
OpenMP ёрдамида |
OpenCV ёрдамида |
Унумдорлик |
4 ta 1024 |
5141,619 |
3862,97 |
3781,4 |
1,331 |
16 ta 512 |
5381,641 |
4230,043 |
4123,03 |
1,279 |
64 ta 256 |
5498,038 |
4550,084 |
4435,01 |
1,208 |
256 ta 128 |
5657,647 |
5166,368 |
4987,1 |
1,109 |
1024 ta 64 |
5954,337 |
5862,022 |
5621,02 |
1,016 |
4096 ta 32 |
7029,633 |
7888,272 |
7678,2 |
0,891 |
16384 ta 16 |
9878,041 |
13121,636 |
12234,5 |
0,753 |
Натижалардан шуни кўришимиз мумкин, бир оқимли кетма кет қайта ишлаш амалга оширганда OpenMP ва OPENCV ёрдамида амалга оширганга нисбатан кўпроқ вақт талаб қилиши мумкин.[2.-36с]
OpenMP ёрдамида 2 ядроли процессорда эришилган унумдорликни график кўриниши
OpenMP ёрдамида тасвирни қайта ишлаганда #pragma omp parallel дириктиваси процессорни максимал ҳолда оқимларга ажратишга ҳаракат қилади. Яъни 2 ядроли процессорда максимал ҳолда 2 та оқимни яратиб бериши мумкин. Аммо оқимларни максимал ҳолда белгилаб бериш билан унумдорликка эришиб бўлмайди. Чунки оқимларни ташкиллаштиришга ҳам боғлиқ ҳисобланади. Бу вазифини OpenMP компилятори ташкиллаштириб беради.[3.-56с]
Айнан шу ҳолатни 4 ядроли процессорда амалга оширганимизда 2 – жадвалдаги натижаларни кўришимиз мумкин:
Ядролар сонининг ошиши оқимлар сонини ошишига имкон беради. 4 ядроли процессорда максимал ҳолда 4 та оқим ташкиллаштиришимиз мумкин.
2 – жадвал.
4 ядроли процессорда тасвирларни қайта ишлаганда сарфланган вақт ва унумдорлик
N x N |
Одатда |
OpenMP |
OpenCV |
Унумдорлик |
4 ta 1024 |
1873,058 |
679,337 |
658,211 |
2,757 |
16 ta 512 |
1693,052 |
701,696 |
689,234 |
2,413 |
64 ta 256 |
1581,531 |
977,97 |
954,42 |
1,617 |
256 ta 128 |
2017,086 |
1676,533 |
1579,241 |
1,203 |
1024 ta 64 |
1446,008 |
1776,122 |
1721,201 |
0,814 |
4096 ta 32 |
1630,208 |
2636,226 |
2564,125 |
0,618 |
16384 ta 16 |
2143,645 |
7029,12 |
6875,01 |
0,305 |
OpenMP ёрдамида 4 ядроли процессорда эришилган унумдорликни график кўриниши
Юқоридаги натижалардан шуни кўришимиз мумкинки, унумдорлик натижаси n ядроли процессорларда n дан ошмаслигини кўришимиз мумкин. 2 ва 4 ядроли процессорларни унумдорлигини солиштирганимизда қуйидаги фарқни кўришимиз мумкин.[4.-34с]
Хулоса қилиб айтганда маълумотларни қайта ишлашда кўп ядроли процессорларга мўлжалланган параллелаштириш алгоритмларини қўллаш яхши самара берди. С++дастурлаш тилидан фойдаланилди ва параллел алгоритмни таъминлаб OpenMP ва OpenCV компиляторлари директиваларидан фойдаланилди ва улар ёрдамида процессор унумдорлик даражаси ошди.
Иш давомида тасвирларни қайта ишлашда тасвир қийматларини байтли массивга ўзлаштириш, вейвлет-жараёнларни амалга оширганда оқимларга ажратиш усуллари ва хотирани параллел ҳолда динамик жой ажратиш каби жараёнлар бажарилди ва яхши самарадорлик кўрсатди.
Адабиётлар:
- Шпаковский Г.И. Реализация параллельных вычислений: MPI, OpenMP, кластеры, грид, многоядерные процессоры, графические процессоры, квантовые компьютеры. – Минск: Белорусский Государственный Университет, 2010. – 155с.
- Ярославский Л.П. «Введение в цифровую обработку изображений», Москва сов.радио, 2012й.
- Грузман И.С. «Цифровая обработка изображений в информационных системах», Новосибирск 2012г.
- Антонов А.С. Параллельное программирование с использованием технологии OpenMP. – М: издательство Московского Университета, 2011 г. – 77с.
Похожие статьи
Язык программирования Python. Библиотеки Python
Язык программирования Python — это высокоуровневый и интерпретируемый язык программирования, который был создан Гвидо Ван Россумом в 1989 году и выпущен в 1991 году, которые «автоматизируют скучные вещи» (как выразилась одна популярная книга по изуче...
PlantUML: создание диаграмм с использованием текстового синтаксиса
В статье автор рассматривает PlantUML как эффективный инструмент для создания диаграмм в разработке программного обеспечения, преимущества использования текстового синтаксиса, разнообразие поддерживаемых диаграмм.
Разработка программы для оптического распознавания символов с помощью Tesseract
В данной статье наглядно и подробно рассмотрен пример работы с библиотекой Tesseract ORC, создана программа для распознавания текста с фото.
Процесс разработки программного продукта по методологии SCRUM
В статье авторы раскрывают процесс разработки программного продукта по методологии SCRUM с использованием экстремального программирования.
Разработка программного модуля защиты информации методом стеганографии
В данной статье рассматривается процесс разработки программного модуля для шифрования текстовой информации в реальном изображении, с помощью языка программирования Rust, описываются основные аспекты стеганографии, в частности метод LSB.
Модификация архитектуры web-приложения, основанной на паттерне CQRS, для повышения производительности
В работе рассматривается способ организации архитектуры web-приложения на основе паттерна CQRS. В основе архитектуры лежит разделение на write- и read- модели, которые используют SQL и NoSql базы данных. Результатом применения архитектуры стало возмо...
Многопоточность в языке Swift
В статье рассмотрим основной способ выполнять код асинхронно, который используется в iOS приложениях. Подробно разобран основной функционал Grand Central Dispatch (GCD) и сценарии, в которых можно реализовать многопоточность с его помощью.
Обработка конкурентных транзакций в распределенных системах на примере Java
При разработке программного обеспечения в высоконагруженных системах требуется определить стратегии при одновременных обновлениях. Множество запросов от одинаковых пользователей приводят к конфликтам транзакций на уровне базы данных. Для предотвращен...
Разработка программы расписания поездов на основе библиотеки MFC и объектно ориентированного подхода
Статья посвящена описанию процесса проектирования и разработки программы, которая должна отображать расписание поездов в виде строк с данными, а также оставшееся время до отбытия, обновляющееся в реальном времени. на основе библиотеки MFC в Visual C+...
Методы разработки видеоигр: выбор подходящей методологии для успешного проекта
В данной статье приводятся три популярных метода разработки продукта: DevOps, Канбан и SCRUM, которыми пользуются международные игровые компании.
Похожие статьи
Язык программирования Python. Библиотеки Python
Язык программирования Python — это высокоуровневый и интерпретируемый язык программирования, который был создан Гвидо Ван Россумом в 1989 году и выпущен в 1991 году, которые «автоматизируют скучные вещи» (как выразилась одна популярная книга по изуче...
PlantUML: создание диаграмм с использованием текстового синтаксиса
В статье автор рассматривает PlantUML как эффективный инструмент для создания диаграмм в разработке программного обеспечения, преимущества использования текстового синтаксиса, разнообразие поддерживаемых диаграмм.
Разработка программы для оптического распознавания символов с помощью Tesseract
В данной статье наглядно и подробно рассмотрен пример работы с библиотекой Tesseract ORC, создана программа для распознавания текста с фото.
Процесс разработки программного продукта по методологии SCRUM
В статье авторы раскрывают процесс разработки программного продукта по методологии SCRUM с использованием экстремального программирования.
Разработка программного модуля защиты информации методом стеганографии
В данной статье рассматривается процесс разработки программного модуля для шифрования текстовой информации в реальном изображении, с помощью языка программирования Rust, описываются основные аспекты стеганографии, в частности метод LSB.
Модификация архитектуры web-приложения, основанной на паттерне CQRS, для повышения производительности
В работе рассматривается способ организации архитектуры web-приложения на основе паттерна CQRS. В основе архитектуры лежит разделение на write- и read- модели, которые используют SQL и NoSql базы данных. Результатом применения архитектуры стало возмо...
Многопоточность в языке Swift
В статье рассмотрим основной способ выполнять код асинхронно, который используется в iOS приложениях. Подробно разобран основной функционал Grand Central Dispatch (GCD) и сценарии, в которых можно реализовать многопоточность с его помощью.
Обработка конкурентных транзакций в распределенных системах на примере Java
При разработке программного обеспечения в высоконагруженных системах требуется определить стратегии при одновременных обновлениях. Множество запросов от одинаковых пользователей приводят к конфликтам транзакций на уровне базы данных. Для предотвращен...
Разработка программы расписания поездов на основе библиотеки MFC и объектно ориентированного подхода
Статья посвящена описанию процесса проектирования и разработки программы, которая должна отображать расписание поездов в виде строк с данными, а также оставшееся время до отбытия, обновляющееся в реальном времени. на основе библиотеки MFC в Visual C+...
Методы разработки видеоигр: выбор подходящей методологии для успешного проекта
В данной статье приводятся три популярных метода разработки продукта: DevOps, Канбан и SCRUM, которыми пользуются международные игровые компании.