Компилятор Fortran DVM |
- дата последнего обновления 25.09.00 -
Оглавление
1
Введение
2 Назначение компилятора
3 Вызов компилятора
4 Опции компилятора
5 Компиляция программы в
режиме отладки
6 Компиляция HPF-DVM программы
7 Сообщения компилятора
Данное руководство содержит инструкции по использованию компилятора Fortran DVM(FDVM) и является частью общего руководства пользователя DVM-системы.
В руководстве приняты следующие условные обозначения для описания синтаксических конструкций.
::= | - по определению |
| | - альтернатива |
[x] | - необязательный элемент |
y-list | - список элементов y [ , y ]… |
Язык Fortran DVM (FDVM) является расширением языка Фортран 77 для параллельного программирования в модели DVM. Расширение оформлено в виде специальных комментариев (директив), которые аннотируют последовательную программу на языке Фортран 77.
Компилятор транслирует исходную программу на языке FDVM или HPF-DVM в следующие выходные программы.
Вызов компилятора осуществляется следующей командной строкой:
dvm fdv [ <опции> ] <имя-файл>
где:
<опции> | - указания о режимах компиляции. Если какое-либо указание отсутствует, то для него действует значение по умолчанию. Если две опции противоречат друг другу, то преимущество получает последняя из указанных в командной строке опций; |
<имя-файла> | - имя файла (без расширения), который содержит текст исходной программы на языке FDVM. Файл должен иметь расширение .fdv. Поиск входного файла производится только в текущей директории. |
Для описания синтаксиса опций введены следующие обозначения. Жирным шрифтом будем выделять ключевые символы, а курсивом – параметры опций. Ниже перечислены опции компилятора.
-o file | Поместить выходную программу в файл file; |
-s | Генерировать последовательную выходную программу; |
-p | Генерировать параллельную выходную программу; |
-hpf1 | Генерировать выходную программу на языке HPF1; |
-hpf2 | Генерировать выходную программу на языке HPF2; |
-v | Выдать сообщения о вызовах фаз компилятора, а также номер версии компилятора; |
-w | Выдать все предупреждающие сообщения; |
-Idir | Добавить директорию dir в список директорий, где осуществляется поиск include файлов. |
-bindk | Задает соответствие типов данных в компиляторах с языков Фортран и Си; |
-dleveld[:fr-list] | Генерировать дополнительный код для отладки программы; |
-elevele[:fr-list] | Генерировать дополнительный код для анализа производительности программы. |
Выходной файл. Имя выходного файла, в котором компилятор размещает сгенерированную программу, указывается с помощью опции
-o file
где file представляет собой имя файла. Если опция не указана, то по умолчанию, выходной файл получает имя <имя-файла>.f или <имя-файла>.hpf в режиме генерации программы на языке HPF. Выходной файл записывается в текущую директорию.
Тип генерируемой программы. Тип генерируемой программы задается следующими опциями:
–s | - последовательная программа |
–p | - параллельная программа |
–hpf1 | - программа на языке HPF1 |
–hpf2 | - программа на языке HPF2 |
По умолчанию генерируется параллельная программа.
Директории для include-файлов. Если в исходной программе имеются операторы INCLUDE и не все include-файлы размещены в текущей директории, то необходимо указать опцию
-Idir
где dir - это имя директории. Поиск include-файла начинается с директорий, указанных в командной строке в том порядке, как они там перечислены. Затем поиск производится в текущей директории.
Дополнительная информация. Для идентификации версии компилятора и выполнения фаз компиляции необходимо указать опцию
-v
а для получения всех предупреждающих сообщений задать опцию
-w
Соответствие типов данных. Соответствие типов данных в компиляторах с языков Си и Фортран для ЭВМ, на которой будет выполняться сгенерированная программа, указывается с помощью опции
-bindk
где k - это целое число, которое указывает номер таблицы соответствия.
k = 0: | ||
Фортран |
Си |
Размер (в байтах) |
integer | long | 4 |
real | float | 4 |
double precision | double | 8 |
character | char | 1 |
logical | long | 4 |
k = 1: | ||
Фортран |
Си |
Размер (в байтах) |
integer | int | 4 |
real | float | 4 |
double precision | double | 8 |
character | char | 1 |
logical | int | 4 |
integer*8 | long | 8 |
Соответствие типов определяется стандартными компиляторами с языков Си и Фортран для объектной ЭВМ. По умолчанию, считается k = 0.
Замечание. Наличие или отсутствие опций –bind, -d, и -e не оказывает никакого влияния на генерацию программы на языке HPF ( режим –hpf1 или –hpf2).
5 Компиляция программы в режиме отладки
Для программ на языке FDVM предусмотрены два способа отладки:
Для каждого способа определено несколько уровней отладки.
Уровни функциональной отладки. Уровень функциональной отладки – это целое число от 0 до 4, оно определяет события в программе, о которых сообщается отладчику:
0 - нет событий,
1 - модификация распределенных
массивов,
2 - модификация и использование
распределенных массивов,
3 - модификация всех переменных,
4 - модификация и использование всех
переменных.
Уровни отладки эффективности. Уровень отладки эффективности– это целое число от 0 до 4, которое определяет, какие участки программы рассматриваются в качестве интервалов выполнения программы. Для каждого такого интервала можно получить характеристики эффективности.
0 - | нет интервалов, |
1 - | параллельные циклы и охватывающие их последовательные циклы, |
2 - | последовательности операторов, указанные в программе посредством директив INTERVAL и END INTERVAL, |
3 - | объединение подмножеств 1 и 2, |
4 - | все циклы и интервалы, заданные с помощью директив INTERVAL и END INTERVAL. |
Последовательность операторов можно объявить интервалом с помощью директив:
CDVM$ INTERVAL [<целочисленное-выражение>]
<последовательность-операторов>
CDVM$ END INTERVAL
Каждый интервал операторов должен удовлетворять условиям блока операторов:
Другими словами запрещены передачи управления извне внутрь интервала, и изнутри интервала - на оператор вне интервала.
Фрагменты программы. Программу можно разделить на отдельные отлаживаемые фрагменты. Каждый фрагмент определяется директивами
CDVM$ DEBUG <номер-фрагмента> [(
<параметр> )]
<фрагмент-операторов>
CDVM$ END DEBUG <номер-фрагмента>
<номер-фрагмента> | ::= | <целое-положительное-число> |
<параметр> | ::= | D = levele |
| | E = leveld | |
| | D = leveld , E = levele |
где:
параметр D указывает
максимально возможный уровень
функциональной отладки,
параметр E указывает максимально
возможный уровень отладки
эффективности,
leveld – целое
число от 0 до 4,
levele – целое
число от 0 до 4.
Фрагмент операторов должен удовлетворять условиям блока операторов.
Допускается вложенность фрагментов. Пусть f1 обозначает множество операторов охватывающего фрагмента, l1 – заданный в директиве DEBUG уровень отладки для данного фрагмента, а f2 и l2 - множество операторов и уровень отладки вложенного фрагмента. Тогда для множества операторов f1 – f2 максимально допустимым является уровень l1, а для множества f2 максимально допустимым является уровень l2.
Вся программа считается по умолчанию фрагментом с номером 0 и максимально допустимыми уровнями отладки D = 4 , E = 4.
Пусть задана следующая структура фрагментов программной единицы:
SUBROUTINE SUB(…) S1 CDVM$ DEBUG 1 (D = 4 , E = 1) S2 CDVM$ DEBUG 2 (D = 1 , E = 3) S3 CDVM$ END DEBUG 2 S4 CDVM$ END DEBUG 1 S5 END
Эта структура определяет следующие максимально допустимые уровни отладки:
Множество операторов |
Уровень отладки |
{ S1, S5 } | D = 4 , E = 4 |
{ S2, S4 } | D = 3 , E = 1 |
{ S3 } | D = 1 , E = 3 |
Уровни отладки в опциях компилятора.
Уровень отладки для всей программы определяется опциями
-dleveld - для
функциональной отладки,
-elevele -
для отладки эффективности.
По умолчанию действуют опции –d0 и –e0.
Уровень отладки для отдельных фрагментов определяется опциями:
-dleveld [:fr-list]
-elevele [:fr-list]
где:
fr ::= Lfr [ -
Hfr ]
Lfr ::= <номер-фрагмента>
Hfr ::= <номер-фрагмента>
Требуется, чтобы Lfr? Hfr.
fr-list – это список, где каждый элемент списка представляет собой либо номер отдельного фрагмента, либо непрерывный диапазон номеров фрагментов. Пусть в директиве DEBUG определен для некоторого фрагмента уровень отладки равный m. Если для этого фрагмента в опциях компилятора задан уровень l, то фрагмент будет включен в отладку с уровнем min( m , l ).
Пусть при компиляции программы указаны следующие опции отладки
-d2:1-2 -e2
Для подпрограммы SUB будут установлены следующие уровни отладки:
Множество операторов |
Уровень функциональной отладки |
Уровень отладки эффективности |
{ S1, S5 } | 0 | 2 |
{ S2, S4 } | 2 | 1 |
{ S3 } | 1 | 2 |
Подробнее об отладке программы см. “Отладка DVM–программ. Руководство по использованию” и “Отладка эффективности DVM-программ. Руководство по использованию”.
Трассировка выполнения функций Lib-DVM. “Включить” и “отключить” сбор трассы обращений к Lib-DVM можно с помощью директив отладки
CDVM$ TRACE ON
CDVM$ TRACE OFF
6 Компиляция HPF-DVM программы
Для трансляции программы на языке HPF-DVM требуется выполнить команду
dvm fdv [ <опции> ] <имя-файла>.hpf
Дополнительно к опциям, описанным в разделе 3, определены следующие опции компилятора, которые позволяют повысить эффективность выходной программы. Они специфицируют свойства исходной HPF-DVM программы.
-Hshwwidth | Указывает максимальную ширину теневых граней всех распределенных массивов, используемых в программе, width – целое неотрицательное число, по умолчанию width = 1; |
-Honeq | Указывает на возможность однократного выполнения запросов по удаленным данным; |
-Honlyl | Указывает, что в последовательных ветвях программы (вне циклов INDEPENDENT) операнды локализованы, т.е. отсутствует удаленный доступ к данным в последовательных ветвях. |
Если компилятор обнаруживает в исходной программе ошибку, то он выдает сообщение следующего вида
< тип-сообщения> < номер-сообщения> on line < номер-строки> of < имя-файла> : < текст-сообщения>
где:
< тип-сообщения> | - Warning | предупреждающее сообщение, не препятствующее генерации выходной программы. |
- Error | ошибка, при которой невозможна генерация программы. | |
< номер-строки> | - целое число, которое указывает номер строки в файле < имя-файла> , при анализе которой обнаружена ошибка. | |
< текст-сообщения> | -текст сообщения на английском языке. |
Ниже приведены номера ошибок, тексты сообщений и пояснения к ним.
000 | Compiler bug Сообщение говорит об ошибке компилятора, а не пользователя. Рекомендуется сообщить об ошибке разработчикам компилятора. |
001 | Unknown option option is ignored Предупреждение. Неправильно заданная (в командной строке) опция игнорируется. |
002 | Invalid option argument arg is ignored Предупреждение. Неправильно заданный (в командной строке) параметр опции игнорируется. |
003 | No source file specified В командной строке не указано имя входного файла. |
004 | Illegal command line format Неправильный формат командной строки. Все опции должны предшествовать имени входного файла. |
005 | Can't open file filename В текущей директории нет входного файла или он защищен от чтения. Include-файл не найден или защищен от чтения. |
006 | Can't open file filename for write Вероятно, пользователь не имеет прав на запись в текущую директорию. |
007 | Null program Входной файл не содержит программу на языке FDVM. |
008 | Missing final end statement or
unclosed construct Оператор PROGRAM, SUBROUTINE, FUNCTION, или BLOCK DATA не имеет завершающего END или нет завершающего оператора ENDIF или ENDDO для конструкции IF THEN или DO, соответственно. |
009 | Illegal continuation card ignored Строка продолжения несовместима с начальной строкой или последняя отсутствует. В этом случае, строка продолжения игнорируется, а компилятор пытается продолжить анализ оператора. |
010 | Unclassifiable statement Вероятно, неверно задано ключевое слово оператора Фортран 77 или директивы FDVM. |
011 | Non digit in statement number field Поле метки содержит не цифровой символ. |
012 | Unbalanced quotes; closing quote
supplied Нет закрывающего апострофа. |
013 | Unbalanced parentheses, statement
skipped Несоответствие открывающих и закрывающих скобок. |
014 | Syntax error Ошибка синтаксиса оператора Фортран 77 или директивы FDVM. |
015 | Comment too long. Truncated to 160
characters Предупреждение. Комментарий превышает 160 символов. |
016 | Inconsistent declaration of
identifier identifier Имя уже использовалось для другого объекта. |
017 | Inconsistent constant declaration identifier Идентификатор PARAMETER уже использован для другого объекта. |
018 | Inconsistent array declaration of
identifier identifier Идентификатор массива уже описан другим способом. |
019 | Inconsistent function identifier Идентификатор FUNCTION уже определен как другой глобальный объект или как локальный массив. |
020 | Inconsistent procedure identifier Идентификатор EXTERNAL уже определен как другой глобальный объект. |
021 | Inconsistent subroutine identifier Идентификатор SUBROUTINE уже определен как другой глобальный объект. |
022 | Inconsistent program declaration identifier Идентификатор PROGRAM уже определен как COMMON, FUNCTION, или SUBROUTINE. |
023 | Inconsistent common declaration identifier Идентификатор COMMON уже определен как FUNCTION, PROGRAM или SUBROUTINE. |
024 | Function has the same name as a
common block identifier Предупреждение. Идентификатор функции совпадает с идентификатором COMMON блока. |
025 | Common block has the same name as a
function identifier Предупреждение. Идентификатор COMMON блока совпадает с идентификатором функции. |
026 | Inconsistent operands to boolean
operation Несовместимость операндов логической операции |
027 | Inconsistent operands to arithmetic
operation Несовместимость операндов арифметической операции |
028 | Non-logical expression in IF
statement Не логическое выражение в операторе IF |
029 | Statement order error: declaration
after DATA or function statement Неверный порядок операторов: оператор спецификации после оператора DATA или описания операторной функции. |
030 | Declaration among executables Неверный порядок операторов: оператор спецификации среди исполняемых операторов. |
031 | ELSEIF out of place Нарушено правило вложенности конструкций. Оператору ELSEIF невозможно сопоставить оператор IF-THEN. |
032 | ELSE out of place Нарушено правило вложенности конструкций. Оператору ELSE невозможно сопоставить оператор IF-THEN. |
033 | Misplaced PROGRAM statement Оператор PROGRAM расположен не на своем месте. |
034 | Misplaced SUBROUTINE statement Оператор SUBROUTINE расположен не на своем месте. |
035 | Misplaced ENTRY statement Оператор ENTRY расположен не на своем месте. |
036 | Statement cannot be reached Предупреждение. Оператор никогда не будет выполнен. |
037 | IMPLICIT item must be single letter В операторе IMPLICIT единицей спецификации должна быть буква. |
038 | Label out of range Метка вне диапазона 1? 99999. |
039 | Label already that of a format Метка совпадает с ранее описанной меткой оператора FORMAT. |
040 | Label label already defined Повторное определение метки. |
041 | Non character entity identifier has length specification Спецификация количества байтов при идентификаторе (например, CH*6) разрешена только в операторе CHARACTER. |
042 | No dimensions in DIMENSION
statement В операторе DIMENSION отсутствует спецификация измерений. |
043 | Too many dimensions Количество измерений массива больше 7. |
044 | can't subscript identifier Индексируется объект, не являющийся массивом. |
045 | can't take substring of identifier Ссылка на подстроку не символьного объекта. |
046 | No backward DO loops Метка цикла определена до оператора DO. |
047 | Symbolic constant not allowed as DO
variable Управляющей переменной цикла не может быть именованная символьная константа. |
048 | Must go to assigned variable В операторе GO TO по предписанию должна быть указана переменная, получившая значение при помощи оператора ASSIGN. |
049 | Missing DVM directive prefix Отсутствует префикс CDVM$ или *DVM$ перед DVM директивой. |
050 | Explicit shape specification is
required Требуется спецификация явной конфигурации в операторах PROCESSORS и TEMPLATE. |
051 | Distribution format list is omitted Нет списка форматов распределения в директиве DISTRIBUTE. |
052 | Unexpected END statement read Нарушена структура фортран-программы. |
053 | Illegal use of PROCESSORS name identifier Идентификатор массива процессоров можно использовать только в операторах DISTRIBUTE, REDISTRIBUTE и MAP. |
054 | A distributee may not have the
ALIGN attribute: identifier Массив уже имеет атрибут ALIGN. |
055 | Distribution format BLOCK(n) is not
permitted in FDVM Формат распределения BLOCK(n) не поддерживается в FDVM. |
056 | Illegal shadow width specification Неверная спецификация размера теневых граней. |
057 | An alignee may not have the
DISTRIBUTE attribute: identifier Массив уже имеет атрибут DISTRIBUTE. |
058 | The alignee identifier isn't an array Объект, специфицированный директивой ALIGN, не является массивом. |
059 | 'identifier'
hasn't
the DYNAMIC attribute Указанный массив не имеет атрибута DYNAMIC. |
060 | 'identifier'
hasn't
the ALIGN attribute Указанный массив не имеет атрибута ALIGN. |
061 | The align-target identifier isn't declared as array Объект, указанный в директиве ALIGN в качестве базы выравнивания, не является массивом. |
062 | The align-dummy identifier isn't a scalar integer
variable Идентификатор измерения (align-dummy), используемый в директиве ALIGN, должен быть скалярной целой переменной. |
063 | Illegal combination of attributes Недопустимое сочетание атрибутов. |
064 | 'identifier'
has the
DISTRIBUTE and ALIGN attribute Указанный идентификатор имеет несовместимые атрибуты DISTRIBUTE и ALIGN. |
065 | No shape specification Отсутствует спецификация измерений. |
066 | 'identifier'
isn't
array Указанный идентификатор не описан как массив. |
067 | 'identifier'
is not
processor array Требуется идентификатор массива процессоров. |
068 | 'identifier'
is not
remote group name Указанный идентификатор не имеет атрибута REMOTE_GROUP. |
069 | 'identifier'
is not
declared as reduction group Указанный идентификатор не имеет атрибута REDUCTION_GROUP. |
070 | Illegal reduction operation name Неверно задано имя редукционной операции. |
071 | Illegal use of task array name identifier Недопустимое использование идентификатора массива задач. Ссылка на массив задач может появиться только в директивах TASK_REGION, ON, REDISTRIBUTE, MAP и в директиве параллельного цикла задач. |
072 | 'identifier'
isn't
distributed array Требуется массив с атрибутом DISTRIBUTE, ALIGN или INHERIT. |
073 | Multiple declaration of identifier 'identifier' Повторное описание идентификатора. |
074 | 'identifier'
isn't
declared as group Требуется переменная с атрибутом REMOTE_GROUP. |
075 | No dimensions in TASK directive В операторе TASK отсутствует спецификация измерений. |
076 | Illegal rank of 'identifier' Число измерений у массива задач больше 1. |
077 | 'identifier'
is not
task array Требуется массив задач. |
078 | Illegal interval number В директиве INTERVAL номер интервала должен быть задан выражением целого типа. |
079 | Template
'identifier' is
in COMMON Идентификатор TEMPLATE не может быть описан как элемент COMMON блока. |
080 | Template may not be a dummy
argument: identifier Идентификатор c атрибутом TEMPLATE не может быть формальным аргументом. |
081 | ENTRY among specification
statements Предупреждение. Оператор ENTRY среди операторов спецификации. |
082 | Duplicate aligning of the array 'identifier' Повторное выравнивание указанного массива. |
083 | POINTER
'identifier' is
not integer variable Идентификатор с атрибутом POINTER должен иметь тип INTEGER. |
084 | POINTER may not have SAVE attribute: identifier Идентификатор с атрибутом POINTER не может иметь атрибут SAVE. |
085 | POINTER 'identifier' is
not distributed object Идентификатор с атрибутом POINTER должен иметь атрибут DISTRIBUTE или ALIGN. |
086 | Object 'identifier'
has
neither TEMPLATE nor PROCESSORS attribute В объединенной директиве спецификации с атрибутом DIMENSION может быть описан только объект TEMPLATE или PROCESSORS. |
087 | Illegal shape specification in
DIMENSION attribute В объединенной директиве спецификации с атрибутом DIMENSION встретился недопустимый описатель массива. |
088 | Length of shadow-edge-list is not
equal to the rank of array 'identifier' Число указанных теневых граней не равно числу измерений массива. |
089 |
attribute attribute
appears more than once in the combined-directive Указанный атрибут упоминается более одного раза в объединенной директиве спецификации. |
090 | The number of BLOCK/GENBLOCK
elements of dist-format-list is greater than the rank of
PROCESSORS 'identifier' Количество форматов BLOCK и GENBLOCK не равно количеству измерений массива процессоров. |
091 | Missing HEAP declaration Отсутствует описание пула динамической памяти HEAP. |
092 | Alignment tree root 'identifier' is
not distributed Корень дерева выравнивний массива не имеет атрибута DISTRIBUTE. |
093 | PAUSE statement is not permitted in
FDVM Оператор PAUSE запрещен в FDVM |
094 | Illegal statement in the range of
parallel loop Недопустимый оператор в теле параллельного цикла. |
095 | Only a value of ALLOCATE function
or other POINTER may be assigned to a POINTER Переменной POINTER можно присвоить только значение другой переменной POINTER или значение функции ALLOCATE. |
096 | Nested PARALLEL directives are not
permitted Вложенные параллельные циклы не допускаются. |
097 | PARALLEL directive must be followed
by DO statement Директива PARALLEL должна предшествовать оператору DO. |
098 | The directive is inside the range
of PARALLEL loop В теле параллельного цикла не должно быть директив FDVM. |
099 | Misplaced REMOTE_ACCESS directive Директива REMOTE_ACCESS находится не на своем месте. |
100 | Nested TASK_REGION are not
permitted Запрещена вложенность конструкций TASK_REGION. |
101 | Statement is outside of on-block Оператор внутри TASK_REGION не входит ни в один ON–блок. |
102 | No matching TASK_REGION Для директивы END TASK_REGION нет соответствующей директивы TASK_REGION. |
103 |
Misplaced directive Директива не на своем месте. Область задач или ON –блок не является блоком операторов. |
104 | Nested ON-blocks are not permitted Запрещена вложенность ON –блоков. |
105 | ON directive is outside of the task
region Директива ON вне области задач. |
106 | No matching ON directive Для директивы END ON нет соответствующей директивы ON. |
107 | Parallel-task-loop directive is
outside of the task region Параллельный цикл задач вне области задач. |
108 | Missing END TASK_REGION directive Нет завершающего оператора для конструкции TASK_REGION. |
109 | Missing END ON directive Нет завершающего оператора для ON-блока. |
110 |
Rank of array identifier
is not
equal to the length of the dist-format-list Число измерений массива не равно числу указанных форматов. |
111 | Saved object may not have the
DYNAMIC attribute: identifier Массив имеет несовместимые атрибуты DYNAMIC и SAVE. |
112 | Object in COMMON may not have the
DYNAMIC attribute: identifier Массив имеет несовместимые атрибуты DYNAMIC и COMMON. |
113 | 'identifier' hasn't
the DYNAMIC attribute Массив должен иметь атрибут DYNAMIC. |
114 | 'identifier'
does not
appear in DISTRIBUTE/INHERIT directive Массив должен иметь атрибут DISTRIBUTE или INHERIT. |
116 | Template
'identifier' appears
as an alignee Шаблон не может иметь атрибут ALIGN. |
117 | Dummy argument 'identifier' is
aligned with local array Формальный аргумент не может быть выровнен на локальный массив. |
118 | Aligned array 'identifier' is
in COMMON but align-target is not Массив с атрибутом COMMON может быть выровнен только на массив с атрибутом COMMON. |
119 | Aligned array 'identifier' has
SAVE attribute but align-target has not Массив с атрибутом SAVE может быть выровнен только на массив с атрибутом SAVE. |
120 | 'identifier' does
not appear in ALIGN and INHERIT directive Массив должен иметь атрибут ALIGN или INHERIT. |
121 | 'identifier' is
a duplicate dummy argument Одинаковые формальные аргументы в заголовке подпрограммы (функции). |
122 | Descriptor array error Неверно задан аргумент функции ALLOCATE – дескриптор динамического массива. |
123 | Rank of pointer identifier is
not equal to the length of the dist-format-list Количество измерений динамического массива не совпадает с количеством заданных форматов. |
124 | Array 'identifier' may
not be allocated Указанный динамический массив не может быть размещен. |
125 | Array 'identifier' may not be aligned Указанный массив не может быть выровнен. |
126 | Illegal aligning of 'identifier' Неправильное задание выравниваний массивов (циклическая цепочка выравниваний). |
127 | Distributed object 'identifier' is
not array Атрибут DISTRIBUTE, ALIGN или INHERIT может иметь только массив. |
128 | Rank of aligned array identifier isn't
equal to the length of align-source-list Длина списка идентификаторов измерений в директиве ALIGN/REALIGN не совпадает с числом измерений указанного массива. |
129 | GEN_BLOCK and WGT_BLOCK in
format-list В списке форматов директивы DISTRIBUTE/REDISTRIBUTE указан и формат GEN_BLOCK, и формат WGT_BLOCK. |
130 | Wrong align-subscript expression Нелинейное выражение выравнивания. Выражения выравнивания, операндом которого является идентификатор измерения I, должно иметь вид: a*I + b, где a, b – константа, переменная или выражение, заключенное в скобки. |
132 | Rank of align-target 'identifier' isn't
equal to the length of align-subscript-list Число индексов базы выравнивания не равно числу измерений по описанию. |
133 | More one occurenсe of do-variable 'identifier' in
iteration-align-subscript-list Повторное использование указанной переменной цикла в списке индексов базы выравнивания в директиве PARALLEL. |
134 | More one occurence of align-dummy 'identifier' in
align subscript list Повторное использование указанного идентификатора измерения в списке индексов базы выравнивания. |
135 | More one occurence of a do-variable
in do-variable-use expression Повторное использование указанной переменной цикла в выражении выравнивания. |
136 | More one occurence of an
align-dummy in align-subscript expression Повторное использование указанного идентификатора измерения в выражении выравнивания. |
137 | Illegal group name use: 'identifier' Недопустимое использование идентификатора группы. |
138 | Illegal POINTER reference: 'identifier' Недопустимое использование переменной с атрибутом POINTER. |
139 | Owner-computes rule Предупреждение. Оператор выполняется по правилу собственных вычислений. |
140 | Wrong number of subscripts
specified for identifier Число индексов не равно числу измерений массива по описанию. |
141 | Illegal type of 'identifier' В данном контексте требуется идентификатор определенного типа. |
142 | Low shadow width of 'identifier' is greater than the
corresponding one specified in SHADOW directive Размер левой теневой грани больше чем в директиве SHADOW. |
143 | High shadow width of 'identifier' is greater than the
corresponding one specified in SHADOW directive Размер правой теневой грани больше чем в директиве SHADOW. |
144 | Low shadow width of 'identifier' is
greater than 1 Размер левой теневой грани больше 1. |
145 | High shadow width of 'identifier' is
greater than 1 Размер правой теневой грани больше 1. |
146 | NEW_VALUE directive must be
followed by REDISTRIBUTE or REALIGN directive Директива NEW_VALUE должна предшествовать директиве REDISTRIBUTE или REALIGN. |
147 | Illegal operand list of
MAXLOC/MINLOC Неверный список операндов редукционной операции MAXLOC/MINLOC. |
148 | 'identifier' is
distributed array Не допускается использование массива с атрибутом DISTRIBUTE, ALIGN или INHERIT. |
149 | Wrong operand of
MAXLOC/MINLOC: identifier Второй операнд редукционной операции MAXLOC/MINLOC должен быть одномерным массивом или скалярной переменной целого типа. |
150 | Illegal clause В параллельном цикле задач допускается только спецификация NEW. |
151 | Wrong reduction variable 'identifier' В качестве редукционной переменной можно использовать только одномерный массив или скалярную переменную. |
152 | Wrong type of reduction variable 'identifier' Неверный тип редукционной переменной. |
153 | Double NEW clause Повторная спецификация NEW. |
154 | Double REDUCTION clause Повторная спецификация REDUCTION. |
155 | Double SHADOW_RENEW clause Повторная спецификация SHADOW_RENEW. |
156 | Double REMOTE_ACCESS clause Повторная спецификация REMOTE_ACCESS. |
157 | Double ACROSS clause Повторная спецификация ACROSS. |
158 | Length of do-variable list in
PARALLEL directive is greater than the number of nested
DO statements Количество переменных цикла, указанных в директиве PARALLEL, превышает количество операторов DO тесно-гнездового цикла. |
159 | Illegal do-variable-list in
PARALLEL directive Переменные цикла, указанные в директиве PARALLEL, не соответствуют переменным тесно-гнездового цикла. |
160 | Wrong iteration-align-subscript in
PARALLEL Нелинейное выражение выравнивания в директиве PARALLEL. Выражения выравнивания, операндом которого является переменная цикла I, должно иметь вид: a*I + b, где a, b – константа, переменная или выражение, заключенное в скобки. |
161 | Rank of array 'identifier' isn't
equal to the length of iteration-align-subscript-list Число индексов базы выравнивания в директиве PARALLEL не равно числу измерений массива по описанию. |
162 | Assumed-size array: identifier Формальный аргумент – массив неопределенного размера не может использоваться ни как элемент ввода-вывода, ни как удаленная переменная в директиве REMOTE_ACCESS. В этих случаях размер массива должен быть известен. |
163 | Reverse is not supported Выравнивание по убыванию индексов (реверс) запрещено. |
164 | Wrong regular subscript expression Не регулярное индексное выражение в директиве REMOTE_ACCESS. |
165 | Length of remote-subscript-list is
not equal to the rank of remote variable Число индексов удаленной ссылки не соответствует числу измерений массива. |
166 | HEAP limit is exceeded Неверная работа с указателями динамических массивов. Сообщение выдается во время выполнения программы. |
167 | Illegal template reference: 'identifier' Идентификатор с атрибутом TEMPLATE может использоваться только в директивах ALIGN, REALIGN и PARALLEL. |
168 | Illegal variable in new-clause: identifier Указанная переменная не может быть указана в спецификации NEW. |
169 | ENTRY of program unit distributed
arrays are in Предупреждение. Оператор ENTRY в процедуре, где используются распределенные массивы. |
170 | Name 'identifier' too long, truncated to 29 Предупреждение. Слишком длинное имя укорачивается до 29 символов. |
171 | No subscripts: identifier В ссылке на массив отсутствуют индексы. |
172 | POINTER 'identifier' in left part of assign
statement has DISTRIBUTE or ALIGN attribute Указатель на массив в левой части оператора присваивания не должен иметь атрибутов DISTRIBUTE и ALIGN. |
173 | Pointers are of different rank Указатели на массивы с разным числом измерений. |
174 | Pointers are of different type Указатели на массивы с разным типом данных. |
175 | Wrong number of subscripts
specified for 'identifier' Указано неверное число индексов в ссылке на элемент массива. |
176 | 'identifier' hasn't PROCESSORS/TASK
attribute Идентификатор должен иметь атрибут PROCESSORS или TASK. |
177 | Associated actual arguments must be
aligned Предупреждение. Фактические аргументы должны быть выровнены. |
178 | Illegal type of do-variable 'identifier' Недопустимый тип переменной цикла. |
179 | Wrong dependence length of
distributed array 'identifier' Длина зависимости, заданная в спецификации ACROSS для указанного массива, не является целой константой. |
180 | Wrong dependence length list of
distributed array 'identifier' Число длин зависимостей, заданных в спецификации ACROSS для указанного массива, не совпадает с числом его измерений. |
181 | Illegal fragment number Номер фрагмента в директиве DEBUG/ENDDEBUG должен быть целой константой без знака. |
182 | Unmatched directive Для директивы END DEBUG не обнаружено соответствующей директивы DEBUG. |
183 | Buffer limit is exceeded Количество удаленных ссылок (буферов) для одного массива не может быть больше 5. |
184 | Illegal I/O statement in the range
of parallel loop Недопустимый оператор ввода-вывода в теле параллельного цикла. |
185 | Illegal elements in control list Неверные элементы в списке управляющей информации оператора ввода-вывода. |
186 | END= and ERR= specifiers are
illegal in FDVM Спецификаторы END= and ERR= запрещены в FDVM |
187 | IOSTAT= specifier is illegal in I/O
of distributed array Использование спецификатора IOSTAT= при вводе-выводе распределенного массива запрещено. |
189 | Invalid format specification Указано неверное значение спецификатора FMT = . |
190 | Illegal I/O list Недопустимый список ввода-вывода. FDVM накладывает ограничения на ввод-вывод распределенных массивов. Либо список ввода-вывода состоит из одного идентификатора распределенного массива, либо он не включает ссылок на распределенные массивы. |
191 | I/O of distributed array controlled
by format specification or NAMELIST is not supported in
FDVM Для ввода-вывода распределенного массива по формату допускается только формат, заданный “*”. |
192 | Illegal I/O list item: identifier В списке ввода-вывода – ссылка на элемент распределенного массива. В FDVM разрешается вводить-выводить распределенный массив только целиком. |
193 | Array shape declaration error: identifier Ошибка в описании измерений массивов. |
194 | Can't calculate array length: identifier Неизвестен размер массива. |
195 | Can’t find the corresponding MAP
directive Не обнаружено соответствующей директивы MAP. |
196 | Incorrect call of ALLOCATE function Неверный список аргументов при вызове функции ALLOCATE. |
197 | Can’t use pointers in HPF1 FDVM-программа, которая содержит POINTER переменные, не конвертируется в HPF1. |
222 | Can’t find a descriptor for
POINTER Отсутствует описание дескриптора динамического массива. |
250 | Illegal nesting INDEPENDENT
directive Вложенные циклы INDEPENDENT не удовлетворяют условию тесно-гнездового цикла |
251 | More one occurеnce of do-variable
'identifier' in subscript list Повторное использование указанной переменной цикла в списке индексов переменной в левой части оператора присваивания, расположенного в теле цикла INDEPENDENT. |
252 | More one occurеnce of a
do-variable in subscript expression Повторное использование переменной цикла в индексном выражении переменной в левой части оператора присваивания, расположенного в теле цикла INDEPENDENT. |
254 | No target for independent loop Не найдена база выравнивания для цикла INDEPENDENT. |
255 | Reduction statement inside the
range of INDEPENDENT loop, 'identifier' is reduction variable Обнаружен редукционный оператор в теле цикла INDEPENDENT. |