Me gustaría comenzar a decir que no sé nada de la programación de OpenCL/GPU pero soy un programador avanzado de C# (general .Net) sin temor a C++ y me gustaría aprender la programación de OpenCL/GPU. .. mi pregunta es ... ¿por dónde empiezo?!? ¿Qué debo descargar?!? ¿Hay alguna manera de programar OpenCL/GPU en Visual Studio (en C#)!?! hola como ... cosas del mundo ... TKS todoProgramación de OpenCL y GPU Hoja de ruta
Respuesta
El mejor sitio que he encontrado para una clara introducción a cómo la programación de la GPU es diferente de la programación de la CPU es en este sitio:
http://www.macresearch.org/opencl
A pesar de que estos videos se hacen mostrando tarjetas NVIDIA estilo, los importantes conceptos de:
muchos subprocesos que se ejecutan las mismas instrucciones exactas de bloqueo de paso (incluso si algún código está escrito con construcciones if-else), y
acceso a la memoria coalescencia
se aplican por igual a AMD o NVIDIA y son crucial para comenzar a cambiar la forma en que piensas sobre cómo estructurar tu algoritmo para obtener una mejora en el rendimiento de la GPU.
Lo siento, creo que esta pregunta se trata principalmente de comenzar a codificar en lugar de diseñar. La serie MacResearch es genial para comenzar a pensar en términos de GPU pero no es muy informativo para la codificación. También es bastante anticuado ahora. Yo recomendaría la serie, sin embargo. –
http://developer.amd.com/zones/OpenCLZone/pages/default.aspx
Suponiendo que quiere hacer en lugar de OpenCL CUDA entonces esto tiene un montón de tutoriales en vídeo de introducción. Hay un conjunto similar en NVidia, aunque tienen más material basado en CUDA.
Si quieres hacer la programación de GPL, obtener una aplicación de muestra que pueda convertir el código de opencl/cuda en una GPU es la parte más simple. También tiene que aprender el lenguaje opencl/cuda, entonces debe aprender a pensar en algoritmos en paralelo y cómo probar/medir los resultados.
no hay un 'utilizar la GPU' botón pulsador que al instante hace que su código 100 veces más rápido
esperaba una respuesta más directa ... como ..."vaya a esa dirección y descargue eso ... si tiene una tarjeta de video ATI vaya allí ... si tiene un sitio de Geforce en ese sitio" más o menos ... – Leonardo
bien ... ¿por dónde empiezo? ! ¿Qué tengo que hacer con mis programas para que usen el poder de la GPU?!? – Leonardo
En una nota relacionada con lo que deseaba que fuera: en realidad, es probable que Haskell tenga ese botón. Hasta cierto punto, es posible con todos los idiomas, pero con Haskell es más a menudo posible. Y mucho más fácil de desarrollar. (La programación funcional define el comportamiento más estrictamente, ya que define los resultados, no los procedimientos) – Lodewijk
Yo diría que consulte OpenTK y sus enlaces C# para obtener un jumpstart en OpenCL. Mira OpenCL's website para obtener los enlaces estándar C o C++.
Aprendizaje OpenCL, hay varios recursos ... no mucho. Encontré following this útil.
Lo siento por ser 7 años de retraso. Pero aquí es una biblioteca # GPGPU fuente de C abierta a escribir sus propios núcleos OpenCL:
https://github.com/tugrul512bit/Cekirdekler/wiki/Beginning
y un mundo hola como la tradición:
ClNumberCruncher gpus= new ClNumberCruncher(
ClPlatforms.all().devicesAmd().gpus(), @"
__constant char text[12] = {'h','e','l','l','o',' ','w','o','r','l','d',' '};
__kernel void hello(__global char * arr)
{
printf(text);
}
");
gpus.performanceFeed = true;
ClArray<byte> array = new ClArray<byte>(5,1);
array.compute(gpus, 1, "hello", 5, 1);
array.compute(gpus, 1, "hello", 5, 1);
array.compute(gpus, 1, "hello", 5, 1);
Ésta es la salida:
hello world
hello world
hello world
hello worldhello world
Compute-ID: 1 ----- Load Distributions: [40.0%] - [60.0%] -----------------------------------------------------
Device 0(gddr): Oland ||| time: 29.47ms, workitems: 2
Device 1(gddr): gfx804 ||| time: 29.76ms, workitems: 3
-----------------------------------------------------------------------------------------------------------------
hello worldhello world
hello world
hello world
hello world
Compute-ID: 1 ----- Load Distributions: [40.0%] - [60.0%] -----------------------------------------------------
Device 0(gddr): Oland ||| time: 1.64ms, workitems: 2
Device 1(gddr): gfx804 ||| time: 1.33ms, workitems: 3
-----------------------------------------------------------------------------------------------------------------
hello worldhello world
hello world
hello world
hello world
Compute-ID: 1 ----- Load Distributions: [40.0%] - [60.0%] -----------------------------------------------------
Device 0(gddr): Oland ||| time: 1.08ms, workitems: 2
Device 1(gddr): gfx804 ||| time: .87ms, workitems: 3
-----------------------------------------------------------------------------------------------------------------
puede hacer un montón de cosas desde la canalización hasta la programación de grupos de tareas.
jajajaja tks de todos modos! – Leonardo
- 1. Dispositivo de CPU OpenCL vs dispositivo GPU
- 2. Lista de CPU/GPU compatible con OpenCL
- 3. OpenCL: ejecutar múltiples dispositivos CPU/GPU
- 4. Ruta de acceso en Copia cero en OpenCL
- 5. Programación funcional pura para la GPU
- 6. Programación de la GPU de Java
- 7. x86 conjunto de instrucciones hoja de ruta
- 8. PHP 6.0 - ¿Hoja de ruta?
- 9. Programación de GPU en Xbox 360
- 10. Introducción a la programación de GPU
- 11. ¿GLSL utiliza SLI? ¿OpenCL? ¿Qué es mejor, GLSL o OpenCL para múltiples GPU?
- 12. Compartiendo la GPU entre programas compatibles con OpenCL
- 13. OpenCL: instrucción popcnt de 32 bits y 64 bits en la GPU?
- 14. Activando la hoja de ruta de Redmine
- 15. Modo de cálculo exclusivo con OpenCL + NVidia
- 16. Distribución de OpenCL
- 17. Hoja de ruta futura para F #
- 18. biblioteca de matriz opencl
- 19. ¿Cuál es el punto de GLSL cuando hay OpenCL?
- 20. ha podido recuperar la programación de utilización de la GPU
- 21. ¿Qué es un conflicto bancario? (Haciendo programación de Cuda/OpenCL)
- 22. OpenCL vs. DirectCompute?
- 23. ¿Cómo hacer coincidir los dispositivos OpenCL con una GPU específica dado proveedor de PCI, ID de dispositivo y bus en un sistema multi-GPU?
- 24. ¿Cuáles son los lenguajes de programación para GPU
- 25. OpenCL compatible con DSP
- 26. ¿Opencl admite los punteros de función?
- 27. ¿Cómo pruebo OpenCL en la GPU cuando estoy conectado de forma remota en Mac?
- 28. Inversión de matriz en OpenCL
- 29. cuál es la hoja de ruta de Python para evolucionar
- 30. OpenCL FFT en hardware Nvidia y AMD?
¿Tienes una tarjeta ATI o nvidia? –
tengo ambas en este momento ... en 1 pc tengo un ati y en otro tengo una nvidia ... – Leonardo
.Net tiene XNA Framework, que es la creación de juegos xbox. Deberías dejarlo. – Bonshington