Size: a a a

2020 May 20

PK

Pavel Kazakov in pro.cxx
Mr. Panisher
Всем привет, подскажите в чем заключается ограничение?
Делаю многопоточность через OpenMP, выставляю в parallel for num_threads(1590) работает в 1 поток, ставлю num_threads(1583) идет в 1583 потока... Куда смотреть, что читать - спасибо!
std::threads::hardware_concurrency(), а не полторы тысячи тредов))
источник

IA

Igor Akhmetov in pro.cxx
Mr. Panisher
4 ядра. Но почему 1583 потока запускается программа и цикл идет в 1583 потока, делаешь 1584 и выше идет в 1 поток.
Вряд ли кто-то подскажет про внутренности рантайма OpenMP, к тому же практический смысл этого вопроса неясен.
источник

CD

Constantine Drozdov in pro.cxx
Mr. Panisher
4 ядра. Но почему 1583 потока запускается программа и цикл идет в 1583 потока, делаешь 1584 и выше идет в 1 поток.
А как вы определили, что 1583 потока?
источник

MP

Mr. Panisher in pro.cxx
Constantine Drozdov
А как вы определили, что 1583 потока?
omp_set_num_threads(1583);
omp_get_max_threads();
источник

CD

Constantine Drozdov in pro.cxx
Mr. Panisher
omp_set_num_threads(1583);
omp_get_max_threads();
ну это наверняка 65536/42
источник

PK

Pavel Kazakov in pro.cxx
Constantine Drozdov
ну это наверняка 65536/42
Most likely
источник

v

vehlwn in pro.cxx
Mr. Panisher
4 ядра. Но почему 1583 потока запускается программа и цикл идет в 1583 потока, делаешь 1584 и выше идет в 1 поток.
Насколько сильно ускорилась программа? Стоило ради этого выделять полтора гига памяти?
источник

K

Konstantin in pro.cxx
врядли на это понадобится полтора игабайта памяти, стек-то давно уже выделяется не сразу весь
источник

MP

Mr. Panisher in pro.cxx
vehlwn
Насколько сильно ускорилась программа? Стоило ради этого выделять полтора гига памяти?
Про какие 1,5гб говоришь? Я перебираю в цикле массив, после цикла идет free, список дробится на части перед циклом, я хотел ускорить перебор до 3000, но openmp выдает максимум 1583, через parallel for
источник

ПК

Побитый Кирпич... in pro.cxx
Pavel Kazakov
std::threads::hardware_concurrency(), а не полторы тысячи тредов))
Эта шляпа вроде только в msvc есть
источник

K

Konstantin in pro.cxx
какая именно шляпа?
источник

v

vehlwn in pro.cxx
Mr. Panisher
Про какие 1,5гб говоришь? Я перебираю в цикле массив, после цикла идет free, список дробится на части перед циклом, я хотел ускорить перебор до 3000, но openmp выдает максимум 1583, через parallel for
Нитки не из воздуха образуются. Каждой нитке нужен как минимум стек.
источник

DF

Dollar Føølish in pro.cxx
Стек сразу коммитится?
источник

DF

Dollar Føølish in pro.cxx
Может оно вм только выделяет
источник

v

vehlwn in pro.cxx
Побитый Кирпич
Эта шляпа вроде только в msvc есть
Ты тепепутал с destructive_interference.
источник

v

vehlwn in pro.cxx
Dollar Føølish
Стек сразу коммитится?
Может не сразу. Еще контекст надо переключать.
источник

DF

Dollar Føølish in pro.cxx
Тогда 1.5 Гб не будет занято
источник

ПК

Побитый Кирпич... in pro.cxx
vehlwn
Ты тепепутал с destructive_interference.
Да
источник

v

vehlwn in pro.cxx
Mr. Panisher
Про какие 1,5гб говоришь? Я перебираю в цикле массив, после цикла идет free, список дробится на части перед циклом, я хотел ускорить перебор до 3000, но openmp выдает максимум 1583, через parallel for
Ускорить до 3 тыщ чего? Раз? Это невозможно, если аппаратных ниток не 3 тыщи.
источник

PK

Pavel Kazakov in pro.cxx
их десятки в лучшем случае) на домашних компах/рабочих станциях; сотни на серверных процах, если какие-то волшебники дома собрали кластер, то в таких системах счет на тысячи будет, но эти люди такие вопросы не будут задавать)
источник