SLISC 的使用和测试

                     

贡献者: addis

  • 本文处于草稿阶段。
预备知识 SLISC 库概述,在 Linux 上编译 C/C++ 程序

1. 直接使用头文件

   和 C++ 标准库一样,SLISC 一般无需编译。如果你不想修改 SLISC 源码,只需要把 SLISC 文件夹复制到项目文件夹中,并在 C++ 源码中使用相应的头文件即可。

   下载 SLISC 源码,创建 “SLISC 库概述” 中的 intro.cpp。注意如果 intro.cppSLISC 文件夹不在同一个目录,那么你需要修改 #include 中的相对路径,也可以用绝对路径。

   要编译,用 g++ intro.cpp -o intro.x。编译成功后,运行程序就得到输出结果

u = 
0   1   2   

a 有 2 行和 3 列, 共计 6 个元素。
1.1   0   4.4   
0   9.9   5.5
以及两个输出文件 data0.matbdata.matb

   另外也推荐使用 Jupyter Notebook 和 Cling,无需编译,交互运行代码。

2. 使用 64 位索引

   若使用默认选项,Long 类型的最大值(也就是数组最多的元素个数)是 $2^{31}-1 = 2147483647$。也就是 SLISC 只能处理大约 2.1GB 的 char 数组或者 16.8GB 的 double 数组。这在一般情况下是够用的,但如果要数组可能会更大,那么就不能定义该选项,且需要使用 64 位版本的头文件,位于 SLISC-64 目录下。我们可以直接把 SLISC-64/*.h 复制并覆盖到 SLISC 中。

3. 生成头文件

   注意如果头文件 SLISC/xxx.h 有对应的 SLISC/xxx.h.in 模板文件,那么这些头文件都是自动生成的。要重新生成 64 位版本的头文件,首先确保你的机器上安装了 octave 4.1 或以上的版本以及 make,然后在 SLISC 目录下运行 make [选项] h 即可。例如 SLISC 中的被生成的头文件是使用 make h 生成的,SLISC-64 中的则是使用 make opt_long32=false h 生成到 SLISC 并复制过去的。SLISC-64q 则使用 make opt_long32=false opt_quadmath=true h 生成,支持 4 精度浮点数

4. 编译测试

   SLISC 中几乎每个头文件都有对应的测试代码,在 test/test_xxx.cpp 中,一般对应同名的 SLISC/xxx.h。为了测试代码在你使用的环境(CPU 架构和操作系统)中能正常运行,强烈建议编译并运行测试。

   最小测试的编译命令为 make opt_min=true -j8,然后运行使用 ./main.x。这里的 -j8 代表使用 8 个进程并行编译,你也可以改为其他的数字,匹配你电脑 cpu 的核数即可。如果不使用 -j 选项,默认单线程编译,可能时间较长。

   如果你想测试其他非默认的编译选项,就先生成头文件 make [选项] h 生成头文件到 SLISC(也可以从对应的 SLISC-xxx 把头文件覆盖过去,然后用 make [选项] -j8。完成后同样运行 ./main.x 即可测试。

   以下列出一些常用选项,注意只有改变 opt_long32opt_quadmath 需要重新生成头文件。

直接下载依赖库(推荐)

  

未完成:添加网盘链接

   可以用以下选项开始或关闭第三方库。

用包管理程序安装依赖库(不推荐)

   除了直接下载,也可以用包管理程序如 apt 安装依赖库,但有的库会确实 64 位版本或者静态库文件等。例如在 Ubuntu 中可以使用以下命令:

apt -y update && apt -y upgrade
apt install -y vim git make g++ gdb gfortran libarpack++2-dev \
liblapacke-dev libsqlite3-dev libgmp-dev libflint-arb-dev \
libflint-dev libgsl-dev libboost-filesystem-dev

                     

© 小时科技 保留一切权利