¿Las NIC tienen una mayor cantidad de motores DMA que las GPU?

La razón está más matizada que simplemente que las GPU tienen menos motores DMA.

Los motores DMA pueden ser bastante complejos, y algunas implementaciones en realidad pueden procesar múltiples operaciones de copia simultáneamente (ya sea cambiando entre copias en una granularidad fina, o simplemente emitiendo solicitudes de memoria simultáneamente). Entonces, el hecho de que un procesador solo tenga un motor DMA no significa que solo pueda procesar una operación de copia a la vez.

Las tarjetas de red admiten múltiples colas concurrentes porque el rendimiento y los requisitos funcionales de las aplicaciones de paso de mensajes las exigen. Más allá de simplemente reducir la latencia, se requiere procesar mensajes simultáneamente para evitar condiciones de punto muerto en algunos protocolos de enrutamiento.

Las copias de memoria en los modelos de programación de GPU no tienen tales requisitos. El objetivo de rendimiento suele ser maximizar el ancho de banda a través de la interconexión, lo que generalmente implica accesos de memoria secuenciales a granel. Este es exactamente el comportamiento que se obtiene al procesar copias de una en una. Los modelos de programación de GPU tampoco ofrecen garantías funcionales de concurrencia a las copias de memoria.

Vale la pena señalar que estas compensaciones de diseño pueden estar cambiando a medida que se desarrollan nuevas aplicaciones que realizan una comunicación más delicada y sensible a la latencia con hilos de GPU.