Производительность выделения памяти в основном зависит от платформы хоста (поскольку модели драйверов различаются) и реализации драйвера.Для больших объемов памяти устройства производительность выделения вряд ли будет варьироваться от одной версии CUDA к другой;для небольших объемов (скажем, менее 128 КБ) изменения политики в субраспределителе драйверов могут повлиять на производительность.
Для закрепленной памяти CUDA 4.0 является особым случаем, поскольку она внесла некоторые важные изменения в политику в системах с поддержкой UVA.Прежде всего, при инициализации драйвер делает огромные резервы виртуальных адресов.Во-вторых, вся закрепленная память является переносимой, поэтому ее необходимо отображать для каждого графического процессора в системе.
Производительность передачи PCI Express в основном является артефактом платформы, и обычно разработчик не может сделать для контроляЭто.(Для небольших CUDA memcpy служебные данные драйвера могут варьироваться от одной версии CUDA к другой.) Одна из проблем заключается в том, что в системах с несколькими концентраторами ввода / вывода нелокальный доступ к DMA проходит по каналу HT / QPI и поэтому намного медленнее.Если вы ориентируетесь на такие системы, используйте API-интерфейсы NUMA для управления распределением памяти (и потоков) на том же процессоре, к которому подключен графический процессор.