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


致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 20 元,我们一周就能脱离亏损, 并在接下来的一年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利