Все новости 2017
Все новости 2016
Все новости 2015
Все новости 2014
Все новости 2013
Все новости 2012
Все новости 2011
Все новости 2010
Все новости 2009
Все новости 2008
Об институте
Основные направления исследований
Дирекция
Ученый совет
Научные сотрудники
Устав института и локальные нормативные акты
Конкурс на замещение вакантных должностей
Службы института
Контактная информация и реквизиты
Испытательный центр
ИЦ в системе «Наносертифика»
Лаборатория объемного и поверхностного деформирования
Лаборатория неразрушающего контроля
Лаборатория микромеханики материалов
Лаборатория технической диагностики
Лаборатория конструкционного материаловедения
Лаборатория деформирования и разрушения
Лаборатория системного моделирования
Лаборатория прикладной механики
Лаборатория механики деформаций
Сектор информационных технологий
Отдел механики транспортных машин
Специальности
Состав
Контактная информация
Объявления и авторефераты
Материалы по защите диссертаций
Защита диссертаций
Общие сведения
Номенклатура научных специальностей по аспирантуре
Для поступающих в аспирантуру
Для аспирантов
Список аспирантов
Нормативная база
Монографии
Диссертации
Поиск по авторам
Поиск по публикациям
2017 2016 2015 2014 2013 2012 2011 2010 2009 2008 2007 2006 2005 2004 2003 2002 и ранее
Поиск разработок
Механика деформируемых тел, перспективных материалов и технологий, конструкций и сооружений
Автоматизированные системы измерения, неразрушающего контроля материалов и диагностики ресурса машин
Основы алгоритмического, программного и аппаратного обеспечения систем автоматического управления сложными объектами
Механика и процессы управления транспортных и тяговых машин
Поиск патентов
Патенты Института
Планируемые и проведенные в Институте
Планируемые и проведенные в 2017 году
Проведенные в 2016 году
Проведенные в 2015 году
Проведенные в 2014 году
Проведенные в 2013 году
Проведенные в 2012 году и ранее
Доклады наших сотрудников
Полезные ссылки
Объявления
Полезные ссылки
О библиотеке
Поиск поступлений
Монографии наших сотрудников
Система электронных библиотек (ИМаш)
Научные журналы (содержания номеров)
Другие библиотеки и издательства
Научные фонды
Новости
О нас
Школы, семинары и конференции
Полезные ссылки
 
 Публикации / Язык макросов для программирования однородной вычислительной среды MiniTera II  Версия для печати   Карта сайта     Language По-русски По-английски
 
Монографии
Диссертации
Поиск по авторам
Поиск по публикациям
2017
2016
2015
2014
2013
2012
2011
2010
2009
2008
2007
2006
2005
2004
2003
2002 и ранее


Язык макросов для программирования однородной вычислительной среды MiniTera II

Титов В.Г. Лукин Н.А. Язык макросов для программирования однородной вычислительной среды MiniTera II // Известия Томского политехнического университета. Томск, 2008. Т. 313. № 5. 4 с.

Введение

