Hay mucho más en la GPU moderna que gráficos de alta velocidad y alta resolución. Son poderosos motores computacionales, que utilizan sus muchos núcleos para implementar algoritmos de procesamiento paralelo masivo, manejar análisis de big data y problemas computacionales numéricos complejos, o admitir el aprendizaje automático con implementaciones de redes neuronales.

Tareas como estas requerían anteriormente supercomputadoras: hardware personalizado diseñado para procesar grandes cantidades de datos lo más rápido posible. Pero con las GPU en las computadoras de escritorio y portátiles (e incluso en los servidores modernos), podemos adaptar lo que solía requerir millones de dólares en hardware en dispositivos mucho más pequeños y asequibles. Si bien gran parte de la computación basada en GPU se ha centrado en la computación científica en estaciones de trabajo de alta gama, una nueva generación de aplicaciones de escritorio está comenzando a aprovechar la tecnología GPU para agregar nuevas funciones.

VER: Política de eliminación de hardware (Premium de TechRepublic)

Hay muchas buenas razones para mantener localmente la informática de alto rendimiento: para hacer frente a las conexiones de alta latencia a los recursos de la nube; privacidad del usuario; trabajar dentro del marco de las restricciones regulatorias locales, por ejemplo. Dado que el aprendizaje automático es esencial para las tecnologías de asistencia, como el reconocimiento de voz, o ayudar con la búsqueda y administración de documentos, existe una demanda creciente de aplicaciones locales basadas en GPU, que utilizan una combinación de tecnologías. Las API simples como WinML basado en ONNX de Windows facilitan la administración de la inferencia en modelos creados con servicios de capacitación basados ​​en la nube como los de Azure.

