stringtranslate.com

Núcleo de cómputo

En informática , un núcleo de cálculo es una rutina compilada para aceleradores de alto rendimiento (como unidades de procesamiento de gráficos (GPU), procesadores de señales digitales (DSP) o matrices de puertas programables en campo (FPGA)), separadas de un programa principal pero utilizadas por él ( normalmente se ejecuta en una unidad central de procesamiento ). A veces se les 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 computación corresponden aproximadamente a bucles internos cuando se implementan algoritmos en lenguajes tradicionales (excepto que no hay una operación secuencial implícita), o al código pasado a iteradores internos .

Pueden especificarse mediante un lenguaje de programación independiente , como " OpenCL C " (administrado por la API de OpenCL ), como " sombreadores de cálculo " escritos en un lenguaje de sombreado (administrados por una API de gráficos como OpenGL ), o incrustados directamente en el código de la aplicación. escrito en un lenguaje de alto nivel , como es 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, en algunos escenarios, a veces se pueden utilizar operaciones atómicas para la sincronización entre elementos (para trabajo interdependiente). Las invocaciones individuales reciben índices (en 1 o más dimensiones) a partir de los cuales se puede realizar el direccionamiento arbitrario de datos del buffer (incluidas operaciones de dispersión ), siempre que se respete la suposición de no superposición.

API vulcana

La API de Vulkan proporciona la representación SPIR-V intermedia para describir tanto los sombreadores gráficos como los núcleos de cómputo, de 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 computación de la GPU, en línea con desarrollos de hardware como la arquitectura de memoria unificada y la arquitectura de sistema heterogéneo . Esto permite una cooperación más estrecha entre una CPU y una GPU.

Ver también

Referencias

  1. ^ Introducción a la programación informática en metal, 14 de octubre de 2014
  2. ^ Tutorial CUDA: el kernel, 11 de julio de 2009