Здавалка
Главная | Обратная связь

ОСОБЕННОСТИ В ПРОГРАММИРОВАНИИ



3.1 LabVIEW бұйымы ортасында параллелді

қатарластырып бағдарламалау

Бүгіндері компьютерлік техниканың (КТ) және бағдарламалаудың дамуы көп жағдайларда қатарластырып бағдарламалауды талап етуі заңдылық, өйткені қазіргі КТ аналық платасы, негізінен, кем дегенде екі ядролық, әйтпесе 4, 8, 16 т.т. ядролық процессорлардан немесе «көпүдерістегіш» – көппроцессорлық жүйелер болып келеді. Сондықтан да, оларды қолданудың тиімділігін арттырудың бірден-бір жолы – қатарластырып бағдарламалау. Яғни, бағдарламалауды оптималды ету дегеніміз ендігіде көпядролық һәм көпүдерістегіш жүйелер үшін қатарластырып бағдарламалау болатыны да содан.

 

<<Параллельное программирование в LabVIEW

Дата добавления: 2011-04-22

Автор: Полев Михаил

(Урок 14. Программирование параллельных процессов в среде LabVIEW)

Параллельное программирование становится все более необходимым, поскольку позволяет максимально эффективно использовать возможности многоядерных процессоров и многопроцессорных систем. По ряду причин, включая повышение потребления энергии и ограничения пропускной способности памяти, увеличивать тактовую частоту современных процессоров стало невозможно. Вместо этого производители процессоров стали увеличивать их производительность за счет размещения в одном чипе нескольких вычислительных ядер, не меняя или даже снижая тактовую частоту. Поэтому для увеличения скорости работы приложений теперь следует по-новому подходить к организации кода, а именно – оптимизировать программы под многоядерные системы. Если не следовать этой тенденции, в будущем можно столкнуться со снижением производительности приложений.>>

 

Бұл мәселені шешу үшін әртүрлі құралдарды пайдалануға болады. Мысалға, кейбір тапсылмалар үшін бөлек-бөлек деректік-амалдық ағындар ұйымдастырып, амалдағыш жүйе әр ағынға бір-бір ядро тағайындайтындай етуге болады. Бірақ-та, ағындарды басқару өте күрделі іс. Тіптен, кейбір бағдарламалық орталар ағындарды басқаруды жүзеге асыратындай мүмкіндігі болғанымен, қатарластырып бағдарламалау кезінде қандай ағындарды қатарластыруға болатынын айқын көрсетіп отыру керек. LabVIEW бағдарламалау ортаcында ДС ретінде сызбалық код (G) жасалатындықтан, бұл мәселе мәтіндік бағдарламалау орталарына қарағанда әлдеқайда оңай шешіле алады.

Бұл үрдіс LabVIEW ортаcында ағындық бағдарламалау (АП) деп аталады. Джон фон Нейман негізін қалаған жоғарыдан төмен қарай, басынан аяғына шейін тізбектеп бағдарламалаудың орнына бұл ортадағы ДС көрсетілгендей бағдарламалық кодтағы қатарластырыла жайғасқан бөліктер (блок-сұлбаның тармақтары) компилятордың көмегімен үдерістегіштің (процессор) әртүрлі ядроларына атқаруға жүктеледі.


<<Для решения этой задачи можно использовать разные инструменты. Можно вручную создавать для определенных задач отдельные потоки, которые большинство операционных систем назначат на разные ядра процессора. Однако, управление потоками весьма трудоемкая задача. Несмотря на то, что некоторые среды разработки обеспечивают поддержку управления потоками, они все равно требуют явного указания, какие задачи следует распараллеливать.
Программирование на LabVIEW подразумевает создание графического кода (G) в виде диаграммы, что является существенным отличием от традиционных текстовых языков. Подобный подход называется потоковым программированием (ПП), который является частным по отношению к подходу графическогопрограммированием (ГП). Вместо последовательности выполняющихся друг за другом команд, код на LabVIEW представляет данные и операции, которые соединяются между собой, а компилятор LabVIEW автоматически определяет последовательность выполнения команд. Это также означает, что два параллельных участка кода (ветви диаграммы) независимы и могут быть выполнены на разных ядрах процессора.>>

Амалдар – тапсырмаларбойынша қатарластыру

 

Осы айтылғандардың мән-мағынасын түсіну үшін төмендегі суреттегі арифметикалық есептеулердің ДС қарау керек. LabVIEWкомпилятор көбейте отырып қосуды және азайтуды бір-біріне орындауға болатынын анықтайды, яғни осы екі тармақтаң аралық нәтижелері ол тәуелсіз тармақтардың қандай ретпен орындалғанына байланысты емес.

 

