Soy principiante en programación paralela. Tengo una consulta que podría parecer tonta, pero no obtuve una respuesta definitiva cuando la busqué en Google.GPU lee desde CPU o CPU escribe en la GPU?
En la computación GPU hay un dispositivo, es decir, la GPU y el host, es decir, la CPU. Escribí un programa hello world simple que asignará algo de memoria en el gpu, pasará dos parámetros (digamos src [] y dest []) al kernel, copiará src string, es decir, Hello world to dest cadena y obtendrá la cadena dest de gpu para el anfitrión.
¿La cadena de caracteres "src" es leída por la GPU o la CPU escribe en la GPU? Además, cuando recuperamos la cadena de la GPU, ¿la GPU está escribiendo en la CPU o leyendo la CPU desde la GPU?
En la transferencia de los datos de ida y vuelta no puede haber cuatro posibilidades 1. CPU a la GPU - CPU escribe a GPU - GPU lee forma CPU 2. GPU para CPU - GPU escribe a la CPU - CPU lee de GPU
¿Puede alguien explicar cuáles de estos son posibles y cuáles no?
Que, a través de varios controladores sincronizados se reduce a DMA (http://en.wikipedia.org/wiki/Direct_memory_access). – Ani
Muchas gracias. Es bueno saber que la GPU también puede iniciar las transacciones. Entonces, ¿hay alguna manera de saber quién inició realmente las transacciones usando cualquiera de las rutinas de la biblioteca en Opencl? o las rutinas con las que puedo obligar a la CPU o a la GPU a realizar la transacción ...? – Nike
No conozco OpenCL tan bien como debería; Dicho esto, me sorprendería si CUDA no le proporcionara * alguna * forma de verificar dónde vivía una variable en el espacio de direcciones virtuales unificadas. Ese tipo de información podría ser útil, incluso fuera del caso de uso de las transferencias administradas explícitamente (que las versiones más nuevas aún deberían admitir). – Patrick87