TypechoJoeTheme

MetMan's Blog

网站页面

最新文章

2023-10-21

Typecho博客网格

置顶
Typecho博客网格
基于油管视频搭建个人Typecho博客网站。视频对应文字介绍:https://iweec.com/336.htmlVPS目前使用Racknerd VPS。主题主题不使用视频中提供的版本,而是使用joe魔改版1.1.9,主题下载地址:https://github.com/XG2020/Typecho-Joe-Theme。侧边栏广告位图片适配图片分辨率调整设置广告位高度为90px (原先190px)usr/themes/Typecho-Joe-Theme/assets/css/joe.min.css外链图片不能正常显示在控制台->外观->设置外观->公共设置中“自定义head标签末尾位置内容”中添加<meta name="referrer" content="no-referrer" /> 插件代码高亮试用了CodeStyle和ColorHighlight插件发现与现在的主题不适配,最终选择了SyntaxHighlighter这款插件。插件地址:https://github.com/tinpont/SyntaxHi...
2023年10月21日
15,631 阅读
1 评论
2023-10-21

Intel Fortran编译器的发展

Intel Fortran编译器的发展
作为商业Fortran编译器代表,Intel Fortran编译器在语言标准兼容性、性能方面非常出色,是很多NWP模式主要编译工具。Intel C/Fortran编译器之前是包含在Parallel Studio中,它是商业收费软件。但自2020年12月开始Intel oneAPI品牌取代Parallel Studio,并采用免费使用策略。现在Intel oneAPI套件中包含两套Fortran编译器:Intel Fortran Compiler Classic (ifort)Intel Fortran Compiler (ifx)其中ifort只用于CPU端,而ifx用于面向未来XPU(CPU/GPU等)异构计算。两套编译器使用相同的编译前端(Intel Fortran Frontend, FFE)。ifort 特点:Intel Fortran parser/analyzer + Intel optimizer/code generationF2018标准完全支持,只用于CPU端,性能优ifx特点:Intel Fortran parser/analyzer + LLVM opti...
2023年10月21日
106 阅读
0 评论
2023-10-21

forrtl error 78

forrtl error 78
问题描述模式使用128个进程运行很快报错退出,测试其它进程配置也会得到相同的错误,多次运行出现相同的错误,排除了机器原因。调试平台和配置平台环境Intel CPU, 32 cores/node, 192GB内存Linux /Intel Fortran Compiler 2018/Intel MPI试验配置模式网格:NX=3301, NY=3301, NZ=70程序使用MPI并行,针对Y方向进行一维并行剖分,主要变量数据结构var(nx,nz,nb) ,其中nb=NY/nprocs。排查经过定位报错源代码由于代码没有加调试选项编译,不能看到最后报错的调用栈对应的源代码信息。使用intel fortran编译器选项-g -traceback重新编译代码运行,得到报错源码信息。如上图所示,程序在调用cmpclddrv子程序(cmpclddrv.f第一行)时报错。从出错调用栈信息可以看出出错点在进入cmpclddrv程序时,还未执行该子程序内执行语句。排查数组越界问题当时考虑程序在传参时出现问题,比如数组越界。因此,加上数组越界编译选项-check bounds重新编译、运行,发现不是数...
2023年10月21日
105 阅读
0 评论
2023-10-21

NetCDF数据格式介绍

