在安卓手机上并行运行Palabos程序

前言

换手机后,安卓手机就不怎么用了。经过一番调查,发现安卓手机是可以作为小服务器,搭建个人博客,当作终端使用的,甚至还可以用来跑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无法运行。
在安卓手机上并行运行Palabos程序_第1张图片

此时程序已正常运行,小米8的速度在4核并行运行下跑tutorial_1_1还是相当快的。后面我直接mv tmp /home/storage/downloads,然后在文件管理app上查看,效果还行。

在安卓手机上并行运行Palabos程序_第2张图片

其他

感兴趣的同学,可以通过openssh来进一步进行远程控制。

你可能感兴趣的:(android,Palabos)