TypechoJoeTheme

MetMan's Blog

网站页面
2024-07-31

Fortran面向对象 二

Fortran面向对象 二
面向对象编程核心概念包括封装、继承及多态。下面介绍Fortran的类继承及多态语法。Fortran类继承Fortran中类继承使用扩展(extends)关键字定义继承哪个父类。type mytype integer :: value end type mytype ! extend from mytype type, extends(mytype) :: mynewtype real :: extra end type mynewtype新的类mynewtype除了继承mytype中成员value,还定义了新成员extra。module mytypes implicit none type mytype integer :: value contains ! => 过程别名 procedure,public :: write => write_mytype end type mytype type, extends(mytype) :: mynewtype real :: extra end ty...
2024年07月31日
53 阅读
0 评论
2024-07-31

Fortran面向对象

Fortran面向对象
从Fortran 2003开始标准加强了面向对象(OOP)语法支持,通过使用模块(module)及复用派生类型关键字(type)定义Fortran的类。Fortran主要参照C++ OOP模型进行设计,两者对比如下表所示。 C++Fortran成员在类中定义在'type'中定义方法在类中定义在'type'中声明interface;在module中实现构造函数default或explicit没有对象本身this第一个参数对象方法引用点操作符'.’%操作符Fortran类组织方式在模块文件定义类(module ...type ...contains ... end type ...contains ... end module)type...contains...end type定义类(包括数据成员及类方法声明)实际方法定义在模块contains部分实现类方法的第一个参数是对象本身module A type B ! data members integer :: c contains procedure :: d end type cont...
2024年07月31日
58 阅读
0 评论
2024-07-31

Wgrib2提取小区域数据

Wgrib2提取小区域数据
对于GRIB2数据处理,常见的一个需求是提取全场区域内一个子区域数据。wgrib2提供了几种处理方法。GRIB2数据提取方法wgrib2主要通过两种方法限制提取范围,一是根据格点索引范围;二是通过经纬度范围进行指定。-ijbox根据格点索引范围截取数据区域。-ijbox out X..Z,A grid values in bounding box X=i1:i2[:di] Y=j1:j2[:dj] Z=file A=[bin|text|spread]该选项需要四个参数,第一个是X方向索引范围:起始i1,结束i2,可选步长间隔di;第二个是Y方向范围,用法类似;第三个是写出文件名;第四个参数指定生成文件格式,支持bin/text/spread。-lola根据经纬度范围截取数据区域。-lola out X..Z,A lon-lat grid values X=lon0:nlon:dlon Y=lat0:nlat:dlat Z=file A=[bin|text|spread|grib]该选项需要四个参数,第一个是经度范围:起始经度lon0,...
2024年07月31日
63 阅读
0 评论
2024-07-31

Fortran BLOCK结构

Fortran BLOCK结构
Fortran 2008标准提出了BLOCK语法结构,其作用是创建一个独立的命名空间,在里面可以定义一个可以包含声明的可执行代码块。BLOCK语法如下:[block_name:] BLOCK ! declartion ! executable statements END BLOCK [block_name]其中block_name可选,对block结构起一个名字可以让代码更加清晰。BLOCK结构中声明对象包括变量、type定义、外部过程等,这些声明的对象作用域(生命周期)只限于该BLCOK结构,不会影响到BLOCK外的变量,这意味着你可以在BLOCK内声明一个与外部相同的变量名,在BLOCK内声明的变量如与外部变量名相同,外部变量会暂时被”抑制“。program main implicit none integer :: x = 10 block integer :: x x = 4 print*, "Inside a block, x=",x end block print*, "Out...
2024年07月31日
47 阅读
0 评论
2024-07-31

Intel oneAPI 2024.0版本变化

Intel oneAPI 2024.0版本变化
最近安装了Intel oneAPI 2024.0版本,发现发布版本已经移除了Intel C++ Compiler Classic(icc/icpc)。到官方网站查阅发现,Intel建议C/C++开发者使用基于LLVM开发的DPC++/C++编译器(icx/icpx)。oneAPI DPC++/C++编译器开发者文档和参考手册链接:https://www.intel.com/content/www/us/en/docs/dpcpp-cpp-compiler/developer-guide-reference/2024-0/invoke-the-compiler.html同时官方提供了从ICC到ICX移植指南:https://www.intel.com/content/www/us/en/developer/articles/guide/porting-guide-for-icc-users-to-dpcpp-or-icx.htmloneAPI DPC++/C++编译器是一个全新编译器,在功能和表现上与Intel C++ Compiler Classic存在差异,因此不能只是认为将i...
2024年07月31日
111 阅读
0 评论
2024-07-31

Windows 11建立PyTorch开发环境

Windows 11建立PyTorch开发环境
本文主要基于知乎文章4步搭建wsl2+cuda+docker解决windows深度学习开发问题内存,通过WSL在Windows 11中安装Ubuntu,并在Ubuntu中安装PyTorch环境以及NVIDIA HPC SDK。WSL环境建立在BIOS或UEFI设置中开启虚拟化选项(一般默认已打开)在Microsoft Store中安装windows subsystem for Linux启用windows功能在“控制面板”->“程序”->"启用或关闭Windows功能“中开启以下红框中内容。如果在后续安装WSL-Ubuntu时出现类似wslregisterdistribution failed with error: 0x80370114错误时确保这一步完成了。PowerShell中执行bcedit /set hypervisorlaunchtype autoWSL-Ubuntu安装在Store中选择一个LTS长期支持版本的Ubuntu进行下载安装。也可以在PowerShell中执行wsl --install ubuntu-20.04。安装时会提示设置管理员账号密码,...
2024年07月31日
46 阅读
0 评论
2024-05-27

MPI程序调试小技巧

MPI程序调试小技巧
MPI并行程序调试除了使用专业的并行调试器(Totalview、DDT)外,可能还是print大法用的多。对于MPI程序调试,我们通常需要知道输出的信息来自哪个进程,一般会在输出语句中加上进程号信息。write(0,*) "Task from ",pid,":debug info ..."但这需要引入表示进程号的变量(通常这会引入其它模块变量),如果输出的诊断信息太多每个都加变量也很麻烦。如果希望自动输出进程号信息,可以尝试每个MPI实现附带的功能。Intel MPI/MVAPICH2/MPICHIntel MPI/MVAPICH2/MPICH三种MPI实现的mpirun都提供一个选项-prepend-rank能够实现在输出信息前自动添加进程号,在标准输出/错误每一行前面添加MPI rank进程号。输出示例:[6] Hello from rank 6, on cmac0483. (core affinity = 38) [13] Hello from rank 13, on cmac0483. (core affinity = 45) [3...
2024年05月27日
239 阅读
0 评论
2024-05-27

ODB2格式观测数据处理库: odc(一)

ODB2格式观测数据处理库: odc(一)
ODB-2数据格式是ECMWF开发用于气象观测数据存储的一种紧凑的表格形式数据格式。odc库是用于对ODB-2数据格式编码和解码处理的专用库,提供C/C++/Fortran接口,并提供命令行工具。项目地址:https://github.com/ecmwf/odc依赖C/C++编译器CMakeecbuildeckitFortran编译器(可选)安装ecbuild安装下载最新版本3.8.2, https://github.com/ecmwf/ecbuild/archive/refs/tags/3.8.2.tar.gz具体安装过程见[[ecBuild构建工具]]。eckit安装下载最新版本1.25.0,https://github.com/ecmwf/eckit/archive/refs/tags/1.25.0.tar.gz。$ tar xzvf eckit-1.25.0.tar.gz $ cd eckit-1.25.0 $ mkdir build $ cd build $ export CC=icc CXX=icpc $ ecbuild --prefix=/path/to/ins...
2024年05月27日
132 阅读
0 评论
登录
X
用户名
密码