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

  • Post author:
  • Post category:其他




前言

换手机后,安卓手机就不怎么用了。经过一番调查,发现安卓手机是可以作为小服务器,搭建个人博客,当作终端使用的,甚至还可以用来跑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来进一步进行远程控制。



版权声明:本文为qq_40259141原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。