c - 如何在 C 中的单个指令周期内添加 100 个整数元素的数组?

标签 c assembly profiling simd mmx

我有一个包含 100 个元素的数组,我想添加所有这 100 个元素。我使用的 C 代码与下面相同

for(i=0;i<100;i++)
{
sum+= a[i];
}

让我们假设处理器需要 100 个指令周期来添加 100 个元素,这会降低应用程序的速度。所以,我想知道是否有任何指令可以在单个指令周期内添加 100 个元素以加快应用程序的速度。

最佳答案

没有指令可以在单个硬件指令周期内将 100 个数字相加。至少在我所知道的任何硬件中都没有。

但是,如果您有兴趣从台式计算机中获得最大的计算性能,您应该考虑使用显卡进行编程。如今顶级显卡拥有超过 3000 个核心。

加法对于并行算法来说并不完美,因为结果不是独立的。但如果你有超过 N 个核心,时间复杂度就是 O(log N)。

建议的互联网搜索词:

GPU程序

GPU编程

并行算法

关于c - 如何在 C 中的单个指令周期内添加 100 个整数元素的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23101861/

相关文章:

java - Android 套接字读取字符串时出现错误

c - 使用 For 创建结构体进行初始化

assembly - avr 汇编器 : #define vs . equ,是一样的吗?

ios - CoreAnimation 性能分析 - CAReplicatorLayer 和 CAShapeLayer

c - 独立的 CPU 和 IO 时间

c++ - 诊断互斥锁相关瓶颈的正确方法

c - Linux 中是否存在用户级可访问字体表?

c - 在 MIP 中使用数组

delphi - 使用 ASM 调用对象方法

c - 如何禁用 CLion 中代码导航的函数重载检测?