此番实验移植了开源 llama2.c 项目,而后使用名为 AltiVec 的 PowerPC 矢量扩展提升性能表现。 性能:AltiVec。 在解决了错误并完成上述结构变更后,我使用 x86 Dell PowerEdge T440 主力机实现了输出奇偶校验。 我记得 PowerPC 处理器支持所谓 AltiVec 矢量扩展,虽然早期版本的处理器扩展比较有限,但确实包含一项可以加快速度的关键运算:融合乘加。 以下是使用 AltiVec SIMD 扩展重写的同一函数。请注意,这是我第一次编写 AltiVec 代码。在修复了 16 字节对齐问题之后,此代码能够与原始 C 语言版本生成同样的输出。 AltiVec 将推理过程缩短了约 30 秒,让实现速度从戴尔的九分之一变成了八分之一,每秒生成的 token 数量则增加了 10%。爽!
设置dct的算法 可用的有 0 FF_DCT_AUTO 缺省的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC
设置dct的算法 可用的有 0 FF_DCT_AUTO 缺省的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC
l VX_NO_STACK_FILL不填充Stack l VX_NO_STACK_PROTECT不提供Stack的上溢和下溢保护 l VX_ALTIVEC_TASK 使用Altivec指令集(仅PowerPC
source code in it'smp3lib and we have to be thankful for the MPlayer folks adding SSE, 3DNowExtand AltiVec
是开放的,可以免费使用,而X86和ARM等则需要许可费 广义上,它们的功能集:浮点数(x87)、加密(AES-NI)、支持本地高级字节码执行(Jazelle、AVR32B)、矢量计算(SSE、AVX、AltiVec
设置dct的算法 可用的有 0 FF_DCT_AUTO 缺省的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC
设置dct的算法 可用的有 0 FF_DCT_AUTO 缺省的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC
设置dct的算法 可用的有 0 FF_DCT_AUTO 缺省的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC
设置dct的算法 可用的有 0 FF_DCT_AUTO 缺省的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC
--sws-max-filter-size = N swscale使用的最大过滤器大小[256] 优化选项(仅限专家): --disable-asm禁用所有程序集优化 --disable-altivec 禁用AltiVec优化 --disable-vsx禁用VSX优化 --disable-power8禁用POWER8优化 --disable-amd3dnow禁用3DNow!
这些答案中包含AltiVec指令、RISC与CISC设计、MMX技术,放在2000年的Ars论坛讨论中并不违和。 GPT-3.5的答案: GPT-4的答案: 不过,ChatGPT显然表现更优。
设置dct的算法 可用的有 0 FF_DCT_AUTO 缺省的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC
‘armv5te’ ‘armv6’ ‘armv6t2’ ‘vfp’ ‘vfpv3’ ‘neon’ ‘setend’ ‘AArch64’ ‘armv8’ ‘vfp’ ‘neon’ ‘PowerPC’ ‘altivec
AltiVec:用于功耗优化的浮点计算。 IBM Cell Broadband Engine:结合了 SIMD 和其他计算单元,应用于游戏和高性能计算。 应用:图像处理、视频编解码、科学计算。
通过MMX,SSE2或Altivec指令可以并行处理多个直方图操作。为了在一条指令中做更多的直方图处理,直方图的只能用16位的数据类型。
目标特性(Features):在 options 函数中,对特定目标特性进行了处理,包括 altivec(AltiVec 指令集支持)和 power9-vector(PowerPC 9.x 矢量指令支持
比如,浮点数(x87)、加密(AES-NI)、支持本地高级字节码执行(Jazelle、AVR32B)、矢量计算(SSE、AVX、AltiVec)。
Simd: 使用SIMD的C++图像处理库: SSE,SSE2,SSE3,SSSE3,SSE4.1,SSE4.2,AVX,AVX2,AVX-512,VMX(Altivec)和VSX(Power7),NEON
具体来说,powerpc.rs文件包含了以下内容: 对PowerPC SIMD指令集的支持:该文件通过定义架构特定的SIMD指令,例如vmx和altivec指令集,提供了对PowerPC平台上的SIMD