1

Все,Параллельные вычисления

Я хотел бы использовать Ilnumerics для параллельных вычислений. Они совершенно не связаны. Мне понадобится это для 1) случайные перезагрузки для оптимизатора (особенно стохастический оптимизатор, например, имитированный отжиг): решение одинаковых задач оптимизации, начинающихся параллельно из разных точек: например: argmin_x f (x), начиная с x0_h h = 1, 2, .., K 2) та же оптимизация, которая должна выполняться над наборами несвязанных данных; в качестве примера рассмотрим следующую безусловную задачу оптимизации: , заданную функцией f (R^dx R^p) -> R of x \ in R^d и p параметрами p \ in R^d решить argmin_x f (x , p_h), h = 1, 2, ..., K.

Надеюсь, что обозначение достаточно ясное.

Можно ли запустить этот цикл параллельно, выполняя каждый раз какое-либо лямбда-выражение с объектами ILnumerics и используя многоядерные архитектуры?

Спасибо заранее, как обычно,

GL

ответ

1

Это зависит: ILNumerics автоматически параллелизует математические выражения, как

C = A + B[":;2"]/0.4 * pinv(C) ... 

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

Таким образом, в этом случае вы можете отключить внутренние автоматические ILNumerics распараллеливания делает прозрачно для вас:

Settings.MaxNumberThreads = 1; 

выражения, как один выше, получить оценку в одном потоке впоследствии. Однако теперь вы отвечаете за распространение вычислительных задач по нескольким потокам. И, кроме того, вам придется заблокировать свои массивы соответственно, потому что ILNumerics не является потокобезопасным вообще! Это позволяет вам писать одновременно с вашими выходными массивами, но также приводит к необходимости выполнения правильной схемы блокировки ...

+0

Haymo, большое вам спасибо. Кристально чистая, как обычно. GL –

Смежные вопросы