Pregunta

¿Alguien puede recomendar biblioteca SIMD portátil que ofrece a / c ++ API C, trabaja en extensiones de Intel y AMD y Visual Studio, compatible GCC. Busco para acelerar cosas como escalar una matriz de 512x512 de dobles. productos dot Vector, la multiplicación de matrices etc.

Hasta el momento el único que he encontrado es: http://simdx86.sourceforge.net/ sino como la primera página dice que no se compila en Visual estudio.

También hay Intel IPP que no funciona en los procesadores AMD de lo que se reúnen. Y hay Framewave de AMD, pero yo estaba teniendo algunos problemas de compilación y enlazado su biblioteca y sus foros están completamente muertas. Cualquier persona consiguió utilizar en cualquier lugar Framewave?

Gracias.

¿Fue útil?

Solución

Desde mencionas operaciones de alto nivel sobre matrices y vectores, ATLAS , Intel MKL , PLASMA , y FLAME pueda ser de su interés.

Algunas bibliotecas C ++ matriz de matemáticas incluyen uBLAS de Boost, armadillo, Eigen, IT ++ y NEWMAT. La biblioteca POOMA probablemente también incluye algunas de estas cosas. Esta pregunta también se refiere a MTL.

Si usted está buscando primitivas de portabilidad de nivel inferior, un colega mío ha desarrollado una envoltura alrededor de SSE2, Altivec, VSX, Larrabee, y operaciones vectoriales SPE celular. Se puede encontrar en nuestro fuente de repositorio , pero su licenciamiento (académico) puede no ser apropiado si desea distribuirlo como parte de su trabajo. También está todavía en desarrollo significativo para cubrir la gama de necesidades de aplicación que está dirigido a.

Otros consejos

Eigen es un sólo de encabezado MPL2 -licensed C biblioteca ++ que tiene matemáticas vector / matriz que está optimizado para SSE, neón, y Altivec. Tienen operaciones matemáticas más más sofisticados en sus módulos adicionales.

Trate = "https liboil o la relacionada ORC. Especialmente interesante es ORC; implementa un lenguaje ensamblador de alto nivel que se compila en código específico de la arquitectura. Bastante sofisticado, mucho más que un simple envoltorio biblioteca.

Si no le importa conseguir abajo y sucio con ensamblador, entonces siempre se puede utilizar las funciones intrínsecas para todas las instrucciones SIMD. Serán procesador específico, es decir, las características intrínsecas SSE4 solamente se pueden ejecutar en SSE4 habilitado CPU y le toca a usted para asegurarse de que las extensiones están ahí.

No es un buen artículo aquí sobre la aplicación de SIMD .

Se podría, sin embargo, utilizar un compilador que genera código SIMD para usted sin ninguna biblioteca externa. VectorC se supone que es buena, aunque yo nunca he utilizado personalmente. No requiere ninguna biblioteca especiales por lo que yo sé, sólo se ve a los bits de código fuente que puede benfit de SIMD y compila a cualquier nivel de la ESS se especifica.

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