A system comprising: a peripheral bus; a central processing unit "CPU" connected to the peripheral bus; a main memory of the CPU; a first peripheral processor connected to the peripheral bus, the first peripheral processor having a first peripheral memory; and a second peripheral processor connected to the peripheral bus, the second peripheral processor having a second peripheral memory, wherein the first peripheral processor is configured to: retrieve, from the main memory of the CPU, one or more physical memory addresses identifying one or more locations on the second peripheral memory of the second peripheral processor; perform a CPU-initiated transfer of data directly between the first peripheral memory of the first peripheral processor and the second peripheral memory of the second peripheral processor via the peripheral bus without storing the data in the main memory of the CPU, the CPU-initiated transfer being performed using the one or more physical memory addresses obtained from the main memory of the CPU; obtain one or more virtual pointers from a second driver of the second peripheral processor; and using a first driver of the first peripheral processor, translate the one or more virtual pointers to obtain the one or more physical memory addresses. a peripheral bus; a central processing unit "CPU" connected to the peripheral bus; a main memory of the CPU; a first peripheral processor connected to the peripheral bus, the first peripheral processor having a first peripheral memory; and a second peripheral processor connected to the peripheral bus, the second peripheral processor having a second peripheral memory, wherein the first peripheral processor is configured to: retrieve, from the main memory of the CPU, one or more physical memory addresses identifying one or more locations on the second peripheral memory of the second peripheral processor; perform a CPU-initiated transfer of data directly between the first peripheral memory of the first peripheral processor and the second peripheral memory of the second peripheral processor via the peripheral bus without storing the data in the main memory of the CPU, the CPU-initiated transfer being performed using the one or more physical memory addresses obtained from the main memory of the CPU; obtain one or more virtual pointers from a second driver of the second peripheral processor; and using a first driver of the first peripheral processor, translate the one or more virtual pointers to obtain the one or more physical memory addresses. retrieve, from the main memory of the CPU, one or more physical memory addresses identifying one or more locations on the second peripheral memory of the second peripheral processor; perform a CPU-initiated transfer of data directly between the first peripheral memory of the first peripheral processor and the second peripheral memory of the second peripheral processor via the peripheral bus without storing the data in the main memory of the CPU, the CPU-initiated transfer being performed using the one or more physical memory addresses obtained from the main memory of the CPU; obtain one or more virtual pointers from a second driver of the second peripheral processor; and using a first driver of the first peripheral processor, translate the one or more virtual pointers to obtain the one or more physical memory addresses.