Índice
  • Calcular en DirectX
  • Lleve Mesa3D a DirectX
  • Se agregó soporte de GPU a WSL 2
  • OpenCL en WSL
  • Calcular en DirectX

    DirectX de Microsoft ya ha agregado soporte informático con sus funciones DirectML y DirectCompute, así como sus extensiones C++ AMP. Puede usarlos en su código para conectar aplicaciones directamente a las capacidades informáticas de su GPU. Estas son tecnologías de bajo nivel que requieren soporte de hardware específico para funcionar bien, aunque son significativamente más rápidas que usar otras técnicas de programación de Windows.

    DirectX no es el único conjunto de API de GPU con capacidades informáticas, por lo que la compatibilidad de Windows con tecnologías de GPU adicionales es significativa. Las bibliotecas de código abierto de Mesa 3D son una implementación de uso común de las especificaciones principales de OpenGL y OpenCL. Mesa 3D se usa ampliamente, pero hasta hace poco los proveedores de hardware de gráficos tenían que proporcionar controladores DirectX y Mesa 3D, duplicando el trabajo necesario para proporcionar controladores para Windows. Dado que muchas cargas de trabajo informáticas de GPU multiplataforma dependen de OpenCL, la falta de soporte para muchas GPU de menor costo dificultó la migración del código a Windows.

    Lleve Mesa3D a DirectX

    Microsoft anunció recientemente que está trabajando con Collabora para ofrecer una nueva capa 3D de Mesa sobre DirectX 12. Construir sobre capas de traducción existentes es una forma de permitir que los proveedores de hardware enfoquen sus recursos en sus controladores DirectX, sabiendo que los desarrolladores aún pueden usar Mesa. 3D para llamadas OpenCL. La nueva capa le brinda acceso a un compilador OpenCL y un tiempo de ejecución que se conecta directamente a DirectX. El resultado debería ser una velocidad casi nativa, con herramientas familiares que reducen el trabajo necesario para migrar el código a Windows.

    Con la compatibilidad con OpenCL próximamente en todas las GPU de Windows, ¿qué aplicaciones se beneficiarán de estas nuevas funciones? Adobe ha implementado el aprendizaje automático acelerado por GPU en aplicaciones como Photoshop y Lightroom, mientras que Corel ha agregado pinceles impulsados ​​por IA a su Material Painter natural. Al abrir la computación GPU de DirectX a API multiplataforma como Mesa3D, será más fácil que herramientas como esta brinden la misma funcionalidad en PC, Mac y Linux.

    Se agregó soporte de GPU a WSL 2

    No son solo las aplicaciones de Windows las que podrán aprovechar la computación de GPU en Windows 10. Durante la compilación 2020, Microsoft anunció que admitirá la virtualización de GPU en futuras versiones de su Subsistema de Windows para Linux (WSL). Esto garantiza que el código que se ejecuta en WSL 2 podrá aprovechar el hardware de gráficos de su PC, lo que le permitirá usar las GPU en dispositivos modernos como Surface Book 3 con tecnologías como TensorFlow.

    Microsoft proporcionará un nuevo controlador del kernel de Linux que asigna el controlador de pantalla de Windows a un dispositivo Linux, con una conexión directa a la GPU de su PC. Su código de Linux podrá conectarse directamente a los recursos de la GPU, por lo que si Windows no usa la GPU, una aplicación WSL de Linux puede usar cualquier cosa. Es un enfoque que debería funcionar bien en dispositivos como Surface Book 3, con capacidades gráficas integradas y discretas.

    Al hacer que el nuevo controlador de Linux sea compatible con el controlador de Windows, Microsoft puede llevar DirectX 12 a WSL. Tiene acceso a la mayoría de sus funciones además de mostrar píxeles en una pantalla. Esto no debería ser un gran problema, ya que aún podrá usar la GPU de su PC para computar y renderizar sin conexión. Los módulos para implementar las API quedan en código fuente cerrado, por lo que no podrás modificarlos.

    OpenCL en WSL

    Este enfoque permite a Microsoft llevar sus API de DirectML a Linux, con soporte tanto para inferencia como para entrenamiento. Los desarrolladores podrán usar plataformas conocidas de aprendizaje automático de código abierto en WSL para crear, probar y entrenar modelos que luego se pueden exportar usando tecnologías como ONNX para usar en aplicaciones WinML que se ejecutan en Windows. Microsoft lanzará una versión de TensorFlow compatible con DirectML para el entrenamiento de modelos basado en hardware.

    La mayoría de las aplicaciones de Linux no utilizan las API de Microsoft, sino que funcionan con las API estándar abiertas de Khronos Group, y OpenCL proporciona capacidades informáticas de GPU. El soporte de GPU de WSL 2 incluirá una versión de la popular biblioteca Mesa que puede acceder a los nuevos controladores de virtualización de GPU, lo que permite que las llamadas familiares de Mesa a OpenCL se ejecuten en PC con Windows. OpenCL está diseñado para funcionar en diferentes marcas de GPU, por lo que si desea acceder a funciones específicas de Nvidia, debe usar el propio CUDA de Nvidia. Microsoft incluirá compatibilidad con CUDA en WSL, con una versión de libcuda que funciona con los nuevos controladores de GPU.

    AMD presentó recientemente controladores compatibles con la aceleración de GPU WSL, implementando una vista previa actualizada de sus controladores Adrenalin Radeon DirectX 12. A medida que DirectML actualizado agrega soporte para entrenamiento de modelos e inferencia, puede aprovechar las últimas GPU de gama alta para trabajar con marcos familiares de aprendizaje automático en Windows o una distribución de Linux alojada en WSL 2. Puede comenzar a experimentar con él en el último canal de desarrollo (que anteriormente era Fast Ring) Windows 10.

    Unificar el soporte de GPU en Windows tiene mucho sentido. Los proveedores pueden reducir los costos de soporte, mientras que Microsoft finalmente puede ofrecer una solución de GPU multiplataforma que simplifica la transferencia de código desde muchas plataformas diferentes (tanto para productividad como para juegos) a Windows. Con herramientas como TensorFlow disponibles para Windows y la capacidad de entrenar modelos ML en computadoras de escritorio, será interesante ver cómo el aprendizaje automático y la computación de datos paralelos se incorporan a nuestras aplicaciones comerciales cotidianas.