Varias demostraciones de CUDA en CUDA SDK se refieren a "escritura dispersa". ¿Qué es esta escritura dispersa y por qué es tan genial? En contraste con lo que es?CUDA: ¿Qué es escritura dispersa?
Respuesta
Voy a usar la terminología de CUDA aquí.
scattered write
significa que usted está escribiendo el uno del hilo de CUDA a una dirección arbitraria (es decir. Los hilos de urdimbre su no escribirán en la memoria consecutiva, por ejemplo). Contrasta con las escrituras frame-buffer, que son coherentes en 2d, y pueden ser fusionadas por el hardware. Esas fueron las únicas escrituras disponibles para GPU hasta hace no mucho.
Ellos son la operación inversa de un gather read
, que lee los datos de ubicación dispersa, y reúne todos ellos antes de la urdimbre de hilos de ejecución de un modo SIMD en los datos recopilados. Sin embargo, las lecturas de recopilación han estado disponibles durante mucho tiempo en GPU a través de búsquedas arbitrarias de texturas.
La escritura dispersa es excelente porque le permite escribir en cualquier dirección de memoria. Las impedancias de sombreado anteriores generalmente estaban limitadas en las direcciones de memoria en las que un programa de sombreador podría escribir.
"Considerando que los programas de fragmentos de API de gráficos se limitan a dar salida a 32 flotadores (RGBA * 8 objetivos de renderización) en un lugar previamente especificado, CUDA soporta las escrituras dispersas -., Es decir, un número ilimitado de tiendas a cualquier dirección Esto permite que muchos de los nuevos algoritmos que no eran posibles usando gráficos API para realizar de manera eficiente usando CUDA"
Desde el FAQ CUDA:
Básicamente se hace programas CUDA más fácil de escribir porque no son tan limitados por donde puede escribir resultados Tenga en cuenta que una de las claves para obtener un buen rendimiento en una GPU es explotar la localidad de memoria. El uso excesivo de escrituras dispersas escribiendo en la memoria global probablemente afecte su rendimiento.
- 1. Operaciones de matriz dispersa en CUDA
- 2. ¿Qué es la escritura dependiente?
- 3. Reducción de suma con CUDA: ¿Qué es N?
- 4. ¿Qué es un conflicto bancario? (Haciendo programación de Cuda/OpenCL)
- 5. matriz triangular dispersa Scipy?
- 6. OpenCL o CUDA ¿Qué camino tomar?
- 7. ¿CUDA es compatible con la recursión?
- 8. ¿Es posible ejecutar CUDA en GPU AMD?
- 9. Aplicar PCA en matriz dispersa muy grande
- 10. Cómo transformar numpy.matrix o una matriz en una matriz dispersa dispersa
- 11. Propiedades de escritura, ¿cuál es el punto?
- 12. CUDA __threadfence()
- 13. versión del controlador CUDA es insuficiente para la versión de tiempo de ejecución CUDA
- 14. Crear una matriz diagonal dispersa a partir de la fila de una matriz dispersa
- 15. ¿Qué sistema de escritura usa BASIC?
- 16. raytracing con CUDA
- 17. Parámetros para núcleos CUDA
- 18. Multiplicación escasa matriz-vector en CUDA
- 19. SVD para matriz dispersa en R
- 20. Javascript iteración a través de matriz dispersa
- 21. Cargar matriz dispersa desde el archivo npy
- 22. Soporte de matriz dispersa en HDF5
- 23. ¿Cómo se mapean/deforman/hilos CUDA en núcleos CUDA?
- 24. Cómo hacer una matriz dispersa en Cocoa
- 25. ¿Por qué molestarse en saber sobre CUDA Warps?
- 26. ¿Cómo es CUDA? ¿Para qué sirve? ¿Cuales son los beneficios? ¿Y cómo comenzar?
- 27. Significado de ancho de banda en CUDA y por qué es importante
- 28. ¿Por qué el tamaño de memoria constante es limitado en CUDA?
- 29. csv a matriz dispersa en python
- 30. Volcar una matriz dispersa en un archivo
que todavía está presente en la "memoria del dispositivo", ¿verdad? (a diferencia de las operaciones de dispersión/recopilación de E/S que permitirían que un motor DMA dirija el contenido desde la ubicación de la memoria principal diferente a, por ejemplo, una sola banda de E/S) – PypeBros
Correcto. Esto se refiere a la memoria en la GPU, no en la memoria global. –