导言

  • 硬件:个人电脑(i5-8300H,32G,1050TI),学校的超级计算机,研究室的工作站。
  • 资料来源:哔哩哔哩/YouTube,SegmentFault

应用方向偏物理学背景的数据分析,但是一切都是0基础开始的。Python基础入门我是通过在线学习进行的:https://vitu.ai/

在超级计算机上配置meep

设备:JAIST 超级计算机

因为要做一些FDTD/电磁学仿真,但是用个人PC又很蛋疼,所以就选择在超算上搭一个meep的仿真环境,这样会非常省时间。我所参考的是MEEP官方文档https://meep.readthedocs.io/en/latest/Installation/

miniconda 的安装

在自己的目录下建立一个python文件夹,学校超算已经预装了python3的环境,所以只要照着官方文档来安装就好了。

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh

下载miniconda的包,是python3版本的。然后

bash miniconda.sh -b -p <desired_prefix>

注意这里的是要解压的目录,要自己设定!,这里我放到python下面的meep。
之后

export PATH=<desired_prefix>/bin:$PATH

会报错

export: command not found

难道我的SHELL有问题??所以先查看SHELL信息

echo $SHELL

返回

/bin/tcsh

原来是tcsh不是bash!!怪不得报错。在这种情况下,直接回到本人账户目录下,手动添加path信息到.cshrc文件里就行了

vim ~/.cshrc

但是我多次测试之后还是无法执行,可能是因为账户权限限制导致(另外学校超算的SHELL为什么是tcsh而不是bash啊orz),就只能手动用setenv命令执行了

setenv PATH "<desired_prefix>/bin"
setenv PATH <desired_prefix>/bin:$PATH

之后就成功了,缺点是估计下次使用conda命令时要重新手动执行一下这个命令。然后创建一个名字为mp的环境,在里面安装meep。这里的mp可以是任意名字的

conda create -n mp -c chogan -c conda-forge pymeep

然后就是漫长的安装过程了。安装好之后突然跳出这么一个错误:

Exception('No compatible shell found!')

没有管,继续

conda activate mp

结果报错了!提示用conda init来指定shell。
看来是SHELL的选择问题,只能手动来了,为了方便,我选择tcsh,所以输入

conda init tcsh
exec /bin/tcsh -l

然后激活mp这个环境

conda activate mp

没有报错,并且目录前显示(mp),说明激活成功!!之后就应该可以使用了,但是为了方便使用,直接装一个Jupyter比较好,这里我也是参考官方的文档https://jupyter.org/install

在这个miniconda的目录下执行:

conda install -c conda-forge jupyterlab

之后就是漫长的安装与等待,有时会提示让升级conda的版本,这个是可以忽略的jupyterlab是jupyter notebook的下一代产品(替代品),因此我也就不安装jupyter notebook了。虽然也可以用pip命令来安装,但是要配置PATH太过复杂了所以就用conda命令了。在安装完之后,执行:

jupyter lab

就会跳出一个浏览器窗口,在里面可以使用jupyter lab了。

但是,在使用时发现找不到包!!可是conda list是有包的!
于是

conda search pymeep

返回

Loading channels: done
No match found for: pymeep. Search: *pymeep*

PackagesNotFoundError: The following packages are not available from current cha                                                                      nnels:

  - pymeep

Current channels:

  - https://repo.anaconda.com/pkgs/main/linux-64
  - https://repo.anaconda.com/pkgs/main/noarch
  - https://repo.anaconda.com/pkgs/r/linux-64
  - https://repo.anaconda.com/pkgs/r/noarch

To search for alternate channels that may provide the conda package you're
looking for, navigate to

    https://anaconda.org

and use the search bar at the top of the page.

解决方法是配置一下conda,输入

conda config --append channels conda-forge

这个时候

python -c 'import meep'

就不会报错了,说明总体上是安装成功了,且能运行。但是可能会有其他问题,如

AttributeError: module 'meep' has no attribute 'Vector3'

但是我用同样的方法在虚拟机上安装,跑同样的代码就没有出现这个问题。很可能是超算上python版本的问题。不过总体上这个安装方法是正确的,跑一些简单代码还是可以的。至于一些错误的解决方法之后会更新。

不过终究还是要用的,所以我尝试在工作站(DELL PowerEdge T620)上通过安装Linux for Windows 然后用上述方法进行安装,毕竟这个工作站的配置也不算低了,勉强能用。虽然因为不知名原因IEER1的问题一直解决不了(即使毫无大碍)。

关于WSL的安装与设置方法我是参考这里来弄的:https://zhuanlan.zhihu.com/p/61542198

开启Ubuntu之后先对vim进行美化,毕竟是要给老板展示装逼用的….具体的就不说了,代码如下:

mkdir .vim
cd .vim
git clone https://github.com/tomasr/molokai.git
cp -rf molokai/colors/ ./colors
vim vimrc

打开vim之后添加如下代码,然后:wq退出

colorscheme molokai

之后创建一个meep文件夹,然后安装miniconda,由于这里的shell是默认bash的,因此直接copy很酸爽。命令依次如下:

mkdir meep
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
bash miniconda.sh -b -p miniconda   //这里我解压到miniconda文件夹里
export PATH=/root/meep/miniconda/bin:$PATH  //设置PATH变量

之后就是安装meep的步骤了,和上述方法也是完全一样的。命令依次如下:

conda create -n mp -c chogan -c conda-forge pymeep //创建名为mp的虚拟环境以安装pymeep包
conda init bash  //配置shell
exec /bin/bash  //配置shell
conda activate mp //激活环境

之后我在该环境下安装jupyterlab

conda install -c conda-forge jupyterlab

但是在打开jupyterlab的时候出现报错

 Running as root is not recommended. Use --allow-root to bypass.

解决方法是:

jupyter notebook --generate-config --allow-root

然后vim生成的配置文件,之后

#c.NotebookApp.allow_root = False  //去掉#,并修改成True即可解决root权限运行的问题

为了啊wsl当中合理使用不报错,最好是使用这个命令然后手动复制地址到浏览器!

jupyter-notebook --no-browser

但是配置之后,meep还是无法正常使用orz…这里做一个统计,在超算,个人电脑的虚拟机上用上述方法安装,都是成功并且能跑一些简单代码的。而在工作站wsl上是不成功的…我放弃了…
但是!!!!在我重新创建了一个虚拟环境之后,所有指令又都能用了!!!一切又都正常了!!!!真是搞不懂啊!!!但好歹是成功了!!