Почему эта параллель для цикла не дает мне ускорения? - PullRequest
0 голосов
/ 31 мая 2018
  int main()
{
  for (int i = 1; i < 24; i++){
    float total_time = 0;
    for (int j = 0; j < 5; j++){
      omp_set_num_threads(i);
      vector<int> A(100000000,2);
      double start_time = omp_get_wtime();
      #pragma omp parallel for
      for (int i = 0; i < 100000000; i++){
        A[i] *= 2;
      }
      double time = omp_get_wtime() - start_time;
      total_time += time;
    }
    total_time /= 5;
    std::cout << "Number of threads: " << i << " Time(ms): " << total_time * 1000 << std::endl;
  }
  return 0;
}

Приведенный выше код, который просто удваивает записи в векторе целых чисел, был распараллелен путем изменения количества потоков.На моей четырехъядерной машине ускорения не наблюдается.Учитывая простую природу этого цикла, я ожидаю увидеть хоть какое-то ускорение.В чем здесь проблема?Как я могу изменить его, чтобы получить ускорение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...