|
本帖最后由 UW_0728. 于 2026-3-24 03:18 编辑 Uus/pMeC6H4-/キ 发表于 2026-3-23 16:50 因为INCLUDE_PATHS这个变量集不包含每个程序各自的include路径。通常这些路径会被包含在CPATH中,但我刚简单尝试了一下,从toolchain.env载入相应的CPATH环境变量后相应命令仍然无效,原因我不清楚。 可以效仿fftw3/openblas/scalapack里面的做法,先根据库文件位置(库文件可以被正确找到)定位到安装目录,到这里基本可以解决--with-elpa=system的问题。然后可以进一步,往INCLUDE_PATHS里面添加相应路径之后再进行后续操作,以添加其他程序可能需要的CFLAGS;但是一个问题在于ELPA的安装后文件架构挺复杂的,目录一套嵌一套(很烦人),还把头文件和module文件的目录分开,编译别的程序要用到的话还得把两个目录都写到include检查范围里面。 |
Uus/pMeC6H4-/キ 发表于 2026-3-21 15:06 可以直接ldd看cp2k的可执行文件,只要ldd的结果一样那就没问题。 |
UW_0728. 发表于 2026-3-21 21:41 现在 toolchain 生成的 setup 文件的环境变量应该还是有点问题。比如,我用 --with-elpa=install 等选项跑了一次 toolchain ,产生的 setup 文件包含下述内容,此后编译 CP2K 及运行都很成功。
但若还想装另一个版本的 CP2K ,在 source 上述 setup 文件后跑第二次 toolchain 时,用 --with-elpa=system 选项并不能成功找到已经安装的 ELPA 的路径,
|
Uus/pMeC6H4-/キ 发表于 2026-3-21 15:06 这些变量大多数主要是toolchain中编译后面的一些依赖库时需要,但对于编译CP2K本身应该用不到。至于是否可以跟CP_LIBS之类的一起排除掉,我不好说。 |
UW_0728. 发表于 2026-2-25 22:38 你好,之前我说“预计 setup 文件拆分与 modulefile 编写会比较复杂”是因为我不太清楚 setup 文件里哪些设置是必须写到 modulefile 的,现在有个 filter_setup 函数从零散的 setup_{package} 汇总到最终的 setup 文件里就好多了。但目前 setup 文件里除了各种 PATH 的添加,还有一些环境变量的设置如:
|
UW_0728. 发表于 2026-2-25 22:38 感谢指出 根据您的解读 用
完美克服了烦人的提示 |
| 参与人数Participants 1 | eV +2 | 收起 理由Reason |
|---|---|---|
|
| + 2 |
|
conda部分,我专门关注过反激活问题,尽力避免了conda被取消激活时的环境残留。 这个是lmod用的lua文件:
|
| 参与人数Participants 1 | eV +3 | 收起 理由Reason |
|---|---|---|
|
| + 3 | 牛! |
|
本帖最后由 UW_0728. 于 2026-3-5 01:04 编辑 ORCA 6结合OpenMPI 5一起用其实完全没有问题(起码结合5.0.6~5.0.10都正常),但是必须是自己编译的,系统包管理器自带的那个OpenMPI 5.0.2没法用 (补充原因:OpenMPI 5.0.x支持了更先进的UCX功能,这一功能在检测到已安装的ucx-devel包时会自动启用并成为默认选项,但是ORCA目前主要适配OpenMPI 4.1.x,因此与这一功能不兼容。系统dnf自带的5.0.2版本是包含了这一功能的,所以用它来运行ORCA会弹出一大堆所谓的报错提示,尽管这些提示并不会真的导致计算任务报错停止,只是计算速度会略慢一点;如果不安装系统自带的OpenMPI而选择自行编译,此时由于系统默认不装着ucx-devel,OpenMPI在配置和编译的时候就不会检测到和启用这个功能,因此也就不存在这一问题) 未来可以挑战把 CP2K 2026.1 的工具链做成 modulefiles 形式,以让其中的 OpenMPI 5 能与 ORCA 6.1.1 用的 OpenMPI 4.1.8 共存,预计 setup 文件拆分与 modulefile 编写会比较复杂。 其实你的文章已经提到了$LMOD_DIR/sh_to_modulefile这个命令(经典module中命令是module sh-to-mod bash),就可以用来处理这个:把source /path/to/cp2k/tools/toolchain/install/setup和几个针对CP2K的export PATH还有LD_LIBRARY_PATH指令放在一个bash脚本中,然后利用上述命令,就可以很方便地实现这个目的了 |
| 参与人数Participants 2 | eV +6 | 收起 理由Reason |
|---|---|---|
|
| + 5 | 谢谢 |
|
| + 1 | 谢谢 |
今天更新了一下正文第四节 ORCA 6.1.1 的 modulefile 的写法。旧版的 modulefile 长这样:
最后两行的 execute {} 要求在完成所有变量设定后执行 shell 命令,此处在加载时用 alias 设定 orca6 为 which 查到的可执行文件的完整路径、卸载时用 unalias 取消之。但是: 1. LMod 已经有原生的设置 alias 的指令 set_alias() 可用来定义 alias 因而不需要 execute 的命令; 2. 定义 alias 即要求输入命令后运行前扩展字符串,只适合于 interactive shell 而不会在 non-interactive shell 里生效(如使用 nohup & 把进程放到后台运行且忽略 SIGHUP 的场合)。更好的替代方案是定义 shell function 并用 bash 语法的 "$@" 传入所有选项,在 LMod 里用 set_shell_function() 来设置(见官方文档 Setting alias and shell functions 一节),正文按字符串连缀来写。 想在(无作业排队系统的)私有电脑上批量用 nohup 跑一批 ORCA 任务时,给每个输入文件写一个 run_orca.sh 脚本加载 modulefile 并启动 ORCA 程序,如
|
|
好奇一下,最近几天这帖的浏览量增加得出乎意料地快,是有谁在其他地方转了个指向这帖的链接吗? 有关 Gaussian/GaussView 再说一点,比如装到 /opt 下平时配备环境的习惯大概会编辑 ~/.bashrc 添加这样的指令
比如,看到 g16.profile 前面几行是这样的
又比如, g16.profile 里有这样的分支语句
特别注意,append_path 把新的路径加到变量末尾, prepend_path 把新的路径加到变量前头,在执行程序从 $PATH 搜索路径时是从前到后找、优先按前面找到的用,所以必须结合新路径的优先度考虑该用哪个。对于 WSL 的虚拟机而言,由于 $PATH 末尾包含了 Windows 系统的路径,所以应当改用 prepend_path 的写法。
|
| 我一般不用C:\Users\{username}\.wslconfig,而是通过WSL里面/etc/wsl.conf文件来设置一些东西。 |
手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图
GMT+8, 2026-4-24 20:14 , Processed in 0.231368 second(s), 28 queries , Gzip On.