Я хотел изучить основы, на которых OpenMP API выделяет потоки на ядра. Какие факторы он принимает во внимание при этом? Может ли это распределение быть изменено в соответствии с потребностями программиста?Как OpenMP выполняет распределение потоков?
ответ
Я считаю, что вы ищете близость между резьбами с открытым верхом и резьбами/сердечниками. Ответ: да, кстати.
Если вы используете компиляторы Intel, вы можете взглянуть на этот сайт для переменной среды KMP_AAFFINITY. https://software.intel.com/en-us/node/522691
Если вы используете компиляторы GNU, вам могут быть интересны эти официальные переменные среды OpenMP. https://gcc.gnu.org/onlinedocs/libgomp/OMP_005fPLACES.html https://gcc.gnu.org/onlinedocs/libgomp/OMP_005fPROC_005fBIND.html
Я не думаю, что в документации gnu ясно, что поддержка привязки зарезервирована для полностью поддерживаемых целей (не включая Windows). Как Intel, так и gnu OpenMP по умолчанию - 1 поток на каждый логический процессор, которого обычно слишком много (если вы не отключите HyperThreading) – tim18
Да, число потоков может определенно быть изменены в соответствии с суждением программиста.
См: OpenMp set number of threads for parallel loop depending on variable
По умолчанию, OpenMP выделяет столько потоков, как количество ядер на машине/узле (в случае распределенной системы) она работает.
- 1. Распределение памяти OpenMP
- 2. Расхождение потоков Openmp?
- 3. Распределение потоков C
- 4. Распределение потоков JAVA?
- 5. многопоточность (openMP) - сколько параллельных потоков
- 6. OpenMP - выполнение потоков на кусках
- 7. OpenMP создает слишком много потоков
- 8. OpenMP flush и консистенция всех потоков
- 9. Как развернуть большое количество потоков в OpenMP?
- 10. Как установить стеки потоков openmp неограниченно?
- 11. Как узнать число существующих потоков Openmp
- 12. Openmp: Как собрать массив из разных потоков?
- 13. Как не ждать других потоков в OpenMP?
- 14. Код OpenMP, выполняемый в пуле потоков
- 15. Как увеличить распределение потоков в java/scala?
- 16. Непоследовательное количество потоков, работающих при использовании openmp
- 17. MPI_Bcast с использованием потоков (OpenMP) в MPI
- 18. OpenMP: Создание потоков, параллелизм, барьер в цикле
- 19. Распределение потоков Java по нескольким серверам?
- 20. Распределение стека для зеленых потоков C++
- 21. Механизм OpenMP для равномерного распределения потоков
- 22. Openmp найти количество потоков, доступных на машине
- 23. Разделение потоков OpenMP на неуравновешенном дереве
- 24. Оптимизация OpenMP для определенного количества потоков
- 25. Fortran OpenMP: создание потоков только один раз
- 26. openmp число потоков меняется на код Fortran
- 27. производительность, связанная с количеством потоков в openmp
- 28. Избегайте накладных расходов при создании потоков openMP
- 29. Элегантная инициализация потоков openmp параллельно для цикла
- 30. Получение openmp для создания нескольких потоков
Возможно, это слишком широкий вопрос. подумайте о других сообществах, таких как https://www.reddit.com/r/programming/ – pedrorijo91