Как объяснить изменчивость производительности по шине PCIe?

В моей программе CUDA я вижу большие различия между различными запусками (до 50%) во времени связи, включая время передачи данных от хоста к устройству и от устройства к хосту через PCI Express для закрепленной памяти. Как я могу объяснить эту изменчивость? Это происходит, когда контроллер PCI и контроллер памяти заняты выполнением других передач PCIe? Любое понимание/ссылка приветствуется. Графический процессор — Tesla K20c, хост — AMD Opteron 6168 с 12 ядрами под управлением операционной системы Linux. Версия PCI Express — 2.0.


person Tania    schedule 25.09.2015    source источник
comment
Какую операционную систему вы используете, и ваш графический процессор предназначен для отображения или вычислений?   -  person talonmies    schedule 25.09.2015
comment
Операционная система — Linux, а хост-система — AMD Opteron 6168. Графический процессор — это специализированное вычислительное устройство. Я также обновил пост с этой информацией.   -  person Tania    schedule 25.09.2015
comment
сколько процессоров? только один?   -  person talonmies    schedule 25.09.2015
comment
Один процессор с 12 ядрами...   -  person Tania    schedule 25.09.2015


Ответы (1)


Вы делаете это в системе NUMA, что означает, что каждый из двух дискретных процессоров (у Opteron 6168 есть два 6-ядерных процессора в одном корпусе) на вашем хосте есть собственный контроллер памяти, и может быть разное количество переходов HyperTransport между памятью каждого процессора и контроллером PCI-e, на котором размещено ваше устройство CUDA.

Это означает, что, в зависимости от привязки ЦП, поток, выполняющий ваши тесты пропускной способности, может иметь разную задержку как для памяти хоста, так и для графического процессора. Это объясняет разницу во времени, которую вы видите.

person Community    schedule 25.09.2015
comment
Спасибо за понимание. - person Tania; 25.09.2015
comment
Это объясняет наличие 2-3 различных групп значений времени, которые я вижу для своего набора из 200 значений времени для одной и той же программы. В каждой группе временные значения отличаются менее чем на 1%. Группы, насколько я понимаю, возникают из-за различий в количестве прыжков HyperTransport, которые зависят от того, на каком ядре выполняется хост-код. - person Tania; 25.09.2015
comment
Вы хотели бы изучить возможность использования numactl для установки привязки ЦП и памяти, чтобы производительность приложения была последовательной и максимальной. - person njuffa; 27.09.2015