stringtranslate.com

Núcleo de cómputo

En informática , un núcleo de cómputo es una rutina compilada para aceleradores de alto rendimiento (como unidades de procesamiento gráfico (GPU), procesadores de señales digitales (DSP) o matrices de puertas programables en campo (FPGA)), separada de un programa principal pero utilizada por él (que normalmente se ejecuta en una unidad de procesamiento central ). A veces se los llama sombreadores de cómputo y comparten unidades de ejecución con sombreadores de vértices y sombreadores de píxeles en GPU, pero no se limitan a la ejecución en una clase de dispositivo o API de gráficos . [1] [2]

Descripción

Los núcleos de cómputo corresponden aproximadamente a bucles internos cuando se implementan algoritmos en lenguajes tradicionales (excepto que no hay ninguna operación secuencial implícita) o al código que se pasa a iteradores internos .

Pueden especificarse mediante un lenguaje de programación independiente , como " OpenCL C " (administrado por la API de OpenCL ), como " shaders de cómputo " escritos en un lenguaje de sombreado (administrado por una API de gráficos como OpenGL ), o integrarse directamente en el código de la aplicación escrito en un lenguaje de alto nivel , como en el caso de C++AMP .

Procesamiento de vectores

Este paradigma de programación se adapta bien a los procesadores vectoriales : se supone que cada invocación de un núcleo dentro de un lote es independiente, lo que permite la ejecución de datos en paralelo . Sin embargo, a veces se pueden utilizar operaciones atómicas para la sincronización entre elementos (para trabajo interdependiente), en algunos escenarios. A las invocaciones individuales se les asignan índices (en una o más dimensiones) a partir de los cuales se puede realizar un direccionamiento arbitrario de los datos del búfer (incluidas las operaciones de dispersión y recopilación ), siempre que se respete el supuesto de no superposición.

API de Vulkan

La API de Vulkan proporciona la representación intermedia SPIR-V para describir tanto los sombreadores gráficos como los núcleos de cómputo de una manera independiente del lenguaje y de la máquina . La intención es facilitar la evolución del lenguaje y proporcionar una capacidad más natural para aprovechar las capacidades de cómputo de la GPU, en línea con los desarrollos de hardware como la arquitectura de memoria unificada y la arquitectura de sistemas heterogéneos . Esto permite una cooperación más estrecha entre una CPU y una GPU.

Véase también

Referencias

  1. ^ Introducción a la programación informática en Metal, 14 de octubre de 2014
  2. ^ Tutorial de CUDA - El núcleo, 11 de julio de 2009