Recomendación de proyecto de código abierto: biblioteca C ++ de código abierto para la encapsulación secundaria del conjunto de instrucciones de la CPU simd

SIMD (instrucción única, datos múltiples), como sugiere el nombre, es una instrucción única que procesa múltiples datos. Las instrucciones SIMD son de naturaleza muy similar a un procesador vectorial, que puede realizar la misma operación en un conjunto de datos (también conocido como "vector de datos") en el controlador al mismo tiempo para lograr el paralelismo espacial. SIMD es la clave para que la CPU realice DLP (paralelismo de nivel de datos), y DLP completa el cálculo de acuerdo con el modo SIMD. SSE y el MMX más antiguo y el 3DNow! de AMD son conjuntos de instrucciones SIMD. Puede aumentar efectivamente la velocidad de las operaciones de punto flotante mediante el procesamiento de múltiples puntos flotantes en paralelo con la tecnología de múltiples datos de una sola instrucción y un solo ciclo de reloj.

 

1, más popular

Biblioteca de aprendizaje automático y procesamiento de imágenes C++ con el uso de SIMD: SSE, AVX, AVX-512 para x86/x64, VMX (Altivec) y VSX (Power7) para PowerPC, NEON para ARM.
https://github.com/ermig1979/Simd
http://ermig1979.github.io/Simd/

#include <opencv2/core/core.hpp>
#define SIMD_OPENCV_ENABLE
#include "Simd/SimdLib.hpp"
cv::Point, cv::Size <--> Simd::Point
cv::Rect <--> Simd: :Rectángulo
cv::Mat <--> Simd::View

estándar::experimental::simd para GCC [ISO/IEC TS 19570:2018]
https://github.com/VcDevel/std-simd

Clases vectoriales SIMD para C++
https://github.com/VcDevel/Vc
https://web-docs.gsi.de/~mkretz/Vc-master/

MIPP es un contenedor portátil para instrucciones SIMD escritas en C++11. Es compatible con NEON, SSE, AVX y AVX-512.
https://github.com/aff3ct/MIPP

Envoltorios de C++ para SIMD intrínsecos y funciones matemáticas optimizadas y paralelizadas (SSE, AVX, NEON, AVX512)
https://github.com/xtensor-stack/xsimd
https://xsimd.readthedocs.io/en/latest/index.html

almohada

https://github.com/python-pillow/Almohada

almohada-simd

https://github.com/uploadcare/pillow-simd

2. Relativamente impopular

Biblioteca SIMD de bajo nivel de C++ de solo encabezado portátil
https://github.com/p12tic/libsimdpp

Biblioteca de vectorización Agenium Scale para CPU y GPU
https://github.com/agenium-scale/nsimd

UME::SIMD Una biblioteca para vectorización simd explícita.
https://github.com/edanor/umesimd

3. Envasado y reenvasado

El fractal de Mandelbrot: implementaciones secuenciales y SIMD.
https://gitlab.inria.fr/acassagn/mandelbrot

VecCore es una capa de abstracción simple sobre otras bibliotecas de vectorización.
https://gitlab.cern.ch/VecGeom/VecCore

4. Otras aplicaciones

Implementaciones de conjuntos de instrucciones SIMD para sistemas que no los admiten de forma nativa.
https://github.com/simd-everywhere/simde

Biblioteca SIMD para evaluar funciones elementales, libm vectorizado y DFT
https://github.com/shibatch/sleef

Biblioteca de ruido C++ SIMD
https://github.com/Auburn/FastNoiseSIMD

5. Tutorial SIMD

Un artículo para comprender el conjunto de instrucciones SIMD es actualmente la introducción más completa a SSE/AVX - Programmer Sought

Introducción y optimización del conjunto de instrucciones C/C++ (principalmente optimizado para SSE) - Blog de LoveMIss-Y - Blog de CSDN - Optimización del conjunto de instrucciones

aprendizaje ESS


---

Intel CPU指令集
https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html
《Programación paralela moderna con C++ y lenguaje ensamblador: desarrollo SIMD X86 usando AVX, AVX2 y AVX-512 1ra ed. Edición"

"Método de programación paralela y práctica de optimización"

"Diseño de algoritmos paralelos y optimización del rendimiento"

Supongo que te gusta

Origin blog.csdn.net/libaineu2004/article/details/123556678
Recomendado
Clasificación