OpenMP параллельно отнимает еще больше времени?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 OpenMP параллельно отнимает еще больше времени?

Сообщение Anonymous »

Я пытаюсь распараллелить алгоритм Нидлмана-Вунша (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[i - 1][j - 1] + (X[i - 1] == Y[j - 1] ? match_score : mismatch_score);
float del = S[i - 1][j] + gap_penalty;
float insert = S[i][j - 1] + gap_penalty;
S[i][j] = std::max({match, del, insert});
thread_counters[omp_get_thread_num()]++;
}
}
}
}
== Последовательная версия завершилась за 11,9526 секунды. Посещенных записей: 2761492321 Оценка: 18639, Оценка сходства: 40146,
Оценка идентичности: 40146, Пробелы: 6062, Длина (с пробелами): 55591

< blockquote>
== Параллельная версия завершена за 30,5004 секунды. Посещенных записей: 2761492321 Оценка: 18639, Оценка сходства: 40146, Оценка идентичности:
mismatch -1, ignore_penalty: -2 Размер матрицы S: [51481x53641]
  • ОС – Windows 10
  • Процессор – Ryzen 2700
  • Оперативная память — 3000 МГц DDR4
  • Потоков — 12
  • Версия компилятора — g++ 12.2
  • Версия C++ — 20
Вот полный алгоритм на GitHub
https://github.com/Padraig20/Global- Попарное выравнивание последовательностей

Подробнее здесь: https://stackoverflow.com/questions/791 ... n-parallel
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»