TypechoJoeTheme

MetMan's Blog

网站页面
2024-05-27

ecBuild构建工具介绍

ecBuild构建工具介绍
ecBuild是ECMWF基于CMake构建软件定制的一组CMake宏和函数,通过封装和增加参数检查等方式让CMake使用更加简单方便。项目地址:https://github.com/ecmwf/ecbuild安装使用由于ecBuild是CMake宏,不需要编译安装,只需要下载源代码,设置好ecbuild的PATH路径。$ git clone https://github.com/ecmwf/ecBuild $ vi ~/.bashrc export PATH=/path/to/ecbuild/bin:$PATH命令ecbuild是cmake命令的封装脚本,调用$ ecbuild $SRC_DIR等价于$ cmake -DCMAKE_MODULE_PATH=$ECBUILD_DIR/cmake $SRC_DIR宏定义在CMakeLists.txt文件中直接使用ecBuild预定义好的CMake宏。添加编译器编译选项ecbuild_add_c_flags添加C编译选项CMAKE_C_FLAGS,支持编译选项支持检测。对应的宏文件ecbuild/cmake/ecbuild_add_...
2024年05月27日
121 阅读
0 评论
2024-05-21

搭建个人chatgpt网站

搭建个人chatgpt网站
由于某些原因,我们不能直接使用ChatGPT服务,如果希望不用魔法直接使用ChatGPT服务,可以考虑部署一个个人chatgpt网站。准备工作OpenAI apikey (最简单方法:淘宝)github账号vercel账号(直接使用github账号)Cloudflare账号域名(随便注册一个,挺便宜的)Vercel部署进入github项目ChatGPT-Next-Web主页,点击Deploy黑色图标点击图标后会进入vercel网站开始部署。点击Create按钮,设置环境变量后点击Deploy部署服务。OPENAI_API_KEY 使用OpenAI服务的凭证CODE 相当于网站密码,设置防止被其他人滥用部署需要几分钟,部署完成后,可以设置域名。比如设置域名chat.wetwan.xxx在Cloudflare网站上对该域名进行DNS设置,设置CNAME信息,并打开Cloudflare代理。过几分钟后在浏览器键入你设置的域名,看是否成功跳转到以下页面。如果前面设置了CODE环境变量,这里需要登录才能正常使用。试试效果吧。写在最后当我开始愉快使用时,网站很快被标记为不安全站点,不知道是...
2024年05月21日
108 阅读
0 评论
2024-05-21

Shell脚本检查工具ShellCheck

Shell脚本检查工具ShellCheck
ShellCheck是一个用于bash/sh shell脚本的静态分析工具,可以辅助检查脚本语法错误,给出建议增强脚本健壮性。项目地址:https://github.com/koalaman/shellcheck 作者创建了一个在线网站 https://www.shellcheck.net/ ,你可以直接将代码贴到编辑框中进行在线检查。当然你也可以将工具部署到本地计算机使用。本地部署联网安装最简单的方式是使用包管理器安装。基本上各种平台都能直接安装,比如笔者的archlinux机器:$ sudo pacman -S shellcheck安装成功后,测试脚本$ shellcheck test.sh离线安装在Github上直接下载对应平台预编译好的可执行文件,解压缩到本地即可使用。代码编辑器集成可以根据官方说明安装VIM、VSCODE等编辑器插件直接在编译器中使用。使用示例示例一$ cat test.sh #!/bin/bash cat $0 for i in {1..10} do echo $i done $ shellcheck test.sh shellc...
2024年05月21日
129 阅读
0 评论
2024-05-21

GNU Parallel并行加速脚本运行

