fdvm_guid-r (1158377)
Текст из файла
19
Компилятор Fortran DVM
(Руководство пользователя)
Октябрь 20, 1999
Версия 2.0
Институт Прикладной Математики им. М.В.Келдыша
Российская Академия Наук
Оглавление
1 НАЗНАЧЕНИЕ КОМПИЛЯТОРА 3
2 ВЫЗОВ КОМПИЛЯТОРА 3
3 ОПЦИИ КОМПИЛЯТОРА 3
4 СООБЩЕНИЯ КОМПИЛЯТОРА 6
1. Назначение компилятора
Язык FDVM является расширением языка Фортран 77 для параллельного программирования в модели DVM. Расширение оформлено в виде специальных комментариев (директив), которые аннотируют последовательную программу на языке Фортран 77.
Компилятор транслирует исходную программу на языке FDVM в следующие выходные программы.
Параллельная программа на языке Фортран 77 с вызовами функций системы поддержки параллельного выполнения (LIB-DVM). Эта программа может выполняться в псевдо-паралелльном режиме на одном процессоре (рабочей станции) и в параллельном режиме на многопроцессорной ЭВМ.
Последовательная программа на языке Фортран 77 с вызовами функций сбора информации для отладки и оценки производительности. Программа выполняется на одном процессоре в последовательном режиме. Такой режим необходим для сравнения последовательного и параллельного выполнения.
Программа на языке HPF. Программа может выполняться только в среде компилятора с языка HPF.
Для последовательной и параллельной программы могут быть заданы различные уровни отладки и оценки производительности.
2. Вызов компилятора
Вызов компилятора осуществляется следующей командной строкой:
dvm fdv [ опции ] входной-файл
где
опции - указания о режимах компиляции. Если какое-либо указание отсутствует, то для него действует значение по умолчанию. Если две опции противоречат друг другу, то преимущество получает последняя из указанных в командной строке.
входной-файл – имя файла (без расширения), который содержит текст исходной программы на языке FDVM. Файл должен иметь расширение .fdv. Поиск входного файла производится только в текущей директории.
3. Опции компилятора
Для описания синтаксиса опций введены следующие обозначения. Жирным шрифтом будем выделять ключевые символы, а курсивом – параметры опций. Ниже перечислены опции компилятора.
| -o file | Поместить выходную программу в файл file. |
| -s | Генерировать последовательную выходную программу. |
| -p | Генерировать параллельную выходную программу. |
| -hpf | Генерировать выходную программу на языке HPF. |
| -v | Выдать сообщения о вызовах фаз компилятора, а также номер версии компилятора. |
| -Idir | Добавить директорию dir в список директорий, в которых осуществляется поиск include файлов. |
| -bindk | Задает соответствие типов данных в компиляторах с языков Фортран и Си. |
| -dlevel | Генерировать дополнительный код для отладки программы. |
| -elevel | Генерировать дополнительный код для анализа производительности программы. |
Выходной файл. Имя выходного файла, в котором компилятор размещает сгенерированную программу, указывается с помощью опции
-o file
где file представляет собой имя файла. Если опция не указана, то по умолчанию, выходной файл получает имя входной-файл.f или входной-файл.hpf в режиме генерации программы на языке HPF. Выходной файл записывается в текущую директорию.
Тип генерируемой программы. Тип генерируемой программы указывается следующими опциями:
-s - последовательная программа
-p - параллельная программа
-hpf - программа на языке HPF
По умолчанию генерируется параллельная программа.
Директории для include-файлов. Если в исходной программе имеются операторы INCLUDE и не все include-файлы размещены в текущей директории, то необходимо указать опцию
-Idir
где dir - это имя директории. Поиск include-файла начинается с директорий, указанных в командной строке в том порядке, как они там перечислены. Затем поиск производится в текущей директории.
Дополнительная информация. Для идентификации версии компилятора и выполнения фаз компиляции необходимо указать опцию
-v
Соответствие типов данных. Соответствие типов данных в компиляторах с языков Си и Фортран для ЭВМ, на которой будет выполняться сгенерированная программа, указывается с помощью опции
-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.
Отладка программы. Для генерации программы, которая будет выполняться в отладочном режиме, необходимо указать опцию
-dlevel
где level – это целое число (от 1 до 4), которое указывает тип информации, проверяемой в процессе отладки.
-
модификация распределенных массивов
-
модификация и использование распределенных массивов
-
модификация всех переменных
-
модификация и использование всех переменных
Подробнее см. «Отладка DVM–программ. Руководство пользователя».
Анализ производительности. Для анализа производительности программы необходимо транслировать ее с указанием опции
-elevel
где level – это целое число (от 1 до 4), которое указывает анализируемое подмножество операторов.
-
параллельные циклы и охватывающие их последовательные циклы
-
интервалы операторов, указанные в программе посредством директив INTERVAL и END INTERVAL
-
объединение подмножеств 1 и 2
-
все циклы и интервалы
Оценку производительности можно выполнить не для всей программы, а для отдельных интервалов операторов. Каждый интервал операторов должен удовлетворять условиям блока операторов:
-
выполнение интервала всегда начинается с первого оператора,
-
выполнение интервала всегда заканчивается последним оператором.
Другими словами запрещены передачи управления извне внутрь интервала, и изнутри интервала - на оператор вне интервала.
Начало интервала специфицируется директивой
CDVM$ INTERVAL [целочисленное выражение]
которая помещается перед первым оператором интервала.
Конец интервала специфицируется директивой
CDVM$ END INTERVAL
которая помещается после последнего оператора интервала.
Подробнее см. «Отладка эффективности DVM-программ. Руководство пользователя».
Замечание. Наличие или отсутствие опций –bind, -s, -p,-d и -e не оказывает никакого влияния на генерацию программы на языке HPF ( режим -hpf).
4. Сообщения компилятора
Если компилятор обнаруживает в исходной программе ошибку, то он выдает сообщение следующего вида
тип-сообщения номер-сообщения 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 |
| Метка вне диапазона 199999. | |
| 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 | NEW_VALUE specification in DISTRIBUTE directive |
| Спецификация NEW_VALUE может присутствовать только в директиве REDISTRIBUTE или REALIGN. | |
| 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. | |
| 074 | 'identifier' is not declared as group |
| Указанный идентификатор не имеет атрибута REMOTE_GROUP. | |
| 075 | No dimension 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. | |
| 088 | Length of shadow-edge-list is not equal 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 not equal the rank of PROCESSORS 'identifier' |
| Количество форматов BLOCK и GENBLOCK не равно количеству измерений массива процессоров. | |
| 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 |
| Параллельный цикл задач вне области задач. | |
| 110 | Rank of array identifier is not equal 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. | |
| 122 | Descriptor array error |
| Неверно задан аргумент функции ALLOCATE – дескриптор динамического массива. | |
| 123 | Rank of pointer identifier is not equal 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 the length of align-source-list |
| Длина списка идентификаторов измерений в директиве ALIGN/REALIGN не совпадает с числом измерений указанного массива. | |
| 130 | Wrong align-subscript expression |
| Нелинейное выражение выравнивания. Выражения выравнивания, операндом которого является идентификатор измерения I, должно иметь вид: a*I + b, где a, b – константа, переменная или выражение, заключенное в скобки. | |
| 131 | Align-target 'identifier' isn't declared as array |
| База выравнивания - не массив. | |
| 132 | Rank of align-target 'identifier' isn't equal 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. | |
| 140 | Wrong number of subscripts specified for 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. | |
| 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 должен быть одномерным массивом или скалярной переменной целого типа. | |
| 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 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 the rank of remote variable |
| Число индексов удаленной ссылки не соответствует числу измерений массива. | |
| 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 в процедуре, где используются распределенные массивы. | |
| 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 |
| Указатели на массивы с разным типом данных. | |
| 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. |
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.















