В чем причина странного эксперимента? - PullRequest
0 голосов
/ 25 января 2019

У меня проблема с экспериментом на моем компьютере.Я сделал 300 тестов параллельного алгоритма (32 потока) и увидел, что время выполнения тестов примерно на 10% меньше, чем у других.Это выглядит так: у нас есть 100 тестов с продолжительностью выполнения около 100 мс, затем у нас есть 30 тестов с продолжительностью ~ 80 мс и снова 170 тестов с продолжительностью ~ 100 мс.Это происходит каждый эксперимент.Я использовал OpenMP, TBB, PTHREAD, std :: Thread, и это происходит с каждой параллельной технологией.В чем причина этого?

Процессор: Intel® Core ™ i7 Kaby Lake H 2800 - 3800 МГц Ядра: 4 Темы: 8

Кроме того, я провел тесты на другом компьютере (Intel® Core ™ m3-6Y30), но с истечением срока годности таких проблем нет.

Я не могу показать сюжет моего эксперимента (недостаточно репутации), но есть часть его в текстовом формате:

841618
846348
859046
847833
841801
847680
849084
... (about 115 tests with avg ~840000-860000 ms)
784754
784754
759525
... (about 40 tests with avg ~750000-790000 ms)
855215
846631
850249
847015
...(about 120 tests with avg ~840000-860000 ms)
778716
765774
...(about 30 tests with avg ~750000-780000 ms)

и т. Д.

Также язаписали параметры компьютера, такие как температура процессора и мощность, и увидели то же самое.Поэтому я не знаю, почему параметры так себя вели.Вот код, где я измерил время эксперимента (использовал std :: chrono):

std::chrono::time_point<std::chrono::high_resolution_clock> start, end; 
std::size_t total; 
start = std::chrono::high_resolution_clock::now(); 
std::complex<double> * X = DirectTransform(compl_val); 
end = std::chrono::high_resolution_clock::now(); 
total = std::chrono::duration_cast<std::chrono::microseconds>(end - start).count();

Сценарий компиляции прямо здесь:

g++ ./fourier/main.cpp -o ./build/fourier.out 
g++ -pthread ./fourier-h/main.cpp -o ./build/fourier-std.out 
g++ -fopenmp ./fourier-omp/main.cpp -o ./build/fourier-omp.out 
g++ -ltbb ./fourier-tbb/main.cpp -o ./build/fourier-tbb.out 
g++ -pthread ./fourier-pth/main.cpp -o ./build/fourier-pth.out 

Обзор оборудования:

  • Название модели: MacBook Pro
  • Идентификатор модели: MacBookPro14,3
  • Название процессора: Intel Core i7
  • Скорость процессора: 2,8 ГГц
  • Количество процессоров: 1
  • Общее количество ядер: 4
  • Кэш L2 (на ядро): 256 КБ
  • Кэш L3: 6 МБ
  • Память: 16 ГБ
  • Версия загрузочного ПЗУ: 185.0.0.0.0
  • Версия SMC (система): 2.45f0
...