| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Как использовать все ядра ЦП для вычислений? |
| Автор: Proger10 2.4.2014, 09:09 |
| Интересует исключительно код использования многоядерной архитектуры. Знаю теорию распараллеливания, работал с MPI, знаю каким образом распараллеливать математически задачу, заранее просчитано распараллеливаема ли она и какая выгода от подобного действия будет получена, знаю форки, работал с синхронизацией потоков. Но целенаправленно все ядра процессора я никогда не использовал (цели такой у меня не было). Иногда рикошетом только зацеплял потоки, когда требуется обеспечить параллельную работу графики и логики в фоновом режиме. Какие там подводные камни есть? Можно ли обойтись без сторонних библиотек? (типа OpenMP). Поскольку код будет кочевать от устройства к устройству, заранее (по возможности) не хочется привязываться ни к чему, только если по-другому очень и очень сложно. Хотя с определёнными сложностями я готов справляться самостоятельно. Достаточно ли будет просто создать 4 потока, надеясь, что 4 ядра ЦП загрузятся по максимуму или там совершенно иная технология работы? (естественно предполагаю, что в каждом потоке по мощной задаче). Сейчас появилась цель в быстрых расчётах. Каким образом максимально задействовать ресурсы ЦП? (пока интересует только ЦП, GPU подключу позже к этим же расчётам через Куду). |
| Автор: Romikgy 2.4.2014, 10:18 | ||
достаточно |
| Автор: NoviceF 7.4.2014, 14:39 | ||
Ну как таковая многопоточность есть в c++11 http://www.cplusplus.com/reference/thread/thread/?kw=thread. Правда не могу сказать как оносится спектр её возможностей к OpenMP, не пользовался ни тем ни другим:) |