2023-11-12 2023年了,学点搜索技术 2023年了,学点搜索技术 在信息时代,掌握一定的信息搜索技术可以帮助我们从海量信息中快速获取想要的信息、提高知识技能学习的效率。推荐大家看看油管视频搜索技术,普通人变强的唯一外挂。全套详细宝藏教程~,作者非常用心的制作,视频内容值得多看几遍学习吸收,提升自己的信息获取整理能力。更新:发现作者也在B站更新,视频地址是https://www.bilibili.com/video/BV1yw411F7J1/?spm_id_from=333.999.0.0&vd_source=bc08bd80a6bd57e97aacb39dc192b77f 。 如果你还停留在遇到问题使用"白°"搜索信息的话,真的建议看一看这个视频。中文内容创作已经从电脑端转向了移动端,从文字转到了视频。公众号、B站、小红书(这个真没想到)、抖音成为新的内容创作主要阵地。以下是我根据视频做的思维导图,如果想要高清原图,可以私信我。视频作者的一些观点:内事不决,微信搜一搜;外事不决,谷歌问一问。对于学习,尽可能寻找信息源头,一手信息。没有搜索就直接请教别人是极其不礼貌的。搜索技术 + AI = 超级搜索技术。视频来源https://www.yout... 2023年11月12日 242 阅读 0 评论
2023-11-11 MPI版本混用问题诊断 MPI版本混用问题诊断 MPI作为消息通信工业标准,在高性能计算中被广泛使用。MPI标准定义了库函数语法、语义,开发商根据标准开发实现具体的MPI软件版本,比如常见的MPICH、OpenMPI、Intel MPI、MVAPICH等。为了满足不同的需求,HPC计算平台一般会安装多个MPI实现版本,如果用户开发环境设置混乱,可能会导致MPI版本混用情况,从而引发意想不到的错误,包括编译时和运行时错误。比如笔者遇到如下情况:依赖库使用一种MPI实现编译,模式使用另一种MPI实现编译链接,在运行时出现很奇怪的错误,这种错误有时候不容易联想到是MPI混用导致的。下面总结MPI混用引起的编译时和运行时错误。代码示例示例项目有两个源代码文件:sum.f90和main.f90,其中主程序main(main.f90)依赖模块mod_sum(sum.f90)。!sum.f90 module mod_sum use mpi implicit none contains subroutine sum_global() implicit none integer :: id,total,ierr ... 2023年11月11日 402 阅读 0 评论
2023-11-04 利用SSH端口转发访问内部服务器 利用SSH端口转发访问内部服务器 上一篇介绍了“Windows 10开启OpenSSH服务”,下面我们可以试验通过Windows 10机器作为中转访问内部Linux服务器。利用的技术是SSH端口转发技术,也叫SSH隧道(tunnel)。SSH端口转发功能说明网上有很多介绍(关键词:端口转发、ssh隧道、内网穿透、跳板机等等),比如https://developer.aliyun.com/article/1035160这篇文件介绍的很详细。原理很简单,外部机器A不能直接访问内部服务器C,但有一台服务器B很特殊,它能和A、C都能建立连接,将B作为“中介”、“跳板”,从而实现A访问C的目的。SSH端口转发参数ssh -L localport:remotehost:remotehostport sshserver 说明: localport 本机开启的端口号 remotehost 最终连接机器的IP地址 remotehostport 最终连接机器的端口号 sshserver 转发机器的IP地址 选项: -f 后台启用 -N 不打开远程shell,处于等待状态(不加-N... 2023年11月04日 241 阅读 0 评论
2023-11-02 ADIOS2加速WRF IO ADIOS2加速WRF IO 华为公司研究人员在arXiv发表了预印版论文《accelerating wrf i/o performance with adios2 and network-based streaming》,介绍了他们将下一代并行I/O库ADIOS2接入WRF模式,利用ADIOS2功能提升WRF I/O性能的工作。根据给出的测试结果,使用ADIOS2相比传统MPI-I/O方案获得十倍的性能提升。具体细节可阅读他们的论文。ADIOS2功能介绍ADIOS2亮点功能有很多,包括支持多种数据格式,sub-files输出功能支持自研BP系列数据格式,不追求输出到一个文件中,而是通过I/O进程聚合器生成多个sub-files,减少传统MPI-I/O方法文件锁问题。I/O聚合器设置可调,默认一个节点设置一个,既利用节点内共享内存通信,又尽可能减少并发访问文件系统的进程数。Burst Buffer功能BP5格式支持node-local burst buffer支持,即每个进程输出其sub-files到本地文件系统(比如节点挂载的SSD盘),然后通过一个单独的后台线程将这些数据传到并行文件系统中。在线压缩功能... 2023年11月02日 306 阅读 0 评论
2023-10-29 Windows 10开启OpenSSH服务 Windows 10开启OpenSSH服务 没想到Windows也支持OpenSSH服务了。只要安装OpenSSH服务,就可以通过ssh命令远程登录Windows系统,可以探索很多用法。我的Win10默认是安装了OpenSSH客户端。下面介绍在Win10开启OpenSSH服务方法。Windows 设置->应用->可选功能,搜索“OpenSSH服务器”,点击安装开启SSHD服务以管理员身份运行Windows Powershell,开启sshd服务 PS C:\Windows\system32> net start sshd如果不以管理员身份运行以上命令,会报错:NativeCommandExitException: Program "net.exe" ended with non-zero exit code: 2.设置SSHD服务开机启动Win+R,输入services.msc,打开Win10服务设置,启动类型改为自动更改SSHD服务默认端口号 (可选,但建议)将C:\ProgramData\ssh目录(这是一个隐藏目录,直接在资源管理器输入路径)中sshd_config配置文件修改内容Port 1234... 2023年10月29日 305 阅读 0 评论
2023-10-27 Segmentation Faults错误排查解决思路 Segmentation Faults错误排查解决思路 前言Segmentation Faults可能是每一个programmer都回避不了的错误,国内甚至还有一个以它命名的网站(思否,segmentfault.com)。在诊断、解决这个常见程序错误时,我们可以借助编译器提供的功能快速定位。本文译自Intel® Developer Zone上文章Determining Root Cause of Segmentation Faults SIGSEGV or SIGBUS errors文中主要介绍通过Intel Fortran编译器提供的功能诊断解决Fortran程序段错误。问题当我运行由Intel Fortran编译器编译的代码时,在Linux平台得到SISGEGV错误提示(或Mac OS X平台SIGBUS)。这份代码在<XX编译器/平台>上运行多年没出问题。这是Intel编译器一个bug吗?运行环境:linux 或 Mac OS X根本原因:有许多可能原因。段错误(segmentation fault)(Mac OS X下是bus error)是一个有多种原因的通用错误。下面我们描述可能的原因并给出建议以避免段错误。可... 2023年10月27日 321 阅读 0 评论
2023-10-27 Arm向量指令集SVE Arm向量指令集SVE 曾夺得超算Top 500第一名的日本超算FUGAKU(富岳)采用的是富士通的A64FX处理器,是世界第一个款实现Scalable Vector Extension (SVE)指令集的处理器。SVE是Arm v8.2-A AArch64指令集的下一代SIMD扩展,针对HPC场景的新向量指令集,相比于x86的AVX系列指令集有其独特的特色。Arm上一代指令集NeonSVE的上一代指令集是Neon(也叫ASIMD),主要面向多媒体、DSP等场景,使用32个寄存器v0-v31,浮点计算和SIMD计算共用这些寄存器,v寄存器宽度为64位或128位。但Neon针对HPC场景有很多不足之处,比如:不支持gather/scatter不连续内存访问patterndo i=1, N a(idx(i)) = a(idx(i)) * b(i) !indirect address enddo不支持mask寄存器do i=1,N if(a(i) > 1.0) then ! if branch b(i) = c(i) + 2.0 endif enddo寄存器位宽较小相... 2023年10月27日 1,521 阅读 0 评论
2023-10-24 Slurm解除作业内存限制方法 Slurm解除作业内存限制方法 问题有一个串行作业通过Slurm提交到计算节点计算,程序需要的内存量虽然没有超过计算节点的物理内存,但因为Slurm对作业分配的单个CPU核的内存进行了限制,导致程序进程因out-of-memory(OOM)被Slurm强制杀掉。我们通过以下程序来复现问题。该程序申请了一个1024*1024*1024*8字节大小(8GB)的双精度buffer数组,加上其它一些量的内存需求,该程序实际上需要>8GB的内存空间。program main implicit none integer,parameter :: NX = 1024 real*8,allocatable,dimension(:,:,:) :: buffer integer :: i,j,k allocate(buffer(NX,NX,NX)) buffer = 1.0d0 buffer = buffer + sqrt(buffer+3.0) print*, buffer(1,1,1) deallocate(buffer) end运行对应的Slurm作业脚本如下#!/usr/bin/... 2023年10月24日 1,077 阅读 1 评论