Разработка средств программирования для параллельных вычислительных систем реального времени является бурно развивающейся областью информационных технологий. Объемы создаваемых программных проектов в ряде случаев исчисляются величинами в сотни тысяч исполняемых операторов. Это делает создание средств программирования параллельных вычислительных систем актуальным. Кроме того, для эффективного применения указанных систем постоянно требуется, чтобы время работы скомпилированной программы было минимальным. Это обусловливает необходимость оптимизации на каждом этапе разработки программного обеспечения, поэтому создание программных средств для параллельных вычислительных систем является весьма сложным. Большое значение для разработки программного обеспечения таких систем имеет учет в синтаксических и семантических конструкциях языков программирования существенных свойств архитектур параллельных вычислительных систем. Это представляет основную трудность для разработчиков таких языков, так как наработанный багаж теории и практики современного программирования основан на последовательных вычислениях на архитектуре фон-Неймана. Таким образом создание средств программирования для параллельных вычислительных систем реального времени является актуальным и требующим проведения исследований взаимного влияния алгоритмов и архитектур.
Предметной областью настоящей работы является программное обеспечение для определенного класса многопроцессорных потоковых архитектур – однородных вычислительных сред (ОВС), реализующих систолический принцип обработки данных. Для этой архитектуры декларативная парадигма программирования является более предпочтительной, чем императивная [1]. Более конкретно, в работе предлагается один из инструментов языка программирования ОВС – язык описания макросов для разработки программных проектов ОВС.
Однородные вычислительные среды
ОВС являются естественным этапом развития концепции параллельной обработки данных. В общем случае архитектура ОВС представляет собой N-мерную целочисленную решетку, в узлах которой размещены ПЭ, которые связаны между собой локальными информационными каналами. Топология ОВС в общем случае однозначно описывается конечным однородным неориентированным графом G [2], вершины которого соответствуют ПЭ, а ребра – информационным каналам. Степень i-ой вершины соответствует числу ПЭ, связанных локальными связями с ПЭi. Особенностью графов для топологии ОВС является отсутствие пересечений между любыми ребрами, это приводит к понятию размерности графов. Поэтому существуют 1-, 2-х, 3-х мерные графы, и каждая модификация графа соответствует топологии соединений ПЭ в архитектуре ОВС. Известные решетчатые графы [3] являются частным случаем рассматриваемых нами графов ОВС.
История развития ОВС насчитывает более 40 лет. Были реализованы многие интересные проекты (например проект 1-мерной систолической ОВС iWARP [4]). Для многих задач вычислительной математики и математической физики было показано, что архитектуры ОВС являются масштабируемыми, что обеспечивает максимальную производительность среди других типов параллельных архитектур. Тем не менее, широкого применения эти архитектуры пока не получили. Тому имеется две основных причины. Первая (и главная) – отсутствие до конца 90-ых годов ХХ века развитой микроэлектроники, которая позволила бы в габаритах одного кристалла СБИС реализовать фрагмент ОВС либо всю среду целиком. Вторая – отсутствие развитых средств программирования, которые позволяют максимально эффективно использовать все множество ПЭ для параллельной обработки данных. И если первая причина в настоящее время практически устранена, то устранение второй представляется довольно сложной научно-технической проблемой. В настоящее время известно примерно 20 реализованных проектов ОВС [5], но ни для одного из них не создано языка программирования, который обеспечивал бы эффективную загрузку массива ПЭ. Практически во всех случаях основой для языка программирования ОВС служат императивные языки типа С с дополнениями, обеспечивающими возможность параллельной обработки. Это приводит к значительным накладным расходам во времени реализации алгоритмов на ОВС и уменьшает их реальную производительность. Поэтому создание средств эффективного программирования ОВС является актуальной задачей настоящего времени.
В Лаборатории функционально-ориентированных процессоров ИМаш УрО РАН проводятся исследования и разработки в области ОВС, при этом основное внимание уделяется двум типам архитектур двумерных ОВС SIMD и MIMD.
В настоящей работе внимание уделено ОВС второго типа.
В начале 2000-ых годов коллектив лаборатории принимал участие в разработке ОВС MiniTera II [5], которая проводилась в рамках проекта "СКИФ". Архитектура этой ОВС представляет собой двумерный массив ПЭ; каждый ПЭ соединен с каждым из своих четырех непосредственных «соседей» четырьмя группами однонаправленных связей – двумя входными и двумя выходными. Таким образом, каждый ПЭ имеет восемь входных соединений и восемь выходных. Каждый ПЭ представляет собой набор независимых устройств предназначенных для обработки, хранения и передачи информации. В процессе работы программы ПЭ производит вычисления над операндами, поступающими с входов, и устанавливает значения своих выходов на каждом такте работы программы. Операнды и результаты поступают в последовательном коде, образуя поток битов. Операция, выполняемая ПЭ в течение работы одной программы, не изменяется. Все процессоры работают синхронно и независимо друг от друга. Таким образом, ОВС данного типа представляет собой плоскую двумерную систолическую машину обработки множества потоков данных. После предварительной настройки на выполняемую программу ОВС переходит в режим приема и обработки потоков данных, что позволяет рассматривать ее как мультиконвейерный потоковый функционально-ориентированный процессор (ФОП).
Архитектура ОВС MiniTera II приведена на рис. 1.




Рис. 1. Архитектура ОВС MiniTera II

Программирование ОВС представляет собой процесс настройки каждого ПЭ на выполнение конкретной операции, что позволяет интерпретировать программирование как процесс укладки алгоритма на клеточном пространстве ПЭ. Компилирование алгоритма, написанного на языке высокого уровня, в совокупность исполняемых инструкций на множестве ПЭ представляет собой принципиально другой процесс, чем для архитектуры фон-Неймана. Кроме того, сам язык программирования, вероятно, будет значительно отличаться от языков типа С, прежде всего, в части средств описания множественных потоков и их взаимодействия. Поэтому перечень проблем, которые нужно решить для создания средств программирования ОВС MiniTera II, весьма велик, а сами проблемы во многом не разрешены даже на теоретическом уровне. Все это заставляет уделять внимание многим конкретным и даже возможно частным задачам создания средств программирования ОВС. Одной из таких задач является разработка языка описания макросов.

