Pregunta

Estoy intentando optimizar una solicitud en el modelado 3D en tiempo real. La parte de cómputo de la aplicación se ejecuta casi totalmente en la GPU en CUDA. La aplicación requiere la solución de una pequeña (6x6) Doble precisión Simétrico Simétrico Simply System System AX= B 500+ veces por segundo. Actualmente, esto se está realizando con una biblioteca de álgebra lineal basada en CPU eficiente que usa Cholesky, pero requiere la copia de los datos de la CPU - GPU y de vuelta a GPU cientos de veces por segundo y la sobrecarga del kernel se inicia cada vez, etc.

¿Cómo puedo calcular la solución al sistema lineal en la GPU únicamente sin tener que tomar los datos en la CPU en absoluto? He leído un poco sobre la biblioteca de Magma, pero parece usar algoritmos híbridos en lugar de algoritmos de GPU solo.

Estoy preparado para el hecho de que la solución de un sistema lineal individual en la GPU será mucho más lento que con la biblioteca basada en la CPU existente, pero quiero ver si se puede hacer para eliminar el remover el La comunicación de datos entre el host y el dispositivo y la sobrecarga del kernel lanza, etc. cientos de veces por segundo. Si no hay GPU, solo una alternativa similar a Lapack, ¿cómo iría a implementar algo para resolver este caso en particular de 6x6 en la GPU solamente? ¿Se podría hacer sin una inversión enorme de tiempo con bibliotecas de GPU Blas, por ejemplo?

¿Fue útil?

Solución

NVIDIA CÓDIGO PUBLICADO PARA UN SOLUCIENTE DE AX= B DESCRIBIRSE AL SITIO SITIO DEL DESARROLLO REGISTRADO ENTRE EL CAÍDA FALL. Este código funciona para las matrices genéricas, y debe funcionar lo suficientemente bien para sus necesidades, siempre que pueda ampliar las matrices simétricas a las matrices completas (¡que no debe ser un problema para un 6x6). A medida que el código realiza la pivotación, lo que es innecesario para las matrices definitivas positivas, no es óptimo para su caso, pero es posible que pueda modificarlo para sus propósitos, ya que el código está bajo una licencia BSD.

El sitio web de desarrollador estándar de NVIDIA está experimentando algunos problemas en este momento. Aquí es cómo puede descargar el código de solvente por lotes en este momento:

(1) Vaya a http://www.nvidia.com/content /cuda/cuda-toolkit.html

(2) Si tiene una cuenta de NVDeveloper existente (por ejemplo, a través de socios.nvidia.com), haga clic en el enlace Verde "Iniciar sesión en NVDeveloper" en la mitad derecha de la pantalla. De lo contrario, haga clic en "Únase a NVDeveloper" para solicitar una nueva cuenta; Las solicitudes de nuevas cuentas generalmente se aprueban dentro de un día hábil.

(3) Inicie sesión en el mensaje con su dirección de correo electrónico y contraseña

(4) Hay una sección en el lado derecho titulado "Descargas más nuevas". El quinto elemento de la parte superior es "Solucionador de lotes". Haga clic en eso y lo llevará a la página de descarga para el código.

(5) Haga clic en el enlace "Descargar", luego haga clic en "Aceptar" para aceptar los términos de la licencia. Su descarga debe comenzar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top