5 # number of tests
1000 2000 3000 4000 5000 # number of equations (problem sizes)
1000 2008 3000 4008 5000 # leading dimensions
4 4 2 1 1 # number of times to run a test (trials)
4 4 4 4 4 # alignment values (in KBytes)我读过文档,但是2,3,5并不清楚(我不知道FORTRAN)。
第2行-它是否要求创建1000*1000,2000*2000 . 5000*5000矩阵?如果是,那么方程与创建矩阵有什么关系呢?如果不是,这个方程有多复杂?它像解a = 1.2+2.2或其他一些复杂问题一样简单吗?
第3行-它可能指的是一个子矩阵。但是创建子矩阵有什么意义呢?如果所有的LDA值都等于相应的问题大小,会发生什么?
第5行-对齐值是多少?
发布于 2018-03-18 07:38:28
这是英特尔优化的Linpack基准测试的设置。您似乎感到困惑的参数都与表示和访问矩阵的方式有关。
输入参数
Linpack benchmark解决了一个N联立线性方程组。
a11 * x1 + a12 * x2 + .. + a1N * xN = b1
a21 * x1 + a22 * x2 + .. + a2N * xN = b2
...
aN1 * x1 + aN2 * x2 + .. + aNN * xN = bN这相当于求解向量方程Ax=b,其中x和b是N维向量,A是N*N矩阵。
N*N矩阵在内存中表示为N*N数组,其中单个列存储在偏移量0、n、2*n等处。注意,我们使用的是不同的符号n,而不是N。原因是当n=N在多个并行线程中运行时,可能会遇到一种称为缓存敲击的现象。请不要这样做,建议设置n>N,在列数据之间插入一些填充。通常,n被选择为最小整数,可被大于N的8整除。因此,我们完成了第2行和第3行。第2行是N,第3行是n。
Linpack基准测试使用几个数组。再次,为了有效地使用缓存,建议所有数组都从内存页的边界开始。因此,它们是对齐的4k边界。对于较大的页面,将此值设置为一个较大的数字(例如16或64 )可能是有意义的。这是我们的5号线。
输出量
要检查解决方案,Linpack基准测试将计算大小向量r = Ax - b。向量r的最大范数是其元素max(|r_1|,..,|r_N|)绝对值的最大值。这个值称为剩余价值。它应该按照机器epsilon eps的顺序,即1 + eps > eps这样的最小数。对于64位浮点数,eps大约是1e-15。
为了具有独立于机器结构的度量,计算归一化残差。Linpack文档给出了归一化残差的下列公式。
Ax -b ||_oo /( eps *(\x,x,a,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,5,5,5)的||_oo /(Eps)*( ||_oo
这里,\x,||_oo表示最大范数。有趣的下标_oo表示无穷大的符号。这就是说,\x-b,||_oo是残差,x-A,||_oo是矩阵A元素的绝对值的最大值,||_oo是右边向量的最大绝对值。
符号x ||_oo来自于分析。其中,x_x ||_1表示X的组分的绝对值之和,{ X,||_1 =x,||_1,x,x,x,X ||_2 =sqrt(x_x1_2+.+x_n_2),x_( ||_k )=(x~(1)x_k+.+x_n_n^k)^(1/k)。可以证明,当k走向无穷远时,||_k向max(|x1|,...,|xk|)方向移动。
您还应该看看原始的高性能LINPACK。
https://stackoverflow.com/questions/49345420
复制相似问题