新HPL-AI基准的矩阵

我的同事们正在寻找一个矩阵,用于一个新的基准。他们来对地方了。

内容

电子邮件

几周前,我收到了田纳西大学的Jack Dongarra的邮件。

对于这个新的hp - ai基准测试,我正在寻找一个不对称的矩阵,易于生成(大约生成O(n^2)次运算),是密集的,不需要旋转来控制增长,并且具有较小的条件数(

基准测试有两个步骤:

1)在矩阵上以较短的精度进行LU,并计算一个近似解x。(在Nvidia上,这是在一半精度上比DP快6倍。)

2)以L和U为前提条件,以x为起点进行GMRES(这通常需要3-4次迭代才能收敛)。

基准测试的细节如下:http://bit.ly/hpl-ai

对矩阵有什么想法吗?

对称希尔伯特矩阵

我研究的第一个矩阵是希尔伯特矩阵。利用MATLAB中的单例展开特性,传统的对称Hilbert矩阵可以用

格式老鼠N = 5;i = 1:n j = i' H = 1./(i+j-1)
i = 1 2 3 4 5 j = 1 2 3 4 5 H = 1 1/2 1/3 1/4 1/5 1/2 1/3 1/4 1/5 1/6 1/4 1/4 1/5 1/6 1/7 1/5 1/6 1/7 1/5 1/6 1/7 1/8 1/9

当你加上行向量对列向量j,结果是我+ j是一个矩阵。将此与内积我* j,它产生一个标量,而外产品j *我,这就产生了另一个矩阵。表达式我+ j可以认为是一个“外和”。

再进行两个标量展开即可完成计算;我+ j - 1和的每个元素减去11. / (i + j - 1)1除以分母中的每个元素。这两个标量展开从MATLAB早期就已经存在了。

希尔伯特矩阵的元素只取决于和我+ j,所以它们在对角线上是常数。这样的矩阵被称为柯西矩阵。有一些快速算法可以在$O(n^2)$时间内求解涉及柯西矩阵的方程组。

非对称希尔伯特矩阵

几年前,我想要一个非对称测试矩阵,所以我把希尔伯特矩阵分母上的加号改成了负号。但是这样就在对角线上除以了0,所以-1也变成了+1/2。我称之为"非对称希尔伯特矩阵"

H = 1./(i-j+1/2)
H = 2 2/3 /5 2/7 2/9 -2 2/3 /5 2/3 /7 -2/3 / 2 -2/3 /5 -2/3 /5 -2/3 / 2 2/3 -2/7 -2/5 -2/3 / 2 2

元素只依赖于i j对角线上是常数。矩阵是Toeplitz的,同样,这样的系统可以用$O(n^2)$运算来求解。

当我第一次计算非对称希尔伯特矩阵的奇异值时,我很惊讶——它们中的大多数几乎等于$\pi$。对于5乘5的矩阵,我们已经看到了小数点后五位。

格式sigma = svd(H)
Sigma = 3.141589238341321 3.141272220456508 3.129520593545258 2.921860834913688 1.461864493324889

这是一个大惊喜。最终的解释,由西摩合作者,涉及20世纪20年代的Szego定理,将Toeplitz矩阵的特征值与傅立叶级数和方波联系起来。

基准矩阵

我一直在和杰克的同事彼得·卢茨切克一起工作。这是我们对HPL-AI基准矩阵的建议。它取决于两个参数,n而且μ.作为μ从1到-1,这个矩阵的核心从对称希尔伯特矩阵变成非对称希尔伯特矩阵。添加n分母和对角线上的1产生对角线优势。

A = 1。/(i + mu*j + n) + double(i==j);
清晰的一个类型一个
函数Aout = A(n,mu) % A(n,mu)。HPL-AI基准的矩阵。通常在[- 1,1]。I = 1:n;J = i';Aout = 1./(i+mu*j+n) + eye(n,n);结束

如果μ不等于+1,这个矩阵不是柯西矩阵。而且,如果μ不等于-1,它不是Toeplitz。此外,如果μ大于-1,它是对角占优的,我们会看到,条件良好。

例子

这是带理性输出的5x5。当μ是+1,我们就得到了对称希尔伯特矩阵对角线上的一段。

