Я искал способы уменьшить задержку, вызванную передачей данных взад и вперед от CPU и GPU. Когда я впервые начал использовать CUDA, я заметил, что передача данных между процессором и графическим процессором заняла несколько секунд, но мне все равно, потому что это не проблема для небольших программ, которые я пишу. Фактически, латентность, вероятно, не является большой проблемой для подавляющего большинства программ, в которых используются графические процессоры, включая видеоигры, потому что они все еще намного быстрее, чем если бы они работали на процессоре.
Тем не менее, я немного энтузиаст HPC, и меня заинтересовало направление моих исследований, когда я увидел массовое несоответствие между теоретическим пиком Tianhe-I FLOPS и фактической производительностью LINPACK. Это подняло мою озабоченность по поводу того, нахожу ли я правильный путь карьеры.
Использование памяти с фиксированной памятью (блокировкой страницы) с помощью функции cudaHostAlloc() является одним из способов уменьшения латентности (довольно эффективно), но есть ли какие-либо другие методы, о которых я не знаю? И чтобы быть понятным, я говорю об оптимизации кода, а не о самом оборудовании (что касается работы NVIDIA и AMD).
Как побочный вопрос, я знаю, что Dell и HP продают серверы Tesla. Мне интересно, насколько GPU использует приложение базы данных, где вам потребуется постоянное чтение с жесткого диска (HDD или SSD), операция, которую может выполнять только процессор,