Multithreading 阿尔格。MKL螺纹DGEMV
我们都知道,并行实现DGEMV有很多不同的方法(列或块等),导致不同的通信开销。我一直在查阅MKL和BLAS的所有参考手册,试图找出cblas_dgemv在MKL(第11节)中通常采用的风格,但没有成功。如果任何人有一个参考文件记录了所使用的算法或算法的开销,我将非常高兴。MKL ref手册将DGEMV以及其他例程作为黑匣子保存 但我认为仍然有一些方法可以估计开销/效率 正如我们所知,DGEMV是一种mem带宽受限的操作。 对于y+=A*x,可以通过获得的mem带宽测量其速度:Multithreading 阿尔格。MKL螺纹DGEMV,multithreading,algorithm,intel,blas,intel-mkl,Multithreading,Algorithm,Intel,Blas,Intel Mkl,我们都知道,并行实现DGEMV有很多不同的方法(列或块等),导致不同的通信开销。我一直在查阅MKL和BLAS的所有参考手册,试图找出cblas_dgemv在MKL(第11节)中通常采用的风格,但没有成功。如果任何人有一个参考文件记录了所使用的算法或算法的开销,我将非常高兴。MKL ref手册将DGEMV以及其他例程作为黑匣子保存 但我认为仍然有一些方法可以估计开销/效率 正如我们所知,DGEMV是一种mem带宽受限的操作。 对于y+=A*x,可以通过获得的mem带宽测量其速度: 测量一次DGEM
t
李>
m=2*len(y)+len(x)+len(A)
李>
bw=m/t
李>
bw0
李>
那么bw/bw0*100%
可以看作是该算法的实际效率
请注意,您可能需要足够大的矩阵/向量来进行测量。此外,如果您希望重复测量以获得更准确的结果,则可能需要在开始新的迭代之前保持缓存处于冷态