<<Параллелизм операций

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


Осылайша, компилятор бағдарлама жасақтаушыны бұндай шым-шытырық жұмыстан босатып, өзбетімен автоматты түрде бағдарламалық кодтағы тәуелсіз тармақтарды өзі-ақ анықтап реттейді және де мұндай тармақтар ДС өздері де “мен мұндалап” көрініп тұрады. Ал, мәтіндік бағдарламалау тілдерінде мұндай қатарластырылған тармақтарды арнайы жариялау міндетті (parallel threads), сондықтан қатарластырылған бағдарламалау ол тілдерде күрделі мәселеге айналады. Әсіресе, бұның қиындығы ұжымдық бағдарламалау әдісі таңдалатын қиын орындалатын тапсырмаларда айқын сезіледі.

 

<<Компилятор определяет множество независимых веток кода и создает на их основе некоторое количество потоков, избавляя разработчика от необходимости вручную управлять потоками. Другое важное преимущество LabVIEW с точки зрения разработки программ для многоядерных систем – это интуитивно понятное графическое представление кода параллельных вычислений. В обычных языках параллельное программирование реализуется путем самостоятельного объявления нитей (threads), настройки разделяемых ими ресурсов и отслеживания их взаимодействия в коде параллельных и непараллельных участков кода, что зачастую является весьма обременительным занятием, особенно при коллективной разработке приложения.>>

 

 

3.2 LabVIEW бұйымы ортасында сызбалық бағдарламалаудың

қатарластыру һәм конвейерлеу әдістері

LabVIEWДС ортасында жасалатын БС (бағдарламалық код) ең ұғынықты және көрнекі байланыс құралы болып табылады.

Шынтуайтына келсек, қалыптасқан технология бойынша жұмыс істейтін бағдарламалаушылар ең алдымен алгоритм түріндегі блок-сұлба құрастыратын, сонан соң соның негізінде мәтіндек бағдарлама құратын, оны кәмпүйтерде орындап пысықтайтын (ол бірден дұрыс орындалып кетуі неғайбыл), сөйтіп көп әуреленетін.LabVIEWеш қиындықсыз пайдаланушы көмегімен сызбалық блок-сұлбаны жасайды да, ар жағын соның компиляторы өз мойнына жүктеп алып, автоматты түрде атқара береді, яғни бағдарламалаушылардың бұрыннан армандағаны LabVIEWбұйымының арқасында іс жүзіне асып отыр.

Сонымен, LabVIEWкоды түйсіну деңгейінде қатарластырылып бағдарламалаудың амалдартапсырмалар бойынша қатарластыру, деректер бойынша қатарластыру және тапсырмаларды конвейерлеу әдістерін іске асырады.


<<В отличие от кода обычного языка программирования потоковый код LabVIEW представляет собой одно из наиболее понятных средств коммуникации – блок-диаграмму. Годами программисты традиционных языков рисуют блок-диаграммы, чтобы отслеживать структуру программы и вести совместную разработку. Среда разработки LabVIEW позволяет обойтись без лишних затрат времени и людских ресурсов сразу организовать исходный код в виде графической блок-диаграммы. Это также позволяет быстро определить, какие участки кода могут быть выполнены параллельно на разных ядрах процессора.

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


Тапсырмалар бойынша қатарластыру

Бұл әдіс бойынша бірқатар амалдар бір-бірінен тәуелсіз орындала алады. Төмендегі суретте осы жағдай сызбалық түрде көрсетілген: сүзгілеу амалы және ФТБ (функцияны түрлендіру блогы) амалы өзара тәуелсіз, сондықтан бұл амалдар әртүрлі ядроларда орындала алады.


<<Параллелизм задач

Параллелизм задач подразумевает, что несколько операций могут быть выполнены независимо друг от друга. На рис. приведен пример подобных задач: операции фильтрации сигнала и БПФ независимы, а следовательно могут быть выполнены на многоядерных процессорах одновременно.>>



Деректер бойынша қатарластыру

Бұл әдіс бойынша деректердің бір жиынынан алынған бөлек-бөлек деректер әртүрлі ядроларда өңделеді де, сонан соң нәтижелері қайта жинақталады. Төмендегі суретте осы жағдай аудиодабылдың оң жақ және сол жақ бөліктері бөлек-бөлек түрлендіріледі де, сонан соң түрленген нәтижелері қайта біріктіріледі.

<<Параллелизм данных

Параллельные данные – это независимые секции одного набора данных, которые могут быть обработаны независимо друг от друга с последующим объединение результатов. На рис. показан пример отдельной обработки правого и левого каналов аудиосигнала.>>







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.