![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 27.07.2012
Сообщений: 3
|
![]()
Начал учить опен мп протокол.
Как можно найти расстояние между N точек? Как это распараллелить? int main() { for (i=0; i<NP-1; i++ ) for (j=i+1;j<NP;j++) d=distance(x1,y1,x2,y2); } |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 22.05.2012
Сообщений: 352
|
![]()
Так, например:
Код:
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 27.07.2012
Сообщений: 3
|
![]()
спасибо!
можно откаментировать? |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 22.05.2012
Сообщений: 352
|
![]()
У вас два цикла. Верхний (i) автоматом разбивается OMP на кол-во доступных потоков (равен кол-ву ваших cpu cores по дефолту). Внутренний цикл пробегается каждым из потоков. Поэтому делаем переменную j частной для каждого потока, чтобы избежать самой распространенной oшибки паралельного програминга - racing condition между потоками. В k подсчитываем кол-во итераций каждого потока (поэтому k тоже частный per поток). expk (expected k) равен кол-ву дистанций между точками, следовательно это число, которому должнa быть равна сумма всех k из всех потоков - сделано исключительно для проверки правильности работы алгоритма.
#pragma omp atomic необходима для исключения racing condition опять, но уже после выхода из цыкла каждого из потоков. Можно пользовать critical section (#pragma omp critical), но тогда будет куда тормознутее. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Распараллелить выполнение задачи и осуществить синхронизация подзадач по сети. UDP. [C++ Builder] | Radisson | Фриланс | 1 | 12.01.2012 04:51 |
Не получается распараллелить!!! | Unikum1979 | Общие вопросы C/C++ | 1 | 05.11.2011 20:26 |
Как распараллелить потоки | Lindemann66 | Qt и кроссплатформенное программирование С/С++ | 1 | 08.09.2011 13:58 |
"Mail.Ru Агент" что это? и как это? | Nick007 | Софт | 9 | 21.11.2009 10:13 |
Что это такое и как это того... | Alex Cones | Общие вопросы Delphi | 2 | 11.10.2009 12:04 |