Memoria de gran ancho de banda (HBM): ¿cómo beneficiará a las aplicaciones?

Objetivo

El primer paso hacia la conveniencia de usar la MCDRAM o la memoria de gran ancho de banda (High Bandwidth Memory, HBM) es evaluar el uso de ancho de banda de memoria de la aplicación.

En este artículo se brindan instrucciones básicas sobre perfilar y evaluar la utilización de ancho de banda de memoria de una aplicación mediante el uso de Intel® Vtune™ Amplifier en procesadores Intel® Xeon® (IvyBridge/Haswell) y coprocesadores Intel® Xeon Phi™ (Knights Corner).

Instrucciones

Cómo recolectar perfiles de ancho de banda en procesadores Intel® Xeon® o coprocesadores Intel® Xeon Phi™ con el uso de Intel® Vtune™ Amplifier

Ver el perfil de ancho de banda en procesadores Intel® Xeon® o coprocesadores Intel® Xeon Phi™ con el uso de Intel® Vtune™ Amplifier

  1. Obtenga la versión más reciente de Intel® Vtune™ Amplifier. 
    - Use Intel® Vtune™ Amplifier 2015 Update 1 o superior.
    • Ejemplo:
        source /opt/intel/vtune_amplifier_xe_2015./amplxe-vars.sh
  2. Cree un script apropiado para ejecutar su aplicación en Xeon o Xeon Phi. 
    - Cuando compile la aplicación, use “-g” para proporcionar información de depuración.
  3. Establezca la ruta para resolver todas las dependencias del compilador y la MPI para su aplicación cuando se ejecute en Xeon o Xeon Phi.

    Ejemplo:
     source /opt/intel/composer_xe_2015.1.133/bin/compilervars.sh intel64
     source /opt/intel/impi/5.0.2.044//bin/mpivars.sh
  4. Recolección de ancho de banda:

    Procesadores Intel® Xeon® (IvyBridge/Haswell)

    amplxe-cl -collect bandwidth -r <your-result-dir>  -- ./<xeon-binary> (o script de ejecución)

    Coprocesadores Intel® Xeon® Phi™ (Knights Corner)


     Sintaxis mientras se ejecuta la aplicación en el coprocesador Xeon Phi de manera nativa

     (e.g. ssh mic0 “cd /tmp ; ./a.out)

     Ejecute la orden amplxe-cl desde el host solamente
    amplxe-cl -target-system=mic-native:`hostname`-mic<N> -collect bandwidth –r <your-result-dir> -- <full-path-to-app-to-launch-on-TARGET_CARD>

     

Sintaxis mientras se ejecuta la aplicación en el coprocesador Xeon Phi desde el host (p. ej., mpirun desde host, offload, OpenCL etc.):

Ejecute la orden amplxe-cl desde el host solamente

amplxe-cl -target-system=mic-host-launch:`hostname`-mic<N> -collect bandwidth –r <your-result-dir> -- <full-path-to-app-to-launch-on-host>

  1. Otras órdenes útiles de Vtune: :
    • El límite predeterminado de Vtune para los datos de resultados de cualquier recolección de perfiles es de 500 MB. Se puede agregar el siguiente mando a la orden “amplxe-cl” para aumentar el tamaño o incluso hacerlo ilimitado (hay que especificar “0”)

      -data-limit= (default is 500)
    • Limita la cantidad de datos sin procesar que se recopilarán. Para que esa cantidad sea ilimitada, se debe especificar “0”.
    • Si cree que su aplicación es enorme o de ejecución prolongada, para reducir el tamaño de los datos recopilados se agrega el mando siguiente debajo de la orden “amplxe-cl”

      -target-duration-type=veryshort | short | medium | long (el predeterminado es “short”)


      Este valor afecta el tamaño de los datos recopilados. Para destinos de ejecución prolongada, se aumenta el intervalo de muestreo con el fin de reducir el tamaño del resultado. Para los análisis de hardware basados en eventos, el cálculo aproximado de la duración afecta a un multiplicador que se aplica a la muestra configurada después del valor.

  2. Luego de la recolección del perfil de ancho de banda para la aplicación, el paso siguiente es ver y analizar los resultados.

