Средства явной спецификации векторных операций и их использование для программирования вычислительных задач


Скачать 285.45 Kb.
НазваниеСредства явной спецификации векторных операций и их использование для программирования вычислительных задач
страница1/5
ТипЛитература
  1   2   3   4   5



ИНСТИТУТ ПРИКЛАДНОЙ МАТЕМАТИКИ

им. М.В. КЕЛДЫША

РОССИЙСКОЙ АКАДЕМИИ НАУК

А.М.Горелик

СРЕДСТВА ЯВНОЙ СПЕЦИФИКАЦИИ

ВЕКТОРНЫХ ОПЕРАЦИЙ И ИХ ИСПОЛЬЗОВАНИЕ ДЛЯ

ПРОГРАММИРОВАНИЯ ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ

Москва

2003
А.М.Горелик

Средства явной спецификации векторных операций и их использование для программирования вычислительных задач
Аннотация

Описываются средства явной спецификации векторных операций, имеющиеся в современном стандарте Фортрана. Обосновывается целесообразность их применения и приводятся рекомендации по их использованию. Для иллюстрации преимуществ использования таких средств описание сопровождается большим количеством примеров, некоторые из которых приведены и на Фортране 77, и на Фортране 90/95.
Работа выполнена при финансовой поддержке Российского фонда фундаментальных исследований (проект 03-01-00182).


A.M.Gorelik

Explicit array specification features and their use for programming of scientific applications
The preprint of the Keldysh Institute of Applied Mathematics,
Russian Academy of Sciences

Abstract

Array notation features in Fortran 90/95 are discussed. Expedience of their use is substantiated. Recommendations to their use are given. To illustrate their adventages the description is accompanied by many examples some of them are both in Fortran 77 and in Fortran 90/95.
This work was supported by Russian Foundation for Fundamental Investigations (Project 03-01-00182).

Содержание
1. Введение 4

2. Средства работы с массивами. Общие сведения 5

3. Конструктор массива 6

4. Секция массива 7

5. Выражения и присваивания с массивами 9

6. Присваивание по маске 11


7. Оператор и конструкция FORALL 14

8. Механизмы динамического размещения массивов 16

9. Встроенные функции для работы с массивами 17

9.1. Состав и классификация встроенных функций 17

9.2. Поэлементные функции 18

9.3. Функции преобразования массивов 18

9.4. Справочные функции для массивов 25

10. Заключение 25

Литература 26
1. Введение

При разработке больших и сложных программ для решения задач вычислительного характера возникает много разнообразных проблем. Одна из этих проблем связана с тем, что большие программы обычно содержат многочисленные громоздкие вложенные циклы и условные переходы. Это делает программу трудно читаемой, плохо структурированной, что вызывает массу проблем, знакомых каждому программисту. Такие программы трудно отлаживать, модифицировать, распараллеливать, переносить в другое окружение; затруднено и сопровождение таких программ.

Современный Фортран [1-7] (в отличие от Фортрана 77) позволяет во многих случаях обойти эти трудности. Язык предоставляет большой набор средств для работы с массивами и секциями массивов как с целыми объектами на поэлементной основе. Впервые эти средствпа были введены в стандарт языка, неформально называемый Фортран 90 [1], дальнейшее развитие они получили в действующем в настоящее время стандарте – Фортране 95 [2].

Новые средства работы с массивами обеспечивают большие возможности, позволяющие упростить способ организации и написания почти всех программ, использующих массивы, так как позволяют во многих случаях обойтись без вложенных циклов и условных переходов. Mногие алгоритмы, включающие работу с массивами, могут быть записаны более лаконично и наглядно как последовательность вычислений над полными массивами. Такие средства делают программу более структурной и более объектно-ориентированной.

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

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

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

Пути решения других проблем, возникающих при разработке больших вычислительных программ, можно найти, например, в [7-9].

2. Средства работы с массивами. Общие сведения

Современный Фортран, как уже отмечалось, предоставляет большой набор средств для работы с массивами и секциями массивов как с целыми объектами на поэлементной основе. В этом разделе приводится перечень имеющихся средств и вводятся некоторые термины, используемые в дальнейшем описании.

B языке разрешены выражения и присваивания для массивов. Например, если A и B – двумерные массивы, то операция A*B означает не умножение матриц (для этого имеется встроенная функция MATMUL), а поэлементное умножение, выполняемое в произвольном порядке.

Введены секции массива и конструкторы массивов. Секция массива позволяет адресоваться к части массива (см. 4. и 7.). Секция задается с помощью имени массива и списка индексов секции. Конструкторы массивов позволяют задавать последовательность скаляров в качестве одномерного массива без имени (см. 3.).

Имена массивов без индексов (полные массивы), секции массивов и конструкторы массивов могут использоваться в качестве операндов выражений, в левой части оператора присваивания (см. 5.), как фактические аргументы процедур, в списке ввода-вывода. Кроме того, массив может быть также значением выражения и значением функции (как встроенной, так и определяемой пользователем).

Имеется также возможность условного присваивания массиву под управлением логической маски (см. 6.), параллельный цикл (см. 7.), большой набор встроенных процедур для работы с массивами (см. 9.) и средства динамического размещения массивов (см. 8.).

