Close to Metal
# Close to Metal

Close to Metal (literalmente, Cerca del Metal) es una biblioteca creada por Advanced Micro Devices para la programación de propósito general en sus unidades de procesamiento gráfico, es decir, el uso de GPGPU posible gracias al paso de las arquitecturas de shading unificadas.

En el año 2006 AMD presentó esta biblioteca para competir con el CUDA de NVIDIA y así entrar en el mundo de la computación con tarjetas gráficas. CTM (Close to Metal) era una fina capa de abstracción que permitía a los desarrolladores acceder directamente al juego de instrucciones de sus GPUs y su sistema de memoria.

Sin embargo, debido al poco éxito que tuvo, en el 2008 se decidió terminar con su desarrollo y pasar a utilizar OpenCL.

Antes de terminar con CTM y pasarse completamente a OpenCL, ATI también creó Brook+, una versión optimizada de BrookGPU para el hardware de ATI. Todos ellos siguen estando incluidos en el kit de desarrollo de software Stream SDK de ATI que a día de hoy se llama AMD Accelerated Parallel Processing SDK (abreviado, AMD APP SDK), pero como ya se ha dicho, en desarrollo activo solo está el soporte para OpenCL.

## Descripción básica

Distribuido como entorno de desarrollo llamado ATI Stream SDK, (después AMD APP), era una aproximación de abajo arriba. Daba a los desarrolladores acceso a bajo nivel (ensamblador) a la GPU para quien lo quisiera. Además daba implementaciones a alto nivel para quien no quería acceso a bajo nivel y los desarrolladores eran libres de implementar sus propios lenguajes y entornos.

La API de Close to Metal cuando se permitió acceso al público en 2007 pasó a llamarse CAL (Compute Abstraction Layer, capa de abstracción de computación), manteniendo la misma filosofía que las bibliotecas CTM originales. El CAL se distribuía (y se sigue haciendo) junto con el actual AMD APP.

La CTM API (o CAL) exponía ciertas partes hardware de los procesadores de gráficos: el procesador de comandos, el núcleo de shaders y el controlador de memoria escondiendo el resto de propiedades gráficas (recordemos que CTM trata de computación, no de gráficos), proporcionando comunicación directa con la GPU, salteando las librerías gráficas y las limitaciones que estas imponían para la computación. Todo ello independiente de la GPU. CAL funcionaba entonces sobre la HAL (Hardware Abstraction Layer, capa de abstracción hardware), que es específica para cada GPU y necesaria para que cualquier programa CAL pudiera funcionar sobre cualquier tarjeta gráfica de ATI compatible con Stream SDK.

