首页 / 资讯中心 / 文章详情

OpenShell完全指南:Windows开始菜单替换与英伟达量子化学计算库

OpenShell完全指南:Windows开始菜单替换与英伟达量子化学计算库 ★ FEATURED ARTICLE
1. 从OpenShell这个名字说起它到底是个什么东西第一次看到OpenShell这个词很多人会下意识地把它和Shell脚本、命令行终端联系起来。这个直觉不算错但也不完全对。OpenShell在业界其实指向两个截然不同但都相当有分量的东西一个是Windows平台上那个让无数人找回经典开始菜单的开源外壳程序另一个是英伟达推出的用于量子化学计算的GPU加速库。这两个东西同名不同命服务的人群、解决的问题、技术栈完全不在一个频道上。我之所以要在一开始就把这件事说清楚是因为我见过太多人搜OpenShell怎么用结果点进去发现讲的是量子化学一脸懵地退出来。所以这篇内容我打算把两个方向都讲透但重点会放在更大众、更容易上手、也更容易踩坑的那个方向——也就是Windows下的OpenShell外壳程序。量子化学那个OpenShell我会在后面的章节里单独拎出来讲因为它的受众虽然窄但一旦用上就是刚需而且配置过程里的坑一点都不比前者少。先给完全没接触过的朋友一个最直白的定义Windows下的OpenShell是一个开源项目它的核心作用是替换Windows 10和Windows 11那个被很多人吐槽的开始菜单把Windows 7时代那种经典的两栏式开始菜单找回来。你可以把它理解成给开始菜单换了一层皮但这层皮不是简单的美化而是重新实现了整个开始菜单的交互逻辑。它支持高度自定义从菜单的圆角弧度到每一项显示什么内容几乎都能调。适合谁用适合那些对Windows 11开始菜单的推荐区域、搜索栏、居中布局感到不适应的用户也适合喜欢折腾系统外观、追求效率的进阶玩家。而英伟达的OpenShell则是另一回事。它是一个面向量子化学和材料科学的计算库全称里带着GPU加速的基因主要用来做密度泛函理论DFT之类的计算。它的用户群体是科研人员、计算化学方向的研究生、做材料模拟的工程师。这个库的安装和配置涉及CUDA、MPI、Python环境等一系列依赖坑主要集中在版本匹配和编译环节。两个OpenShell一个管你的桌面体验一个管你的科研计算。下面我分两条线来讲每条线都给出完整的实操路径和我自己踩过的坑。2. Windows OpenShell把开始菜单改回你熟悉的样子2.1 为什么有人宁愿装第三方工具也不用原生开始菜单Windows 11的开始菜单是微软这些年争议最大的界面改动之一。它把开始菜单放在屏幕中间取消了动态磁贴加了一个占据大量空间的推荐区域还把很多常用功能藏进了二级菜单。微软的出发点是好的想让界面更简洁、更现代但实际用下来很多从Windows 7或Windows 10一路用过来的用户会觉得效率反而下降了。你打开开始菜单想找一个刚装好的软件结果先看到一堆最近打开的文件推荐还得往下翻才能找到所有应用列表。OpenShell解决的正是这个痛点。它不改变系统的底层逻辑只是在开始菜单这个交互层做替换。装完之后你点开始按钮弹出来的是经典的左侧程序列表加右侧功能入口的两栏布局。这个布局的好处是信息密度高所有东西一眼可见不需要滚动不需要搜索鼠标移动距离短。对于每天要频繁启动各种工具的人来说这种效率提升是实打实的。还有一个容易被忽略的点OpenShell对键盘操作的支持非常完善。你可以用方向键在菜单里导航用回车启动程序用右键调出上下文菜单。这套操作逻辑和Windows 7时代完全一致肌肉记忆可以直接迁移。相比之下Windows 11原生开始菜单的键盘导航逻辑改了不少老用户需要重新适应。2.2 安装之前必须确认的三件事在动手装OpenShell之前有三件事我建议你先确认否则装完可能会遇到一些莫名其妙的问题。第一件事是确认你的系统版本和架构。OpenShell目前支持Windows 7、Windows 8、Windows 10和Windows 11但不同版本对应的安装包不一样。你需要确认自己是64位还是32位系统然后下载对应的安装程序。虽然现在绝大多数人用的都是64位系统但如果你手头有老机器这一步不能省。第二件事是确认你有没有装过其他开始菜单替换工具。比如StartIsBack、StartAllBack、Classic Shell这些。OpenShell和Classic Shell其实是同一个血脉Classic Shell停止维护后OpenShell接手了它的代码继续开发。如果你之前装过Classic Shell建议先卸载干净再装OpenShell否则可能出现菜单项冲突或者设置不生效的情况。第三件事是确认你的杀毒软件或系统安全策略会不会拦截。OpenShell需要注入到资源管理器进程里才能接管开始菜单这个行为在某些安全软件看来是可疑的。我遇到过装完之后开始菜单没变化查了半天发现是安全软件把OpenShell的注入行为拦了。解决办法是把OpenShell的安装目录加入白名单或者临时关闭安全软件再装。提示下载OpenShell一定要去它的官方发布页面不要从各种软件下载站拿。那些站点的安装包经常被捆绑一堆东西而且版本可能很老。2.3 安装过程中的选项该怎么选OpenShell的安装向导里会有几个选项第一次装的人可能会犹豫。我逐个说一下我的选择和建议。安装类型一般选典型就行它会安装所有核心组件。如果你选自定义会看到几个组件的勾选框包括开始菜单、资源管理器增强、经典IE工具栏等。我的建议是只勾开始菜单和资源管理器增强其他的按需选择。资源管理器增强主要是给文件管理器加一个经典工具栏如果你不需要可以去掉。安装路径默认在C盘的Program Files下这个不用改。改路径虽然可以但没必要而且万一改到一个带空格的路径下某些设置可能会出问题。安装完成后会有一个立即运行的选项勾上。第一次运行的时候OpenShell会问你要不要导入Classic Shell的设置如果你之前没用过Classic Shell选否就行。装完之后你点开始按钮应该就能看到经典菜单了。如果没看到先别急往下看排查部分。2.4 设置界面里真正值得调的参数OpenShell的设置界面选项非常多第一次打开可能会觉得眼花缭乱。我挑几个真正影响使用体验的参数来讲其他的保持默认就行。菜单样式在开始菜单样式选项卡里你可以选择经典单栏、经典双栏或Windows 7样式。我个人推荐Windows 7样式它在双栏的基础上做了视觉优化看起来更现代一些同时保留了所有经典元素。如果你追求极致的简洁可以选经典单栏所有东西都在一列里适合小屏幕。程序列表的排序和显示在菜单外观里你可以控制程序列表是否显示图标、图标大小、是否按字母分组。我建议开启按字母分组这样找程序的时候可以快速定位。图标大小选中号就行太大占空间太小看不清。搜索框的行为OpenShell的搜索框默认是搜索程序和设置。你可以把它改成同时搜索文件和文件夹这样它就能当一个小型启动器用。不过要注意搜索文件会慢一些如果你硬盘里文件很多可能会感觉到延迟。快捷键在键盘选项卡里你可以设置呼出开始菜单的快捷键。默认是Win键但你可以改成其他组合。我见过有人把Win键改成CtrlEsc因为他的键盘Win键坏了。这个功能很实用。皮肤和主题OpenShell自带几套皮肤也可以从网上下载第三方皮肤。皮肤主要影响菜单的颜色、边框、字体。如果你喜欢折腾可以去找一些仿Windows 7 Aero或者仿macOS的皮肤。不过要注意有些第三方皮肤可能和最新版OpenShell不兼容装之前先看说明。2.5 装完之后开始菜单没反应排查链路完整复盘这是最常见的问题我自己遇到过两次帮别人远程处理过好几次。下面是我总结的排查链路按顺序走一遍基本都能解决。第一步确认OpenShell的进程有没有在运行。打开任务管理器看有没有OpenShell或StartMenu相关的进程。如果没有说明主程序没启动。这时候去安装目录手动运行一下主程序看有没有报错。第二步确认资源管理器有没有被注入。OpenShell需要把它的模块加载到explorer.exe里。你可以在任务管理器里找到explorer.exe右键看属性看有没有加载OpenShell的模块。如果没有说明注入失败。注入失败最常见的原因是安全软件拦截把OpenShell目录加白名单然后重启资源管理器。第三步检查系统设置里有没有冲突项。Windows 11有一个开始菜单设置里面有一些选项可能会和OpenShell打架。比如在开始菜单中显示推荐这个选项如果开着可能会覆盖OpenShell的菜单。把它关掉试试。第四步检查是不是装了两个开始菜单工具。前面说过Classic Shell和OpenShell不能共存。如果你之前装过Classic Shell去控制面板把它卸载然后重启电脑。第五步如果以上都没问题试试重置OpenShell的设置。在设置界面里有一个备份/恢复选项卡点重置所有设置然后重启资源管理器。这个操作会把你的自定义设置清掉但能解决大部分配置错乱导致的问题。注意重启资源管理器的方法是在任务管理器里找到explorer.exe右键选重新启动。或者用命令提示符运行taskkill /f /im explorer.exe start explorer.exe。2.6 那些官方文档不会告诉你的使用技巧用久了之后我积累了一些官方文档里没写、但特别实用的小技巧这里分享几个。第一个技巧是关于菜单项的固定。OpenShell允许你把常用程序固定到菜单顶部但固定的时候有个细节如果你固定的是一个快捷方式而这个快捷方式指向的路径变了固定项就会失效。解决办法是固定程序的本体exe而不是快捷方式。这样即使程序更新了路径只要exe位置没变固定项就一直有效。第二个技巧是关于搜索的。OpenShell的搜索支持拼音首字母比如你想搜记事本输入jsb就能搜到。这个功能默认是开的但如果你发现搜不到去设置里检查搜索选项卡下的启用拼音搜索有没有勾上。第三个技巧是关于多显示器的。如果你用多个显示器OpenShell默认只在主显示器的开始按钮上生效。如果你想让副显示器的开始按钮也调出OpenShell菜单需要在设置里开启在所有显示器上显示开始菜单。这个选项藏得比较深在开始菜单样式选项卡的底部。第四个技巧是关于备份的。OpenShell的所有设置都存在注册表里具体位置是HKEY_CURRENT_USER\Software\OpenShell\StartMenu。你可以导出这个注册表项作为备份换电脑或者重装系统之后直接导入所有设置就回来了。这个比在界面里一个个调快多了。3. 英伟达OpenShell量子化学计算的GPU加速之路3.1 这个OpenShell解决的是什么问题说完Windows那个咱们换个频道聊聊英伟达的OpenShell。这个东西的全称是NVIDIA OpenShell是一个开源的量子化学计算库。它的核心价值在于把原本跑在CPU上的密度泛函理论计算搬到GPU上跑利用CUDA的并行计算能力大幅缩短计算时间。密度泛函理论是计算化学和材料科学里最常用的方法之一用来预测分子和材料的电子结构、能量、反应活性等性质。传统的DFT计算非常吃CPU一个中等大小的分子体系用CPU跑可能要几个小时甚至几天。OpenShell通过GPU加速可以把同样的计算压缩到几十分钟甚至几分钟。对于需要做大量筛选和迭代的研究工作来说这个速度提升是革命性的。OpenShell的另一个特点是它和Python生态结合得很好。它提供了Python接口可以很方便地和PySCF、ASE这些常用的计算化学库配合使用。这意味着你不需要写大量的C或CUDA代码用Python就能调用GPU加速的DFT计算。适合谁用计算化学、材料科学、凝聚态物理方向的研究生和科研人员。如果你正在做分子模拟、催化剂筛选、电池材料设计这类工作而且手头有NVIDIA的GPU那OpenShell值得花时间折腾一下。3.2 环境准备CUDA、驱动、Python版本的三角关系OpenShell的安装比Windows那个复杂得多核心难点在于版本匹配。它依赖CUDACUDA依赖显卡驱动Python接口又依赖特定版本的Python和相关的科学计算库。这四个东西的版本必须互相兼容错一个就可能编译失败或者运行报错。先说显卡驱动。你的NVIDIA显卡驱动版本必须满足OpenShell所要求的CUDA最低版本。比如OpenShell某个版本要求CUDA 11.0以上那你的驱动就得支持CUDA 11.0。查驱动支持的最高CUDA版本的方法是运行nvidia-smi输出右上角会显示CUDA Version: xx.x。这个版本是你驱动能支持的最高CUDA版本不是说你必须装这个版本而是你装的CUDA不能超过这个版本。再说CUDA。OpenShell通常要求CUDA 11.x或12.x具体看版本。我建议装CUDA 11.8因为这个版本比较稳定和大多数科学计算库的兼容性也好。装CUDA的时候如果你不需要用C写CUDA代码可以只装runtime不装完整的toolkit这样能省不少空间。然后是Python。OpenShell的Python接口对Python版本有要求一般支持3.8到3.11。我建议用3.10这个版本在科学计算社区里支持最广泛。不要用太新的版本比如3.12很多库还没跟上。也不要用太老的比如3.7有些新特性用不了。最后是相关的Python库。你需要装numpy、scipy、pyscf这些。注意numpy的版本要和CUDA版本匹配如果你装的是CUDA 11.8那numpy最好用1.24或1.25太新的numpy可能和CUDA的某些接口不兼容。提示强烈建议用conda来管理Python环境。创建一个独立的环境比如conda create -n openshell python3.10然后在里面装所有依赖。这样即使搞乱了删掉环境重来就行不会影响系统的Python。3.3 从源码编译OpenShell的完整流程OpenShell不一定有现成的pip包很多时候需要从源码编译。编译过程不算特别复杂但步骤比较多我按顺序列一下。第一步克隆代码仓库。用git把OpenShell的源码拉到本地。注意要选对分支不同分支对应的CUDA版本可能不一样。一般选最新的release分支。第二步安装编译依赖。你需要cmake、gcc或clang、以及CUDA toolkit。在Ubuntu上可以用apt装这些。在Windows上建议用WSL2因为Windows原生编译CUDA项目坑比较多。第三步配置编译选项。OpenShell用cmake管理编译你需要指定CUDA的路径、Python的路径、以及一些开关。比如-DCMAKE_CUDA_COMPILER/usr/local/cuda/bin/nvcc指定CUDA编译器-DPYTHON_EXECUTABLE$(which python)指定Python解释器。这些路径一定要写对写错了cmake会报找不到。第四步执行编译。用make -j$(nproc)并行编译能快不少。编译过程中如果报错最常见的原因是CUDA版本不匹配或者gcc版本太新。CUDA对gcc版本有要求比如CUDA 11.8最高支持gcc 11如果你系统默认gcc是12就会报错。解决办法是装一个gcc 11然后在cmake里指定用它。第五步安装Python接口。编译完成后运行make install或者pip install .来安装Python包。装完之后在Python里import openshell试试如果没报错就成功了。3.4 编译报错大全我遇到过的五个典型问题编译OpenShell的过程中我踩过的坑不少这里挑五个最典型的讲一下。第一个问题nvcc fatal: Unsupported gpu architecture compute_xx。这个错误说明你的CUDA版本不支持你指定的GPU架构。解决办法是查一下你的显卡对应的compute capability然后在cmake里把-DCMAKE_CUDA_ARCHITECTURES改成正确的值。比如RTX 3080是compute_86RTX 4090是compute_89。第二个问题error: identifier xxx is undefined。这种错误通常是CUDA版本和代码不匹配导致的。OpenShell的某些代码用了新版本CUDA才有的API如果你的CUDA版本太老就会报这个。解决办法是升级CUDA或者换一个和你的CUDA版本匹配的OpenShell分支。第三个问题ImportError: libcudart.so.xx: cannot open shared object file。这个错误发生在运行阶段说明Python找不到CUDA的运行时库。解决办法是把CUDA的lib目录加到LD_LIBRARY_PATH里或者用conda install cudatoolkit装一个conda版本的CUDA运行时。第四个问题编译到一半内存不足被kill。CUDA编译很吃内存特别是并行编译的时候。如果你的机器内存小于16GB建议把make -j的并行数调小比如make -j4或者干脆用make -j1慢慢编。第五个问题Python接口装上了但import报错提示找不到某个符号。这通常是ABI不兼容导致的。你的Python可能是用某个版本的gcc编译的而OpenShell是用另一个版本编译的两者的C ABI不一致。解决办法是用conda装Python因为conda的Python用的是统一的工具链ABI兼容性更好。3.5 跑通第一个算例从水分子到催化剂表面编译成功之后建议先跑一个最简单的算例验证环境。水分子是最经典的测试体系计算量小结果容易验证。你可以用OpenShell的Python接口写一个简单的脚本计算水分子的基态能量。脚本大概长这样import openshell from openshell import dft mol openshell.Molecule() mol.add_atom(O, [0.0, 0.0, 0.0]) mol.add_atom(H, [0.0, 0.757, 0.587]) mol.add_atom(H, [0.0, -0.757, 0.587]) result dft.calculate(mol, functionalpbe, basisdef2-svp) print(result.energy)这个脚本会调用GPU做一次DFT计算输出水分子的能量。如果跑通了说明环境没问题。你可以把结果和文献里的值对比一下PBE/def2-SVP级别下水分子能量大概在-76 Hartree左右。跑通水分子之后可以逐步增加体系复杂度。比如算一个甲烷分子再算一个苯环最后算一个小的金属团簇。每增加一个体系观察计算时间和GPU占用率的变化。这样你能对自己的硬件性能有一个直观的认识。对于做催化研究的人来说下一步可能是算一个表面吸附体系。比如一个CO分子吸附在Pt表面上。这个体系的计算量比水分子大几个数量级但OpenShell的GPU加速能让你在可接受的时间内拿到结果。注意表面体系需要设置周期性边界条件OpenShell支持k点采样具体设置方法参考文档里的周期性计算部分。3.6 性能调优让GPU真正跑满OpenShell装好之后默认设置不一定能发挥GPU的全部性能。有几个参数可以调调好了能明显缩短计算时间。第一个是批处理大小。OpenShell在处理多个分子或者多个k点时可以设置批处理大小。批处理越大GPU利用率越高但显存占用也越大。你需要根据自己显卡的显存来调。比如8GB显存的卡批处理设到32或64比较合适24GB的卡可以设到128甚至256。第二个是精度设置。OpenShell支持单精度和双精度计算。单精度快很多但精度可能不够。对于大多数DFT计算双精度是必须的因为能量差往往在毫哈特里级别单精度会引入太大误差。但如果你只是做粗略的筛选可以试试单精度速度能快一倍以上。第三个是GPU和CPU的协同。OpenShell支持把一部分计算放在CPU上一部分放在GPU上。如果你的CPU核心多可以把一些不擅长并行的部分交给CPUGPU专注做矩阵运算。这个需要根据具体体系来调没有通用最优解。第四个是显存管理。OpenShell在计算大体系时可能会爆显存。解决办法是开启显存池化或者把体系分块计算。分块计算会引入一些误差但能让你在有限的显存下算更大的体系。注意调这些参数的时候建议用一个小体系做基准测试记录不同参数下的计算时间和结果精度。找到速度和精度的平衡点之后再用到大体系上。4. 两个OpenShell的共性开源项目的使用哲学4.1 为什么开源工具总在配置这一步卡住人不管是Windows的OpenShell还是英伟达的OpenShell它们有一个共同点功能本身很强大但配置过程对新手不友好。Windows那个还好有图形界面点几下就行。英伟达那个就麻烦了命令行、编译、版本匹配每一步都可能出错。这其实是开源项目的一个普遍现象。开源项目的开发者通常是工程师或科研人员他们关注的是功能实现而不是用户体验。文档往往写得比较简略默认使用者有一定的技术背景。这就导致一个结果会用的人觉得很简单不会用的人卡在第一步就放弃了。我的经验是面对这类工具不要指望一次成功。做好心理准备把配置过程当成一个学习过程。每解决一个报错你对这个工具的理解就深一层。而且很多报错在网上都能搜到因为你不是第一个遇到的人。4.2 版本锁定避免昨天还能跑今天就不行开源项目另一个让人头疼的问题是版本漂移。你今天装好的环境过两个月可能因为某个依赖库更新了就跑不起来了。这在英伟达OpenShell这种依赖链很长的项目里尤其常见。解决办法是版本锁定。具体做法是在你环境配好、跑通之后把所有依赖的版本号记录下来。Python环境用pip freeze requirements.txt导出conda环境用conda env export environment.yml导出。CUDA和驱动的版本也记下来。下次再配环境的时候严格按照记录的版本装不要用最新版。对于Windows的OpenShell版本锁定相对简单因为它是独立的可执行程序不依赖外部库。你只需要把安装包保存好下次直接装同一个版本就行。4.3 社区的力量遇到问题该去哪里找答案开源项目的社区支持很重要。Windows OpenShell有活跃的论坛和GitHub issue区你遇到的问题大概率有人遇到过。英伟达OpenShell的社区相对小一些但GitHub上的issue和讨论区也值得翻一翻。提问的时候有几个技巧。第一把完整的报错信息贴出来不要只贴最后一行。第二说明你的环境操作系统版本、CUDA版本、Python版本、显卡型号。第三说明你已经尝试过哪些解决方法。这样别人才知道怎么帮你。还有一个容易被忽略的资源是项目的测试用例。OpenShell的源码里通常有测试目录里面的测试脚本展示了正确的调用方式。如果你不知道怎么用某个功能去看对应的测试用例比看文档还直接。5. 我个人的使用体会与几个实用建议Windows OpenShell我用了三年多从Windows 10用到Windows 11中间换过两次电脑每次都是装完系统第一件事就装它。英伟达OpenShell我用了一年多主要是做小分子的DFT计算GPU是一块RTX 3090。这两个工具给我的感受是它们都解决了一个具体的、真实存在的问题而且解决得不错。对于Windows OpenShell我的建议是不要过度自定义。我见过有人把菜单改得面目全非结果自己都找不到东西了。保持一个接近默认的配置只调几个真正影响效率的参数这样最稳妥。另外定期备份注册表设置换电脑的时候能省很多事。对于英伟达OpenShell我的建议是先用conda把Python环境管好再动CUDA和编译。很多人一上来就折腾CUDA结果Python环境一团糟最后分不清是哪个环节出的问题。先把Python环境隔离好再一步步往上搭出问题的时候容易定位。最后分享一个小技巧如果你同时用这两个OpenShell注意不要在同一个终端里混淆命令。Windows那个是图形程序英伟达那个是Python库两者没有任何关系。我见过有人在Python里import openshell失败然后去检查Windows OpenShell的安装完全找错了方向。记住它们只是重名而已。
阅读完成 · 觉得有帮助?
咨询建站