Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C语言中,如何在一个指令周期内添加100个整数元素的数组?_C_Assembly_Profiling_Simd_Mmx - Fatal编程技术网

在C语言中,如何在一个指令周期内添加100个整数元素的数组?

在C语言中,如何在一个指令周期内添加100个整数元素的数组?,c,assembly,profiling,simd,mmx,C,Assembly,Profiling,Simd,Mmx,我有一个100个元素的数组,我想添加所有这100个元素。我使用的C代码与贝娄相同 for(i=0;i<100;i++) { sum+= a[i]; } 假设处理器需要100条指令周期来添加100个元素,这将降低应用程序的速度。因此,我想知道是否有任何指令可以在一个指令周期内添加100个元素来加速应用程序。没有指令可以在一个硬件指令周期内添加100个数字。至少在我知道的任何硬件中都没有 但是如果你想从台式计算机中获得最大的计算性能,你应该考虑使用图形卡编程。如今,顶级图形卡拥有3000多个

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

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

假设处理器需要100条指令周期来添加100个元素,这将降低应用程序的速度。因此,我想知道是否有任何指令可以在一个指令周期内添加100个元素来加速应用程序。

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

但是如果你想从台式计算机中获得最大的计算性能,你应该考虑使用图形卡编程。如今,顶级图形卡拥有3000多个核心

加法对于并行算法并不完美,因为结果不是独立的。但是如果你有超过N个核,那么时间复杂度是Olog N

建议的互联网搜索词:

GPU程序

GPU编程


并行算法

无法在一个周期内求和100个元素。您可以使用SIMD指令来加速,但这取决于a的数据类型,该数据类型只能使用因子2-4或类似的东西来加速;你不能只获得100倍!您的计算CPU受限吗?数据是否适合缓存?在添加所有100个元素之后,您还将对数据做什么?CPU已经比内存快很多倍了,在我看来,如果你有一个CPU能够做到这一点,你的内存带宽就会受到限制。。。记忆是无法保持的。当然,这完全取决于你在做什么,但这是我的直觉。你能在纸上想出一个算法来做到这一点吗?我想在一个指令周期内运行我的整个程序。但我的搜索还在继续。。。