导言

  • 硬件:个人电脑(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版本的问题。不过总体上这个安装方法是正确的,跑一些简单代码还是可以的。至于一些错误的解决方法之后会更新。