注意:以下内容仅适用于具有64位指针的系统。使用配置Octave--enable-64不能神奇地使32位系统具有64位地址空间。
在64位系统上,默认情况下,Octave使用64位整数对数组进行索引。如果配置脚本确定爆破库使用32位整数,则使用以下库的操作仅限于维度小于的数组2^{31}元素:
此外,以下库使用int
在内部,somaximum问题的大小总是有限的:
除了GLPK和Qhull,这些库也可以配置为使用64位整数,但大多数系统不提供以这种方式构建的包。如果您希望使用大型数组进行实验,以下信息可能会有所帮助。
要确定的整数大小爆破Octave使用的库,可以执行以下代码:
清除所有;N=2^31;##以下行需要大约8 GB的RAM!a=b=个(N,1,“单个”);c=a'*b
如果爆破库使用32位整数,将引发错误:
错误:整数维度或索引超出FortranINTEGER类型的范围
否则,如果爆破库使用64位整数,结果为:
c=2^31=2147483648
请注意,如果a和b不是从赋值的a ____ b
。进一步注意,数据类型single
具有大约23个二进制位的精度。在这个特定的例子中,没有舍入误差soccur。
通常,最好将所有这些库的版本都支持32位索引,或者所有这些库都必须支持64位索引。将64位索引库与32位索引库混合使用可能会导致不可预测的行为,包括可能丢失数据的程序崩溃。
以下说明是在x86_64 Debian系统上使用Octave和GCC 4.3.4的开发版本进行测试的,现在可能已经过时。请返回Octave错误跟踪器上的任何问题或更正。
下面列出的版本是用于测试的版本。如果这些包的新版本可用,您应该尝试使用它们,尽管可能存在一些差异。
所有库和头文件都将安装在的子目录中$prefix4
(您必须选择此目录的位置)。
两个库的参考版本都包含在参考中LAPACK 3.2.1赋值自http://www.netlib.org/.
OPTS
和角落
.
在Makeconf文件
FFLAGS
.
前缀
到安装树的顶级目录。制作solib
以创建一个共享库。进行安装
以安装库。将以下参数传递给制作
启用64位整数爆破库调用。在64位Windows系统上,使用-DLONGBLAS=“长-length
相反
CFLAGS='-DLONGBLAS=长'XXFLAGS='-NetBackup DLONGBLAS=长
Suitesparse生成文件不会生成共享库。在某些系统上,您可以通过执行以下简单操作来生成它们
top=对于*.a中的f,为$(pwd);执行mkdir tmp cd tmp ar vx/$f gcc-共享-o/${f%%.a}.so*.o cd$top rm-rf tmpdone
其他系统可能需要不同的解决方案。
使用配置时cmake
添加标志-DSUNDIALS_INDEX_SIZE=64.
FFLAGS
当运行configure时。制作
建造图书馆。进行安装
以安装库。欢迎就如何编制ATLAS提出建议。
二者都GLPK和Qhull使用int
内部,因此最大问题大小可能受到限制。
Octave的64位索引支持通过configure参数激活--enable-64.
./configure\LD_LIBRARY_PATH=“$prefix4/lib”\CPPFLAGS=“-I$prefix4/包含”LDFLAGS=”-L$prefix64/lib“\-启用-64
您必须确保除liboctavert/external/ranlib目录被编译为INTEGERS为8字节宽。如果您使用的是gfortran,配置脚本应该自动设置Makefile变量F77_寄存器_8_滞后
到-f默认整数-8。如果您正在使用另一个编译器,则必须自己设置此变量。您不应该在中设置此标志FFLAGS
,否则中的文件liboctavert/external/ranlib将被破解。
对于以下依赖项,可能不需要做任何特别的操作。如果你查找确实需要做一些事情,请提交一份错误返回。
版权所有 © 2024 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号