前言
换手机后,安卓手机就不怎么用了。经过一番调查,发现安卓手机是可以作为小服务器,搭建个人博客,当作终端使用的,甚至还可以用来跑Openfoam。跑Openfoam这个project的网址是:https://cfd.fossee.in/case-study-project/case-study-run/208
甚是有趣,由此我便实验用手机跑Palabos。
实现步骤
测试机型:小米8
软件安装
实现的原理也是比较直接,打开手机浏览器搜索Termux,去他们官网找到app安装。
命令行设置
打开之后,进入命令行
输入
$ pkg update
$ pkg upgrade
$ termux-setup-storage
更新并获取访问内存的权限。
下载Palabos
输入以下命令下载palabos软件:
$ pkg install git
$ git clone https://gitlab.com/unigespc/palabos.git
storage是获取访问内存权限之后才出现的,会链接几个手机的文件夹。本想着在download文件夹下安装palabos,后续在其他文件管理app里打开看结果。但是查了一下发现这样受权限影响,可能会运行不了,所以就没这样做。
新版本的palabos已经开始使用cmake了,相关并行和图片处理的软件包需要安装一下:
$ pkg install cmake
$ pkg install openmpi
$ pkg install imagemagick
$ pkg install libhdf5
$ pkg install openssh
安装openssh是因为termux如果没有ssh的话,openmpi会报错:the value of the mca parameter plm_rsh_agent was set to a path。
可通过下面两行查看make和clang是否安装,如果没有被安装则需要安装一下
$ clang --version
$ make --version
需要安装proot,然后输入以下代码,否则运行程序会失败,如果是单核运行会显示bad system call。
$ pkg install proot
$ termux-chroot
解决方法来源于:
https://www.bilibili.com/read/cv5220065?from=articleDetail
但是呢,这样做会报错:
CANNOT LINK EXECUTABLE “/system/bin/sh”: library “/data/data/com.termux/files/usr/lib/libtermux-exec.so” needed or dlopened by “/system/bin/sh” is not accessible for the namespace “(default)”
程序无法正常保存结果,经过查询后续需要输入unset LD_PRELOAD才可继续运行。
编译和执行程序
那么接下来就可以开始执行了程序了,我进了的是tutorial_1的build文件夹
$ cmake …
$ make
感觉make的速度不是很慢。编译完成后,输入
$ cd …
$ unset LD_PRELOAD
$ mpirun -np 4 -oversubscribe tutorial_1_1
这里如果不使用oversubscribe的话openmpi无法运行。
此时程序已正常运行,小米8的速度在4核并行运行下跑tutorial_1_1还是相当快的。后面我直接mv tmp /home/storage/downloads,然后在文件管理app上查看,效果还行。
其他
感兴趣的同学,可以通过openssh来进一步进行远程控制。