2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
|
|
1 | |
VS 12 ограничение на создание потоков05.03.2014, 19:59. Показов 5238. Ответов 26
Метки нет (Все метки)
Использую реализацию OpenMP для распараллеливания вычислений. Почему то больше 64 потоков не создает. 2х ядерный процессор, 3гб оперативки, но ни в какую не хочет создавать 100,200,300 потоков? подскажите, может в настройках что поменять надо или какие библиотеку подключить? просто это точно дело не в OpenMP так как видел примеры реализации с большим кол-вом потоков. Что это может быть за ограничение?
0
|
05.03.2014, 19:59 | |
Ответы с готовыми решениями:
26
Создание и завершение процессов и потоков. Приоритеты выполнения потоков Ограничение в N потоков Ограничение количества потоков Threading. Ограничение количества потоков |
05.03.2014, 20:25 | 2 |
А смысл в таком количестве потоков? Теоретически каждый из потоков может задействовать одно ядро на 100%, поэтому создавать кучу потоков (больше числа ядер процессора), которые к тому же требуют синхронизации, смысла особых не вижу. Хотя для вычислений создать их можно но только на GPU, а не на CPU...
0
|
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
|
|
05.03.2014, 20:27 [ТС] | 3 |
mustimur, по заданию столько надо...
0
|
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
|
|
05.03.2014, 20:50 [ТС] | 5 |
mustimur, ну нити, потоки, не суть. суть в том, что боьше 64 не создается...а почему...
вопрос все еще актуален
0
|
05.03.2014, 21:02 | 6 |
Я с OpenMP не работал, а когда надо было потоки создать на CPU, использовал CreateThread, но таким количество не пробовал создавать (хотя в роде не видел ограничений явных), но и смысла не видел в этом. Так что не знаю
Другой вопрос использование вычислительных возможностей процессора видеокарты, там мной создавалось куча параллельных блоков, но это другой подход...
0
|
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
|
|
05.03.2014, 21:04 [ТС] | 7 |
mustimur, я вас понял, ну сам не видел явных ограничений на вообще любые подходы, так что тут происходит сам не понял, кажетя что-то в самой VS
0
|
05.03.2014, 23:32 | 8 |
Функция int omp_get_thread_limit() что выдаёт?
Как используете? Как узнаёте что больше 64-х потоков не создаётся? На эти вопросы Вам надо было ответить еще в первом посте.
0
|
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
|
|||||||||||
05.03.2014, 23:36 [ТС] | 9 | ||||||||||
castaway,
задаю явно и не явно
0
|
05.03.2014, 23:48 | 10 |
void omp_set_num_threads( int ) задаёт маскимальное число потоков.
int omp_get_num_threads() возвращает число активных потоков. Логично что число активных потоков меньше или равняется числу максимальных. Без простейшего кода, воспроизводящего "проблему", говорить не о чем..
0
|
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
|
||||||
05.03.2014, 23:49 [ТС] | 11 | |||||
castaway,
0
|
Ушел с форума
|
|
05.03.2014, 23:50 | 12 |
E. Implementation-Defined Behaviors in OpenMP C/C++
http://msdn.microsoft.com/en-u... 10%29.aspx
2
|
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
|
|
05.03.2014, 23:55 [ТС] | 13 |
castaway, что то на эту функцию он ругается и пишет - неразрешенный элемент...omp.h подключено...все работает, но только на 64 потока
Добавлено через 49 секунд Убежденный, ну так был пост, в котром человек создавал и 300 потоков с помощью этой организации
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
05.03.2014, 23:56 | 14 |
delete
0
|
06.03.2014, 00:05 | 15 |
Собственно, Убежденный нашел правильный источник. Переведу следующий фрагмент.
В Visual C++, для не вложенного участка parallel, будет предоставлено 64 потока (максимум).
* под "участком" так же подразумевается слово "team" (команда потоков) из источников OpenMP.
0
|
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
|
|
06.03.2014, 00:07 [ТС] | 16 |
castaway, т.е. мне мои циклы в 100 потоков никак не посчитать?
0
|
06.03.2014, 00:24 | 17 | |||||
0
|
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
|
|
06.03.2014, 00:27 [ТС] | 18 |
castaway, 64
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
06.03.2014, 00:31 | 19 |
еще можно разрулить переменными окружения:
http://software.intel.com/en-us/node/459658 на винде больше 64 не ставится. может больше на каких-нибудь никсах можно будет выставить, но и там наверняка есть предел. если очень очень нужно 100 потоков, то - самодельное решение какое-нибудь. без OpenMP
0
|
06.03.2014, 00:37 | 20 |
У меня MinGW 4.8.2, выдаёт 100..
RayPas, увы, в Visual C++ не работаю, посоветовать пока ничего не могу. Видимо.., там свои ограничения..
0
|
06.03.2014, 00:37 | |
06.03.2014, 00:37 | |
Помогаю со студенческими работами здесь
20
Создание потоков Создание потоков Создание потоков Создание потоков Создание потоков Создание потоков Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |