10. Управление работой ядра

 

Управление работой ядра

 

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

Команды меню Kernel

Меню Kernel служит для управления действиями, проводимыми ядром системы над ячейками загруженного документа. Внешний вид меню Kernel и его подменю Evaluation показан на рис. 2.39.

Рассмотрим команды этого подменю более подробно.

Управление процессом вычислений

Основные команды управления процессом вычислений сосредоточены в подменю Evalution меню Kernel:

  • Evaluate Cells (Shift+Enter) — вычисление выделенных ячеек;
  • Evaluate in Place (Shift+Ctrl+Enter) — вычисление выделенного выражения «на месте»;
  • Evaluate Next Input (Shift+Enter на цифровом поле клавиатуры) — вычисление следующей строки ввода;
  • Evaluate in Subsession — вычисление выделенных ячеек в параллельном интерактивном сеансе работы с ядром;
  • Evaluate Notebook — вычисление всех ячеек документа;
  • Evaluate Initialization — вычисление инициализационных ячеек;
  • Enter Subsection — запуск диалогового сеанса работы с ядром;
  • Exit Subsection — завершение диалогового сеанса работы с ядром.

Рис. 2.39. Меню Kernel и его подменю Evaluation

Данная группа команд управляет вычислением ячеек. Перед вычислением каждая ячейка оценивается по своим признакам. Команда Evaluate Cells оценивает все выделенные ячейки, вызывает их вычисление и помещает результат вычисления каждой ячейки сразу после нее. Это одна из наиболее распространенных команд. Следует помнить, что, казалось бы, естественное нажатие клавиши Enter вызывает лишь переход на новую строку, а не вычисление выделенных ячеек ввода. При управлении с клавиатуры вычисление выделенных ячеек происходит при одновременном нажатии клавиш Shift и Enter.

Особое внимание надо обратить на команду Evaluate in Place. Допустим, вы ввели в ячейку ввода, выражение


(2+3)/7

Выделите мышью выражение (2+3). Теперь, исполнив команду Evaluate in Place нажатием клавиш Ctrl+Shift+Enter, мы получим в строке ввода следующее:


5/7

Таким образом, выражение (2 + 3) было вычислено прямо в строке ввода, и на его месте появился результат — 5. Если теперь исполнить команду Evaluate Cells, то появится строка вывода с результатом:


5/7

Поскольку результат представлен дробно-рациональным числом, он повторяет выражение в строке ввода, но в ином формате — в формате вывода.

Команда Evaluate Next Input позволяет последовательно вычислить ряд ячеек, расположенных под выделенной ячейкой. Если текстовый курсор находится в ячейке ввода, данная команда вычисляет эту ячейку. В противном случае она перемещает выделение на следующую ячейку. Последующее использование команды ведет к исполнению этой ячейки, затем к выделению следующей ячейки, ее вычислению и т. д. Таким образом, можно последовательно вызывать вычисление ячеек документа, используя эту команду дважды для каждой ячейки.

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

Команда Evaluate Initialization вычисляет все ячейки, помеченные как инициали-зационные, то есть имеющие символ «т» над квадратной скобкой, обрамляющей ячейку. О задании такого признака говорилось ранее в разделе «Манипуляции с ячейками». Ячейки с указанным признаком выполняются этой командой без их выделения.

Следующие две команды меню Kernel управляют процессом текущих вычислений:

  • Interrupt (Alt+,) — прерывание вычислений;
  • Abort (Alt+.) — полное прекращение вычислений.

Их действие вполне очевидно. Команда Interrupt служит для прерывания текущих вычислений. Эта команда при исполнении задает запрос о том, каким образом вы хотите прервать вычисления и сколько шагов вычислений надо еще сделать. Разумеется, можно и отменить прерывание. Команда Abort вызывает полное прекращение вычислений, так что их можно возобновить лишь с самого начала. Вместо результата выдается сообщение $Abort.

Полезно запомнить клавиатурные комбинации для этих команд, поскольку «зависание» системы из-за чрезмерно большого времени исполнения неудачного алгоритма (например, глубокой рекурсии) не редкость. Кстати, в процессе таких вычислений команды прерывания доступны и из меню.

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

Выбор ядра системы

Новые версии Mathematica приобрели возможность работы не только с установленным локальным ядром, но и с другими ядрами, ориентированными на какие-либо специфические классы вычислений. Это привело к появлению ряда новых команд:

  • Start Kernel — запуск выбранного ядра;
  • Quit Kernel — завершение работы выбранного ядра;
  • Default Kernel — выбор ядра, используемого по умолчанию;
  • Notebook's Kernel — выбор ядра для данного документа;
  • Kernel Configuration Options — выводит окно установки свойств ядер.

Перечисленные команды позволяют, в частности, подключаться к ядру через сеть, запуская его на удаленной машине. Таким образом, интерфейсный процессор системы Mathematica, установленный на рабочей станции, может использовать для вычислений ядро, запущенное через сеть на мощном сервере.

Управление показом номеров ячеек

Номера строк ввода и вывода — причуда системы, унаследованная от старого доброго Бейсика. В принципе, нумерация строк при культурном программировании в системе Mathematica не нужна и даже вредна. В частности, нумерация не является строго последовательной и нарушается при изменении ячеек ввода в начале документа и повторном их вычислении после редактирования. К тому же в общем случае она меняется после записи и повторной загрузки документа.

Поэтому предусмотрена команда-переключатель Show In/Out Names. Она управляет показом или скрытием номеров строк. Если напротив этой команды в меню стоит галочка, то номера строк будут показаны в виде In [n] и Out [n]. При отсутствии галочки номера строк и слова In и Out не отображаются.

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

Удаление всех ячеек вывода

Иногда желательно удалить все ячейки вывода, например для того, чтобы при объединении в группы они не превратились в элементы ячеек ввода. Для удаления всех ячеек вывода служит команда Delete All Output. Выбор этой команды приводит к удалению из текущего документа всех ячеек вывода.

Удаление всех ячеек вывода целесообразно, если конечный документ содержит управляющие структуры, меняющие последовательный порядок выполнения ячеек. После удаления ячеек вывода их можно восстановить, задав вычисление всего документа в целом.

 

gl2-39.jpg

Изображение: