Как разработчик доказательства Кукушка цикла работы, я пытаюсь определить максимальное количество потоков, которые могут эффективно работать вместе на одном экземпляре проблемы.
По величине машины у меня есть доступ к имеет 32 резьбу (8 двойное ядро hyperthreaded) которые дают ускорение 16,7 над однопоточными прогонами. Мне очень интересно знать, сколько потоков требуется, чтобы насытить память ввода-вывода, так что дополнительные потоки не приносят никакой пользы.
Makefile, при условии, на https://github.com/tromp/cuckoo содержит базовый тест -го ускорения
сделать speedup.25
что только идет до 8 потоков, используя экземпляры 128 МБ (размер 25).
Если у кого есть доступ к машине Linux с более чем 32 потоками, могли бы вы выполнить изменение этого теста с экземплярами размера 28 (с использованием 1 Гб) и столько потоков, сколько поддерживает вашу систему, и разместить резюме ваших результатов?
Например, если ваша система поддерживает до 60 потоков, и вы хотите только попробовать подмножество числа потоков, вы могли бы сделать
для г в 1 2 8 16 32 48 52 56 60; делать эхо $ I; куб.см -o cuckoo.spd -DNTHREADS = $ я -DSIZEMULT = 1 -DSIZESHIFT = 28 cuckoo.c -O3 -std = C99 -Wall -Wno-осуждается-декларация -pthread -l криптографии; время для J в {0..9}; делать ./cuckoo.spd $ J; сделанный; сделанный
Каждый однопотоковый прогон в размере 28 занимает около полуминуты, так что весь тест выше следует принимать за 15 минут.
Любая помощь приветствуется!