Fortran 的简单入门和使用 OpenMPI
Fortran 与 C-like 语言的区别简单总结
无大括号,使用关键字画出范围:
C++:
int main() { }
Fortran:
program test
implicit none
end program test
有默认定义变量类型保留,需要手动关闭,a - c 默认为实型(real),i - k 默认为整型(integer),手动关闭方法:
program test
implicit none
!加入上面的语句后编译器会取消掉默认的隐式类型保留
end program test
循环只有 do-while 循环,且控制字符与 C-like 不同,do 循环类似与 for 循环,是通过数字迭代的循环,do while 循环类似与 do while 循环是判断某个布尔值来执行的。cycle 关键字的作用类似与 continue,exit 关键字的作用类似用 break。
定义变量的区别是 Fortran 在类型和变量间需要加
::。Fortran 的数组对应现实世界的矢量或者矩阵,可以直接使用线性代数中的矩阵的相关运算。
select-case 结构对应 C-like 中的 swith-case 结构。
指针类型定义需要在相关类型后面添加
, pointer,在目标变量后面添加,target,使用pointer => target方式绑定指针和目标,多个指针可以指向一个目标。定义函数前需要在函数前添加 function 关键字。
调用外部包的或子程序时应在名称前添加 call 关键字。
调用 OpenMPI
添加头文件
PROGRAM hello_world_mpi
include 'mpif.h'
编写测试程序
PROGRAM hello_world_mpi
include 'mpif.h' integer process_Rank, size_Of_Cluster, ierror, tag call MPI_INIT(ierror)
call MPI_COMM_SIZE(MPI_COMM_WORLD, size_Of_Cluster, ierror)
call MPI_COMM_RANK(MPI_COMM_WORLD, process_Rank, ierror) print *, 'Hello World from process: ', process_Rank, 'of ', size_Of_Cluster call MPI_FINALIZE(ierror)
END PROGRAM
编译
GNU Fortran Compiler
mpif90 hello_world_mpi.f90 -o hello_world_mpi.exe
Intel Fortran Compiler
mpiifort hello_world_mpi.f90 -o hello_world_mpi.exe
通过 mpirun 测试运行
mpirun -np 4 ./hello_world_mpi.exe
通过 slurm 运行
job.sh:
#!/bin/bash
#SBATCH -N 1
#SBATCH --ntasks 4
#SBATCH --output test.out mpirun -np 4 ./hello_world_mpi.exe
运行:
sbatch job.sh
Fortran 的简单入门和使用 OpenMPI的更多相关文章
- 用IntelliJ IDEA创建Gradle项目简单入门
Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...
- [原创]MYSQL的简单入门
MYSQL简单入门: 查询库名称:show databases; information_schema mysql test 2:创建库 create database 库名 DEFAULT CHAR ...
- Okio 1.9简单入门
Okio 1.9简单入门 Okio库是由square公司开发的,补充了java.io和java.nio的不足,更加方便,快速的访问.存储和处理你的数据.而OkHttp的底层也使用该库作为支持. 该库极 ...
- emacs最简单入门,只要10分钟
macs最简单入门,只要10分钟 windwiny @2013 无聊的时候又看到鼓吹emacs的文章,以前也有几次想尝试,结果都是玩不到10分钟就退出删除了. 这次硬着头皮,打开几篇文章都看完 ...
- 【java开发系列】—— spring简单入门示例
1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...
- Docker 简单入门
Docker 简单入门 http://blog.csdn.net/samxx8/article/details/38946737
- Springmvc整合tiles框架简单入门示例(maven)
Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...
- git简单入门
git简单入门 标签(空格分隔): git git是作为程序员必备的技能.在这里就不去介绍版本控制和git产生的历史了. 首先看看常用的git命令: git init git add git comm ...
- 程序员,一起玩转GitHub版本控制,超简单入门教程 干货2
本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注 ...
- Web---演示Servlet的相关类、表单多参数接收、文件上传简单入门
说明: Servlet的其他相关类: ServletConfig – 代表Servlet的初始化配置参数. ServletContext – 代表整个Web项目. ServletRequest – 代 ...
随机推荐
- 记一次 .NET 某埋线管理系统 崩溃分析
一:背景 1. 讲故事 经常有朋友跟我反馈,说看你的文章就像看天书一样,有没有一些简单入手的dump 让我们先找找感觉,哈哈,今天就给大家带来一篇入门级的案例,这里的入门是从 WinDbg 的角度来阐 ...
- 本地python调试 问题笔记
ImportError: cannot import name 'int_classes' from 'torch._six' 把 "from torch._six import stri ...
- SpringBoot对接阿里云OSS上传文件以及回调(有坑)
前言 今天在对接阿里云OSS对象存储, 把这过程记录下来 链接 阿里云的内容很多,文档是真的难找又难懂 本文主要是用的PostObject API 加上 Callback参数 PostObject - ...
- 多光源渲染方案 - Many Lights Sampling
目录 Importance Sampling(IS) Light BVH [2018~2019] 预构建 BVH 重建 BVH 基于 BVH node 的 IS Real-time Stochasti ...
- 小程序软键盘&SM2解密方式
小程序软键盘&SM2解密方式 转载请著名出处:https://www.cnblogs.com/funnyzpc/p/17572445.html SM2基本信息 私钥(primary key) ...
- redis的一些简单操作(针对key)
redis默认16个数据,默认使用0号 select为切换数据库的关键字 select 1 切换数据库 设置值 set k1 lucy key为 k1 value 为 lucy 查看全 ...
- Node: 将时间戳转换成日期并分组
// 对时间戳按日期进行分组 let moment = require('moment') let timestamp_array = [ 1645059333000, 1613523333000, ...
- 关于python pycharm中输出的内容不全的解决办法
import pandas as pd #设置显示的最大列.宽等参数,消除打印不完全中间的省略号 pd.set_option("display.width",1000) #加了这一 ...
- 【更新】【解决中文文件名乱码】mac一键获取最新datagrid 2017.3注册码到剪贴板
背景与前版实现请见: 前版原文 需要the unarchiver 解决中文文件名在mac上创建文件异常. 代码调整 IDEA_JIHUOMA_HOME="/tmp/idea-jihuoma& ...
- 如何将 dubbo filter 拦截器原理运用到日志拦截器中?
业务背景 我们希望可以在使用日志拦截器时,定义属于自己的拦截器方法. 实现的方式有很多种,我们分别来看一下. 拓展阅读 java 注解结合 spring aop 实现自动输出日志 java 注解结合 ...