La arquitectura de sistema heterogéneo ( HSA ) es un conjunto de especificaciones de varios proveedores que permite la integración de unidades de procesamiento central y procesadores gráficos en el mismo bus, con memoria y tareas compartidas . [1] La HSA está siendo desarrollada por la Fundación HSA , que incluye (entre muchas otras) AMD y ARM . El objetivo declarado de la plataforma es reducir la latencia de comunicación entre CPU, GPU y otros dispositivos informáticos , y hacer que estos diversos dispositivos sean más compatibles desde la perspectiva del programador, [2] : 3[3] aliviando al programador de la tarea de planificar el movimiento de datos entre las memorias separadas de los dispositivos (como se debe hacer actualmente con OpenCL o CUDA ). [4]
CUDA y OpenCL, así como la mayoría de los otros lenguajes de programación bastante avanzados, pueden usar HSA para aumentar su rendimiento de ejecución. [5] La computación heterogénea se usa ampliamente en dispositivos de sistema en chip como tabletas , teléfonos inteligentes , otros dispositivos móviles y consolas de videojuegos . [6] HSA permite que los programas utilicen el procesador de gráficos para cálculos de punto flotante sin memoria separada o programación. [7]
Razón fundamental
La razón fundamental detrás de HSA es aliviar la carga de los programadores al descargar cálculos a la GPU. Originalmente impulsada únicamente por AMD y llamada FSA, la idea se extendió para abarcar unidades de procesamiento distintas de las GPU, como también los DSP de otros fabricantes .
Pasos realizados al descargar cálculos a la GPU en un sistema que no es HSA
Pasos realizados al descargar cálculos a la GPU en un sistema HSA, utilizando la funcionalidad HSA
Las GPU modernas están muy bien adaptadas para realizar una sola instrucción, varios datos (SIMD) y una sola instrucción, múltiples subprocesos (SIMT), mientras que las CPU modernas todavía se están optimizando para la ramificación. etc.
Descripción general
Introducido originalmente por sistemas integrados como Cell Broadband Engine , compartir la memoria del sistema directamente entre múltiples actores del sistema hace que la computación heterogénea sea más común. La computación heterogénea en sí misma se refiere a sistemas que contienen múltiples unidades de procesamiento: unidades de procesamiento central (CPU), unidades de procesamiento de gráficos (GPU), procesadores de señales digitales (DSP) o cualquier tipo de circuitos integrados específicos de aplicación (ASIC). La arquitectura del sistema permite que cualquier acelerador, por ejemplo, un procesador de gráficos , funcione al mismo nivel de procesamiento que la CPU del sistema.
Entre sus características principales, HSA define un espacio de direcciones virtual unificado para dispositivos informáticos: donde las GPU tradicionalmente tienen su propia memoria, separada de la memoria principal (CPU), HSA requiere que estos dispositivos compartan tablas de páginas para que los dispositivos puedan intercambiar datos compartiendo punteros. . Esto debe ser compatible con unidades de administración de memoria personalizadas . [2] : 6–7 Para hacer posible la interoperabilidad y también para facilitar varios aspectos de la programación, HSA está diseñado para ser compatible con ISA tanto para CPU como para aceleradores, y para admitir lenguajes de programación de alto nivel.
Hasta ahora, las especificaciones de la HSA cubren:
Capa intermedia de HSA
Capa intermedia HSA (HSAIL), un conjunto de instrucciones virtuales para programas paralelos
- similar [ según quién? ] a LLVM Intermediate Representation y SPIR (utilizado por OpenCL y Vulkan )
- finalizado a una instrucción específica establecida por un compilador JIT
- tomar decisiones tardías sobre qué núcleo (s) debe ejecutar una tarea
- explícitamente paralelo
- admite excepciones, funciones virtuales y otras características de alto nivel
- soporte de depuración
Modelo de memoria HSA
- compatible con los modelos de memoria C ++ 11 , OpenCL, Java y .NET
- consistencia relajada
- diseñado para admitir lenguajes administrados (por ejemplo, Java) y lenguajes no administrados (por ejemplo, C )
- hará que sea mucho más fácil desarrollar compiladores de terceros para una amplia gama de productos heterogéneos programados en Fortran , C ++, C ++ AMP , Java, et al.
Despachador y tiempo de ejecución de HSA
- diseñado para permitir la cola de tareas heterogéneas: una cola de trabajo por núcleo, distribución del trabajo en colas, equilibrio de carga mediante robo de trabajo
- cualquier núcleo puede programar el trabajo para cualquier otro, incluido él mismo
- reducción significativa de la sobrecarga de trabajo de programación para un núcleo
Los dispositivos móviles son una de las áreas de aplicación de la HSA, en la que produce una mayor eficiencia energética. [6]
Diagramas de bloques
Las ilustraciones a continuación comparan la coordinación CPU-GPU bajo HSA versus bajo arquitecturas tradicionales.
Arquitectura estándar con una GPU discreta conectada al bus PCI Express . La copia cero entre la GPU y la CPU no es posible debido a las distintas memorias físicas.
HSA ofrece memoria virtual unificada y facilita el paso de punteros a través de PCI Express en lugar de copiar todos los datos.
En la memoria principal particionada, una parte de la memoria del sistema se asigna exclusivamente a la GPU. Como resultado, la operación de copia cero no es posible.
Memoria principal unificada, donde la GPU y la CPU están habilitadas para HSA. Esto hace posible la operación de copia cero. [8]
La MMU de la CPU y la IOMMU de la GPU deben cumplir con las especificaciones de hardware de la HSA.
Soporte de software
Algunas de las características específicas de HSA implementadas en el hardware deben ser compatibles con el kernel del sistema operativo y los controladores de dispositivos específicos. Por ejemplo, la compatibilidad con las tarjetas gráficas AMD Radeon y AMD FirePro , y las APU basadas en Graphics Core Next (GCN), se fusionó en la versión 3.19 de la línea principal del kernel de Linux , lanzada el 8 de febrero de 2015. [10] Los programas no interactúan directamente con amdkfd , pero colocan sus trabajos en cola utilizando el tiempo de ejecución de HSA. [11] Esta primera implementación, conocida como amdkfd , se centra en las APU "Kaveri" o "Berlín" y funciona junto con el controlador de gráficos del kernel Radeon existente.
Adicionalmente, amdkfd admite colas heterogéneas (HQ), cuyo objetivo es simplificar la distribución de trabajos computacionales entre múltiples CPU y GPU desde la perspectiva del programador. La compatibilidad con la gestión de memoria heterogénea ( HMM ), adecuada solo para hardware de gráficos con la versión 2 de IOMMU de AMD , se aceptó en la versión 4.14 de la línea principal del kernel de Linux. [12]
Se ha anunciado el soporte integrado para plataformas HSA para el lanzamiento "Sumatra" de OpenJDK , previsto para 2015. [13]
AMD APP SDK es el kit de desarrollo de software patentado de AMD destinado a la computación paralela, disponible para Microsoft Windows y Linux. Bolt es una biblioteca de plantillas C ++ optimizada para computación heterogénea. [14]
GPUOpen comprende un par de otras herramientas de software relacionadas con HSA. CodeXL versión 2.0 incluye un generador de perfiles HSA. [15]
Soporte de hardware
AMD
A febrero de 2015[actualizar], Solamente de la serie A de AMD "Kaveri" APU (cf. procesadores "Kaveri" de escritorio y "Kaveri" procesadores móviles ) y de Sony PlayStation 4 permitieron la GPU integrada a la memoria de acceso a través de la versión 2 de IOMMU de la AMD. Las APU anteriores (Trinity y Richland) incluían la funcionalidad IOMMU de la versión 2, pero solo para su uso por una GPU externa conectada a través de PCI Express. [ cita requerida ]
Las APU Carrizo y Bristol Ridge posteriores a 2015 también incluyen la funcionalidad IOMMU versión 2 para la GPU integrada. [ cita requerida ]
La siguiente tabla muestra las características de las APU de AMD (consulte también: Lista de unidades de procesamiento acelerado de AMD ).
Nombre clave | Servidor | Básico | Toronto | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Micro | Kioto | |||||||||||||||||||
Escritorio | Actuación | Renoir | Cezanne | |||||||||||||||||
Convencional | Llano | Trinidad | Richland | Kaveri | Actualización de Kaveri (Godavari) | Carrizo | Bristol Ridge | Cuervo Ridge | Picasso | |||||||||||
Entrada | ||||||||||||||||||||
Básico | Kabini | |||||||||||||||||||
Móvil | Actuación | Renoir | Cezanne | |||||||||||||||||
Convencional | Llano | Trinidad | Richland | Kaveri | Carrizo | Bristol Ridge | Cuervo Ridge | Picasso | ||||||||||||
Entrada | Dalí | |||||||||||||||||||
Básico | Desna, Ontario, Zacate | Kabini, Temash | Beema, Mullins | Carrizo-L | Stoney Ridge | |||||||||||||||
Incorporado | Trinidad | Águila calva | Halcón Merlín , Halcón Marrón | Gran búho cornado | Halcón gris | Ontario, Zacate | Kabini | Águila de estepa , águila coronada , familia LX | Halcón de la pradera | Cernícalo con bandas | ||||||||||
Plataforma | Potencia alta, estándar y baja | Potencia baja y ultrabaja | ||||||||||||||||||
Liberado | Ago. De 2011 | Octubre de 2012 | Junio de 2013 | Ene. De 2014 | 2015 | Junio de 2015 | Junio de 2016 | Oct. De 2017 | Ene. De 2019 | Mar. De 2020 | Enero de 2021 (móvil); Abril de 2021 (escritorio) [1] | Ene. De 2011 | Mayo 2013 | Abr. De 2014 | Mayo de 2015 | Febrero de 2016 | Abr. De 2019 | |||
Microarquitectura de CPU | K10 | Piledriver | Aplanadora | Excavador | " Excavadora + " [16] | zen | Zen + | Zen 2 | Zen 3 | Gato montés | Jaguar | Puma | Puma + [17] | " Excavadora + " | zen | |||||
ES UN | x86-64 | x86-64 | ||||||||||||||||||
Enchufe | Escritorio | Gama alta | N / A | N / A | ||||||||||||||||
Convencional | N / A | AM4 | ||||||||||||||||||
Entrada | FM1 | FM2 | FM2 + [a] | N / A | ||||||||||||||||
Básico | N / A | N / A | AM1 | N / A | ||||||||||||||||
Otro | FS1 | FS1 + , FP2 | FP3 | FP4 | FP5 | FP6 | FT1 | FT3 | FT3b | FP4 | FP5 | |||||||||
Versión PCI Express | 2.0 | 3,0 | 2.0 | 3,0 | ||||||||||||||||
Fabuloso ( nm ) | GF 32SHP ( HKMG SOI ) | GF 28SHP (HKMG a granel) | GF 14LPP ( FinFET a granel) | GF 12LP (FinFET a granel) | TSMC N7 (FinFET a granel) | TSMC N40 (a granel) | TSMC N28 (HKMG a granel) | GF 28SHP (HKMG a granel) | GF 14LPP ( FinFET a granel) | |||||||||||
Área de matriz (mm 2 ) | 228 | 246 | 245 | 245 | 250 | 210 [18] | 156 | 156 | 75 (+ 28 FCH ) | 107 | ? | 125 | 149 | |||||||
TDP mínimo (W) | 35 | 17 | 12 | 10 | 4.5 | 4 | 3,95 | 10 | 6 | |||||||||||
Max APU TDP (W) | 100 | 95 | sesenta y cinco | 18 | 25 | |||||||||||||||
Reloj base de APU de stock máx. (GHz) | 3 | 3.8 | 4.1 | 4.1 | 3,7 | 3.8 | 3.6 | 3,7 | 3.8 | 3.9 | 1,75 | 2.2 | 2 | 2.2 | 3.2 | 3.3 | ||||
Máx. De APU por nodo [b] | 1 | 1 | ||||||||||||||||||
Número máximo de núcleos de CPU [c] por APU | 4 | 8 | 2 | 4 | 2 | |||||||||||||||
Número máximo de subprocesos por núcleo de CPU | 1 | 2 | 1 | 2 | ||||||||||||||||
Estructura entera | 3 + 3 | 2 + 2 | 4 + 2 | 4 + 2 + 1 | 4 + 2 + 1 | 1 + 1 + 1 + 1 | 2 + 2 | 4 + 2 | ||||||||||||
i386, i486, i586, CMOV, NOPL, i686, PAE , NX bit , CMPXCHG16B, AMD-V , RVI , ABM y LAHF / SAHF de 64 bits | ||||||||||||||||||||
IOMMU [d] | N / A | |||||||||||||||||||
BMI1 , AES-NI , CLMUL y F16C | N / A | |||||||||||||||||||
MOVBE | N / A | |||||||||||||||||||
AVIC , BMI2 y RDRAND | N / A | |||||||||||||||||||
ADX , SHA , RDSEED , SMAP , SMEP , XSAVEC, XSAVES, XRSTORS, CLFLUSHOPT y CLZERO | N / A | N / A | ||||||||||||||||||
WBNOINVD, CLWB, RDPID, RDPRU y MCOMMIT | N / A | N / A | ||||||||||||||||||
FPU por núcleo | 1 | 0,5 | 1 | 1 | 0,5 | 1 | ||||||||||||||
Tubos por FPU | 2 | 2 | ||||||||||||||||||
Ancho de la tubería FPU | 128 bits | 256 bits | 80 bits | 128 bits | ||||||||||||||||
Conjunto de instrucciones de CPU Nivel SIMD | SSE4a [e] | AVX | AVX2 | SSSE3 | AVX | AVX2 | ||||||||||||||
3D¡Ahora! | 3DNow! + | N / A | N / A | |||||||||||||||||
PREFETCH / PREFETCHW | ||||||||||||||||||||
FMA4 , LWP, TBM y XOP | N / A | N / A | N / A | N / A | ||||||||||||||||
FMA3 | ||||||||||||||||||||
Caché de datos L1 por núcleo (KiB) | 64 | dieciséis | 32 | 32 | ||||||||||||||||
L1 caché de datos asociatividad (formas) | 2 | 4 | 8 | 8 | ||||||||||||||||
Cachés de instrucción L1 por núcleo | 1 | 0,5 | 1 | 1 | 0,5 | 1 | ||||||||||||||
Caché máximo de instrucciones L1 total de APU (KiB) | 256 | 128 | 192 | 256 | 512 | 64 | 128 | 96 | 128 | |||||||||||
L1 caché de instrucciones asociatividad (formas) | 2 | 3 | 4 | 8 | 2 | 3 | 4 | |||||||||||||
Cachés L2 por núcleo | 1 | 0,5 | 1 | 1 | 0,5 | 1 | ||||||||||||||
Caché L2 total de APU máx. (MiB) | 4 | 2 | 4 | 1 | 2 | 1 | ||||||||||||||
Caché L2 asociatividad (formas) | dieciséis | 8 | dieciséis | 8 | ||||||||||||||||
Caché L3 total de APU (MiB) | N / A | 4 | 8 | N / A | 4 | |||||||||||||||
APU caché L3 asociatividad (formas) | dieciséis | dieciséis | ||||||||||||||||||
Esquema de caché L3 | Víctima | N / A | Víctima | Víctima | ||||||||||||||||
Soporte máximo de DRAM de stock | DDR3-1866 | DDR3-2133 | DDR3-2133 , DDR4-2400 | DDR4-2400 | DDR4-2933 | DDR4-3200 , LPDDR4-4266 | DDR3L-1333 | DDR3L-1600 | DDR3L-1866 | DDR3-1866 , DDR4-2400 | DDR4-2400 | |||||||||
Max DRAM canales por APU | 2 | 1 | 2 | |||||||||||||||||
Ancho de banda máximo de DRAM (GB / s) por APU | 29.866 | 34.132 | 38.400 | 46.932 | 68.256 | ? | 10.666 | 12.800 | 14.933 | 19.200 | 38.400 | |||||||||
Microarquitectura de GPU | TeraScale 2 (VLIW5) | TeraScale 3 (VLIW4) | GCN de segunda generación | GCN de 3.ª generación | GCN 5.ª generación [19] | TeraScale 2 (VLIW5) | GCN de segunda generación | GCN de 3.ª generación [19] | GCN 5.a generación | |||||||||||
Conjunto de instrucciones de GPU | Conjunto de instrucciones TeraScale | Conjunto de instrucciones GCN | Conjunto de instrucciones TeraScale | Conjunto de instrucciones GCN | ||||||||||||||||
Reloj base máximo de la GPU (MHz) | 600 | 800 | 844 | 866 | 1108 | 1250 | 1400 | 2100 | 2000 | 538 | 600 | ? | 847 | 900 | 1200 | |||||
GFLOPS base de GPU en stock máx. [F] | 480 | 614,4 | 648,1 | 886,7 | 1134,5 | 1760 | 1971.2 | 2150.4 | ? | 86 | ? | ? | ? | 345,6 | 460,8 | |||||
Motor 3D [g] | Hasta 400: 20: 8 | Hasta 384: 24: 6 | Hasta 512: 32: 8 | Hasta 704: 44: 16 [20] | Hasta 512: 32: 8 | 80: 8: 4 | 128: 8: 4 | Hasta 192:?:? | Hasta 192:?:? | |||||||||||
IOMMUv1 | IOMMUv2 | IOMMUv1 | ? | IOMMUv2 | ||||||||||||||||
Decodificador de video | UVD 3.0 | UVD 4.2 | UVD 6.0 | VCN 1.0 [21] | VCN 2.0 [22] | UVD 3.0 | UVD 4.0 | UVD 4.2 | UVD 6.0 | UVD 6,3 | VCN 1.0 | |||||||||
Codificador de video | N / A | VCE 1.0 | VCE 2.0 | VCE 3.1 | N / A | VCE 2.0 | VCE 3.1 | |||||||||||||
Movimiento fluido AMD | ||||||||||||||||||||
Ahorro de energía de la GPU | PowerPlay | PowerTune | PowerPlay | PowerTune [23] | ||||||||||||||||
TrueAudio | N / A | [24] | N / A | |||||||||||||||||
FreeSync | 1 2 | 1 2 | ||||||||||||||||||
HDCP [h] | ? | 1.4 | 1,4 2,2 | ? | 1.4 | 1,4 2,2 | ||||||||||||||
PlayReady [h] | N / A | 3.0 todavía no | N / A | 3.0 todavía no | ||||||||||||||||
Pantallas compatibles [i] | 2-3 | 2-4 | 3 | 3 (escritorio) 4 (móvil, integrado) | 4 | 2 | 3 | 4 | ||||||||||||
/drm/radeon [j] [26] [27] | N / A | N / A | ||||||||||||||||||
/drm/amdgpu [j] [28] | N / A | [29] | N / A | [29] |
- ^ Para modelos de excavadoras FM2 +: A8-7680, A6-7480 y Athlon X4 845.
- ^ Una PC sería un nodo.
- ^ Una APU combina una CPU y una GPU. Ambos tienen núcleos.
- ^ Requiere soporte de firmware.
- ^ Sin SSE4. Sin SSSE3.
- ^ El rendimiento de precisión simple se calcula a partir de la velocidad del reloj del núcleo base (o impulso) en función de unaoperación FMA .
- ^ Sombreadores unificados : unidades de mapeo de texturas : unidades de salida de renderizado
- ^ a b Para reproducir contenido de video protegido, también se requiere compatibilidad con la tarjeta, el sistema operativo, el controlador y la aplicación. También se necesita una pantalla HDCP compatible para esto. HDCP es obligatorio para la salida de ciertos formatos de audio, lo que impone restricciones adicionales a la configuración multimedia.
- ^ Para alimentar más de dos pantallas, los paneles adicionales deben tenercompatibilidadnativa con DisplayPort . [25] Como alternativa, se pueden emplear adaptadores DisplayPort a DVI / HDMI / VGA activos.
- ^ a b DRM ( Direct Rendering Manager ) es un componente del kernel de Linux. El soporte en esta tabla se refiere a la versión más actual.
BRAZO
La microarquitectura Bifrost de ARM , implementada en Mali-G71, [30] es totalmente compatible con las especificaciones de hardware HSA 1.1. A junio de 2016[actualizar], ARM no ha anunciado el soporte de software que utilizaría esta función de hardware.
Ver también
- Computación de propósito general en unidades de procesamiento de gráficos (GPGPU)
- Acceso a memoria no uniforme (NUMA)
- OpenMP
- Memoria compartida
- Copia cero
Referencias
- ^ Tarun Iyer (30 de abril de 2013). "AMD presenta su tecnología heterogénea de acceso uniforme a la memoria (hUMA)" . Hardware de Tom .
- ^ a b George Kyriazis (30 de agosto de 2012). Arquitectura de sistemas heterogéneos: una revisión técnica (PDF) (Informe). AMD. Archivado desde el original (PDF) el 28 de marzo de 2014 . Consultado el 26 de mayo de 2014 .
- ^ "¿Qué es la arquitectura de sistemas heterogéneos (HSA)?" . AMD. Archivado desde el original el 21 de junio de 2014 . Consultado el 23 de mayo de 2014 .
- ^ Joel Hruska (26 de agosto de 2013). "Configuración de HSAIL: AMD explica el futuro de la cooperación CPU / GPU" . ExtremeTech . Ziff Davis .
- ^ Linaro. "LCE13: Arquitectura de sistema heterogéneo (HSA) en ARM" . slideshare.net .
- ^ a b "Arquitectura de sistemas heterogéneos: propósito y perspectiva" . gpuscience.com . 9 de noviembre de 2012. Archivado desde el original el 1 de febrero de 2014 . Consultado el 24 de mayo de 2014 .
- ^ "Arquitectura de sistema heterogénea: procesamiento de imágenes multinúcleo utilizando una combinación de elementos de CPU y GPU" . Diseño de Computación Integrada . Consultado el 23 de mayo de 2014 .
- ^ "Microarquitectura de Kaveri" . Semi-exacto . 15 de enero de 2014.
- ^ Michael Larabel (21 de julio de 2014). "El controlador AMDKFD sigue evolucionando para HSA de código abierto en Linux" . Phoronix . Consultado el 21 de enero de 2015 .
- ^ a b "Linux kernel 3.19, sección 1.3. Controlador HSA para dispositivos AMD GPU" . kernelnewbies.org . 8 de febrero de 2015 . Consultado el 12 de febrero de 2015 .
- ^ "HSA-Runtime-Reference-Source / README.md en el maestro" . github.com . 14 de noviembre de 2014 . Consultado el 12 de febrero de 2015 .
- ^ "Linux Kernel 4.14 anunciado con cifrado de memoria seguro y más" . 13 de noviembre de 2017.
- ^ Alex Woodie (26 de agosto de 2013). "HSA Foundation tiene como objetivo impulsar la destreza de GPU de Java" . HPCwire .
- ^ "Bolt on github" .
- ^ AMD GPUOpen (19 de abril de 2016). "CodeXL 2.0 incluye perfilador HSA" .
- ^ "AMD anuncia la APU de séptima generación: excavadora mk2 en Bristol Ridge y Stoney Ridge para portátiles" . 31 de mayo de 2016 . Consultado el 3 de enero de 2020 .
- ^ Familia de APU "AMD Mobile" Carrizo "diseñada para brindar un salto significativo en rendimiento y eficiencia energética en 2015" (Comunicado de prensa). 20 de noviembre de 2014 . Consultado el 16 de febrero de 2015 .
- ^ "La Guía de comparación de CPU móviles Rev. 13.0 Página 5: Lista completa de CPU móviles AMD" . TechARP.com . Consultado el 13 de diciembre de 2017 .
- ^ a b "GPU AMD VEGA10 y VEGA11 detectadas en el controlador OpenCL" . VideoCardz.com . Consultado el 6 de junio de 2017 .
- ^ Cutress, Ian (1 de febrero de 2018). "Zen Cores y Vega: Ryzen APU para AM4 - AMD Tech Day en CES: se revela la hoja de ruta 2018, con Ryzen APU, Zen + en 12nm, Vega en 7nm" . Anandtech . Consultado el 7 de febrero de 2018 .
- ^ Larabel, Michael (17 de noviembre de 2017). "El soporte de codificación Radeon VCN aterriza en Mesa 17.4 Git" . Phoronix . Consultado el 20 de noviembre de 2017 .
- ^ Liu, Leo (4 de septiembre de 2020). "Agregar soporte de decodificación Renoir VCN" . Consultado el 11 de septiembre de 2020 .
Tiene el mismo bloque VCN2.x que Navi1x
- ^ Tony Chen; Jason Greaves, "AMD's Graphics Core Next (GCN) Architecture" (PDF) , AMD , consultado el 13 de agosto de 2016
- ^ "Una mirada técnica a la arquitectura Kaveri de AMD" . Semi precisa . Consultado el 6 de julio de 2014 .
- ^ "¿Cómo conecto tres o más monitores a una tarjeta gráfica de las series AMD Radeon ™ HD 5000, HD 6000 y HD 7000?" . AMD . Consultado el 8 de diciembre de 2014 .
- ^ Airlie, David (26 de noviembre de 2009). "DisplayPort compatible con el controlador KMS integrado en el kernel de Linux 2.6.33" . Consultado el 16 de enero de 2016 .
- ^ "Matriz de funciones de Radeon" . freedesktop.org . Consultado el 10 de enero de 2016 .
- ^ Deucher, Alexander (16 de septiembre de 2015). "XDC2015: AMDGPU" (PDF) . Consultado el 16 de enero de 2016 .
- ^ a b Michel Dänzer (17 de noviembre de 2016). "[ANUNCIO] xf86-video-amdgpu 1.2.0" . listas.x.org .
- ^ "Arquitectura GPU ARM Bifrost" . 30 de mayo de 2016.
enlaces externos
- Descripción general de la arquitectura del sistema heterogéneo de HSA en YouTube por Vinod Tipparaju en SC13 en noviembre de 2013
- HSA y el ecosistema de software
- 2012 - HSA por Michael Houston