Difference between revisions of "Power ISA/Vector Operations"
(→External Links: fix URL) |
(add Github pages) |
||
Line 12: | Line 12: | ||
* Seebach, Peter. [https://web.archive.org/web/20080614023936/https://www.ibm.com/developerworks/library/pa-unrollav1/ Unrolling AltiVec, Part 1, Introducing the PowerPC SIMD unit]. Published March 01, 2005 | * Seebach, Peter. [https://web.archive.org/web/20080614023936/https://www.ibm.com/developerworks/library/pa-unrollav1/ Unrolling AltiVec, Part 1, Introducing the PowerPC SIMD unit]. Published March 01, 2005 | ||
− | * Seebach, Peter. [https://www.sucs.org/~grepwood/ps3/altivec/pa-unrollav2-pdf.pdf Unrolling AltiVec, Part 2, Optimize code for SIMD processing | + | * Seebach, Peter. [https://www.sucs.org/~grepwood/ps3/altivec/pa-unrollav2-pdf.pdf Unrolling AltiVec, Part 2, Optimize code for SIMD processing]. Published March 16, 2005 |
* Gschwind, Michael. [https://www.researchgate.net/publication/299472451_Workload_acceleration_with_the_IBM_POWER_vector-scalar_architecture Workload acceleration with the IBM POWER vector-scalar architecture]. IBM Journal of Research and Development. Published March, 2016 | * Gschwind, Michael. [https://www.researchgate.net/publication/299472451_Workload_acceleration_with_the_IBM_POWER_vector-scalar_architecture Workload acceleration with the IBM POWER vector-scalar architecture]. IBM Journal of Research and Development. Published March, 2016 | ||
* Clarke, Paul. [https://www.ibm.com/support/pages/vectorizing-fun-and-performance Vectorizing for fun and performance]. Published January 24, 2018 | * Clarke, Paul. [https://www.ibm.com/support/pages/vectorizing-fun-and-performance Vectorizing for fun and performance]. Published January 24, 2018 | ||
Line 20: | Line 20: | ||
* Ruzhu Chen. [https://developer.ibm.com/learningpaths/port-your-app-to-lop/migrate-app-on-lop/ Linux on IBM Power Systems application porting and tuning guide]. Published September 27, 2020 | * Ruzhu Chen. [https://developer.ibm.com/learningpaths/port-your-app-to-lop/migrate-app-on-lop/ Linux on IBM Power Systems application porting and tuning guide]. Published September 27, 2020 | ||
* OpenPOWER. [https://openpowerfoundation.org/compliance/vectorintrinsicprogrammingreference/ Vector Intrinsic Programming Reference Compliance Specification]. Published March 28, 2021 | * OpenPOWER. [https://openpowerfoundation.org/compliance/vectorintrinsicprogrammingreference/ Vector Intrinsic Programming Reference Compliance Specification]. Published March 28, 2021 | ||
+ | |||
+ | == Github pages == | ||
+ | |||
+ | [https://github.com/ermig1979/Simd C++ image processing and machine learning library with using of SIMD] | ||
+ | [https://github.com/simd-everywhere/simde Implementations of SIMD instruction sets for systems which don't natively support them] | ||
+ | [https://github.com/jfalcou/eve Expressive Vector Engine - SIMD in C++] | ||
+ | [https://github.com/VectorChief/UniSIMD-assembler SIMD macro assembler unified for ARM, MIPS, PPC and x86] | ||
+ | [https://github.com/powturbo/Turbo-Base64 Turbo Base64 - Fastest Base64 SIMD:SSE/AVX2/AVX512/Neon/Altivec] | ||
+ | [https://github.com/berenger-eu/inastemp Intrinsics as template - is a basic library to use vectorization easily in C++] | ||
+ | [https://github.com/p12tic/libsimdpp Portable header-only C++ low level SIMD library] | ||
+ | [https://github.com/open-power-sdk/pveclib Power Vector Library] | ||
+ | [https://github.com/shibatch/sleef SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT] | ||
+ | [https://github.com/VectorCamp/libfreevec SIMD optimized C library] |
Revision as of 10:27, 15 June 2023
The Power Architecture ISA includes a specification of vector or SIMD operations. Prior to the Power ISA, i.e. PowerPC, some of these operations were available, but defined in an external standard, called Altivec by Freescale (Motorola spin-off), Vector Multimedia Extension (VMX) by IBM, and Velocity Engine by Apple.
The Vector operations are classified as Vector Facility and Vector Scalar Extension (VSX) in current versions of the Power ISA.
Power ISA v2.07 still refers to some instructions as VMX in its summary of changes since the previous version, but the rest of the document avoids mentioning VMX completely.
Power ISA v3.0 no longer mentions VMX at all.
According to File:POWER9-Features-and-Specifications.pdf page 7, the Vector Scalar Unit (VSU)'s 128-bit hardware is dedicated per super-slice (2 threads). This may indicate that trying to aggressively use 128-bit VSX instructions in two threads that use the same super-slice will be inefficient. It is possible that clever usage of taskset
may improve this situation.
External Links
- Seebach, Peter. Unrolling AltiVec, Part 1, Introducing the PowerPC SIMD unit. Published March 01, 2005
- Seebach, Peter. Unrolling AltiVec, Part 2, Optimize code for SIMD processing. Published March 16, 2005
- Gschwind, Michael. Workload acceleration with the IBM POWER vector-scalar architecture. IBM Journal of Research and Development. Published March, 2016
- Clarke, Paul. Vectorizing for fun and performance. Published January 24, 2018
- OpenPOWER. Vector Intrinsics Porting Guide. Published March 13, 2018
- Talospace. Easier Power ISA vectorizing for fun and profit with GCC x86 intrinsics. Published July 26, 2019
- OpenPOWER. Vector Intrinsics Programming Reference Specification. Published August 11, 2020
- Ruzhu Chen. Linux on IBM Power Systems application porting and tuning guide. Published September 27, 2020
- OpenPOWER. Vector Intrinsic Programming Reference Compliance Specification. Published March 28, 2021
Github pages
C++ image processing and machine learning library with using of SIMD Implementations of SIMD instruction sets for systems which don't natively support them Expressive Vector Engine - SIMD in C++ SIMD macro assembler unified for ARM, MIPS, PPC and x86 Turbo Base64 - Fastest Base64 SIMD:SSE/AVX2/AVX512/Neon/Altivec Intrinsics as template - is a basic library to use vectorization easily in C++ Portable header-only C++ low level SIMD library Power Vector Library SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT SIMD optimized C library