Spec-Zone.ru › Octave 6

19.5 JIT-компилятор

Векторизация — предпочтительный метод для устранения циклов и ускорения кода. Однако не всегда возможно заменить каждый цикл. В таких ситуациях может быть полезно попробовать экспериментальный компилятор Just-In-Time (JIT) Octave.

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

JIT-компилятор — очень новая функция в Octave, и в настоящее время не все допустимые операторы Octave могут быть ускорены. Однако, если другой метод недоступен, стоит провести тестирование кода с включённым JIT. Функция jit_enable используется для включения или выключения компиляции. Функция jit_startcnt устанавливает порог для ускорения. Циклы с числом итераций выше jit_startcnt будут ускорены. Функции jit_failcnt и debug_jit вряд ли будут полезны тем, кто не работает непосредственно над реализацией JIT-компилятора.

: val = jit_enable ()
: old_val = jit_enable (new_val)
: jit_enable (new_val, "local")

Запрос или установка внутренней переменной, которая включает JIT-компилятор Octave.

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

См. также: jit_startcnt, debug_jit.

: val = jit_startcnt ()
: old_val = jit_startcnt (new_val)
: jit_startcnt (new_val, "local")

Запрос или установка внутренней переменной, определяющей, будет ли выполнена JIT-компиляция для конкретного цикла.

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

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

См. также: jit_enable, jit_failcnt, debug_jit.

: val = jit_failcnt ()
: old_val = jit_failcnt (new_val)
: jit_failcnt (new_val, "local")

Запрос или установка внутренней переменной, которая подсчитывает количество исключений JIT-ошибок для JIT-компилятора Octave.

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

См. также: jit_enable, jit_startcnt, debug_jit.

: val = debug_jit ()
: old_val = debug_jit (new_val)
: debug_jit (new_val, "local")

Запрос или установка внутренней переменной, определяющей, включено ли отладка/трассировка для JIT-компилятора Octave.

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

См. также: jit_enable, jit_startcnt.

© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v6.4.0/JIT-Compiler.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API