NetCDF数据格式介绍
netCDF经过多年的发展,支持多种数据格式,其格式发展如下图所示。Classic format: CDF-1、CDF-2、CDF-5netCDF-4 format: 底层二进制格式是HDF5 (需要HDF5 ≥ 1.8.0)netCDF格式安装要求netCDF-4支持netCDF库构建时配置参数加上--enable-netcdf-4netCDF-4 parallel I/O为了netCDF-4库支持并行I/O,依赖库HDF5必须使用--enable-parallel选择配置,使用MPI编译器编译。netCDF编译使用与HDF5相同的MPI编译器。Classic netCDF parallel I/O使用PnetCDF库并行读写classic格式,包括CDF-1,CDF-2,CDF-5。netCDF-4版本如使用PnetCDF支持并行I/O,需配置--enable-pnetcdf选项。创建指定netCDF格式方法使用库API n*_create()创建netCDF文件,通过指定参数cmod设置。nc_create() (C接口)nf_create() (fortran 77接口...
2023年10月21日
120 阅读
0 评论
2023-10-21

模式后处理系统UPP介绍

模式后处理系统UPP介绍
Unified Post Processor (UPP)是美国业务数值模式使用的统一后处理系统,负责将模式输出数据转换生成业务数据产品。项目主页UPP Github主页UPP最新用户文档最新版本:v11.0.0 (截止:20230102)UPP支持模式按照文档说明,UPP基本上支持美国所有的业务模式,包括全球、区域模式。Global Forecast System (GFS)GFS Ensemble Forecast System (GEFS)North American Mesoscale (NAM)Rapid Refresh (RAP)High Resolution Rapid Refresh (HRRR)Short Range Ensemble Forecast (SREF)Hurricane WRF (HWRF)Unified Forecasting System (UFS),包括RRFS、HAFS、MRW、SRWUPP功能读取模式输出数据根据模式提供的气象场计算诊断量垂直插值功能(比如模式面插值到等压面)输出grib2格式的业务数据产品注:水平插值功能由外部程序wgri...
2023年10月21日
214 阅读
0 评论
2023-10-21

shell脚本计时方法

shell脚本计时方法
本文收集几种对shell脚本计时的方法。测试脚本如下:#!/bin/bash # timing_case.sh echo "start now" sleep 10 echo "end now"方法1:time命令如果是对整个shell脚本计时,使用time命令即可。$ time ./timing_case.sh start now end now real 0m10.014s user 0m0.007s sys 0m0.000s其中real时间就是我们关心的脚本运行时间。方法2:date命令如果需要知道shell脚本中某一段运行时间,可以使用date命令。可以在shell代码段前后加上date +%s,然后相减就得到运行时间,如下所示#!/bin/bash start_time=`date +%s` echo "start now" sleep 10 echo "end now" end_time=`date +%s` runtime=$((end_time-start_ti...
2023年10月21日
335 阅读
0 评论
2023-10-21

NetCDF文件压缩功能

NetCDF文件压缩功能
无损压缩zlibnetCDF4格式支持无损压缩算法DEFLATE压缩文件节省文件存储空间。DEFLATE算法使用Lempel-Ziv编码和Huffman编码组合。无损压缩是相对于有损压缩说的,指压缩完的数据能够完全还原恢复。netCDF4/HDF5使用zlib库提供的压缩算法,这也是netcdf4安装需要zlib库原因。gzip压缩工具也是用的zlib压缩算法。压缩等级(即deflation level)从无压缩等级0到最大压缩等级9,数值越大,压缩率越高,但所需压缩时间也会越长。按照NCO文档说法,从最低等级(dfl_lvl=1)到最高等级(dfl_lvl=9),文件大小差异一般小于10%。对于一般的气候数据集deflation算法能够压缩30-60%。常用的两个nc4压缩命令:nccopy (netcdf4库自带命令)$ nccopy -4 -d N in.nc out.nc # N-压缩等级,0-9ncks (来自NCO工具包)$ ncks -4 -L N in.nc out.nc # N-压缩等级,0-9数据测试试验准备以一个模式初始场数据为例,原始数据格式是net...
2023年10月21日
170 阅读
0 评论
2023-10-21

MPI IO错误处理

MPI IO错误处理
本周遇到一个MPI IO的问题让我对MPI标准在遇到错误时如何处理有了更深入的了解,在此记录一下。问题问题是这样的:有一个MPI并行程序,IO部分是通过MPI IO函数并行读入(MPI_FILE_OPEN())一个文件,但程序执行时在没有找到该文件情况下仍然继续执行。由于我没对MPI_FILE_OPEN函数返回码进行检查,程序正常运行,但读入数组实际上值是0,根本不是期望的值。出问题后还不容易查找。这与我对文件IO出错处理理解不一样,比如对于Fortran open语句默认找不到文件程序会报错终止。原因通过查阅MPI标准说明,发现MPI标准规定了MPI库运行时一旦侦测到错误时会终止程序运行,但文件操作例外。MPI IO 产生错误不会像通信错误一样被认为是致命的(MPI_ERRORS_ARE_FATAL),仅仅是捕捉这些错误(函数返回码)并继续执行程序。MPI标准预定义了两个错误handlers:MPI_ERRORS_ARE_FATAL 致命错误,一旦侦测到,调用MPI_ABORT退出MPI_ERRORS_RETURN 仅仅返回错误码给用户,其它没有影响MPI IO文件处理的缺...
2023年10月21日
162 阅读
0 评论
2023-10-21

Fortran字符串处理下篇

Fortran字符串处理下篇
字符与数值类型转换通过ASCII表转换常用的字符与整数一一映射的编码表是ASCII表,规定了256个字符与0-255整数一一对应关系。下表是Fortran用于两者互相转换的内置函数,其中ACHAR与CHAR、IACHAR与ICHAR区别在于一个指定使用ASCII表,另一个是处理器使用的编码表,不一定是ASCII表。但通常两者是等价的。内置过程名功能ACHAR(I)返回整数对应的ASCII码表中字符CHAR(I,[,KIND])返回给定整数对应的处理器使用的编码序列字符IACHAR(C)返回ASCII表中字符对应的十进制整数ICHAR(C)返回处理器使用的编码表中字符对应的整数ASCII码表中字符A-Z、a-b、0-9都是有序、连续排列的,利用这个特点我们可以对字符串进行大小比较、大小写转换等操作。下面示例程序实现了一个转换大写字符串的功能。module string_utils implicit none contains function to_upper(str) implicit none character(len=*),intent(in) :...
2023年10月21日
152 阅读
0 评论

互动读者

标签云

最新回复

暂无回复

登录
X
用户名
密码