Как выполнять многопоточный расчёт?

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

Выполнение многопоточного расчёта происходит в несколько этапов:

  1. Инициализация. На этапе инициализации для каждого потока создаётся своя коллекция отметок измерений источников данных для блоков расчёта. При однопоточном расчёте коллекция отметок измерений источников данных создаётся только один раз.

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

  1. Расчёт. На этапе расчёта все коллекции отметок измерений источников данных распределяются по потокам, после чего каждый поток выполняет последовательный расчёт алгоритма для каждой отметки из коллекции.

По окончании выполнения действий на каждом этапе многопоточный расчёт завершается.

По умолчанию расчёт алгоритма выполняется в многопоточном режиме. При необходимости снимите флажок «Многопоточный расчет» на странице «Приёмник» в мастере редактирования блока расчёта для выполнения однопоточного расчёта блока или флажок «Многопоточный расчет» в окне «Настройка выполнения расчёта» для однопоточного расчёта всего алгоритма. Рекомендуется использовать однопоточный расчёт, если:

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

Примечание. Использование многопоточного расчёта для блока расчёта доступно только при отметке хотя бы одного измерения приёмника данных.

По умолчанию при многопоточном расчёте используется максимум 8 потоков. Для изменения максимального числа потоков, по которым будет выполняться параллельный расчёт итераций, создайте параметр MsNumThreads типа DWORD и задайте ему значение в разделе реестра [HKEY_CURRENT_USER\Software\Foresight\Foresight Analytics Platform\9.0\Debug] на локальных компьютерах всех пользователей. Если заданное значение параметра меньше числа ядер процессора, то будет использоваться число потоков, заданное в параметре. Если заданное значение параметра больше числа ядер процессора, то будет использоваться число потоков, равное числу ядер.

Примечание. При указании параметра MsNumThreads учитывайте особенность архитектуры процессора Intel от 2019 года выпуска и выше. При расчёте итераций будет использоваться удвоенное число потоков относительно заданного значения параметра.

Многопоточный расчёт с настроенной фильтрацией по данным

В случае совпадения одного из кубов-источников с кубом-приёмником блока расчёта при настройке фильтрации по данным флажок «Многопоточный расчет» на странице «Приёмник» в мастере редактирования блока расчёта и флажок «Многопоточный расчет» в окне «Настройка выполнения расчёта» будут проигнорированы и расчёт будет выполняться в однопоточном режиме. В противном случае многопоточный расчёт будет выполняться в соответствии с установленными флажками.

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

См. также:

Вопросы и ответы | Расчёт алгоритма | Выбор и настройка приёмника данных