¿Cuál es la mejor manera de aprender la programación CUDA C para implementar nuevas ideas de aprendizaje profundo?

TL: Dr.: Depende del tipo de operaciones que desee.

Respuesta completa:

Tienes 2 opciones.

1.) Aprenda CUDA desde cero, lo que significa obtener una buena comprensión del modelo de hardware, el modelo del programador y cómo CUDA asigna el modelo del programador al modelo de hardware. Aprender sobre el hardware es importante, porque si bien CUDA hace un trabajo bastante bueno al abstraer muchos de los detalles esenciales de cómo se programan los subprocesos, existen problemas cuando el conocimiento de cómo se ejecutan y se programan los subprocesos podría ser útil. Consulte Qué es la programación de nivel warp (racecheck))

Tenga en cuenta que esto requiere una gran inversión, ya que esencialmente volvería a implementar muchas bibliotecas que son eficientes y han sido probadas en batalla. Sin embargo, ignorar completamente este no es el mejor enfoque, ya que puede ser útil al implementar algunas de las operaciones.

2.) En lugar de volver a implementar todo desde cero, use las bibliotecas aceleradas por GPU. Tienen implementaciones eficientes de fft, gemm y, lo que es más importante, cudnn, que implementa algunas de las operaciones más utilizadas en Deep Learning y sirve como base para construir operaciones avanzadas.

( Importante: si está implementando una operación completamente nueva, digamos una nueva capa, que no se puede implementar en términos de lo que proporciona cudnn, tendrá que escribirla usted mismo ) .

Ahora para los recursos:

1.) Comprar procesadores de procesadores paralelos masivos: un enfoque práctico (aplicaciones de GPU Computing Series) Reserve en línea a precios bajos en India

Un libro bastante decente. Enseña CUDA, OpenCL y OpenACC.

Sin embargo, algunas de las optimizaciones que puede necesitar para hacer que sus operaciones sean eficientes no están presentes en el libro.

2.) Compre la programación de CUDA: una guía del desarrollador para la computación paralela con GPU (aplicaciones de computación Gpu) Reserve en línea a precios bajos en la India

Se enfoca solo en CUDA. Muchos estudios de casos que enseñan algunas de las técnicas que puede utilizar.

También querrás consultar varias presentaciones que la gente de NVIDIA ha publicado en línea. Como ejemplo, vea http: //developer.download.nvidia…. Este es un excelente recurso sobre cómo perfilar su operación y mejorarla iterativamente. Busque tales presentaciones y aprenda de ellas.

Finalmente, recuerda que el perfilador es tu amigo. Úselo para determinar si su operación está ligada a la memoria o calculada para una y avance desde allí.

Buena suerte.

Le recomiendo que utilice un marco que sea lo suficientemente flexible para sus ideas. Por ejemplo, TensorFlow debería poder emitir básicamente cualquier gráfico computacional.

More Interesting

¿Es Cortana de Microsoft una copia flagrante de Siri de Apple?

¿Qué debo hacer para construir una carrera en Machine Learning? ¿Por dónde empiezo y cuáles son mis opciones?

¿Cuáles son algunos ejemplos de aprendizaje automático en operaciones de computación en la nube?

Cómo comenzar a aprender redes neuronales y aprendizaje profundo

¿Cómo debo entrenar mi modelo de tren con un modelo de regresión?

¿La agrupación es indispensable en el aprendizaje profundo?

¿Cuán extendido es el aprendizaje profundo en finanzas?

¿Podemos vender potencia informática a empresas de aprendizaje automático? ¿Cuál es la dificultad de hacer eso?

¿Existe algún proyecto de datos abiertos que utilice el aprendizaje automático y la ciencia de datos para proporcionar información sobre los datos de incidentes de aplicación de la ley disponibles públicamente?

Si hoy existiera una computadora cuántica, ¿qué pasaría con la IA / aprendizaje automático / aprendizaje profundo? ¿En qué se traduciría esto para las empresas / industrias?

¿Qué debo aprender para el aprendizaje automático, C ++ o Python?

¿Cómo funciona la regresión lineal múltiple en variables categóricas?

Cómo usar KNN para datos mixtos (categóricos y numéricos)

¿Qué enfoque debo tomar para manejar los datos de desequilibrio para crear un modelo de aprendizaje automático?

En un juego de billar, ¿puede el mejor robot (diseñado específicamente para esta tarea) derrotar al campeón mundial humano?