Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OpenMP: распараллеливание цикла 
:(
    Опции темы
Juze
Дата 6.6.2019, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 6.6.2019

Репутация: нет
Всего: нет



Здравствуйте, помогите в решении задачи по распараллеливанию цикла 3 способами. С 1-ым я справился, в 3 пробовал через директиву firstprivate но не вышло, а 2й вообще нет идей как сделать. Заранее спасибо.
1) использовать синхронизации типа atomic
2) каждый поток пишет в свою рабочую память, потом результаты складываются
3) прямое умножение делается как обычно , транспонированное умножение - каждый поток пишет только в свою часть выходного вектора, т.е. читает всю матрицу, а обрабатывает те данные, которые попадают в его область записи.

Последовательный код
Код

for (i = 0; i < N; i++)
{
  for (j = RowIndex[i]; j < RowIndex[i + 1]; j++)
  {
    result[i] += val[j] * vector[col[j]];
    if (i != col[j])
    {
      result[col[j]] += val[j] * vector[i];
    }
  }
}


1.
Код

  #pragma omp parallel for private(i, j)
  for (i = 0; i < N; i++)
  {
    for (j = RowIndex[i]; j < RowIndex[i + 1]; j++)
    {
      #pragma omp atomic
      result[i] += val[j] * vector[col[j]];
      if (i != col[j])
      {
        #pragma omp atomic
        result[col[j]] += val[j] * vector[i];
      }
    }
  }

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1081 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.