【发布时间】:2017-07-31 08:28:22
【问题描述】:
我正在准备考试,并且正在做一些不方便的练习。因此,我一直在提供此代码,并想知道是否已将代码转换为 SIMD 指令。
代码
int A[100000];
int B[100000];
int C=0;
for int(i=0; i < 100000; i++)
C += A[i] * B[i];
既然没有余数,我们就不用管它了。我们还假设它是一个 128 位的寄存器,因此可以计算 4 个单精度浮点值。
我的结果 - 使用 SIMD
int A[100000];
int B[100000];
int C=0;
for int(i=0; i < 100000/4; i += 4)
C += A[i] * B[i];
C += A[i+1] * B[i+1];
C += A[i+2] * B[i+2];
C += A[i+3] * B[i+3];
您认为使用 SIMD 指令而不是编写多线程程序有什么优势?
【问题讨论】:
标签: performance parallel-processing simd