GNU Parallel并行加速脚本运行
GNU Parallel是xargs和shell循环的替代品,可以利用多核CPU并行执行任务(jobs),加快命令行脚本的运行速度。这里的任务(job)可以是单个命令或者一个shell小脚本。并行执行有一个任务池,将任务池中任务分发给每个进程单独执行,这里的任务池指输入源列表。一般输入源包括文件列表、主机列表、用户列表等等,每一个列表项就是一个任务的参数。本质上,parallel工具是一个perl脚本。安装如果机器上没有parallel命令,可以自行安装。$ (wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \ fetch -o - http://pi.dk/3 ) > install.sh $ bash install.sh并行执行paralle可以替代xargs -P功能# sleep 1+2+3+4+5 = 15秒 $ time echo {1..5} | xargs -n 1 sleep #使用5个进程,最长的需要5秒 $ time echo {1..5} | xargs -n 1 -P ...
2024年05月21日
237 阅读
0 评论
2024-05-21

美国能源部E级超算

美国能源部E级超算
最新一期TOP500超算榜单(202311)发布,相比于6月份榜单,排名第一的仍是美国能源部(DOE)的橡树岭国家实验室(ORNL)的Frontier,但第2名变成DOE的Argonne国家实验室的Aurora,第3名是微软的Eagle。原先第2名的Fugaku排名降至第4。Frontier目前仍是唯一的E级超算。Aurora超算设计的计算性能为2 EFlop/s,但目前没有完成整体建设,只测试了一半系统,计算能力为585.34 PFlop/s。根据“NERSC GPU for Science Day"报告整理了美国能源部旗下三个机构的E级超算建设情况。三家E级超算都是CPU+GPU异构超算,但GPU来自不同的厂商,包括NVIDIA/AMD/Intel。下面是DOE的E级超算路线图。不同厂商的GPU支持不同的编程模型,这给应用可移植性带来了巨大挑战。下面介绍三家E级超算情况。Frontier (ORNL)Frontier计算节点组成:1颗CPU + 4颗GPU。Aurora (ANL)Argonne Leadership Computing Facility(ALCF)Auror...
2024年05月21日
120 阅读
0 评论
2024-05-21

BASH脚本获得自身路径方法

BASH脚本获得自身路径方法
Shell中有一个命令叫pwd(记忆:Print Working Directory的单词首字母)可以获得当前工作目录。如果该脚本在其所在目录下执行,使用pwd命令可以得到脚本的当前目录。    # /home/user/scripts/getmydir.sh     MYDIR=`pwd`     echo $MYDIR 在/home/user/scripts目录下执行./getmydir.sh得到脚本所在的绝对路径。问题:但如果该脚本在其他目录下执行,比如在/home/user下执行scripts/getmydir.sh得到的路径却是/home/user/。 原因在于pwd命令返回路径与脚本执行时的路径有关。解决方法可以看出pwd命令获取脚本自身路径有一定限制,那么如何更加通用的获取执行脚本所在路径?思路:我们需要先将工作目录切换到脚本所在目录,通过pwd获取脚本目录,同时保证切换目录操作不影响shell当前目录。BASH有两个内置变量可以帮忙:FUNCNAME  bash内置变量,包含目前执行调用堆栈中所有shell函数名称的数组变量。FUNCNAME[0]是当前...
2024年05月21日
174 阅读
0 评论
2024-04-19

Linux canonical pathname概念

Linux canonical pathname概念
POSIX定义了绝对/相对路径名,还有一种canonical pathname,它不是POSIX定义的,但在Linux命令介绍中常用到这个概念。下面介绍三种文件名概念。absolute pathname (绝对路径名)以单个或两个以上/字符开头的路径名。 比如/root /../usr/bin //opt/intelrelative pathname不以/字符开头的路径名。比如:foo ../data/a.txtCanonical pathname路径名中每个部分都是实际存在的目录或文件(不是符号链接),不包括.和..,并且其斜杠不重复。这意味着对于同一个文件系统对象,其canonical路径名是唯一的,从而是可比较的。假如以下路径名是canonical pathname,/home/user/data/a.txt # 路径中每一部分都是真实存在的如果cd ~; ln -sf /home/user/data mydata,那么下面几个路径名都不是canonical pathname。/home/user/mydata/b.txt /home/other/../user/d...
2024年04月19日
130 阅读
0 评论
2024-04-19

Shell if和case语法

Shell if和case语法
在学习完前面Shell退出状态和test命令内容后,再来学习if语句就简单了。if语法如下if pipeline then statements1 [ elif pipeline #方括号表示可选部分 then statements2 ] [ else statements3 ] fiif结构中使用pipeline,可以是简单的命令组合test命令管道命令根据命令的退出状态决定if执行分支。示例:if [ -f oldfile ] # 如果存在文件oldfile then mv oldfile newfile fiif语句退出状态整个if/fi结构退出状态是真正执行的语句statements最后一个命令执行退出状态。如果没有命令执行,退出状态为0.Shell脚本中可以使用:冒号作为占位命令,实际不做任何事。case语句判断一个变量可能是多个值情况时,可以使用if/elif/elif/../fi结构来完成,但也可以使用case语句实现,更加简单明了。题外话:在C语言中switch case语句一般比if语句效率更高,编译器可能会使用表...
2024年04月19日
126 阅读
0 评论
登录
X
用户名
密码