Использование массивов в выражениях и операторах подчиняется определенным ограничениям. Для формулировки этих ограничений используются некоторые термины, приведенные ниже.

Ранг массива (rank) - это число измерений массива, или размерность. Допускаются массивы с рангом от 1 до 7 включительно. Ранг скаляра считается равным 0.

Конфигурация массива (shape) - это одномерный массив целого типа, размер которого равен рангу исходного массива, а элементы равны размерам соответствующих измерений. Например, для массива со спецификацией измерений (2:10, 3, -1:1) конфигурация массива представляет собой одномерный массив длина которого равна трем, элементы - 9, 3, 3.

Массивы, имеющие одинаковую конфигурацию, называются согласованными (conformable). Скаляр считается согласованным с любым массивом. В выражениях могут использоваться только согласованные (по конфигурации) операнды.

Элементы двух массивов считаются соответствующими, если они занимают одинаковое положение относительно первого элемента массива (имеют одинаковый приведенный индекс). Операции выполняются над соответствующими элементами массивов.

3. Конструктор массива

Конструктор массива позволяет задавать одномерный массив без имени. Конструктор массива описывается как последовательность скалярных значений и интерпретируется как одномерный массив. Последовательность значений заключается в скобки “(/” и ”/)”.

Общий вид конструктора можно найти в официальном описании языка [1-2 ]. Приведем несколько примеров для иллюстрации.

Примеры.

(/ 4.0, 2.0, 6.3 /) - одномерный массив, содержащий три элемента.

(/ (2.9, L=1,10), 9.2 /) - одномерный массив, размер его равен 11, содержит вещественную константу 2.9, повторенную 10 раз, а затем константу 9.2.

(/ (I, I = 1,N) /) - массив содержит целые числа 1, 2, ..., N.

Tаким способом можно сконструировать только одномерные массивы, а массивы большей размерности можно получить из них посредством встроенной функции RESHAPE (см. 9.3.7.).

4. Секция массива

Секция массива обеспечивает возможность адресоваться к части массива. Секция задается именем массива, списком индексов секции и, возможно, списком индексов подстроки (для данных символьного типа). Секция массива может состоять как из расположенных подряд элементов исходного массива, так и из несвязных областей этого массива.

Расположение элементов секции подчиняется тем же правилам, что и расположение элементов обычных массивов.

Bезде, где можно использовать полные массивы, допустимо использование секций массива.
  1   2   3   4   5

Похожие:

Средства явной спецификации векторных операций и их использование для программирования вычислительных задач iconМетодические указания по выполнению лабораторных работ на алгоритмическом...
Хотя набор стандартных функций электронных таблиц достаточно широк, для некоторых задач он либо недостаточен, либо выполнение таких...

Средства явной спецификации векторных операций и их использование для программирования вычислительных задач iconЕ. Н. Акимова основы программирования на языке фортран учебное пособие
Применение многопроцессорных вычислительных систем (мвс) ставит две задачи построения параллельных алгоритмов: распараллеливание...

Средства явной спецификации векторных операций и их использование для программирования вычислительных задач iconИспользование криптографических средств защиты информации в зарубежных филиалах
В эпоху электронного документооборота оптимальным решением данной проблемы является использование средства криптозащиты информации....

Средства явной спецификации векторных операций и их использование для программирования вычислительных задач iconПрактическая работа №2
Цель. Изучение понятия Спецификация. Применение спецификации. Изучить разделы спецификации и их составляющие. Научиться правильно...

Средства явной спецификации векторных операций и их использование для программирования вычислительных задач iconУсловия программы лояльности для клиентов пао «Совкомбанк» Кострома
Банковская карта (далее Карта) вид электронного средства платежа, предназначена для проведения операций по погашению кредитов, выданных...

Средства явной спецификации векторных операций и их использование для программирования вычислительных задач iconУсловия программы лояльности для клиентов пао «Совкомбанк» Кострома
Банковская карта (далее Карта) вид электронного средства платежа, предназначена для проведения операций по погашению кредитов, выданных...

Средства явной спецификации векторных операций и их использование для программирования вычислительных задач iconМетодические указания содержат общие понятие объектно-ориентированного...
Методические указания предназначены для выполнения курсовой работы по дисциплине «Объектно-ориентированное программирование» для...

Средства явной спецификации векторных операций и их использование для программирования вычислительных задач iconПараллелизм вычислительных процессов и развитие архитектуры суперэвм
Работ публикуется впервые. В работах прослеживается основное направление исследований создание нетрадиционных высокопараллельных...

Средства явной спецификации векторных операций и их использование для программирования вычислительных задач iconКраткое содержание курса
Бухгалтерия предприятия, редакция 0 и их использование для решения учетных задач при упрощенной системе налогообложения

Средства явной спецификации векторных операций и их использование для программирования вычислительных задач iconУсловия программы лояльности по банковским картам в ОАО «икб «Совкомбанк» Кострома
Банковская карта (далее Карта) вид электронного средства платежа, предназначена для проведения операций по погашению кредитов, выданных...

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск