IML-整数矩阵库




[什么是IML?]- [新增功能]- [时间安排]- [下载]- [报告错误]- [参考]- [作者]- 【相关工作】

什么是IML?

IML是一个免费的C源代码库,用于实现算法用于计算稠密线性方程组的精确解整数。IML设计为与CBLAS库(例如,ATLAS/BLAS)和GMP bignum库一起编译。

IML是用便携C编写的,可以在32位和64位上使用机器。它可以从C++调用。

目前,IML提供以下功能:

此外,IML为各种mod提供了一些低级例程p矩阵运算:计算row-echelon形式、行列式、秩和mod p矩阵的逆矩阵。这些mod p例程不是通用;他们要求p满足一些基于输入矩阵的维数(通常p应该是素数,并且应该长度不超过20位)。

[顶部]

新功能是什么?

2015-12-07当前版本为1.0.5。此版本包含新功能kernelLong(内核长)内核MP进入库界面用于计算整数的右核基分别为长型和填充GMP大字符的矩阵。核心基础可以选择使用格基约简来约简返回的值。不同于功能nullspace长nullspaceMP(零空间MP)哪一个只计算有理nullspace函数的基kernelLong(内核长)内核MP产生一个整数右边所有整数向量的子格的基输入矩阵的核。

2014-07-30当前版本为1.0.4。该版本现在可以在Cygwin[64]下构建为动态库和MinGW[64]。

2008-07-28当前版本为1.0.3。此版本包含一个新功能nullspaceMP(零空间MP)进入之内库接口,用于计算整数的右有理零空间矩阵中充满了GMP大号。

2007-09-14当前版本为1.0.2。这个版本修正了几个错误。

2006-11-26当前版本为1.0.1。此版本更正了几个错误以及合并了一个新功能nullspace长到库接口中,该接口计算积分基础long型整数矩阵的右有理nullspace。

2004-09-24当前版本为0.1.0。此版本修改了p-adic提升算法的实现和30%到50%的增益在不减小解决方案大小的情况下加快函数的速度,例如无信号SolvMM。还获得了可观的加速从其他功能进行系统求解。例如,让A是一个2000 x 3000的整数矩阵,让b是一个2000 x 1整数向量。A和b中的条目从-7到随机选择7.如果不缩小解决方案大小,新版本将花费7分钟认证解决系统Ax=b,而旧版本花了10分钟。

2004年7月30日当前版本为0.0.0,即第一个版本。如果你找到了错误,请参考报告漏洞.

[顶部]

时间安排

以下两个表列出了线性方程组的一些时序分别使用小条目和大条目。对于输入系统对于非平凡的零空间,格约简可以选择性地用于尝试在增加运行时间的同时减小解决方案的大小。输入矩阵的维数列在第一列中。所有的表中的平方输入系统是非奇异的。

测试环境:
CPU:Itanium2 1.3GHz,内存:50Gb,平台:GNU/Linux 2.4.21-sgi240rp0405180810074,编译器和链接器:icc 8.0,GMP 4.1.3,ATLAS 3.6.0


小条目:输入系统中的条目长度为1位十进制数字
尺寸 典型解决方案 规模缩减解决方案
n x m(n x m) #溶液的
十进制数字
时间 #溶液的
十进制数字
时间
  <=10秒 <=20秒
1000 x 1000 1905 7秒    
400 x 1000 1141 6秒 116 9秒
500 x 600 1354 9秒 137 15秒
500 x 1000 1445 9秒 146 16秒
  <=30秒 <=50秒
1500 x 1500 2989 20秒    
700 x 1500 2138 22秒 216 38秒
750 x 2000 2363 28秒 238 49秒
800 x 1000 2344 29秒 236 50秒
  <=1分钟 <=1.5分钟
2000 x 2000 4110 42秒    
900 x 1000 2628 40秒 264 70秒
950 x 2000像素 3024 50秒 304 85秒
1000 x 2000 3097 52秒 311 89秒
尺寸 典型解决方案 规模缩减解决方案
n x m(n x m) #的溶液
十进制数字
时间 #溶液的
十进制数字
时间
  <=15分钟 <=20分钟
6000 x 6000 13761 15米    
2000 x 4000 6980 7米 700 11米
2500 x 3000 8506 12米 852 18米
2500 x 5000 8965 13米 899 20米
  <=30分钟 <=50分钟
7000 x 7000 16288 23米    
3000 x 6000 10995 22米 1102 33米
3400 x 4000 11991 27米 1200 42米
3400 x 7000 12674 30米 1269 47米
  >=1小时 >=2小时
10000 x 10000 24044 1小时    
5000 x 10000 19434 1.7小时 1945 2.4小时
6000 x 8000 22967 2.6小时 2298 3.9小时
6000 x 10000 23451 3.3小时 2347 4.8小时

大条目:输入系统中的条目长度为100位十进制数字
尺寸 典型解决方案 规模缩减解决方案
n x m(n x m) #溶液的
十进制数字
时间 #溶液的
十进制数字
时间
  <=10秒 <=1.5分钟
100 x 100 9990 5秒    
30 x 60 3005 3秒 301 29秒
40 x 100 4013 6秒 402 53秒
50 x 200 5030 9秒 504 87秒
  <=30秒 <=5分钟
200 x 200 20008 30秒    
70 x 200 7045 18秒 705 3米
80 x 200 8053 24秒 806 4米
80 x 400 8067 28秒 808 4米
  <=1分钟 <=10分钟
250 x 250 25021 44秒    
90 x 100 8988 34秒 899 6米
100 x 200 10068 41秒 1008 7米
110 x 200 11076 50秒 1109 9米
尺寸 典型解决方案 规模缩减解决方案
n x m(n x m) #溶液的
十进制数字
时间 #溶液的
十进制数字
时间
  <=15分钟 <=3.5小时
1000 x 1000 100386 13米    
200 x 400 20196 4米 2021 43米
300 x 400 30345 9米 3036 2.1小时
350 x 500 35426 13米 3544 3.2小时
  <=30分钟 <=9小时
1200 x 1200 120508 23米    
400 x 800 40510 18米 4053 4.5小时
450 x 900像素 45596 23米 4561 6.3小时
500 x 600 50593 29米 5061 8.4小时
  >=1小时 >=30小时
2000 x 2000 201071 1.3小时    
800 x 2000 81308 1.5小时 8133 30.5小时
1000 x 1500 101575 2.7小时
1500 x 2000 152559 7.9小时

下表列出了计算倒数的时间模p矩阵的行列式。测试环境是
CPU:PentiumM 1.6GHz,内存:1Gb,平台:GNU/Linux 2.4.26-20040424-patch2.4.26,编译器和链接器:gcc 3.3.3,GMP:4.1.3,ATLAS 3.6.0。

非奇异模p矩阵的逆矩阵,其中p约为20位长
尺寸 300 500 1000 2000 3000 5000 8000
时间 0.08秒 0.29秒 2.03秒 14.73秒 48.35秒 3.61米 15.08米

模p矩阵的行列式,其中p约为20位长
尺寸 300 500 1000 2000 3000 5000 8000
时间 0.03秒 0.11秒 0.73秒 5.13秒 16.65秒 1.23米 5.31米

[顶部]

下载

单击以下链接下载不同的源代码版本。

下载源代码后,使用命令解压缩文件
      tar xjvf iml-1.0.5.目标.bz2
并通过以下方式编译和安装库遵循中的安装说明安装文件中的iml-1.0.5标准目录。

要安装此软件,您需要预先安装ATLAS库和GMP库。

编译在以下主机上进行测试:使用gcc 3.3的i686-pc-linux-gnu,使用gcc 3.2和icc 8.0的ia64-unknown-gun-linux,使用gcc3.2的sparc-sun-solaris2.6,以及使用gcc 3.3.的i686-pc-cygwin。

[顶部]

报告Bug

如果您发现任何错误或遇到安装问题,请发送电子邮件至阿恩·斯托约翰恩astorjoh@uwaterloo.ca.

[顶部]

参考

Z.Chen和A.Storjohann, 基于BLAS的整数矩阵精确线性代数C库.符号与代数国际研讨会论文集《计算》(ISSAC’05),ACM出版社,2005年,第92-99页。

[顶部]

作者

陈竹良,主要作者,滑铁卢大学David R.Cheriton计算机科学学院
阿恩·斯托约翰恩David R.Cheriton学校滑铁卢大学计算机科学专业
科里·弗莱彻,滑铁卢大学

[顶部]

相关工作

项目有限字段线性代数子程序/包(FFLAS-FFPACK)提供套房有限域上的基本线性代数子程序。

[顶部]
有效的HTML 4.0! 有效的CSS! 上次更新日期:2014年7月30日