Монте-Карло с OpenMP ⇐ C++
Монте-Карло с OpenMP
Я изучаю OpenMP, и мне нужно внедрить его в симуляцию Монте-Карло для оценки вероятности появления последовательных королей в перетасованной колоде. Однако после того, как я это реализовал, затраченное время все равно не сократилось так сильно, как ожидалось, как показано на рисунке. Мой код OpenMP используется неправильно, особенно 100 000 и 1 000 000 раз? Благодарим всех за помощь и предоставляем код, который поможет.
Исходный код
#include #include #include #include #include #include использование пространства имен std; вектор org_deck = { «АС», «2С», «3С», «4С», «5С», «6С», «7С», «8С», «9С», «10С», «JS», «QS», «КС» ", «AD», «2D», «3D», «4D», «5D», «6D», «7D», «8D», «9D», «10D», «JD», «QD», «KD» ", «АС», «2С», «3С», «4С», «5С», «6С», «7С», «8С», «9С», «10С», «JC», «QC», «КС». ", «АХ», «2Ч», «3Ч», «4Ч», «5Ч», «6Ч», «7Ч», «8Ч», «9Ч», «10Ч», «JH», «QH», «KH» " }; bool KingQueen(const вектор& колода) { int n = палуба.размер(); for (int i = 0; i < n - 1; i++) { if ((палуба[0] == 'K' && колода[i + 1][0] == 'Q') || (палуба[0] == 'Q' && колода[i + 1][0] == 'K')) { вернуть истину; } if (i != n - 2 && ((палуба[0] == 'K' && колода[i + 2][0] == 'Q') || (палуба[0] == 'Q' && колода[i + 2][0] == 'K'))) { вернуть истину; } } вернуть ложь; } //void ProgressBar(двойной прогресс) { // ширина int = 70; // int pos = static_cast(ширина * прогресс); // // cout
Я изучаю OpenMP, и мне нужно внедрить его в симуляцию Монте-Карло для оценки вероятности появления последовательных королей в перетасованной колоде. Однако после того, как я это реализовал, затраченное время все равно не сократилось так сильно, как ожидалось, как показано на рисунке. Мой код OpenMP используется неправильно, особенно 100 000 и 1 000 000 раз? Благодарим всех за помощь и предоставляем код, который поможет.
Исходный код
#include #include #include #include #include #include использование пространства имен std; вектор org_deck = { «АС», «2С», «3С», «4С», «5С», «6С», «7С», «8С», «9С», «10С», «JS», «QS», «КС» ", «AD», «2D», «3D», «4D», «5D», «6D», «7D», «8D», «9D», «10D», «JD», «QD», «KD» ", «АС», «2С», «3С», «4С», «5С», «6С», «7С», «8С», «9С», «10С», «JC», «QC», «КС». ", «АХ», «2Ч», «3Ч», «4Ч», «5Ч», «6Ч», «7Ч», «8Ч», «9Ч», «10Ч», «JH», «QH», «KH» " }; bool KingQueen(const вектор& колода) { int n = палуба.размер(); for (int i = 0; i < n - 1; i++) { if ((палуба[0] == 'K' && колода[i + 1][0] == 'Q') || (палуба[0] == 'Q' && колода[i + 1][0] == 'K')) { вернуть истину; } if (i != n - 2 && ((палуба[0] == 'K' && колода[i + 2][0] == 'Q') || (палуба[0] == 'Q' && колода[i + 2][0] == 'K'))) { вернуть истину; } } вернуть ложь; } //void ProgressBar(двойной прогресс) { // ширина int = 70; // int pos = static_cast(ширина * прогресс); // // cout
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Распараллеливание Numba не повышает производительность при моделировании Монте-Карло?
Anonymous » » в форуме Python - 0 Ответы
- 26 Просмотры
-
Последнее сообщение Anonymous
-