Макросы в системе программирования ОВС

При создании реальных проектов часто требуется значительное число ПЭ, что может представить трудность в программировании ОВС. Так, например, реализация алгоритма БПФ для N-отсчетного цифрового сигнала при N порядка тысяч может потребовать нескольких десятков тысяч ПЭ. Запрограммировать такой массив чрезвычайно сложно, поэтому весьма актуальным является использование иерархического программирования посредством макросов. Под макросом здесь подразумевается группа ПЭ или макросов для выполнения функции или операции.
Задача стандартизации базовых вычислительных процедур, считающаяся сложной для параллельных архитектур общего типа, становится еще более сложной для ОВС, поскольку в число информативных параметров макроса в этом случае необходимо включать геометрические (или топологические) параметры.
Таким образом, создание макросов и их поддержка системой программирования ОВС является актуальной научной задачей. Без ее решения практическое программирование ОВС является не реальным.
Настоящая работа посвящена решению одной из задач создания инструментальной среды программирования ОВС – языку описания макросов ОВС, позволяющему, с одной стороны, однозначно описывать топологию соединений массива ПЭ любой конфигурации, а, с другой – реализовать однозначное соответствие между множествами входных/выходных переменных алгоритмической процедуры и соответствующими множествами внешних полюсов произвольного двумерного макроса.
В существующей системе программирования ОВС MiniTera II отсутствуют работоспособные механизмы текстового описания макросов.
Язык описания макросов

Этот язык состоит из одной списковой структуры, полное описание которой дано в Приложении. Эта списковая структура описывает макрос, как состоящий из ПЭ или из других макросов.
Макрос описывается списком вида:
<имя исходного макроса>/XM,YM/( (SI), (SO), (SPE&M) );
где:
<имя исходного макроса> - имя длиной не более 8 символов;
XM, YM - ширина и высота исходного макроса в количестве ПЭ;
SI, SO - списки входов и выходов исходного макроса;
SPE&M - список ПЭ и макросов исходного макроса.
Разработан также компилятор, который переводит эту списковую структуру в описание, которое воспринимается существующей системой программирования MiniTera II..

Пример

Пусть нужно вычислить:
c1 = ( a1 + a2 ) * ( a3 + a4 )
c2 = ( b1 – b2 ) * ( b3 – b4 )
с3 = d1 + d2 + d3 + d4 + d5 + d6
Реализуем вычисление с1 посредством макроса a ( рис. 2 ):
a/3,2/( ( a1/0,0,UL/, a2/0,0,UH/, a3/2,0,UL/, a4/2,0,UH/ ), ( c1/1,1,DL/ ),
( /0,0/( ( a1, a2 ), ( aa1/RL/ ), ( ALU( I1 = UL, I2 = UH, O = Add, O1 = RL ) ) ),
/2,0/( ( a3, a4 ), ( aa2/LL/ ), ( ALU( I1 = UL, I2 = UH, O = Add, O1 = LL ) ) ),
/1,0/( ( aa1, aa2 ), ( 1/DL/ ), ( ALU( I1 = LL, I2 = RL, O = Mul, O1 = DL ) ) ),
/1,1/( ( 1 ), ( c1 ), ( Tranzit( I1 = UL, O1 = DL ) ) ) ) );
Реализуем вычисление с2 посредством макроса b ( рис. 2 ):
b/3,2/( ( b1/0,0,UL/, b2/0,0,UH/, b3/2,0,UL/, b4/2,0,UH/ ), ( c2/1,1,DL/ ),
( /0,0/( ( b1, b2 ), ( bb1/RL/ ), ( ALU( I1 = UL, I2 = UH, O = Sub, O1 = RL ) ) ),
/2,0/( ( b3, b4 ), ( bb2/LL/ ), ( ALU( I1 = UL, I2 = UH, O = Sub, O1 = LL ) ) ),
/1,0/( ( bb1, bb2 ), ( 1/DL/ ), ( ALU( I1 = LL, I2 = RL, O = Mul, O1 = DL ) ) ),
/1,1/( ( 1 ), ( c2 ), ( Tranzit( I1 = UL, O1 = DL ) ) ) ) );
Реализуем вычисление с3 посредством макроса d ( рис. 2 ):
d/3,2/( ( d1/0,0,UL/, d2/0,0,UH/, d3/1,0,UL/, d4/1,0,UH/, d5/2,0,UL/, d6/2,0,UH/ ),
( c3/2,1,DL/ ),
( /0,0/( ( d1, d2 ), ( dd1/DL/ ), ( ALU( I1 = UL, I2 = UH, O = Add, O1 = DL ) ) ),
/1,0/( ( d3, d4 ), ( dd2/DL/ ), ( ALU( I1 = UL, I2 = UH, O = Add, O1 = DL ) ) ),
/2,0/( ( d5, d6 ), ( dd3/DL/ ), ( ALU( I1 = UL, I2 = UH, O = Add, O1 = DL ) ) ),
/0,1/( ( dd1, ddd2/RL/ ), ( dd4/RL/ ), ( ALU( I1 = UL, I2 = RL, O = Add, O1 = RL ) ) ),
/1,1/( ( dd2, dd4 ), ( ddd2, ddd4/RL/ ), ( Tranzit( I1 = UL, O1 = LL, I2 = LL, O2 = RL ) ) ),
/2,1/( ( dd3, ddd4 ), ( c1 ), ( ALU( I1 = UL, O1D = 1, I2 = LL, O = Add, O1 = DL ) ) ) ) );


Теперь можно с помощью макроса сcc вычислить с1, с2, c3 ( рис. 3 ):
ccc/9,2/( ( a1, a2, a3, a4, b1, b2, b3, b4, d1, d2, d3, d4, d5, d6 ), ( c1, c2, c3 ),
( a/0,0/( ( a1, a2, a3, a4 ), ( c1 ) ), b/3,0/( ( b1, b2, b3, b4 ), ( c2 ), d/6,0/(( d1 , d2 , d3 , d4 , d5 , d6), ( c3 ) ) ) );

Заключение

Язык описания макросов для ОВС MiniTera II предназначен для текстового описания и последующего порождения макросов. Этот язык дает возможность строить макросы любого типа, наличие компилятора позволяет визуализировать графическое обозначение макроса в существующей системе программирования ОВС.
В дальнейшем язык описания макросов будет дополнен средствами синхронизации потоков данных, что позволит автоматизировать компоновку макросов в составе целого проекта, а также отлаживать программу в клеточном пространстве ОВС.

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

1. Колдовский В. Язык Erlang и программирование для мультиядерных процессоров [Электронный ресурс]. – режим доступа: http://itc.ua/node/26721/. – 23.09.08.
2. Кузнецов О.П., Адельсон-Вельский Г.М. Дискретная математика для инженера. – М.: Энергия, 1980. – 409 с.
3. Воеводин В.В. Математические модели и методы в параллельных процессах. – М.: Наука, 1986. . – 296 с.
4. Gross T., O'Hallaron D.R. iWARP. Anatomy of a Parallel Computing System. – MIT Press, March 1998. – 530 pp.
5. Лукин Н.А. Реконфигурируемые процессорные массивы для систем реального времени: архитектуры, эффективность, области применения. // Известия ТРТУ. – 2004. – №9. – C. 36-45.

Дизайн и программирование
N-Studio беременность, мода, красота, здоровье, диеты, женский журнал, здоровье детей, здоровье ребенка, красота и здоровье, жизнь и здоровье, секреты красоты, воспитание ребенка православное искусство, христианская живопись, христианские стихи, книги скачать, христианская литература, плохие мысли рождение ребенка,пол ребенка,воспитание ребенка,ребенок дошкольного возраста, дети дошкольного возраста,грудной ребенок,обучение ребенка,родить ребенка,загадки для детей,здоровье ребенка,зачатие ребенка,второй ребенок,определение пола ребенка,будущий ребенок рождение ребенка,пол ребенка,воспитание ребенка,ребенок дошкольного возраста, дети дошкольного возраста,грудной ребенок,обучение ребенка,родить ребенка,загадки для детей,здоровье ребенка,зачатие ребенка,второй ребенок,определение пола ребенка,будущий ребенок медицина, клиники и больницы, болезни, врач, лечение, доктор, наркология, спид, вич, алкоголизм, медицинский сайт
© 2008-2017
Институт машиноведения 0,119