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

  1. 添加头文件

    PROGRAM hello_world_mpi
    include 'mpif.h'
  2. 编写测试程序

    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
  3. 编译

    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
  4. 通过 mpirun 测试运行

    mpirun -np 4 ./hello_world_mpi.exe
  5. 通过 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的更多相关文章

  1. 用IntelliJ IDEA创建Gradle项目简单入门

    Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...

  2. [原创]MYSQL的简单入门

    MYSQL简单入门: 查询库名称:show databases; information_schema mysql test 2:创建库 create database 库名 DEFAULT CHAR ...

  3. Okio 1.9简单入门

    Okio 1.9简单入门 Okio库是由square公司开发的,补充了java.io和java.nio的不足,更加方便,快速的访问.存储和处理你的数据.而OkHttp的底层也使用该库作为支持. 该库极 ...

  4. emacs最简单入门,只要10分钟

    macs最简单入门,只要10分钟  windwiny @2013    无聊的时候又看到鼓吹emacs的文章,以前也有几次想尝试,结果都是玩不到10分钟就退出删除了. 这次硬着头皮,打开几篇文章都看完 ...

  5. 【java开发系列】—— spring简单入门示例

    1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...

  6. Docker 简单入门

    Docker 简单入门 http://blog.csdn.net/samxx8/article/details/38946737

  7. Springmvc整合tiles框架简单入门示例(maven)

    Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...

  8. git简单入门

    git简单入门 标签(空格分隔): git git是作为程序员必备的技能.在这里就不去介绍版本控制和git产生的历史了. 首先看看常用的git命令: git init git add git comm ...

  9. 程序员,一起玩转GitHub版本控制,超简单入门教程 干货2

    本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注 ...

  10. Web---演示Servlet的相关类、表单多参数接收、文件上传简单入门

    说明: Servlet的其他相关类: ServletConfig – 代表Servlet的初始化配置参数. ServletContext – 代表整个Web项目. ServletRequest – 代 ...

随机推荐

  1. 【Azure Event Hub】自定义告警(Alert Rule)用来提示Event Hub的消息incoming(生产)与outgoing(消费)的异常情况

    问题描述 在使用Azure Service Bus的时候,我们可以根据Queue中目前存在的消息数来判断当前消息是否有积压的情况. 但是,在Event Hub中,因为所有消息都会被存留到预先设定的保留 ...

  2. 行行AI人才直播第10期:CTC智仝咨询联合创始人王发鑫《AI时代职场进阶之路——资深猎头的职场洞见》

    当今AI技术正在快速渗透各个行业,从去年热门的AIGC到今年爆火的ChatGPT,人工智能高速发展让人惊叹的同时,也让"算法取代人类"."AI或带来失业潮"等老 ...

  3. [SCOI2005] 栅栏【题解】

    简要题意 木材店老板给出一个整数 \(m\) 和 \(m\) 个木板的长度.老板给出的木板可以随意无损耗切割. 约翰给出一个整数 \(n\) 和所需要的 \(n\) 个木板的长度. 求约翰能得到最多木 ...

  4. python打包方法

    在Python中,要编写setup.py文件,用于构建和打包你的Python项目,你可以遵循以下步骤: 创建项目目录结构:首先,你需要创建项目的目录结构,包括源代码文件.资源文件等.一个常见的项目结构 ...

  5. error: failed to push some refs to 'https://gitee.com/xxxxxxxxx/xxxxxxxt'

    原因是ReadMe文件不在本地中, 此时我们要执行git pull --rebase origin master命令README.md拉到本地, 任何然后执行git push origin maste ...

  6. Java 生态需要新鲜的血液、需要狂飙的刺激。Solon v2.4.1 发布

    Solon 是什么开源项目? 一个,Java 新的生态型应用开发框架.它从零开始构建,有自己的标准规范与开放生态(历时五年,已有全球第二级别的生态规模).与其他框架相比,它解决了两个重要的痛点:启动慢 ...

  7. burp抓包iPhone手机

    https://blog.csdn.net/weixin_43965597/article/details/107864200

  8. 从源码角度了解Vue生命周期

    每个Vue应用都是通过new Vue()创建一个Vue实例开始.Vue()函数可以传入选项Options,常见的有el.template和data选项等. el 只在new创建实例时生效,其值可以是一 ...

  9. 基于C#的消息处理的应用程序 - 开源研究系列文章

    今天讲讲基于C#里的基于消息处理的应用程序的一个例子. 我们知道,Windows操作系统的程序是基于消息处理的.也就是说,程序接收到消息代码定义,然后根据消息代码定义去处理对应的操作.前面有一个博文例 ...

  10. 2023-08-20:用go语言写算法。给定一个由'W'、'A'、'S'、'D'四种字符组成的字符串,长度一定是4的倍数, 你可以把任意连续的一段子串,变成'W'、'A'、'S'、'D'组成的随意状

    2023-08-20:用go语言写算法.给定一个由'W'.'A'.'S'.'D'四种字符组成的字符串,长度一定是4的倍数, 你可以把任意连续的一段子串,变成'W'.'A'.'S'.'D'组成的随意状态 ...