2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3
 
 Re: Параллельная программа на OpenMP
Сообщение12.01.2020, 14:36 
Mihaylo
С вашей логикой должно быть очевидно 2n потоков, может быть даже плюс ещё несколько. :facepalm:
Так что да, два потока совершенно не очевидно, photon абсолютно прав (да ещё о многом важном и не упомянул).

 
 
 
 Re: Параллельная программа на OpenMP
Сообщение12.01.2020, 14:57 
Два цикла с сугубо последовательными вычислениями. Последовательные вычисления плохо параллелятся. Требуются какие-то нетривиальные преобразования, чтобы эти циклы эффективно разбить по потокам.

 
 
 
 Re: Параллельная программа на OpenMP
Сообщение12.01.2020, 15:27 
Аватара пользователя
Mihaylo в сообщении #1434707 писал(а):
Последовательные вычисления плохо параллелятся.
Это верно, в частности, параллелить строки типа
Код:
P[i] = c / (-a * P[i - 1] + b);
как это сделано у автора нельзя - результат работы программы станет непредсказуем, но это не значит, что нельзя разбить на отдельные потоки внутренние циклы типа

Используется синтаксис C++
 for (i = n - 2; i >= 1; i--)
{
    C1[i][j] = P[i] * C1[i + 1][j] + Q[i];
}

 
 
 
 Re: Параллельная программа на OpenMP
Сообщение12.01.2020, 15:35 
Да, преобразование только надо сделать. OpenMP сможет сам справиться?

 
 
 
 Re: Параллельная программа на OpenMP
Сообщение12.01.2020, 15:38 
Аватара пользователя
А, я соврал, тут же снова есть зависимость C1[i] от С1[i+1]...

 
 
 
 Re: Параллельная программа на OpenMP
Сообщение12.01.2020, 15:39 
А строки типа P[i] = c / (-a * P[i - 1] + b); параллелятся созданием копии массивов для правой части выражения, можно и лучше даже общей для всех потоков (многопоточный readonly доступ не конфликтует). Копию кстати тоже можно создавать параллельно. ;-)

(Оффтоп)

При дальнейшей оптимизации по памяти и быстродействию дублировать можно только пересекающиеся области массивов в точках разрывов между потоками, но это уже к учебной задаче по OpenMP не относится.

 
 
 [ Сообщений: 36 ]  На страницу Пред.  1, 2, 3


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group