Ver el perfil de ancho de banda en procesadores Intel® Xeon® o coprocesadores Intel® Xeon Phi™ con el uso de Intel® Vtune™ Amplifier

  1. Es necesario abrir una sesión de “VNC” para abrir los resultados en la interfaz gráfica de usuario de Vtune.
  2. Obtenga la versión más reciente de Intel® Vtune™ Amplifier.
     

    Ejemplo:
    source /opt/intel/vtune_amplifier_xe_2015./amplxe-vars.sh>

  3. Abra el resultado con la interfaz gráfica de usuario de Vtune. 
    amplxe-gui <your-result-dir>
     
  4. En la pestaña de resumen “Summary Tab” se puede ver el promedio de ancho de banda (Average Bandwidth) informado para su aplicación.
     

    Ejemplo:

    Los resultados que se pueden observar en las capturas de pantalla siguientes son de una de las miniaplicaciones Mantevo de Sandia en procesadores Intel Xeon® (Haswell de 2 zócalos) y coprocesador Intel® Xeon Phi™ (Knights Corner).

    Nota para Intel® Xeon®: Package_0 es Socket 0; Package_1 es Socket 1. Se informa el ancho de banda de cada zócalo del procesador Xeon® de N zócalos que se utilice.

     

    Intel® Xeon® (Haswell)

    Coprocesador Intel® Xeon Phi™ (Knights Corner)

  5. En la pestaña “Bottom-up” se puede observar el valor máximo se ancho de banda (Peak Bandwidth) utilizado y una línea de tiempo de utilización de ancho de banda de la aplicación. 
    En esta vista, también se pueden ver las utilizaciones de ancho de banda de lectura y escritura por separado.

    Ejemplo:
    • Los resultados que se pueden observar en las capturas de pantalla siguientes son de una de las miniaplicaciones Mantevo de Sandia en procesadores Intel® Xeon® (Haswell) y coprocesador Intel® Xeon Phi™ (Knights Corner).

       

      Intel® Xeon® (Haswell)
      El valor máximo de ancho de banda informado para esta ejecución en un Haswell de dos zócalos es (52.599*2 = 105.198 GB/s).

      Coprocesador Intel® Xeon Phi™ (Knights Corner). El valor máximo de ancho de banda informado para esta ejecución en un coprocesador Xeon Phi es (158.580 GB/s).

  6. Además, es posible seleccionar solo una parte de la región en la vista de línea de tiempo y luego acercar y filtrar la región (hay que hacer clic y arrastrar la línea de tiempo, como se muestra en la captura que sigue). La interfaz gráfica mostrará la nueva utilización de ancho de banda o reflejará el valor correspondiente a la nueva zona acercada.
     
    • Esto es en especial importante para las aplicaciones de inicialización prolongada. Con el acercamiento, podemos concentrarnos solamente en la parte (o fase) necesaria de la aplicación.


      Instantánea: los usuarios pueden acercar una región en particular con solo hacer clic y arrastrar sobre la línea de tiempo, y luego seleccionar la opción de menú “Zoom in and Filter by Selection” (acercar y filtrar por selección).

