如何提高c语言中标准矩阵加法算法的效率?

如何提高c语言中标准矩阵加法算法的效率?,c,performance,matrix,C,Performance,Matrix,如何提高标准矩阵加法算法的效率 矩阵由二维数组表示,并按顺序添加。我不打算阅读您的所有代码。如我所见,这是添加部分 for(i=0;i<r1;i++) for(j=0;j<c1;j++) C[i][j]=A[i][j]+B[i][j]; for(i=0;inaive double for循环对于可移植代码来说非常接近最优,只要您以正确的顺序获得两个for循环。您需要按顺序访问内存以获得最佳性能 您可以展开循环,但这对性能影响不大 如果您希望获得最佳性能,那么

如何提高标准矩阵加法算法的效率


矩阵由二维数组表示,并按顺序添加。

我不打算阅读您的所有代码。如我所见,这是添加部分

 for(i=0;i<r1;i++)
    for(j=0;j<c1;j++)
       C[i][j]=A[i][j]+B[i][j];

for(i=0;inaive double for循环对于可移植代码来说非常接近最优,只要您以正确的顺序获得两个for循环。您需要按顺序访问内存以获得最佳性能

您可以展开循环,但这对性能影响不大


如果您希望获得最佳性能,那么不要自己编写,而是使用针对您的平台进行了优化的。您可以尝试使用GPU而不是CPU来执行密集型操作。您可以使用AMP来实现这一点。

好的,您可以考虑循环的顺序,这样以后就不必修复它。不应该花费超过一个耦合还有,OP特别询问了高效计算。我检查了生成的ASM代码,我不擅长阅读它,但对我来说它不像SIMD指令,所以对于大矩阵,这显然不是最好的解决方案。@yiu H也许你需要一个更好的编译器?!唯一阻止我给出+1的是你提到的事实
i++
++i
相比,没有明确说明这是一个优化神话,它不会对生成的代码产生任何影响,除非使用结果的值(当然,它们有不同的行为)@R..除了最简单的C代码外,大多数当代编译器在矢量化任何代码方面都很差劲。基本上,任何矩阵运算我都必须输入GCC内部函数。SSE在CPU上,而不是GPU上。虽然GPU可能很快,但你无法使用SSE。真的。我的缺点是,AMP使用GPU。我从未使用过它,但应该是DirectX的一部分。()切换到C++,并使用EGIN:可能的副本