Для ускорения расчёта алгоритма предусмотрена возможность использования многопоточного расчёта, позволяющего выполнять расчёт с помощью нескольких потоков, действующих одновременно.
Выполнение многопоточного расчёта происходит в несколько этапов:
Инициализация. На этапе инициализации для каждого потока создаётся своя коллекция отметок измерений источников данных для блоков расчёта. При однопоточном расчёте коллекция отметок измерений источников данных создаётся только один раз.
Примечание. При увеличении числа потоков, участвующих в многопоточном расчёте, увеличивается время, требуемое для выполнения этапа инициализации.
Расчёт. На этапе расчёта все коллекции отметок измерений источников данных распределяются по потокам, после чего каждый поток выполняет последовательный расчёт алгоритма для каждой отметки из коллекции.
По окончании выполнения действий на каждом этапе многопоточный расчёт завершается.
По умолчанию расчёт алгоритма выполняется в многопотоковом режиме. При необходимости снимите флажок «Многопоточный расчет» на странице «Приёмник» в мастере редактирования блока расчёта для выполнения однопоточного расчёта блока или флажок «Многопоточный расчет» в окне «Настройка выполнения расчёта» для однопоточного расчёта всего алгоритма. Рекомендуется использовать однопоточный расчёт, если:
при расчёте алгоритма выполняются несложные арифметические операции и/или выполняются операции над справочниками с большим количеством элементов в отметке. В этом случае при использовании многопоточного расчёта создание коллекций отметок измерений источников данных может привести к излишним временным затратам, превышающим время самого расчёта;
в приёмниках данных блока расчёта содержатся параметры. В этом случае при использовании многопоточного расчёта на этапе инициализации для каждого потока, помимо коллекции отметок измерений источников данных, создаётся также коллекция параметров для расчёта. Из-за этого этап инициализации значительно замедляется и общее время многопоточного расчёта может превысить общее время однопоточного расчёта;
при задании фильтрации по данным в блоке расчёта количество рассчитываемых точек в источниках данных меньше количества потоков. Подробнее описано в разделе «Настройка фильтрации по данным».
Если блок расчёта содержит формулы, вычисления которых выполняются в течение длительного времени, и количество итераций в формулах превышает число потоков, то используйте многопоточный расчёт для увеличения производительности и ускорения расчёта блока за счёт параллельного расчёта итераций. Многопоточный расчёт доступен на системах с многоядерными процессорами: число потоков равно числу ядер процессора.
Примечание. Использование многопоточного расчёта для блока расчёта доступно только при отметке хотя бы одного измерения приёмника данных.
По умолчанию при многопоточном расчёте используется максимум 8 потоков. Для изменения максимального числа потоков, по которым будет выполняться параллельный расчёт итераций, создайте параметр MsNumThreads типа DWORD и задайте ему значение в разделе реестра [HKEY_CURRENT_USER\Software\Foresight\Foresight Analytics Platform\9.0\Debug] на локальных компьютерах всех пользователей. Если заданное значение параметра меньше числа ядер процессора, то будет использоваться число потоков, заданное в параметре. Если заданное значение параметра больше числа ядер процессора, то будет использоваться число потоков, равное числу ядер.
Примечание. При указании параметра MsNumThreads учитывайте особенность архитектуры процессора Intel от 2019 года выпуска и выше. При расчёте итераций будет использоваться удвоенное число потоков относительно заданного значения параметра.
См. также:
Вопросы и ответы | Расчёт алгоритма | Выбор и настройка приёмника данных