Новости
О Центре
Кластер
Обучение
Основной курс по параллельному программированию
Учебные курсы
Магистратура
Дополнительное образование
Работы студентов
Библиотека
Исследования
Конференции
Полезные ссылки
NVIDIA
Контакты
О сайте
Имя:
Пароль:
запомнить:
Забыли пароль? Регистрация

Параллельная схема

Эффективный способ многопоточной реализации данного алгоритма - это одновременное обновление значений заданной матрицы.

Корректность способа:

A[ i ][ j ]=min(A[ i ][ j ],A[ i ][ k ]+A[ k ][ j ]);

Пусть i=k:

A[ k ][ j ]=min(A[ k ][ j ],A[ k ][ k ]+A[ k ][ j ])

но A[ k ][ k ]=0 значит A[ k ][ j ] не изменится

аналогично доказывается для j=k.

Мы доказали что потоки работающие с разными строками матрицы полностью независимы.

Реализация многопоточного алгоритма.

int **d1,*dco,*dce;

int i,j,k;

#pragma omp parallel private(k,i,j,dce,dco)
  for (k=0;k<size;++k){
   dco=d1[k];
   #pragma omp for
    for (i=0;i<size;++i){
     dce=d1[i];
     for (j=0;j<size;++j)
      if (dce[j]>dce[k]+dco[j])
       dce[j]=dce[k]+dco[j];
    };
  };

Новости

22.10.2012
04.09.2012
05.04.2012
06.03.2012
02.03.2012