Я пытаюсь ускорить свои вычисления с помощью OpenMP, но не уверен, будет ли распараллеливание работать с ветвлением.
Вот код (удален ненужный фрагмент):
if (flag) {
int val;
for (int i = 0; i < size; i ++) {
val = 2 + recursion(i, flag = 0));
}
return val;
} else {
int val;
for (int i = 0; i < size; i ++) {
val = 1 + recursion(i, flag = 1);
}
return val;
}
Я пытаюсь ускорить свои вычисления с помощью OpenMP, но не уверен, будет ли распараллеливание работать с ветвлением. Вот код (удален ненужный фрагмент): [code] if (flag) { int val; for (int i = 0; i < size; i ++) { val = 2 + recursion(i, flag = 0)); } return val; } else { int val; for (int i = 0; i < size; i ++) { val = 1 + recursion(i, flag = 1); } return val; } [/code] Я не знаю, как распараллелить эту функцию.
Я скомпилировал с помощью VSCode G++ -fopenmp в Windows. В настоящее время я пытаюсь доказать, что параллельная быстрая сортировка действительно быстрее, чем последовательная быстрая сортировка, но безуспешно. Я изменил количество потоков на 2...
Я скомпилировал с помощью VSCode G++ -fopenmp в Windows. В настоящее время я пытаюсь доказать, что параллельная быстрая сортировка действительно быстрее, чем последовательная быстрая сортировка, но безуспешно. Я изменил количество потоков на 2...
РЕДАКТИРОВАТЬ: В качестве примера я взял случай «if/else», который иногда можно разрешить во время компиляции (например, когда задействованы статические значения, см. ). Адаптация приведенных ниже ответов к другим типам статического ветвления...
Found Intel OpenMP ('libiomp') and LLVM OpenMP ('libomp') loaded at the same time. Both libraries are known to be incompatible and this can cause random crashes or deadlocks on Linux when loaded in the same...
Я работаю над двумя проектами cmake.
Проект A создает общую библиотеку, зависящую от OpenMP.
find_package(OpenMP REQUIRED)
add_library(lib_a SHARED file_a.cpp)
target_link_libraries(lib_a OpenMP::OpenMP_CXX)