Я пытаюсь распараллелить алгоритм Нидлмана-Вунша (NW), но вместо того, чтобы тратить меньше времени, требуется еще больше времени, чтобы вычислить, что я делаю неправильно.
#pragma omp parallel
{
#pragma omp single
{
unsigned int grain_size = (rows + cols) / (4 * omp_get_max_threads());
grain_size = grain_size > 1 ? grain_size : 1; // Ensure at least 1 cell per chunk
int waves = rows + cols - 1;
for (int wave = 0; wave < waves; wave++) {
#pragma omp taskloop grainsize(grain_size)
for (int i = 1; i < rows; i++) {
int j = wave - i;
if (j < 1 || j > cols) continue;
float match = S[j - 1] + (X == Y[j - 1] ? match_score : mismatch_score);
float del = S[j] + gap_penalty;
float insert = S[j - 1] + gap_penalty;
S[j] = std::max({match, del, insert});
thread_counters[omp_get_thread_num()]++;
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... n-parallel
OpenMP параллельно отнимает еще больше времени? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Intel OpenMP и LLVM OpenMP конфликтуют с MacOS без использования conda
Anonymous » » в форуме Python - 0 Ответы
- 86 Просмотры
-
Последнее сообщение Anonymous
-