这是客座博主Laurence Bank撰写的Arm SIMD系列教程的第一部分。
本文假设你对Arm SIMD(又称Neon)编程有基本了解。SIMD是单指令多数据的首字母缩写,它指的是一组CPU指令,能够在每次操作中处理多条数据。SIMD的目的是通过与 "普通 "指令相比在每个时钟周期处理更多的数据来加速你的算法。程序员通常有必要明确地编写SIMD代码(C的内在因素),以利用其增加的功能。关于Arm Neon编程的更多信息,请看这个优秀的教程。
用Neon内部代码优化C代码
通常,我们需要在主处理循环中测试一个或多个条件。C语言编译器对带有条件语句的矢量循环的能力有限。让我们考虑一个简单的例子。假设我们有一个需要求和的整数列表,但我们需要跳过小于某个最小值的数值。在C语言中,它可能看起来像这样。
作者:Laurence Bank
阅读直达链接:https://community.arm.com/developer/tools-software/tools/b/tools-software-ides-blog/posts/thinking-in-parallel-branchless-conditionals欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区Arm技术专栏