Документация
Эта страница содержит всесторонний список всех операторов MATLAB ® , символов и специальных символов.
Арифметические операторы
Поэлементное правильное деление
Матричное правильное деление
Поэлементное покинутое деление
Матрица покинула деление
(также известный как наклонную черту влево )
Комплексное сопряженное транспонирование
Операторы отношения
Больше, чем или равный
Меньше чем или равный
Логические операторы
Логический AND (с замыканием накоротко)
Логический OR (с замыканием накоротко)
Специальные символы
Конструкция указателя на функцию и ссылка
Символ @ формирует указатель или на именованную функцию, которая следует за знаком @ , или к анонимной функции, которая следует за знаком @ .
Создайте указатель на функцию к именованной функции:
fhandle = @myfun
Создайте указатель на функцию к анонимной функции:
fhandle = @(x,y) x.^2 + y.^2;
Вызовите методы суперкласса
Используйте символ @ , чтобы вызвать методы суперкласса от подклассов.
Вызовите метод disp MySuper от подкласса:
disp@MySuper(obj)
Вызовите конструктора суперкласса от подкласса с помощью создаваемого объекта:
obj = obj@MySuper(arg1,arg2. )
Период или точка
- Десятичная точка
- Поэлементные операции
- Доступ к полю структуры
- Свойство объекта или спецификатор метода
Символ точки разделяет неотъемлемые и дробные части номера, такие как 3.1415 . Операторы MATLAB, которые содержат период всегда, работают поэлементные. Символ точки также позволяет вам получить доступ к полям в структуре, а также свойствам и методам объекта.
- Массив по сравнению Матричные операции
- Структуры
- Доступ к значениям свойств
102.5543
A.*B A.^2
Доступ к полю структуры:
myStruct.f1
Спецификатор свойства объекта:
myObj.PropertyName
Точечная точечная точка или замещающий знак
Три или больше периода в конце строки продолжают текущую команду на следующей строке. Если три или больше периода происходят перед концом строки, то MATLAB игнорирует остальную часть строки и продолжается к следующей строке. Это эффективно делает комментарий из чего-либо на текущей строке, которая следует за этими тремя периодами.
Примечание
MATLAB интерпретирует замещающий знак как пробел. Поэтому многострочные команды должны быть допустимыми как одна строка с замещающим знаком, замененным пробелом.
Продолжите вызов функции на следующей строке:
sprintf(['The current value '. 'of %s is %d'],vname,value)
Разбейте вектор символов на несколько строк и конкатенируйте строки вместе:
S = ['If three or more periods occur before the '. 'end of a line, then the rest of that line is ' . 'ignored and MATLAB continues to the next line']
Чтобы прокомментировать одну строку в многострочной команде, используйте . в начале строки, чтобы гарантировать, что команда остается завершенной. Если вы используете % , чтобы прокомментировать строку, он производит ошибку:
y = 1 +. 2 +. % 3 +. 4;
Однако этот код запускается правильно, поскольку третья строка не производит разрыв в команде:
y = 1 +. 2 +. . 3 +. 4;
Используйте запятые, чтобы разделить элементы строки в массиве, индексах массивов, входном параметре функции и выходных аргументах, и команды ввели в ту же строку.
Отдельные элементы строки, чтобы создать массив:
A = [12,13; 14,15]
Отдельные аргументы ввода и вывода в вызовах функции:
[Y,I] = max(A,[],2)
Разделите несколько команд на той же строке (показав вывод):
figure, plot(sin(-pi:0.1:pi)), grid on
- Векторное создание
- Индексация
- Обработка в цикле
Используйте оператор двоеточия, чтобы создать расположенные с равными интервалами векторы, индекс в массивы, и задать границы цикла for .
- colon
- Создание, конкатенация и расширение матрицы
x = 1:10
Создайте вектор, который постепенно увеличивается 3:
x = 1:3:19
Измените форму матрицы в вектор-столбец:
Присвойте новые элементы, не изменяя форму массива:
A = rand(3,4); A(:) = 1:12;
Индексируйте область значений элементов в конкретной размерности:
A(2:5,3)
Индексируйте все элементы в конкретной размерности:
Границы цикла for :
x = 1; for k = 1:25 x = x + x^2; end
Точка с запятой
- Покажите конец строки
- Подавите вывод строки кода
Используйте точки с запятой, чтобы разделить строки в команде создания массивов или подавить выходное отображение строки кода.
Отдельные строки, чтобы создать массив:
A = [12,13; 14,15]
Подавите код вывод:
Y = max(A);
Разделите несколько команд на одной строке (подавляющий вывод):
A = 12.5; B = 42.7, C = 1.25; B = 42.7000
- Приоритет операторов
- Корпус аргумента функции
- Индексация
Используйте круглые скобки, чтобы задать приоритет операций, заключить входные аргументы функции и индекс в массив.
- Приоритет операторов
- Индексация массива
(A.*(B./C)) - D
Корпус аргумента функции:
plot(X,Y,'r*') C = union(A,B)
A(3,:) A(1,2) A(1:5,1)
- Конструкция массивов
- Конкатенация массивов
- Пустой элемент матрицы и удаление элемента массива
- Несколько присвоение выходного аргумента
Квадратные скобки включают конструкцию массивов и конкатенацию, создание пустых матриц, удаление элементов массива и значения получения, возвращенные функцией.
- Создание, конкатенация и расширение матрицы
- horzcat
- vertcat
Создайте трехэлементный вектор:
X = [10 12 -3]
Добавьте новый нижний ряд в матрицу:
A = rand(3); A = [A; 10 20 30]
Создайте пустую матрицу:
Удалите столбец матрицы:
Получите три выходных аргумента от функции:
[C,iA,iB] = union(A,B)
Присвоение массива ячеек и содержимое
Используйте фигурные скобки, чтобы создать массив ячеек или получить доступ к содержимому конкретной ячейки в массиве ячеек.
Чтобы создать массив ячеек, заключите все элементы массива в фигурных скобках:
Индексируйте к определенному элементу массива ячеек путем включения всех индексов в фигурные скобки:
A = C
- Комментарий
- Спецификатор преобразования
Знак процента обычно используется, чтобы указать на неисполняемый текст в теле программы. Этот текст обычно используется, чтобы включать комментарии в ваш код.
Некоторые функции также интерпретируют знак процента как спецификатор преобразования.
Два знака процента, %% , служат разделителем ячейки, как описано в Секциях кода.
Добавьте комментарий в блок кода:
% The purpose of this loop is to compute % the value of .
Используйте спецификатор преобразования с sprintf :
sprintf('%s = %d', name, value)
Фигурная скобка процента
% < и символы %>заключают блок комментариев, которые расширяют вне одной строки.
Примечание
За исключением пробельных символов, % < и операторы %>должны казаться одними на строках, которые сразу предшествуют и следуют за блоком текста справки. Не включайте никакой другой текст на этих строках.
Заключите любые многострочные комментарии с процентом, сопровождаемым открытием или закрывающей фигурной скобкой:
Команда операционной системы
Восклицательный знак предшествует командам операционной системы, которые вы хотите выполнить из MATLAB.
Не доступный в MATLAB Online™ .
Восклицательный знак инициирует функцию Escape интерпретатора. Такая функция должна быть выполнена непосредственно операционной системой:
!rmdir oldtests
Метакласс для класса MATLAB
Вопросительный знак получает объект meta.class для конкретного имени класса. Оператор ? работает только с именем класса, не объектом.
Получите объект meta.class для класса inputParser :
?inputParser
Конструктор символьного массива
Используйте одинарные кавычки, чтобы создать векторы символов, которые имеют класс char .
Создайте вектор символов:
chr = 'Hello, world'
Представьте конструктора в виде строки
Используйте двойные кавычки, чтобы создать скаляры строки, которые имеют класс string .
Создайте скаляр строки:
S = "Hello, world"
Используйте пробел, чтобы разделить элементы строки в конструкторе Array или значения, возвращенные функцией. В этих контекстах пробел и запятая эквивалентны.
Отдельные элементы строки, чтобы создать массив:
% These statements are equivalent A = [12 13; 14 15] A = [12,13; 14,15]
Отдельные выходные аргументы в вызовах функции:
% These statements are equivalent [Y I] = max(A) [Y,I] = max(A)
- Логический НЕТ
- Заполнитель аргумента
Используйте символ тильды, чтобы представлять логический НЕ или подавить определенные аргументы ввода или вывода.
- not
- Игнорирование входных параметров функции
- Игнорирование функции Выходные параметры
Вычислите логическое НЕ матрицы:
A = eye(3); ~A
Определите, где элементы A не равны тем из B :
A = [1 -1; 0 1] B = [1 -2; 3 2] A~=B
Возвратите только третье выходное значение union :
[~,~,iB] = union(A,B)
Используйте знак «равно», чтобы присвоить значения переменной. Синтаксис B = A хранит элементы A в переменной B .
Примечание
Символ = для присвоения, тогда как символ == для сравнения элементов в двух массивах. Смотрите eq для получения дополнительной информации.
Создайте матричный A . Присвойте значения в A к новой переменной, B . Наконец, присвойте новое значение первому элементу в B .
A = [1 0; -1 0]; B = A; B(1) = 200;
Строка и символьное форматирование
Некоторые специальные символы могут только использоваться в тексте вектора символов или строки. Можно использовать эти специальные символы, чтобы вставить новые строки или возвраты каретки, задать пути к папкам и т.д.
Используйте специальные символы в этой таблице, чтобы задать путь к папке с помощью вектора символов или строки.
Наклонная черта и наклонная черта влево
Путь к файлу или разделение пути к папке
В дополнение к их использованию в качестве математических операторов наклонная черта и символы наклонной черты влево разделяют элементы пути или папки. В основанных на Microsoft ® Windows ® системах обе наклонных черты и наклонная черта влево имеют тот же эффект. В основанных на Open Group UNIX ® системах необходимо использовать наклонную черту только.
В системе Windows можно использовать или наклонную черту влево или наклонную черту:
dir([matlabroot '\toolbox\matlab\elmat\shiftdim.m']) dir([matlabroot '/toolbox/matlab/elmat/shiftdim.m'])
В системе UNIX используйте только наклонную черту вправо:
dir([matlabroot '/toolbox/matlab/elmat/shiftdim.m'])
Две точки по очереди относятся к родительскому элементу текущей папки. Используйте этот символ, чтобы задать пути к папкам относительно текущей папки.
Чтобы повыситься два уровня в дереве папки и вниз в папку test , используйте:
cd ..\..\test
В дополнение к тому, чтобы быть символом для умножения матриц звездочка * используется в качестве подстановочного символа.
Подстановочные знаки обычно используются в операциях файла, которые действуют на несколько файлов или папок. MATLAB совпадает со всеми символами на имя точно за исключением подстановочного символа * , который может совпадать с любым или большим количеством символов.
dir(‘january_*.mat’) определяет местоположение всех файлов с именами, которые запускаются с january_ и имеют расширение файла .mat .
Индикатор папки класса
Знак @ указывает на имя папки класса.
Обратитесь к папке класса:
\@myClass\get.m
Индикатор директории пакета
Знак + указывает на имя папки пакета.
Папки пакета всегда начинаются с символа + :
+mypack +mypack/pkfcn.m % a package function +mypack/@myClass % class folder in a package
Существуют определенные специальные символы, которые вы не можете ввести как обычный текст. Вместо этого необходимо использовать уникальные последовательности символов, чтобы представлять их. Используйте символы в этой таблице к строкам формата и векторам символов самостоятельно или в сочетании с функциями форматирования как compose , sprintf и error . Для получения дополнительной информации см. текст Форматирования.
Один знак процента
Одна наклонная черта влево
Шестнадцатеричный номер, N
Восьмеричное число, N
Похожие темы
- Массив по сравнению Матричные операции
- Сравнение массивов с операторами отношения
- Совместимые размеры массивов для основных операций
- Приоритет операторов
- Найдите элементы массива, которые удовлетворяют условию
- Греческие буквы и специальные символы в тексте графика
Документация MATLAB
Поддержка
- MATLAB Answers
- Помощь в установке
- Отчеты об ошибках
- Требования к продукту
- Загрузка программного обеспечения
© 1994-2019 The MathWorks, Inc.
- Условия использования
- Патенты
- Торговые марки
- Список благодарностей
Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
Документация
Эта страница содержит всесторонний список всего MATLAB ® операторы, символы и специальные символы.
Арифметические операторы
Поэлементное правое деление
Матричное правое деление
Поэлементное левое деление
Матричное левое деление
(также известный как обратную косую черту )
Комплексное сопряженное транспонирование
Операторы отношения
Больше, чем или равный
Меньше чем или равный
Логические операторы
Найдите логический AND
Найдите логический OR
Найдите логический AND (с замыканием накоротко)
Найдите логический OR (с замыканием накоротко)
Найдите логическими НЕТ
Специальные символы
Имя: В символе
Использование:
- Конструкция указателя на функцию и ссылка
- Вызов методов суперкласса
Описание: @ символ формирует указатель на любого именованная функция, которая следует за @ подайте знак, или анонимной функции, которая следует за @ знак. Можно также использовать @ вызывать методы суперкласса от подклассов.
Примеры
Создайте указатель на функцию к именованной функции:
fhandle = @myfun
Создайте указатель на функцию к анонимной функции:
fhandle = @(x,y) x.^2 + y.^2;
Вызовите disp метод MySuper от подкласса:
disp@MySuper(obj)
Вызовите конструктора суперкласса от подкласса с помощью создаваемого объекта:
obj = obj@MySuper(arg1,arg2,. )
Больше информации:
- Создания указателя на функцию
- Вызов методов суперкласса для Объектов подкласса
Имя: Период или точка
Использование:
- Десятичная точка
- Поэлементные операции
- Доступ к полю структуры
- Свойство объекта или спецификатор метода
Описание: символ точки разделяет неотъемлемые и дробные части номера, такие как 3.1415 . Операторы MATLAB, которые содержат период всегда, работают поэлементные. Символ точки также позволяет вам получить доступ к полям в структуре, а также свойствам и методам объекта.
Примеры
102.5543
A.*B A.^2
Доступ к полю структуры:
myStruct.f1
Спецификатор свойства объекта:
myObj.PropertyName
Больше информации
- Массив по сравнению Матричные операции
- Структуры
- Доступ к значениям свойств
Имя: Точечная точечная точка или замещающий знак
Использование: продолжение Линии
Описание: Три или больше периода в конце линии продолжают текущую команду на следующей строке. Если три или больше периода происходят перед концом линии, то MATLAB игнорирует остальную часть линии и продолжается к следующей строке. Это эффективно делает комментарий из чего-либо на текущей линии, которая следует за этими тремя периодами.
Примечание
MATLAB интерпретирует замещающий знак как пробел. Поэтому многострочные команды должны быть допустимыми как одна строка с замещающим знаком, замененным пробелом.
Примеры
Продолжите вызов функции на следующей строке:
sprintf(['The current value '. 'of %s is %d'],vname,value)
Разбейте вектор символов на несколько линий и конкатенируйте линии вместе:
S = ['If three or more periods occur before the '. 'end of a line, then the rest of that line is ' . 'ignored and MATLAB continues to the next line']
Чтобы закомментировать одну линию в многострочной команде, используйте . в начале линии, чтобы гарантировать, что команда остается завершенной. Если вы используете % чтобы закомментировать линию, это производит ошибку:
y = 1 +. 2 +. % 3 +. 4;
Однако этот код запускается правильно, поскольку третья линия не производит разрыв в команде:
y = 1 +. 2 +. . 3 +. 4;
Больше информации
Имя: запятая
Использование: диафрагма
Описание: Используйте запятые, чтобы разделить элементы строки в массиве, индексах массивов, входном параметре функции и выходных аргументах, и команды ввели в ту же линию.
Примеры
Отдельные элементы строки, чтобы создать массив:
A = [12,13; 14,15]
Отдельные аргументы ввода и вывода в вызовах функции:
[Y,I] = max(A,[],2)
Разделите несколько команд на той же линии (показав выход):
figure, plot(sin(-pi:0.1:pi)), grid on
Больше информации
Имя: Двоеточие
Использование:
- Векторное создание
- Индексация
- Обработка в цикле
Описание: Используйте оператор двоеточия, чтобы создать расположенные с равными интервалами векторы, индекс в массивы, и задать границы for цикл.
Примеры
x = 1:10
Создайте вектор, который постепенно увеличивается 3:
x = 1:3:19
Измените форму матрицы в вектор-столбец:
Присвойте новые элементы, не изменяя форму массива:
A = rand(3,4); A(:) = 1:12;
Индексируйте область значений элементов в конкретной размерности:
A(2:5,3)
Индексируйте все элементы в конкретной размерности:
for границы цикла:
x = 1; for k = 1:25 x = x + x^2; end
Больше информации
- colon
- Создание, конкатенация и расширение матрицы
Имя: точка с запятой
Использование:
- Покажите конец строки
- Подавите выход строки кода
Описание: Используйте точки с запятой, чтобы разделить строки в команде создания массивов или подавить выходное отображение строки кода.
Примеры
Отдельные строки, чтобы создать массив:
A = [12,13; 14,15]
Подавите код выход:
Y = max(A);
Разделите несколько команд на одной строке (подавляющий выход):
A = 12.5; B = 42.7, C = 1.25; B = 42.7000
Больше информации
Имя: круглые скобки
Использование:
- Приоритет операторов
- Корпус аргумента функции
- Индексация
Описание: Используйте круглые скобки, чтобы задать приоритет операций, заключить входные аргументы функции и индекс в массив.
Примеры
(A.*(B./C)) - D
Корпус аргумента функции:
plot(X,Y,'r*') C = union(A,B)
A(3,:) A(1,2) A(1:5,1)
Больше информации
- Приоритет операторов
- Индексация массива
Имя: Квадратные скобки
Использование:
- Конструкция массивов
- Конкатенация массивов
- Пустой элемент матрицы и удаление элемента массива
- Несколько присвоение выходного аргумента
Описание: Квадратные скобки включают конструкцию массивов и конкатенацию, создание пустых матриц, удаление элементов массива и значения получения, возвращенные функцией.
Примеры
Создайте трехэлементный вектор:
X = [10 12 -3]
Добавьте новый нижний ряд в матрицу:
A = rand(3); A = [A; 10 20 30]
Создайте пустую матрицу:
Удалите столбец матрицы:
Получите три выходных аргумента от функции:
[C,iA,iB] = union(A,B)
Больше информации
- Создание, конкатенация и расширение матрицы
- horzcat
- vertcat
Имя: Фигурные скобки
Использование: присвоение Массива ячеек и содержимое
Описание: Используйте фигурные скобки, чтобы создать массив ячеек или получить доступ к содержимому конкретной ячейки в массиве ячеек.
Примеры
Чтобы создать массив ячеек, заключите все элементы массива в фигурных скобках:
C = <[2.6 4.7 3.9], rand(8)*6, 'C. Coolidge'>
Индексируйте к определенному элементу массива ячеек путем включения всех индексов в фигурные скобки:
A = C
Больше информации
Имя: процент
Использование:
- Комментарий
- Спецификатор преобразования
Описание: знак процента обычно используется, чтобы указать на неисполняемый текст в теле программы. Этот текст обычно используется, чтобы включать комментарии в ваш код.
Некоторые функции также интерпретируют знак процента как спецификатор преобразования.
Два знака процента, %% , служите разделителем ячейки как описано в, Создают и Разделы Запуска в Коде.
Примеры
Добавьте комментарий в блок кода:
% The purpose of this loop is to compute % the value of .
Используйте спецификатор преобразования с sprintf :
sprintf('%s = %d', name, value)
Больше информации
Имя: фигурная скобка Процента
Использование: Блокируйте комментарии
Описание: % < и %>символы заключают блок комментариев, которые расширяют вне одной линии.
Примечание
За исключением пробельных символов, % < и %>операторы должны казаться одними на линиях, которые сразу предшествуют и следуют за блоком текста справки. Не включайте никакой другой текст на этих линиях.
Примеры
Заключите любые многострочные комментарии с процентом, сопровождаемым открытием или закрывающей фигурной скобкой:
% The purpose of this routine is to compute the value of . %>
Больше информации
Имя: Восклицательный знак
Использование: команда Операционной системы
Описание: восклицательный знак предшествует командам операционной системы, которые вы хотите выполнить из MATLAB.
Не доступный в MATLAB Online™ .
Примеры
Восклицательный знак инициирует функцию Escape интерпретатора. Такая функция должна быть выполнена непосредственно операционной системой:
!rmdir oldtests
Больше информации
Имя: Вопросительный знак
Использование: Метакласс для класса MATLAB
Описание: вопросительный знак получает meta.class объект для конкретного имени класса. ? оператор работает только с именем класса, не объектом.
Примеры
Получите объект meta.class для класса inputParser :
?inputParser
Больше информации
Имя: Одинарные кавычки
Использование: конструктор Символьного массива
Описание: Используйте одинарные кавычки, чтобы создать векторы символов, которые имеют класс char .
Примеры
Создайте вектор символов:
chr = 'Hello, world'
Больше информации
Имя: Двойные кавычки
Использование: Представьте конструктора в виде строки
Описание: Используйте двойные кавычки, чтобы создать строковые скаляры, которые имеют класс string .
Примеры
Создайте строковый скаляр:
S = "Hello, world"
Больше информации
Имя: Пробел
Использование: диафрагма
Описание: Используйте пробел, чтобы разделить элементы строки в конструкторе Array или значения, возвращенные функцией. В этих контекстах пробел и запятая эквивалентны.
Примеры
Отдельные элементы строки, чтобы создать массив:
% These statements are equivalent A = [12 13; 14 15] A = [12,13; 14,15]
Отдельные выходные аргументы в вызовах функции:
% These statements are equivalent [Y I] = max(A) [Y,I] = max(A)
Имя: Символ новой строки
Использование: диафрагма
Описание: Используйте символ новой строки, чтобы разделить строки в операторе конструкции массивов. В том контексте символ новой строки и точка с запятой эквивалентны.
Примеры
Отдельные строки в команде создания массивов:
% These statements are equivalent A = [12 13 14 15] A = [12 13; 14 15]
Имя: тильда
Использование:
- Логический НЕТ
- Заполнитель аргумента
Описание: Используйте символ тильды, чтобы представлять логический НЕ или подавить определенные аргументы ввода или вывода.
Примеры
Вычислите логическое НЕ матрицы:
A = eye(3); ~A
Определите где элементы A не равны тем из B :
A = [1 -1; 0 1] B = [1 -2; 3 2] A~=B
Возвратите только третье выходное значение union :
[~,~,iB] = union(A,B)
Больше информации
- not
- Проигнорируйте входные параметры в функциональных определениях
- Игнорирование функции Выходные параметры
Имя: Знак «равно»
Использование: “()” Присвоение
Описание: Используйте знак «равно», чтобы присвоить значения переменной. Синтаксис B = A хранит элементы A в переменной B .
Примечание
= символ для присвоения, тогда как == символ для сравнения элементов в двух массивах. Смотрите eq для получения дополнительной информации.
Примеры
Создайте матричный A . Присвойте значения в A к новой переменной, B . Наконец, присвойте новое значение первому элементу в B .
A = [1 0; -1 0]; B = A; B(1) = 200;
Имя: Открывающая угловая скобка и амперсанд
Использование: Задайте суперклассы
Описание: Задайте один или несколько суперклассов в определении класса
Примеры
Задайте класс, который выводит из одного суперкласса:
classdef MyClass < MySuperclass … end
Задайте класс, который выводит из нескольких суперклассов:
classdef MyClass < Superclass1 & Superclass2 & … … end
Больше информации:
Имя: Точечный вопросительный знак
Использование: Задайте поля структуры значения имени
Описание:
При использовании валидации аргумента функции можно задать поля структуры значения имени как имена всех writeable свойств класса.
Примеры
Задайте имена полей propArgs структура как writeable свойства matlab.graphics.primitive.Line класс.
function f(propArgs) arguments propArgs.?matlab.graphics.primitive.Line end % Function code . end
Больше информации:
Строка и символьное форматирование
Некоторые специальные символы могут только использоваться в тексте вектора символов или строки. Можно использовать эти специальные символы, чтобы вставить новые строки или возвраты каретки, задать пути к папкам и т.д.
Используйте специальные символы в этой таблице, чтобы задать путь к папке с помощью вектора символов или строки.
Имя: наклонная черта и обратная косая черта
Использование: Путь к файлу или разделение пути к папке
Описание: В дополнение к их использованию в качестве математических операторов наклонная черта и символы обратной косой черты разделяют элементы пути или папки. На Microsoft ® Windows ® основанные системы, обе наклонных черты и обратная косая черта оказывают то же влияние. На UNIX Open Group ® основанные системы, необходимо использовать наклонную черту только.
Примеры
В системе Windows можно использовать или обратную косую черту или наклонную черту:
dir([matlabroot '\toolbox\matlab\elmat\shiftdim.m']) dir([matlabroot '/toolbox/matlab/elmat/shiftdim.m'])
В системе UNIX используйте только наклонную черту вправо:
dir([matlabroot '/toolbox/matlab/elmat/shiftdim.m'])
Имя: Точечная точка
Использование: ParentFolder
Описание: Две точки по очереди относятся к родительскому элементу текущей папки. Используйте этот символ, чтобы задать пути к папкам относительно текущей папки.
Примеры
Повыситься два уровня в дереве папки и вниз в test папка, используйте:
cd ..\..\test
Больше информации
Имя: звездочка
Использование: Подстановочный символ
Описание: В дополнение к тому, чтобы быть символом для умножения матриц, звездочка * используется в качестве подстановочного символа.
Подстановочные знаки обычно используются в операциях файла, которые действуют на несколько файлов или папок. MATLAB совпадает со всеми символами на имя точно за исключением подстановочного символа * , который может совпадать с любым или большим количеством символов.
Примеры
Найдите все файлы с именами, которые запускаются с january_ и имейте .mat расширение файла:
dir('january_*.mat')
Имя: В символе
Использование: индикатор папки Класса
Описание: @ знак указывает на имя папки класса.
Примеры
Обратитесь к папке класса:
\@myClass\get.m
Больше информации
Имя: Плюс
Использование: индикатор директории Пакета
Описание: + знак указывает на имя папки пакета.
Примеры
Папки пакета всегда начинаются с + символ:
+mypack +mypack/pkfcn.m % a package function +mypack/@myClass % class folder in a package
Больше информации
Существуют определенные специальные символы, которые вы не можете ввести как обычный текст. Вместо этого необходимо использовать уникальные последовательности символов, чтобы представлять их. Используйте символы в этой таблице к строкам формата и векторам символов самостоятельно или в сочетании с функциями форматирования как compose , sprintf , и error . Для получения дополнительной информации см. Форматирующий текст.
Один знак процента
Одна обратная косая черта
Шестнадцатеричный номер, N
Восьмеричное число, N
Похожие темы
- Массив по сравнению Матричные операции
- Сравнение массивов с операторами отношения
- Совместимые размеры массивов для основных операций
- Приоритет операторов
- Найдите элементы массива, которые удовлетворяют условию
- Греческие буквы и специальные символы в тексте графика
Документация MATLAB
Поддержка
- MATLAB Answers
- Помощь в установке
- Отчеты об ошибках
- Требования к продукту
- Загрузка программного обеспечения
© 1994-2021 The MathWorks, Inc.
- Условия использования
- Патенты
- Торговые марки
- Список благодарностей
Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
Компилятор G77
Компилятор G77 ( GNU Fortran )основан на стандарте ANSI Fortran 77, но он включает в себя многие особенности, определенные в стандартах Fotran 90 и Fortran 95.
Синтаксис команды:
g77 [-c?-S?-E] [-g] [-pg] [-Olevel] [-Wwarn. ] [-pedantic] [-Idir. ] [-Ldir. ] [-Dmacro[=defn]. ] [-Umacro] [-foption. ] [-mmachine-option. ] [-o outfile] infile.
Все опции поддерживаемые gcc поддерживаются и g77 . Компиляторы С и g77 интегрированы.
Обращение:
g77 [option | filename].
Исходные файлы:
source.f, source.for, source.FOR
Значение некоторых опций:
| -c | создать только объектный файл (source.o) из исходного ( source.f, .source.for, source.FOR ) |
| -o file | создать загрузочный файл с именем file (по умолчанию создается файл с именем a.out) |
| -llibrary | использовать библиотеку liblibrary.a при редактировании связей |
| -Idir | добавить каталог dir в список поиска каталогов, содержащих include— файлы |
| -Ldir | добавить директорию dir в список поиска библиотек |
| -O | включить оптимизацию |
| -g | создать отладочную информацию для работы с отладчиком |
Для получения полного описания g77 следует смотреть документацию по GNU Fortran. Об опциях g77 можно также получить информацию с помощью команд:
info g77
man g77
Компилятор GCC
GСС — это свободно доступный оптимизирующий компилятор для языков C, C++.
Программа gcc, запускаемая из командной строки, представяляет собой надстройку над группой компиляторов. В зависимости от расширений имен файлов, передаваемых в качестве параметров, и дополнительных опций, gcc запускает необходимые препроцессоры, компиляторы, линкеры.
Файлы с расширением .cc или .C рассматриваются, как файлы на языке C++, файлы с расширением .c как программы на языке C, а файлы c расширением .o считаются объектными.
Чтобы откомпилировать исходный код C++, находящийся в файле F.cc, и создать объектный файл F.o, необходимо выполнить команду:
gcc -c F.cc
Опция –c означает «только компиляция».
Чтобы скомпоновать один или несколько объектных файлов, полученных из исходного кода — F1.o, F2.o, . — в единый исполняемый файл F, необходимо ввести команду:
gcc -o F F1.o F2.o
Опция -o задает имя исполняемого файла.
Можно совместить два этапа обработки — компиляцию и компоновку — в один общий этап с помощью команды:
gcc -o F F1.cc . -lg++
— возможные дополнительные опции компиляции и компоновки. Опция –lg++ указывает на необходимость подключить стандартную библиотеку языка С++, — возможные дополнительные библиотеки.
После компоновки будет создан исполняемый файл F, который можно запустить с помощью команды
— список аргументов командной строки Вашей программы.
В процессе компоновки очень часто приходится использовать библиотеки. Библиотекой называют набор объектных файлов, сгруппированных в единый файл и проиндексированных. Когда команда компоновки обнаруживает некоторую библиотеку в списке объектных файлов для компоновки, она проверяет, содержат ли уже скомпонованные объектные файлы вызовы для функций, определенных в одном из файлов библиотек. Если такие функции найдены, соответствующие вызовы связываются с кодом объектного файла из библиотеки. Библиотеки могут быть подключены с помощью опции вида -lname . В этом случае в стандартных каталогах, таких как /lib , /usr/lib, /usr/local/lib будет проведен поиск библиотеки в файле с именем libname.a. Библиотеки должны быть перечислены после исходных или объектных файлов, содержащих вызовы к соответствующим функциям.
Опции компиляции
Среди множества опций компиляции и компоновки наиболее часто употребляются следующие:
| Опция | Назначение |
| -c | Эта опция означает, что необходима только компиляция. Из исходных файлов программы создаются объектные файлы в виде name.o. Компоновка не производится. |
| -Dname=value | Определить имя name в компилируемой программе, как значение value. Эффект такой же, как наличие строки #define name value в начале программы. Часть =value может быть опущена, в этом случае значение по умолчанию равно 1. |
| -o file-name | Использовать file-name в качестве имени для создаваемого файла. |
| -lname | Использовать при компоновке библиотеку libname.so |
| -Llib-path -Iinclude-path |
Добавить к стандартным каталогам поиска библиотек и заголовочных файлов пути lib-path и include-path соответственно. |
| —g | Поместить в объектный или исполняемый файл отладочную информацию для отладчика gdb. Опция должна быть указана и для компиляции, и для компоновки. В сочетании –g рекомендуется использовать опцию отключения оптимизации –O0 (см.ниже) |
| -MM | Вывести зависимости от заголовочных файлов , используемых в Си или С++ программе, в формате, подходящем для утилиты make. Объектные или исполняемые файлы не создаются. |
| -pg | Поместить в объектный или исполняемый файл инструкции профилирования для генерации информации, используемой утилитой gprof. Опция должна быть указана и для компиляции, и для компоновки. Собранная с опцией -pg программа при запуске генерирует файл статистики. Программа gprof на основе этого файла создает расшифровку, указывающую время, потраченное на выполнение каждой функции. |
| -Wall | Вывод сообщений о всех предупреждениях или ошибках, возникающих во время компиляции программы. |
| -O1 -O2 -O3 |
Различные уровни оптимизации. |
| -O0 | Не оптимизировать. Если вы используете многочисленные -O опции с номерами или без номеров уровня, действительной является последняя такая опция. |
| -I | Используется для добавления ваших собственных каталогов для поиска заголовочных файлов в процессе сборки |
| -L | Передается компоновщику. Используется для добавления ваших собственных каталогов для поиска библиотек в процессе сборки. |
| -l | Передается компоновщику. Используется для добавления ваших собственных библиотек для поиска в процессе сборки. |
Компилятор GFortran
GFortran — это название компилятора языка программирования Фортран, входящего в коллекцию компиляторов GNU.
Сборка FORTRAN-программы:
Синтаксис
gfortran [-c?-S?-E]
[-g] [-pg] [-Olevel]
[-Wwarn. ] [-pedantic]
[-Idir. ] [-Ldir. ]
[-Dmacro[=defn]. ] [-Umacro]
[-foption. ]
[-mmachine-option. ]
[-o outfile] infile.
GFortran опирается на GCC, и, следовательно, разделяет большинство его характеристик. В частности, параметры для оптимизации и генерации отладочной информации у них совпадают.
GFortran используется для компиляции исходного файла, source.f90, в объектный файл, object.o или исполняемый файл, executable. Одновременно он генерирует модуль файлов описания встречающихся модулей, так называемый nameofmodule.mod.
Для компиляции исходного файла source.f90, можно запустить: gfortran source.f90
Выходной файл будет автоматически имени source.o. Это объектный файл, который не может быть исполнен. После того как вы собрали некоторые исходные файлы, вы можете соединить их вместе с необходимыми библиотеками для создания исполняемого файла. Это делается следующим образом: gfortran -o executable object1.o object2.o. , где исполняемым будет executable, objectX.o — объектные файлы, которые могут быть созданы, как указано выше, или в равной степени другими компиляторами из источников в другом языке. Если опущено имя исполняемого файла, то исполняемый файл будет с названием a.out. Исполняемый файл может быть выполнен, как и в любой другой программе. Можно также пропустить отдельный этап компиляции и ввести такую команду: gfortran o executable source1.f90 source2.f90, которая будет осуществлять сбор исходных файлов source1.f90 и source2.f90, связь и создаст исполняемый файл. Вы также можете поместить объектные файлы в этой командной строке, они будут автоматически присоединены.
Опции компилятора GFortran
| Опция | Назначение |
| -c | Эта опция означает, что необходима только компиляция. Из исходных файлов программы создаются объектные файлы в виде name.o. Компоновка не производится. |
| -Dname=value | Определить имя name в компилируемой программе, как значение value. Эффект такой же, как наличие строки #define name value в начале программы. Часть =value может быть опущена, в этом случае значение по умолчанию равно 1. |
| -o file-name | Использовать file-name в качестве имени для создаваемого файла. |
| -lname | Использовать при компоновке библиотеку libname.so |
| -Llib-path -Iinclude-path |
Добавить к стандартным каталогам поиска библиотек и заголовочных файлов пути lib-path и include-path соответственно. |
| —g | Поместить в объектный или исполняемый файл отладочную информацию для отладчика gdb. Опция должна быть указана и для компиляции, и для компоновки. В сочетании –g рекомендуется использовать опцию отключения оптимизации –O0 (см.ниже) |
| -MM | Вывести зависимости от заголовочных файлов , используемых в Си или С++ программе, в формате, подходящем для утилиты make. Объектные или исполняемые файлы не создаются. |
| -pg | Поместить в объектный или исполняемый файл инструкции профилирования для генерации информации, используемой утилитой gprof. Опция должна быть указана и для компиляции, и для компоновки. Собранная с опцией -pg программа при запуске генерирует файл статистики. Программа gprof на основе этого файла создает расшифровку, указывающую время, потраченное на выполнение каждой функции. |
| -Wall | Вывод сообщений о всех предупреждениях или ошибках, возникающих во время компиляции программы. |
| -O1 -O2 -O3 |
Различные уровни оптимизации. |
| -O0 | Не оптимизировать. Если вы используете многочисленные -O опции с номерами или без номеров уровня, действительной является последняя такая опция. |
| -I | Использует для добавления ваших собственных каталогов поиска заголовочных файлов в процессе сборки |
| -L | Передает компоновщику. Использует для добавления ваших собственных каталогов поиска библиотек в процессе сборки. |
| -l | Передает компоновщику. Использует для добавления ваших собственных библиотек поиска в процессе сборки. |
Компилятор PGCC
Компилятор Portland Group C (PGCC).
Компилятор PGCC для процессоров AMD64 и IA32/EM64T производит компиляцию программ C и линкует согласно опциям в командной строке.
Синтаксис команды:
pgcc [ -параметры ]. sourcefile.
- Параметры могут отсутствовать или содержать опции копилятора
- Суффиксы sourcefile указывают на вид файла:
.c — файл на C; обрабатывается препроцессором перед компиляцией; компилируется
.i — файл на C после обработки препроцессора; компилируется
.s — ассемблерный файл; передаётся ассемблеру
.S — ассемблерный файл; обрабатывается препроцессором; передаётся ассемблеру
.o -объектный файл; передаётся компоновщику
.a — библиотечный файл; передаётся компоновщику
Полный список опций компилятора можно посмотреть по команде man pgcc .
Некоторые важные опции компиляции для PGCC приведены ниже:
| Опция | Назначение |
| -с | Эта опция означает, что необходима только компиляция. Из исходных файлов программы создаются объектные файлы. |
| -C | Включает проверки выхода индекса за границы массива |
| -O0 | Отключает оптимизацию. |
| -О1 | Оптимизация по размеру. Не использует методов оптимизации, которые могут увеличить размер кода. Создает в большинстве случаев самый маленький размер кода. |
| -O2 или -O | Оптимизация устанавливаемая по умолчанию. |
| -O3 | Задействует методы оптимизации из -O2 и, дополнительно, более агрессивные методы оптимизации, которые подходят не для всех программ. |
| -Os | Включает оптимизацию по скорости, но при этом отключает некоторые оптимизации, которые могут привести к увеличению размеров кода при незначительном выигрыше в скорости. |
| -fast | Включает в себя -O2 и ряд других опций, таких как использование векторизации с поддержкой SSE инструкций. Использование -fast понижает точность вычислений. |
| -g | Включает информацию об отладке. |
| -fastsse | То же самое что и -fast -Mipa=fast — включает межпроцедурный анализ. |
| -I | Использует для добавления ваших собственных каталогов поиска заголовочных файлов в процессе сборки. |
| -L | Передает компоновщику. Использует для добавления ваших собственных каталогов поиска библиотек в процессе сборки. |
| -l | Передает компоновщику. Использует для добавления ваших собственных библиотек поиска в процессе сборки. |
Компилятор PGFortran
Компилятор The Portland Group Inc. Fortran (PGFortran).
Компилятор PGFortran для процессоров AMD64 и IA32/EM64T производит компиляцию программ на Фортране и линкует согласно опциям в командной строке. PGFortran является интерфейсом для компиляторов pgf90 и pgf95.
Синтаксис команды:
pgfortran [ -параметры ]. sourcefile.
- Параметры могут отсутствовать или содержать опции копилятора
- Суффиксы sourcefile указывают на вид файла:
.f — файл на Фортране с фиксированным форматом; компилируется
.F — файл на Фортране с фиксированным форматом; после обработки препроцессором — компилируется
.f90 — файл на Фортране в свободном формате; компилируется
.F90 — файл на Фортране в свободном формате; после обработки препроцессором — компилируется
.f95 — файл на Фортране в свободном формате; компилируется
.F95 — файл на Фортране в свободном формате; после обработки препроцессором — компилируется
.for — файл на Фортране с фиксированным форматом; компилируется
.FOR — файл на Фортране с фиксированным форматом; после обработки препроцессором — компилируется
.fpp — файл на Фортране с фиксированным форматом; после обработки препроцессором — компилируется
.s — ассемблерный файл; передаётся ассемблеру
.S — ассемблерный файл; обрабатывается препроцессором; передаётся ассемблеру
.o — объектный файл; передаётся компоновщику
.a — библиотечный файл; передаётся компоновщику
Полный список опций компилятора можно посмотреть по команде man pgfortran .
Некоторые важные опции компиляции для PGFortran приведены здесь.
Опции компилятора PGFortran
Использует file как имя выходного исполняемого файла программы, вместо имени по умолчанию — a.out. Если используется совместно с опцией -с или -S и с одним входным файлом, то file используется в качестве имени объектного или ассемблерного выходного файла.
Пропускает этапы ассемблирования и линкования. Для каждого файла с именем, например, file.f создает при выходе из компиляции файл с именем file.s . См. также -о.
Выбирает основные оптимальные установки для процессора, который поддерживает SSE инструкции (Pentium 3 / 4, AthlonXP / MP, Opteron) и SSE2 (Pentium 4, Opteron). Используйте в pgf90 -fastsse -help чтобы просмотреть установки.
Оптимизация в рамках основных блоков. Выполняется н екоторое распределение регистров. Глобальная оптимизация не выполняется.
Задействует методы оптимизации из -O1 и -O2 и, дополнительно, более агрессивные методы оптимизации циклов и доступа к памяти, такие как подстановка скаляров, раскрутка циклов. Эти агрессивные методы оптимизации могут, в ряде случаев, и замедлить работу приложений .
Передаёт компилятору для генерации позиционно-независимого кода, который может быть использован при создании общих объектных файлов (динамически связываемых библиотек).
Сообщает компоновщику включение отладочной информации без отключения оптимизации
Использует линковщик; таблицы символьной информации, оптимизации. Использование может привести к неожиданным результатам при отладке с оптимизацией, она предназначена для использования с другими опциями , которые используют отладочную информацию.
Опции компилятора ICC
icc -команда для вызова компилятора Intel(R) (C или C++).
Синтаксис команды:
icc [параметры] file1 [file2] .
- параметры могут отсутствовать или содержать опции компилятора
- fileN – это файлы на языке C или C++, сборочные файлы, объектные файлы, библиотеки объектов или другие линкуемые файлы
Полный список опций можно посмотреть по команде man icc .
Некоторые важные опции компиляции для ICC приведены ниже:
| Опция | Назначение |
| -с | Эта опция означает, что необходима только компиляция. Из исходных файлов программы создаются объектные файлы. |
| -C | Включает проверки выхода индекса за границы массива. |
| -O0 | Отключает оптимизацию. |
| -О1 | Оптимизация по размеру. Не использует методов оптимизации, которые могут увеличить размер кода. Создает в большинстве случаев самый маленький размер кода. |
| -O2 или -O | Оптимизация устанавливаемая по умолчанию. |
| -O3 | Задействует методы оптимизации из -O2 и, дополнительно, более агрессивные методы оптимизации, которые подходят не для всех программ. |
| -Os | Включает оптимизацию по скорости, но при этом отключает некоторые оптимизации, которые могут привести к увеличению размеров кода при незначительном выигрыше в скорости. |
| -fast | Обеспечивает ускоренный метод для нескольких оптимизаций на время выполнения программы. Устанавливает -xT -O3 -ipo -no-prec-div -static параметры для повышения производительности: • -O3 (см. выше) • -ipo (включает межпроцедурную оптимизацию между файлами) • -static (предотвращает линкование с общими библиотеками). Параметры задаются списком и не могут быть заданы по отдельности. |
| -g | Включает информацию об отладке. |
| -I | Используется для добавления ваших собственных каталогов поиска заголовочных файлов в процессе сборки. |
| -L | Передается компоновщику. Используется для добавления ваших собственных каталогов поиска библиотек в процессе сборки. |
| -l | Передается компоновщику. Используется для добавления ваших собственных библиотек в процессе сборки. |
Опции компилятора Intel Fortran
ifort -команда для вызова компилятора Intel(R) Fortran.
Синтаксис команды:
ifort [параметры] file1 [file2] .
- параметры могут отсутствовать или содержать опции компилятора
- fileN – это файлы на языке Fortran, сборочные файлы, объектные файлы, библиотеки объектов или другие линкуемые файлы
Полный список опций можно посмотреть по команде man ifort .
Команда ifort интерпретирует входные файлы по суффиксу имени файла следующим образом:
Имена файлов с суффиксом .f90 интерпретируются как файлы в свободной форме записи на Fortran 95/90.
Имена файлов с суффиксом .f, .for или .ftn интерпретируются как фиксированная форма записи для Fortran 66/77 файлов.
В Fortran 90/95, наряду с фиксированным форматом исходного текста программы, разрешен свободный формат. Свободный формат допускает помещение более одного оператора в строке, при этом в качестве разделителя используется точка с запятой. Признак продолжения оператора на строку продолжения — символ & — указывается в конце той строки, которую надо продолжить. Комментарии записываются после символа восклицательный знак в начале строки или в любой позиции строки после оператора. В свободном формате пробелы являются значащими.
Некоторые важные опции компиляции для Intel Fortran приведены ниже:
| Опция | Назначение |
| -free | Указывает, что исходные файлы находятся в свободном формате. По умолчанию, формат исходного файла определяется суффиксом файла |
| -fixed | Указывает, что исходные файлы находятся в фиксированном формате. По умолчанию, формат исходного файла определяется суффиксом файла |
| -с | Эта опция означает, что необходима только компиляция. Из исходных файлов программы создаются объектные файлы |
| -C | Включает проверки выхода индекса за границы массива |
| -i2 | Целые и логические переменные длиной 2 байта (тоже, что и опция -integer-size 16). По умолчанию целочисленный размер равен 32 разряда. |
| -i4 | Целые и логические переменные длиной 4 байта (тоже, что и опция -integer-size 32 ). Это значение устанавливается по умолчанию. |
| -i8 | Целые и логические переменные 8 байт (тоже , что и опция -integer-size 64). По умолчанию целочисленный размер равен 32 разряда. |
| -O0 | Отключает оптимизацию |
| -О1 | Оптимизация по размеру. Не использует методов оптимизации, которые могут увеличить размер кода. Создает в большинстве случаев самый маленький размер кода. |
| -O2 или -O | Максимизация скорости. Как правило, создает более быстрый код, чем -O1. Эта опция устанавливается по умолчанию для оптимизации, если не указана -g |
| -O3 | Задействует методы оптимизации из -O2 и, дополнительно, более агрессивные методы оптимизации циклов и доступа к памяти, такие как подстановка скаляров, раскрутка циклов, подстановка кода для избегания ветвлений, блокирование циклов для обеспечения более эффективного использования кэш-памяти и, только на системах архитектуры IA-64, дополнительная подготовка данных. Данная опция особенно рекомендуется для приложений, где есть циклы, которые активно используют вычисления с плавающей точкой или обрабатывают большие порции данных. Эти агрессивные методы оптимизации могут в ряде случаев, и замедлить работу приложений других типов по сравнению с использованием -O2. |
| -OpenMP | Включает поддержку стандарта OpenMP 2.0 Распараллеливает программу. Позволяет параллелизацию для создания многопоточного кода на основе команд OpenMP. Этот опция может быть выполнена в параллельном режиме на однопроцессорных и многопроцессорных системах. OpenMP-опция работает как с-O0 (без оптимизации) и c любым уровнем оптимизации -O. Указание с-O0 помогает для отладки OpenMP приложений. |
| -OpenMP-stubs | Включает выполнение программ OpenMP в последовательном режиме. Директивы OpenMP игнорируются, если стоят заглушки (stubs) для OpenMP |
| -p | Порождает дополнительный код для записи профилирующей информации, подходящей для анализирующей программы PROF. Вы должны использовать эту опцию при компиляции исходного файла, о котором вы хотите получить информацию, и вы также должны использовать ее при линковке. |
| -parallel | Включает автоматическое распараллеливание циклов, для которых это безопасно. Чтобы использовать эту опцию, вы также должны указать-O2 и-O3. |
| -r8 | Вещественные и комплексные переменные длиной 8 байт. Переменные REAL рассматриваются как DOUBLE PRECISION (REAL(KIND=8)) и комплексные рассматриваются в качестве DOUBLE COMPLEX (COMPLEX(KIND=8)). Это тоже самое, что и указать —real-size 64 или -autodouble. |
| -r16 | Вещественные и комплексные переменные длиной 16 байт. Переменные REAL рассматриваются как REAL (REAL(KIND=16), COMPLEX и DOUBLE COMPLEX рассматривается как COMPLEX (COMPLEX(KIND=16)). Это тоже самое, что и указать -real-size 128. |
| -save | Сохраняет переменные, за исключением тех, которые объявлены, как AUTOMATIC, в статической памяти (тоже, что и noauto-noautomatic). По умолчанию используется –autoscalar, однако, если Вы укажите -recursive или -OpenMP, то по умолчанию используется AUTOMATIC |
| -stand | Заставляет компилятор выдавать сообщения компиляции для нестандартных элементов языка. |
| -fast | Обеспечивает ускоренный метод для нескольких оптимизаций на время выполнения программы. Устанавливает следующие параметры для повышения производительности: • -O3 • -ipo (включает межпроцедурную оптимизацию между файлами) • -static (предотвращает линкование с общими библиотеками). |
| -g | Помещает в объектный или исполняемый файл отладочную информацию для отладчика gdb. Опция должна быть указана и для компиляции, и для компоновки. В сочетании –g рекомендуется использовать опцию отключения оптимизации –O0 |
| -check bounds | Выполняет динамическую проверку выхода индекса за границы массива. Проверка может увеличить время выполнения программы. |
| -I | Использует для добавления ваших собственных каталогов поиска заголовочных файлов в процессе сборки |
| -L | Передает компоновщику. Использует для добавления ваших собственных каталогов поиска библиотек в процессе сборки. |
| -l | Передает компоновщику. Использует для добавления ваших собственных библиотек поиска в процессе сборки. |
Использование CUDA
Запуск задач на графических процессорах в системе SLURM задается опцией —gres=gpu:N , где N — число GPU.
Свежая версия библиотеки CUDA находится в каталоге /opt/cuda/.
/opt/cuda/include/ — заголовочные файлы;
/opt/cuda/lib /— библиотека CUDA;
/opt/cuda/doc/ — документация.
Чтобы использовать библиотеку CUDA, необходимо при компиляции программы заказать данную библиотеку, например:
gcc mytest.c -o mytest -lcuda -L/opt/cuda/lib -I/opt/cuda/include
Можно использовать компилятор nvcc:
nvcc -o
На кластере «Уран» при выполнении данной команды по умолчанию подключается библиотека CUDA . Можно компилировать программы на языках C и C++ (файлы с расширением .c и .cpp) и программы, написанные с использованием технологии CUDA (файлы с расширением .cu), например:
u9999@umt:~$ nvcc main.c -o gputest
Пример
Пусть файл cuda_test.cu (из домашнего каталога) содержит программу на CUDA:
#include #include int main() < int GPU_N; int dev; cudaGetDeviceCount(&GPU_N); printf("Device count: %d\n", GPU_N); for(dev=0;devreturn 0; >
Тогда компиляция программы и запуск задачи на кластере могут иметь вид:
u9999@umt:~$ nvcc cuda_test.cu -o cuda_test u9999@umt:~$ srun --gres=gpu:1 ./cuda_test Device count: 1 PCI Bus id: 8 u9999@umt:~$ srun --gres=gpu:2 ./cuda_test Device count: 2 PCI Bus id: 10 PCI Bus id: 26
Поддержка CUDA есть в компиляторе Portland Group.
Инструкции по использованию CUDA в Фортране можно найти на сайте Portland Group (http://www.pgroup.com/resources/cudafortran.htm).
Для компиляции Fortran-программы с CUDA следует установить переменные окружения командой module или mpiset , выбрав связку MVAPICH+PGI, например:
module switch mpi/default mvapich2/pgi_12.10
mpiset 7
и откомпилировать программу компилятором pgfortran с опцией -Mcuda , указав при необходимости оптимизированные библиотеки, например:
pgfortran -o mytest test.cuf -Mcuda -lcublas
Ссылки на руководства по CUDA
Сообщество пользователей CUDA ВМК МГУ (выложены лекции в виде слайдов и есть активный форум, на котором можно задавать вопросы по CUDA. В работе форума активно участвуют сотрудники Nvidia)
https://sites.google.com/site/cudacsmsusu/home
CUDA zone: сборник приложений на CUDA, многие с документацией и исходными кодами
http://www.nvidia.ru/object/cuda_apps_flash_new_ru.html#state=home
Чтобы быстро задействовать GPU (хотя и с меньшей эффективностью) можно использовать директивные средства распараллеливания, а именно PGI Accelerator, доступ к триальной версии которого можно получить на месяц бесплатно
http://www.nvidia.ru/object/openacc-gpu-directives-ru.html
вот ссылки на записи презентаций по применению данного ПО для C и Fortran кодов
http://youtu.be/5tDhWkSc4BI
http://youtu.be/MjGEcZ7LHAQ
25 июня по 7 июля 2012 в Москве в МГУ будет проходить Международная Летняя Суперкомпьютерная Академия, на которой будут курсы по CUDA.
http://academy.hpc-russia.ru/
PGI Accelerator и OpenACC
Компиляторы PGI (pgcc/pgCC/pgf77/pgfortran) позволяют создавать приложения для запуска на GPU (см. [1-3]). Поддержка стандарта OpenACC [4] добавлена в 2012 году с версии 12.6 (см. [5]; в частности, о переходе на OpenACC в [6]). Приложения могут быть запущены на узлах с графическими ускорителями кластера «Уран» (umt).
Настроиться на компиляторы PGI можно с помощью команды mpiset (на текущую рабочую версию)
mpiset 7
или, загрузив модуль с нужной версией, с помощью команды module . Например, в начале сеанса
module switch mpi/default mvapich2/pgi_12.10
Для компиляции тогда можно использовать, например, команду pgcc или mpicc
mpicc -o exam_pgi exam.c -ta=nvidia -Minfo=accel -fast
где опция -ta=nvidia подключает компиляцию на GPU, а необязательная опция -Minfo=accel служит для выдачи дополнительной информации о генерации кода для GPU (accelerator kernel). Для версий компилятора с поддержкой OpenACC можно вместо опции -ta=nvidia использовать опцию -acc .
Опция -ta=nvidia,time (где time — подопция) используется для выдачи времени, потраченного на инициализацию GPU (init), перемещение данных (data) и вычисления на GPU (kernels).
Использование же -ta=nvidia,host задаст генерацию единого кода для host (CPU) и GPU: при наличии GPU программа будет выполняться на GPU, иначе на host. Например,
mpicc -o exam_gh exam.c -ta=nvidia,host -Minfo
Можно узнать, выполняется ли программа на GPU, если установить переменную окружения ACC_NOTIFY в 1
export ACC_NOTIFY=1
и запустить программу. При каждом вызове функции GPU (kernel) будет выдаваться сообщение вида
launch kernel file=.
что полезно при разработке и отладке программы.
Примеры C и Fortran программ есть на umt, например в каталоге
/opt/pgi/linux86-64/11.1/EXAMPLES/accelerator
и рассматриваются в [2].
Замечания.
- Помните, что в С, по умолчанию, все константы с плавающей точкой имеют тип double . Поэтому в [2, First Program] для вычислений с одинарной точностью используется 2.0f вместо 2.0.
- Для безопасного распараллеливания в С программах (см. [2]) объявления указателей, ссылающихся на распределенную с помощью malloc() память, содержат квалификатор restrict . Такие указатели ссылаются на непересекающиеся области памяти.
Запуск приложения на счет с использованием GPU можно осуществить с помощью команды
srun --gres=gpu:1 exam_pgi
Опция -C k40m (или -C m2090 ) позволяет указать желаемый тип GPU (см. Кластер «Уран»), например,
srun --gres=gpu:1 -C k40m exam_pgi
С помощью программы pgaccelinfo [2, Setting Up] можно получить информацию о технических характеристиках GPU конкретного узла, указав опцию -w , например
srun -w tesla52 --gres=gpu:1 pgaccelinfo
Возможно совместное использование OpenMP и GPU.
Общие замечания.
- Использование GPU может дать значительное ускорение для задач, где активно задействованы стандартные математические функции (sin, cos, …, см. [1]). При этом надо иметь в виду, что точность вычислений на GPU не та же самая, что на CPU (в частности, и для тригонометрических функций).
Рекомендуется (см., например, [2, 3]): - До первого запуска kernel осуществлять начальную инициализацию GPU с помощью вызова функции acc_init(acc_device_nvidia).
- Копировать массивы целиком (память host память GPU).
Компилятор стремится минимизировать объём перемещаемых данных, не заботясь о количестве команд пересылки данных. Во многих случаях издержки на инициирование/завершение команд пересылки оказываются больше, чем экономия на времени самой пересылки, и более эффективно посылать один большой непрерывный кусок. - Если посчитанные GPU данные не используются в дальнейшем на host, то следует явно указать компилятору, что соответствующие переменные не надо передавать обратно. Компилятор обычно возвращает на host все модифицированные данные.
- Постараться избавиться от диагностики вида ‘Non-stride-1 accesses for array ‘X’’, изменив или структуру массива, или порядок заголовков циклов, или параметры преобразования циклов (loop schedule). Эта диагностика означает, что для соответствующего массива не обеспечен непрерывный доступ к данным и может возникнуть задержка при выполнении групп нитей (threads in groups), которые NVIDIA называет warps. Упрощённо можно думать, что warp выполняется в SIMD или векторном виде с доступом к памяти порциями определённого размера.
Ссылки на документацию
- GPU Programming with the PGI Accelerator Programming Model by Michael Wolfe / PGI GPU Programming Tutorial. Mar 2011
- The PGI Accelerator Programming Model on NVIDIA GPUs. Part 1 by Michael Wolfe / June 2009
- The PGI Accelerator Programming Model on NVIDIA GPUs. Part 2 Performance Tuning by Michael Wolfe / August 2009
- The OpenACC™ Application Programming Interface. Version 1.0. November, 2011
- PGI Accelerator Compilers with OpenACC Directives
- PGI Accelerator Compilers with OpenACC by Michael Wolfe / March 2012, revised in August 2012
Параллельный Matlab
Система Matlab (Matrix Laboratory) — разработка компании The MathWorks, предназначенная для выполнения математических расчетов при решении научных и инженерных задач.
Достоинства Matlab – это, прежде всего, простота матричных операций и наличие многочисленных пакетов программ (Toolbox-ов), среди которых
Parallel Computing Toolbox, расширяющий Matlab на уровне языка операциями параллельного программирования.
Parallel Computing Toolbox достаточно для написания и запуска параллельной Matlab программы на локальной машине (Product Documentation).
Вычисления с Matlab на кластере требуют уже 2 продукта:
Parallel Computing Toolbox и
Matlab Distributed Computing Server
В ИММ имеются все 3 основных продукта для параллельных вычислений с Matlab на кластере «Уран» (версия Matlab R2011b и старше):
1) Matlab: 10 лицензий,
2) Parallel Computing Toolbox: 10 лицензий
(прежнее название Distributed Computing Toolbox),
3) Matlab Distributed Computing Server: 1000 лицензий
(прежнее название Matlab Distributed Computing Engine);
а также большое количество специализированных Toolbox-ов: по 10 лицензий на SIMULINK, Signal_Blocks, Image_Acquisition_Toolbox, Image_Toolbox, MAP_Toolbox, Neural_Network_Toolbox, Optimization_Toolbox, PDE_Toolbox, Signal_Toolbox, Statistics_Toolbox, Wavelet_Toolbox и 2 лицензии на Filter_Design_Toolbox.
Список всех установленных на кластере продуктов Matlab и количество доступных лицензий на них можно уточнить командой
/opt/matlab-R2010a/etc/lmstat -a
Название текущей рабочей версии Matlab можно узнать, набрав, например, в командной строке
echo 'exit' | matlab -nodisplay
или выполнив в окне Matlab команду ver .
Замечания.
1. При работе в Matlab следует ориентироваться на документацию используемой версии.
2. Для смены текущей версии следует воспользоваться командой module .
Можно запускать программы из командной строки или из системы Matlab.
Для запуска программ на кластере из командной строки пользователю необходимо установить на своем компьютере программу PuTTY.
Запуск параллельных Matlab-программ из командной строки осуществляется с помощью разновидностей команды mlrun .
Для работы в диалогом окне Matlab на компьютере пользователя предварительно должен быть установлен и запущен какой-нибудь X-сервер (MobaXterm, X2Go).
Из командной строки вызвать Matlab
matlab или
matlab & (с освобождением командной строки)
и дождаться появления оконного интерфейса Matlab.
Запуск параллельных программ на кластере из системы Matlab осуществляется с помощью разновидностей служебной функции imm_sch .
Замечание. Можно работать в системе Matlab, запустив её в интерактивном текстовом режиме командой
matlab -nodisplay
Выход осуществляется по команде exit .
Использование русских букв в Linux версии Matlab
Для работы с русскими буквами в Matlab’е необходимо правильно настроить кодировку файла с программой, и, при необходимости, настроить ввод русских букв в клиентской программе.
Возможны два варианта настройки кодировки файла с программой:
- Если в основном вы работаете в Windows, то рекомендуется использование кодировки CP1251.
- Если вы создаёте, редактируете и запускаете программы в основном в Linux, то рекомендуется использование кодировки UTF-8 (кодировка на кластере по умолчанию).
Вариант 1
На кластере «Уран» при запуске Matlab’а можно включить Windows-кодировку CP1251. Для этого необходимо запускать Matlab в окне терминала следующей командой:
LANG=ru_RU.CP1251 matlab
После этого можно нормально работать с файлами, подготовленными в Windows.
Внимание. Данный вариант может не сработать при запуске счётной задачи на узлах кластера.
Как минимум, в начало счетной программы надо вставить команду:
feature('DefaultCharacterSet', 'cp-1251');
После этого строки, выводимые функцией fprintf() , будут сохраняться в правильной кодировке. Строки на русском языке, выводимые функцией disp() , к сожалению, будут испорчены в любом случае.
Если в программе для вывода результатов используется функция disp() , выполняются операции сравнения или сортировки строк с русскими буквами, то стоит попробовать второй вариант.
Вариант 2
После передачи файла из Windows на кластер можно перекодировать его в кодировку UTF-8. Следует помнить, что перекодированный файл будет некорректно отображаться в Windows, зато он без проблем будет обрабатываться на кластере.
2.a Перекодирование файла на кластере в командной строке. Файл перекодируется с помощью команды
iconv -c -f WINDOWS-1251 -t UTF-8 winfile.m > unixfile.m
где winfile.m — имя исходного файла, а unixfile.m — перекодированного (подставьте вместо winfile.m и unixfile.m имена ваших файлов, главное, помните — они должны быть различными). Затем можно открыть новый файл в Matlab’е.
2.b Перекодирование файла на кластере в текстовом редакторе. Для перекодирования файла необходимо запустить текстовый редактор KWrite (Linux’овская кнопка «Пуск», затем ввести в строке поиска имя редактора). При открытии файла с программой указать кодировку cp1251, убедиться, что русские буквы читаются правильно, затем выбрать пункт меню «Файл ->Сохранить как» и указать при сохранении кодировку UTF-8.
Если есть необходимость перекодировать файлы, полученные с кластера, то это также можно сделать с помощью KWrite. При открытии файла надо выбрать кодировку UTF-8, а потом сохранить файл в кодировке cp1251.
В командной строке перекодирование из Linux в Windows выглядит так:
iconv -c -f UTF-8 -t WINDOWS-1251 unixfile.m > winfile.m
Примечание для администраторов
В дистрибутиве RHEL и его производных (CentOS, Scientific Linux) отсутствует файл локализации ru_RU.CP1251. Поэтому «Вариант 1» не сработает (Matlab не запустится с сообщением о невозможности установить указанный язык).
Для генерации файла с кодировкой администратор должен выполнить в Linux’е команду:
localedef -i ru_RU -f CP1251 ru_RU.CP1251
Историческое примечание
Старые версии Matlab’а (до 2010 года) умели работать с единственной кодировкой русских букв ISO-8859-5. Для того, чтобы ее настроить на серверной стороне, необходимо установить переменную окружения LANG в значение ru_RU.8859-5 .
1) Для корректной обработки русских букв на вычислительных узлах
в файл «.bashrc» из домашнего каталога пользователя ( ~/.bashrc ) необходимо вставить следующую строку:
export LANG=ru_RU
2) в настройках сессии программы PuTTY, в разделе Translation, установить кодировку ISO-8859-5:1999 (Latin/Cyrillic) и сохранить эту сессию для работы с системой Matlab в дальнейшем.
Запуск параллельной программы
- Основные сведения
- Действия пользователя
- Запуск параллельной программы из командной строки
- Запуск параллельной программы в окне Matlab
- Доступ к объекту Job, состояние работы
- Вывод результатов
- Рекомендации
Основные сведения
Параллельная программа — это программа, копии которой, запущенные на кластере одновременно, могут взаимодействовать друг с другом в процессе счета.
Программа пользователя должна быть оформлена как функция (не скрипт) и находиться в начале запускаемого файла, т.е. предшествовать возможным другим вспомогательным функциям. Имя файла должно совпадать с именем первой (основной) функции в файле. Одноименная с файлом функция, не являющаяся первой, никогда не будет выполнена, так как независимо от имени всегда выполняется первая функция файла. Файл должен иметь расширение » m » (Пример параллельной программы).
Для выполнения программы пользователя всегда вызывается программа MatLab.
При запуске программы пользователя на кластере в программе MatLab создаётся объект Job ( работа ) с описанием параллельной работы, которое включает определение объекта Task ( задача ), непосредственно связанного с заданной программой. Можно сказать, что копия работающей программы представлена в системе MatLab объектом Task .
Каждый объект Job получает идентификатор ( ID ) в системе MatLab, равный порядковому номеру. Нумерация начинается с 1.
Соответствующее имя работы вида Job1 , выдаваемое при запуске, хранится в переменной окружения MDCE_JOB_LOCATION и может быть использовано в программе, а сам объект доступен пользователю во время сеанса MatLab.
Аналогично пользователь имеет доступ и к объектам Task ( задача ), которые также нумеруются с 1. Идентификатор или номер задачи ( 1,2. ) — это номер соответствующего параллельного процесса ( lab ) и его можно узнать с помощью функции labindex , а общее число запущенных копий с помощью функции numlabs .Имена работы ( Job1 ), задач ( Task1, Task2 ,…) используются в процессе вычислений для формирования имен файлов и каталогов, связанных с заданной программой. Так, каталог вида Job1 содержит наборы файлов с информацией по задачам. Имена этих файлов начинаются соответственно с Task1, Task2 , … Например, файлы вывода имеют вид Task1.out.mat, Task2.out.mat , … и содержат, в частности, выходные параметры функции пользователя (массив ячеек argsout ).
Программа пользователя, оформленная в виде объекта Job , поступает в распоряжение системы запуска, которая ставит её в очередь на счет с присвоением своего уникального идентификатора.
Система запуска создает каталог вида my_function.1 , например для файла my_function.m . В этом каталоге пользователю может быть интересен, в частности, файл errors (см. Возможные ошибки). Заметим, что пользователь должен сам удалять ненужные каталоги вида имя_функции.номер (номера растут, начиная с 1).
Если ресурсов кластера достаточно, то на каждом участвующем в вычислении процессоре (ядре для многоядерных процессоров) начинает выполняться копия программы-функции пользователя при условии наличия достаточного числа лицензий (в настоящее время система запуска не контролирует число лицензий, доступность лицензий определяется в начале счета).
Пользователь может контролировать прохождение своей программы через систему запуска как в окне системы Matlab, например, с помощью Job Monitor (см. п. Доступ к объекту Job ), так и из командной строки с помощью команд системы запуска (запросить информацию об очереди, удалить стоящую в очереди или уже выполняющуюся программу).
Действия пользователя
Войти на кластер (с помощью PuTTY или MobaXterm) и запустить программу-функцию из командной строки или в окне системы Matlab, указав необходимое для счета число параллельных процессов и максимальное время выполнения в минутах.
В ответ пользователь должен получить сообщение вида:Job output will be written to: /home/u1303/Job1.mpiexec.outгде Job1 — имя сформированной работы, 1 — идентификатор работы
( /home/u1303 — домашний (личный) каталог пользователя).
Замечание. Для локализации результатов вычислений рекомендуется осуществлять запуск программы (даже в случае запуска встроенных функций Matlab ) из рабочего каталога, специально созданного для данной программы в домашнем каталоге.Запуск параллельной программы из командной строки
Команда запуска mlrun имеет вид
mlrun -np -maxtime ['']где
— число параллельных процессов (копий программы)
— максимальное время счета в минутах
— имя файла с одноименной функцией (например, my_function )
— аргументы функции (не обязательный параметр) берутся в одиночные кавычки и представляются в виде
k,
где k — число выходных аргументов функции, а в фигурных скобках список ее входных аргументов. При отсутствии аргументов у функции, что соответствует » 0,<> «, их можно опустить. Например, для файла my_function.m с одноименной функцией без параметров запуск имеет вид:mlrun -np 8 -maxtime 20 my_functionгде 8 — число процессов, 20 — максимальное время счета в минутах.
Запуск параллельной программы в окне Matlab
В командном окне Matlab (Command Window) вызвать служебную функцию imm_sch , которой в качестве параметров передать число процессов, время выполнения и предназначенную для параллельных вычислений функцию с аргументами или без, сохраняя (рекомендуется) или не сохраняя в переменной (например, job ) ссылку на созданный объект Job (имя функции набирается с символом «@» или в одиночных кавычках):
job = imm_sch(np,maxtime,@my_function,k );job = imm_sch(np,maxtime,'my_function',k,);Так, для примера выше запуск в окне Matlab будет иметь вид:
job = imm_sch(8,20,@my_function);Доступ к объекту Job, состояние работы
Все работы хранятся на кластере. При необходимости доступа к работе, на которую в текущий момент отсутствует ссылка, можно (1) в окне Job Monitor правой кнопкой мыши выделить нужную работу и выбрать соответствующую опцию в контекстном меню или (2) по идентификатору ( ID ) определить ссылку на работу (обозначенную ниже job ), используя, например, команды:
c = parallel.cluster.Generic job = c.findJob('ID',1)Состояние работы ( State ) можно:
(1) увидеть в окне Job Monitor или
(2) выдать в окне Command Window, набрав
job.State
Основные значения состояния работы следующие:
pending (ждет постановки в очередь)
queued (стоит в очереди)
running (выполняется)
finished (закончилась)Окончания счета (состояние finished ) можно ждать с помощью функции wait , wait(job) или job.wait()
Примечание.
Вышеприведенные команды предназначены для версий MatLab с профилем кластера, т.е. начиная с R2012a. В ранних версиях (с конфигурацией кластера) следует набирать:s = findResource('scheduler', 'type', 'generic') job = findJob(s,'ID',1)При этом в поле DataLocation структуры s должен быть текущий каталог (тот, в котором ищем работу). Если каталог другой, то можно выполнить
clear allи повторить предыдущие команды.
Вывод результатов
В окне Matlab (с R2012a) для работы job и любой ее задачи ( Task ) с номером n=1,2. можно выдать (далее для удобства n=1)
1) протокол сеанса:job.Tasks(1).Diary2) информацию об ошибках (поле ErrorMessage ):
job.Tasks(1) или job.Tasks(1).ErrorMessage
3) результаты (значения выходных параметров) работы job в целом (по всем Task -ам):out = job.fetchOutputsТогда для 1 -ой задачи ( Task ) значение единственного выходного параметра:
res = out
В случае нескольких выходных параметров соответственно имеем для 1-го, 2-го, . :
res1 = out
res2 = out
Другой способ выдачи результатов по задачамout1 = job.Tasks(1).OutputArgumentsЗамечания.
1. Эту же информацию можно выдать, запустив Matlab в интерактивном текстовом режиме ( matlab -nodisplay ) и набирая затем упомянутые команды.
2. Если ссылка на работу ( job ) отсутствует, то ее можно найти по идентификатору.
3. Для ранних версий (до R2012a) следует использовать следующие команды, чтобы выдать
1) протокол сеанса:job.Tasks(1).CommandWindowOutput3) результаты (значения выходных параметров) работы job в целом (по всем Task -ам):
out = job.getAllOutputArgumentsРекомендации
1. Начать работу на кластере рекомендуется с запуска своей последовательной программы в тестовом однопроцессном варианте, например,
mlrun -np 1 -maxtime 20 my_functionгде my_function – функция без параметров, максимальное время счета 20 минут.
2. После преобразования последовательной программы в параллельную её работоспособность можно проверить, выполняя шаги, приведенные в пункте Как убедиться в работоспособности программы при рассмотрении примеров с распределенными массивами.Пример запуска программы
Для запуска программы на кластере используем функцию rand , вызываемую для генерации 2х3 матрицы случайных чисел (традиционный вызов функции: y = rand(2,3) ).
Для получения 4 экземпляров матрицы задаем число процессов, равное 4. Максимальное время счета пусть будет равно 5 минутам.Запускать функцию будем на кластере «Уран» (umt) в каталоге test , специально созданном заранее в домашнем каталоге пользователя /home/u9999 , где u9999 – login пользователя (см. Схема работы на кластере и Базовые команды ОС UNIX).
Для запуска функции rand из командной строки используется команда mlrun ,
а из системы Matlab – служебная функция imm_sch .Для запуска из командной строки войти на umt через PuTTY и выполнить команду
mlrun -np 4 -maxtime 5 rand '1,'Для запуска из окна Matlab войти на umt из MobаXterm, вызвать Matlab командой
matlab &и в открывшемся окне набрать
job = imm_sch(4,5,@rand,1,);где job – ссылка на сформированную работу.
Можно работать в системе Matlab, войдя на umt через PuTTY и запустив её в интерактивном текстовом режиме командой
matlab -nodisplayВ ответ на приглашение ( >> ) следует соответственно набрать
job = imm_sch(4,5,@rand,1,);Выход из Matlab осуществляется по команде exit .
После выполнения mlrun или imm_sch выдается строка вида
Job output will be written to: /home/u9999/test/Job1.mpiexec.outгде Job1 — имя сформированной работы, 1 — идентификатор (номер) работы.
Если ресурсов кластера достаточно, задача войдет в решение (см. Запуск задач на кластере). Иначе для ускорения запуска на кластере небольших (отладочных) задач можно вместо выделенного задаче раздела назначить debug командой вида:
scontrol update job 8043078 partition=debugгде 8043078 — уникальный идентификатор (JOBID) задачи.
Дожидаемся окончания задачи, т.е. job.State должно быть finished .
В окне Matlab контролировать состояние задачи удобно с помощью Job Monitor.Результаты выдаем с помощью команд:
со всех процессовout = job.fetchOutputsа для выдачи матрицы, полученной 1-ым процессом (т.е. Task1 )
Для выдачи результатов ранее посчитанной работы, на которую в текущий момент нет ссылки, следует обеспечить к ней доступ, например используя Job Monitor.
Запуск частично параллельной программы (c parfor или spmd)
- Введение
- 1. Запуск частично параллельной программы с неявным заданием пула
- 2. Запуск частично параллельной программы с явным заданием пула
на основе профиля кластера- Запуск частично параллельной программы на Matlab клиенте
- Запуск частично параллельной программы в пакетном режиме с помощью команды batch
- Вывод результатов
Введение
Частично параллельной будем называть программу, при выполнении которой наряду с последовательными возникают параллельные вычисления, инициируемые параллельными конструкциями языка Matlab parfor и spmd .
Использование параллельного цикла parfor или параллельного блока spmd предполагает предварительное открытие Matlab пула, т.е. выделение необходимого числа процессов (Matlab workers или labs), на локальной машине или на кластере.
Запуск частично параллельных программ с открытием Matlab пула на кластере можно выполнять
(1) по аналогии с запуском параллельных программ из командной строки или в окне системы Matlab (запуск с неявным заданием пула) или
(2) на основе профиля кластера (с версии R2012a, ранее параллельной конфигурации) при работе в окне системы Matlab (запуск с явным заданием пула).Пользователь может контролировать прохождение своей программы через систему запуска как в окне системы Matlab (с версии R2011b) с помощью Job Monitor (см. пункт меню Parallel), так и из командной строки с помощью команд системы запуска.
1. Запуск частично параллельной программы с неявным заданием пула
При запуске из командной строки вместо команды mlrun (для параллельных программ) следует использовать команду mlprun , например,
mlprun -np 12 -maxtime 20 my_function '1, 'а при запуске в окне вместо функции imm_sch использовать функцию imm_sch_pool , например,
job = imm_sch_pool(12,20,@my_function,1,);для функции, определенной как
function y = my_function(x1,x2)и запущенной на 12 процессах с максимальным временем счета 20 минут.
При этом один процесс будет выполнять программу-функцию, а оставшиеся будут использованы в качестве пула.
В результате запуска программа ставится в очередь на счет и, если ресурсов кластера достаточно, входит в решение.
Вывод результатов осуществляется так же, как и в случае параллельных программ.2. Запуск частично параллельной программы с явным заданием пула
на основе профиля кластераЯвное задание пула возможно при работе в окне Matlab с помощью команды matlabpool (см. help matlabpool ). Число выделенных процессов и время, в течение которого они будут доступны пользователю, зависят от заданного профиля кластера (см. пункт меню Help/Parallel Computing Toolbox/Cluster Profiles).
Командаmatlabpoolбез параметров открывает пул, используя профиль по умолчанию с указанным в нем размером пула. В ИММ УрО РАН по умолчанию Matlab пул открывается на узлах кластера (тип кластера Generic), поскольку управляющий компьютер, выступающий в роли локальной машины (Matlab client), не должен использоваться для длительных вычислений.
Пользователь может выбрать профиль по умолчанию из уже существующих профилей или создать новый, используя пункт меню Parallel окна Matlab.Команда matlabpool с указанием размера пула, например
matlabpool open 28открывает пул, переопределяя размер, заданный по умолчанию. При этом следует иметь в виду, что существует ограничение на максимальное число доступных пользователю процессов на кластере.
В результате открытия пула сформированная для кластера работа с именем вида JobN (где N=1,2. ) поступает в распоряжение системы запуска и ставится в очередь на счет. Если свободных процессов достаточно, то пул будет открыт на время, заданное в профиле по умолчанию, с выдачей сообщения вида:Starting matlabpool using the 'imm_20mins' profile . Job output will be written to: /home/u1303/my_directory/Job1.mpiexec.out connected to 28 labs.Размер пула можно узнать, набрав
matlabpool sizeПо завершении вычислений, связанных с пулом, его следует закрыть
matlabpool closeВнимание. Пул закрывается по истечении времени с диагностикой вида:
The client lost connection to lab 12. This might be due to network problems, or the interactive matlabpool job might have errored.Запуск частично параллельной программы на Matlab клиенте
(не разрешается для длительных вычислений)
Итак, схема использования параллельных конструкций parfor и spmd в окне Matlab такова:matlabpool . % вычисления с использованием parfor или spmd, % выполняемые построчно или % собранные в программу (частично параллельную) % и запущенные из файла . matlabpool closeПри этом все вычисления, кроме параллельных, выполняет Matlab client (см., например, Introduction to Parallel Solutions/Interactively Run a Loop in Parallel.)
Запуск частично параллельной программы с помощью команды batch
В системе Matlab существует команда (функция) batch , которая позволяет запускать программы в пакетном режиме, разгружая Matlab client (см., например, Introduction to Parallel Solutions/Run a Batch Job). Эта команда выполняется асинхронно, т.е. интерактивная работа пользователя не блокируется.
Где будет выполняться программа и максимально сколько времени, определяется планировщиком (scheduler), заданным в профиле кластера по умолчанию: в ИММ на кластере, тип планировщика generic . Для выполнения программы создается объект Job (работа). Команда batch видаjob = batch('my_mfile')( job — ссылка на объект работа)
запускает программу (скрипт или функцию) my_mfile в однопроцессном варианте. В ответ на команду batch выдается сообщение видаJob output will be written to: /home/u1303/my_directory/Job1.mpiexec.outсодержащее идентификатор работы (ID), равный здесь 1. Сформированная для кластера работа ставится в очередь и при наличии свободных процессов входит в решение с именем очереди вида my_mfile.1 .
Для запуска на кластере частично параллельной программы можно использовать команду batch с открытием пула. При этом выделяемое на кластере число процессов будет на 1 больше заданного размера пула.
Так, например, для выполнения командыjob = batch('my_mfile','matlabpool',11)потребуется 12 процессов: 1 для программы my_mfile , 11 для пула (см., например, Introduction to Parallel Solutions/Run a Batch Parallel Loop). Время счета здесь определяется временем, заданным в профиле по умолчанию (в аналогичной команде imm_sch_pool все аргументы задаются явно).
По завершении работы job можно выдать
1) протокол сеансаjob.diary2) результаты работы
out=job.fetchOutputs celldisp(out)( fetchOutputs вместо getAllOutputArguments в ранних версиях, использовавших конфигурацию кластера, а не профиль)
3) информацию об ошибках (поле ErrorMessage )job.Tasks(1)job.Tasks(1).ErrorMessage
