Pregunta

I escribió esta pequeña subrutina que compara funciones matemáticas simples del vector, realiza o bien con un bucle:

f(i) = a(i) + b(i)

o directa:

f = a + b

o el uso de Intel MKL VML:

vdAdd (n, a, b, f)

Los resultados de temporización para n = 50000000 son:

VML 0,9 sec 0,4 dirigir bucle 0.4

Y yo no entiendo, ¿por qué VML tarda el doble de tiempo que los otros métodos! (Loop es a veces más rápido que directa)

subrutina se puede encontrar en http://paste.ideaslabs.com/show/L6dVLdAOIf y llamado a través de

program test

  use vmltests
  implicit none

  call vmlTest()

end program
¿Fue útil?

Solución

Su código de ejemplo tienen un potencial problema de caché L2, uno puede superar con el bloqueo de optimización. Véase la respuesta Intel® Software Foro de Redes para más detalles: http: // software .intel.com / es-es / foros / showthread.php? t = 80041

Optimización Intel® Aviso:

Los compiladores Intel®, bibliotecas asociadas y herramientas de desarrollo asociadas pueden incluir o utilizar opciones que Optimizar para conjuntos de instrucciones que son disponible en Intel® y no es de Intel microprocesadores (por ejemplo SIMD conjuntos de instrucciones), pero no lo hacen Optimizar igualmente para los microprocesadores no son de Intel. Además, ciertas opciones del compilador para los compiladores de Intel, incluyendo algunos que no son específicos de Intel micro-arquitectura, están reservados para microprocesadores Intel. Para una detallada Descripción de las opciones del compilador Intel, incluyendo los sistemas de instrucción y microprocesadores específicos que implicado, por favor refiérase a la “Intel® Compilador de usuario y guías de referencia” en “Opciones del compilador." Muchos rutinas de biblioteca que forman parte de productos del compilador Intel® son más altamente optimizado para Intel microprocesadores que para otros microprocesadores. Mientras que los compiladores y bibliotecas en Intel® compilador productos ofrecen optimizaciones para tanto compatible con Intel Intel y microprocesadores, dependiendo de la opciones seleccionadas, y su código otros factores, es probable que obtendrán la capacidad de Intel microprocesadores.

Los compiladores Intel®, bibliotecas asociadas y herramientas de desarrollo asociadas pueden o no puede optimizar en el mismo grado para los microprocesadores Intel para no optimizaciones que no son exclusivos de microprocesadores Intel. Estas optimizaciones incluyen Intel® Streaming Extensiones SIMD 2 (SSE2 Intel®), Intel® Streaming SIMD Extensiones 3 (Intel® SSE3), y Supplemental Extensiones Streaming SIMD 3 (Intel® SSSE3) conjuntos de instrucciones y otros optimizaciones. Intel no hace garantizar la disponibilidad, funcionalidad o eficacia de cualquier optimización de los microprocesadores no fabricado por Intel. optimizaciones microprocesador dependiente en este producto están destinados para su uso con microprocesadores Intel.

Mientras que Intel cree que los compiladores y Las bibliotecas son excelentes opciones a ayudará a obtener el mejor rendimiento en Intel® y no es de Intel microprocesadores, Intel recomienda que a evaluar y otros compiladores bibliotecas para determinar que respondan mejor a sus necesidades. Esperamos ganar su empresa, esforzándose por ofrecer la mejor rendimiento de cualquier compilador o biblioteca; Por favor, háganos saber si usted encontrará que no hacer

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top