格式老鼠Mu = 1;(n,μ)
Ans = 8/7 1/8 1/9 1/10 1/11 1/8 10/9 1/10 1/11 1/12 1/9 1/10 12/11 1/12 1/13 1/10 1/11 1/12 14/13 1/14 1/11 1/12 1/13 1/14 16/15

μ是-1,这个矩阵很不对称。最西南角的元素几乎主导了对角线。

Mu = -1;(n,μ)
Ans = 6/5 1/6 1/7 1/8 1/9 1/4 / 6/5 1/6 1/7 1/8 1/4 /4 / 6/5 1/6 1/7 1/2 / 1/4 / 6/5 1/6 1/2 1/3 1/4 / 6/5

动画

这是一个没有加的矩阵的动画眼睛(n, n).作为μ从-1到1,(n,μ)黑眼圈(n, n)从非对称到对称。

高斯消去法

如果> -1,最大的元素在对角线上陆((n,μ))没有旋转。

格式陆μ= 1 (L U) = ((n,μ))陆μ= 1 (L U) = ((n,μ))
μ= 1 L = 1.0000 0 0 0 0 0.2083 - 1.0000 0 0 0 0 0 0 0.2778 0.1748 1.0000 0.4167 0.2265 0.1403 1.0000 0.8333 0.3099 0.1512 0.0839 1.0000 U = 1.2000 0.1667 0.1429 0.1250 0.1111 1.1653 0.1369 0.1168 0.1019 0 0 0.0841 1.1058 1.1364 0.1115 0.0942 0 0 0 0 0 0 0 1.0545μ= 1 L = 1.0000 0 0 0 0 0.1094 1.0000 0 0 0 0 0 0 0.0972 0.0800 1.0000 0.0875 0.0729 0.0626 1.0000 0.0795 0.0669 0.0580 0.0513 1.0000 U = 1.1429 0.1250 0.1111 0.1000 0.0909 1.0974 0.0878 0.0800 0.0734 0 0 1.0731 0.0672 0.0622 0 00 1.0581 0.0542 0 0 0 0 1.0481

条件

让我们看看2条件数$\sigma_1/\sigma_n$是如何随着参数的变化而变化的。在我的笔记本电脑上,计算以下图中所有矩阵的奇异值需要10多分钟。

sigma_1

负载HPLAI.mats1snnμSurf (mu,n,s1) view(25,12) xlabel(“亩”) ylabel (“n”甘氨胆酸)组(,“xlim”(-0.9 - 1.0),...“xtick”,[-0.9 -0.5 0 0.5 1.0],...“ylim”,[0 2500])标题(“\ sigma_1”

颜色随时间变化μ变化范围为-0.9到1.0。我要远离μ= -1.0,此时矩阵失去对角线优势。另一个横轴是矩阵顺序n.我有有限的n到2500。

我要说的是,如果μ> -0.9,那么最大奇异值是有界的sigma_1< 2.3。

sigma_n

Surf (mu,n,sn) view(25,12) xlabel(“亩”) ylabel (“n”甘氨胆酸)组(,“xlim”(-0.9 - 1.0),...“xtick”,[-0.9 -0.5 0 0.5 1.0],...“ylim”,[0 2500])标题(“\ sigma_n”

如果μ> -0.9,那么最小的奇异值是有界于零的sigma_n> 0。

sigma_1 / sigma_n

Surf (mu,n,s1./sn) view(25,12) xlabel(“亩”) ylabel (“n”甘氨胆酸)组(,“xlim”(-0.9 - 1.0),...“xtick”,[-0.9 -0.5 0 0.5 1.0],...“ylim”,[0 2500])标题(“\ sigma_1 / \ sigma_n”

如果μ> -0.9,则2范数中的条件数是有界的,sigma_1 / sigma_n< 2.3 /。75$\approx$ 3.0 .

溢出

HPL-AI基准测试将首先使用16位计算该矩阵的LU分解半精度浮点运算, FP16。如果矩阵的顺序是这样的话,就有一个很重要的问题n大于65504。这个值是最大浮点数, FP16中可以表示的最大数字。的任何较大值n溢出来

某种规模是必须要做的n> 65504。现在,我不知道会发生什么。

FP16的另一种半精度格式是Bfloat16,它在指数中有三个比特最大浮点数= 3.39 e38。在使用Bfloat16生成这个矩阵时,应该没有溢出问题。

谢谢

感谢Piotr Luszczek与我的合作。我们还有更多的工作要做。




由MATLAB®R2019b发布

|

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。