
У меня есть простое ядро CUDA (сложение двух векторов размера N), очень похожее нав этот блог cuda здесь. Я только изменил несколько вещей, например, запустил измерение на разных образцах. Итак, пусть это запустится, скажем, 1000 раз и запишет это измерение в txt после этого. Если я сейчас построю график измерений для передачи вектора на устройство, я получу следующее:
Теперь, если мы посмотрим на stddev, нарисованный в виде вертикальных полос погрешности, то должно быть ясно, что по какой-то причине колебания движения данных масштабируются с размером, потому что полосы погрешности являются своего рода константой на логарифмическом графике. Это можно проверить, когда наносится только stddev
Если я возьму ту же самую программу изблог cuda, то я получаю для каждого 10-го запуска или около того также колебания пропускной способности. Откуда это берется? Я наблюдал одинаковое поведение на двух разных GPU, V100 и RTX2080. Извините за неудобства с изображениями, но у меня недостаточно очков репутации.
решение1
какПользователь форума разработчиков nvidia предложилЯ попробовал закреплённую память вместо не закреплённой, и это сработало довольно хорошо. Колебания почти полностью исчезли.