Analizar el perfil de ancho de banda en procesadores Intel® Xeon® o coprocesadores Intel® Xeon Phi™ con el uso de Intel® Vtune™ Amplifier

  1. Comprender el perfil y las limitaciones del ancho de banda de memoria es importante para la aplicación, más que nada porque: 
    - Los cuellos de botella de ancho de banda aumentan la latencia a la cual se atiende a los errores de caché.
  2. Esto es de mayor importancia para el coprocesador Intel® Xeon Phi™ (Knights Landing), dado que la memoria de gran ancho de banda en paquete (MCDRAM: hasta 16 GB) tendrá aproximadamente entre tres y cuatro veces más ancho de banda de memoria que DDR4. 
    - Por lo tanto, es esencial conocer qué estructuras de datos/arreglos de acceso frecuente se necesitarían para hacer asignaciones a MCDRAM en lugar de a DDR4.
    - Pero ese es el paso siguiente. Primero hay que determinar si la aplicación usa una gran superficie de memoria (tamaño mayor que la MCDRAM) y si tiene o no limitación de ancho de banda.
  3. Los valores máximos de ancho de banda de memoria teóricos de los procesadores Intel® Xeon® (IvyBridge/Haswell) y el coprocesador Intel® Xeon Phi™ (Knights Corner) se pueden calcular de la siguiente manera:

    Intel® Xeon® (IvyBrdige/Haswell):

    Valor máximo teórico (GB/s) [por zócalo] = (MT/s) * 8 bytes/reloj * <cant. canales> / 1000

    Ejemplo:

    Para Haswell de dos zócalos (2133 MT/s; 4 canales por zócalo)
     Valor máximo teórico (GB/s) [por zócalo] = (2133 * 8 * 4) / 1000 = 68.256 GB/s
     Entonces, el valor máximo teórico para dos zócalos es = 68.256 * 2 = 136.512 GB/s

    Coprocesador Intel® Xeon Phi™ (Knights Corner):

    Valor máximo teórico (GB/s) = (MT/s) * 4 bytes/reloj * <cant. canales> / 1000

Ejemplo:

 Para el coprocesador Intel® Xeon Phi™ (Knight Corner) (5500 MT/s; 16 canales por zócalo)

Valor máximo teórico (GB/s) [por zócalo] = (5500 *4 * 4) / 1000 = 352 GB/s

  1. Pero debido a ciertas limitaciones y cuellos de botella, no siempre es posible alcanzar los límites teóricos de ancho de banda. 
    Por lo tanto, también es necesario comparar la tasa de ancho de banda del código perfilado con el banco de pruebas limitado por el ancho de banda de diseño (como los del banco de pruebas STREAM).

El valor máximo de rendimiento de STREAM Triad para los procesadores Intel® Xeon® (IvyBridge/Haswell) y el coprocesador Intel® Xeon Phi™ (Knights Corner) especificados se muestran más abajo:

 IvyBridgeHaswellKnights Corner
STREAM Triad (GB/s)87 GB/s110 GB/s177 GB/s
  • Análisis del ancho de banda obtenido en comparación con los valores máximos de una de las miniaplicaciones Mantevo de Sandia que se mostraron anteriormente:

Procesador Intel® Xeon® (Haswell):

 Ancho de banda perfilado de Vtune (dos zócalos): 105.198 GB/s

 Valor máximo teórico (dos zócalos): 136.512 GB/s

 STREAM Triad: 110 GB/s

El ancho de banda perfilado de la aplicación es de aproximadamente ~77 % del valor máximo teórico y ~95 % del valor máximo práctico (STREAM Triad). Entonces esta aplicación sí está limitada por el ancho de banda de memoria en Haswell (es mayor que el 75 % de los valores máximos teórico o práctico). Intel® Xeon® Phi™ Co-processor (Knights Corner):

Coprocesador Intel® Xeon® Phi™ (Knights Corner):


 Ancho de banda perfilado de Vtune (dos zócalos): 158.580 GB/s

 Valor máximo teórico: 352 GB/s

 STREAM Triad: 177 GB/s

El ancho de banda perfilado de la aplicación es de aproximadamente ~45% del valor máximo teórico y ~90% del valor máximo práctico (STREAM Triad). Por lo tanto, esta aplicación sí está limitada por el ancho de banda de memoria incluso en Knights Corner (es mayor que el 75 % de los valores máximos teórico o práctico).

  1. El próximo paso de este ejercicio sería intentar comprender las estructuras de datos de la aplicación, encontrar los arreglos que más ancho de banda consumen, encontrar su perfil de memoria y asignar los arreglos a la memoria de gran ancho de banda (HBM) de manera acorde a esos hallazgos. 

    Este tema se analizará en otra nota de próxima aparición.
Для получения подробной информации о возможностях оптимизации компилятора обратитесь к нашему Уведомлению об оптимизации.
Возможность комментирования русскоязычного контента была отключена. Узнать подробнее.