Fortran on a Mac
First let me say I’m not a big Fortran user but any blog posts about Fortran always seem to be very popular, and I do get asked regularly about how to compile Fortran applications.
NAG Fortran compiler Fortran compiler for Apple Silicon Macs now available to download.
I suspect this will be of interest.
Fortran Package Manager (fpm) is a package manager and build system for Fortran. Its key goal is to improve the user experience of Fortran programmers. It does so by making it easier to build your Fortran program or library, run the executables, tests, and examples, and distribute it as a dependency to other Fortran projects. Fpm's user interface is modeled after Rust's Cargo, so if you're familiar with that tool, you will feel at home with fpm. Fpm's long term vision is to nurture and grow the ecosystem of modern Fortran applications and libraries.
Available on GitHub https://github.com/fortran-lang/fpm
Here are a series of mini-book tutorials that are aimed at beginners and experts Fortran Learn Books.
If you have followed the instructions on Cheminformatics on a Mac you already have Xcode, Command Line tools and gfortran installed using Homebrew. Alternatively you can install GCC 8.3 (auto-vectorizing gcc with OpenMP) which includes gfortran (free, open source, GNU Fortran 95 compiler), gcc (GNU C) and g++ (GNU C++) compilers that can perform auto-vectorization (i.e. modify code to take advantage of AltiVec/SSE, automatically) and other sophisticated optimizations like OpenMP. There are detailed instructions here, last updated April 2019 (Mojave).
The newest update to PGI Fortran, C and C++ compilers & tools for scientists and engineers. Includes Volta support, using CUDA Unified Memory with OpenACC, Open 4.5 CPU support, C++14 lambda and capture support within OpenACC and…. On Intel Haswell CPUs with OpenMP, PGI delivers multicore performance more than 50% faster than the latest GCC compilers. That’s like buying a cluster with 50% more compute nodes. PGI compilers deliver world-class multicore CPU performance and accelerator programming features that can dramatically increase the performance of applications on GPU accelerators. New features include V100 Tensor Core support, full C++17 language support, OpenACC printf(), PCAST directives, LLVM 7.0, Turing support.
Fully compatible with macOS Big Sur (11.0) Pro Fortran builds faster code with exclusive Dynamic AP load balancing, SMP analysis, and advanced optimization. The AbsoftTools integrated development environment speeds program development and maintenance. Complete command-line development support is also provided. The OS X Fortran compiler supports a full range of project targets including command-line programs and GUI based applications. It provides a complete 64-bit macOS/OS X Fortran compiler solution and supports mixed language development by interfacing with Apple’s Xcode C/C++ compiler.
Pro Fortran for macOS System Requirements
- Intel CPU based system – multi-core suggested for best performance
- macOS Sierra (10.12) through macOS Big Sur (11.0)
- OS X Snow Leopard (10.6) through OS X El Capitan (10.11)
- 2 GB RAM – 4 GB recommended for best performance
- 1 GB free disk space for complete installation
Arguably the best fortran compiler for Intel macs are the Intel compilers ifort.
The Intel® Fortran Compiler builds high-performance applications by generating optimized code for Intel® Xeon® Scalable processors and Intel® Core™ processors. Its features allow you to: Boost Single Instruction Multiple Data (SIMD) vectorization and threading capabilities (including for Intel® Advanced Vector Extensions 512 instructions) using the latest OpenMP* parallel programming model Take advantage of more cores and increased vector register width available in Intel® Xeon® processors Comply with open standards such as Fortran and OpenMP Work with a familiar set of tools on your preferred platform: Windows, Linux, or macOS*
They can build pretty much any fortran code including very old fortran (as far back as fortran 66) and support the latest fortran standards. And in many people’s experience produce the fastest runtime executables. They also integrate directly into Xcode and tend to be the most up to date in terms of compatibility with the apple dev tools. They are also link compatible with both gcc and clang. ifort also includes a fortran version of their MLK library.
They provide redistribute libraries for dynamically linked binaries, but they also support static linking, so in either case binaries can be distributed to people without the compiler installed. They aren't free on Mac (they are free on Linux), but the academic price is relatively inexpensive. Additionally they have a C/C++ compiler suite, but the performance gain over clang is no longer there. They are better than gcc in terms of codgen, however. So if you aren't using MLK there may be no benefit.
NAG Fortran Compiler.
The NAG Fortran Compiler provides significant support for Fortran 2018 (atomic operations, events and tasks, plus other smaller features), almost all Fortran 2008, complete coverage of Fortran 2003, and all OpenMP 3.1. All platforms include supporting tools for software development: source file polishers, dependency generator for module and include files, call-graph generator, interface builder and a precision unifier. Available on Linux, Windows and macOS, including Apple Silicon Macs. They also provide a NAG Fortran IDE for Macs.
Given the move towards parallel processing it is useful to note that most of the compilers support OpenMP, OpenMP is a specification for a set of compiler directives, library routines, and environment variables that can be used to specify high-level parallelism in Fortran and C/C++ programs.
Compiling Fortran applications on a Mac
If you have Homebrew installed then the easiest way to install gfortran is as part of gcc. I’ve written a page of instructions for setting up a Mac using Homebrew here.
brew update brew install gcc
We can check gfortran is installed using, in the Terminal type
man -k fortran gfortran(1) - GNU Fortran compiler
and the location
which gfortran /usr/local/bin/gfortran
which should be an alias to "/usr/local/Cellar/gcc/4.8.3/bin/gfortran"
Critic2: A program for real-space analysis of quantum chemical interactions in solids DOI
Download critic2 from: http://gatsby.ucmerced.edu/downloads/critic2/critic2-1.0.tar.gz
cd critic2-1.0 ./configure make install
This compiles and installs:
- critic2, basin2off, off2off, charges.sh executables to /usr/local/bin
- data files to /usr/local/share/critic2
- help files to /usr/local/share/doc/critic2
A couple of Fortran experts have contacted me and suggested I include these flags that are often very useful for developers.
-static-libgcc : includes all necessary system routines in the binary and thus avoids error messages at runtime when some library is missing on the user computer
-mmacosx-version-min=10.1 : generates binaries able to work under several os x versions
-fno-underscoring : supresses the trailing undersore for names of functions and subroutines (but then you must take care about conflicting names)
Jupyter and Fortran
A demonstration of how to use Python, Julia, Fortran and R cooperatively to analyze data, in the same process
More information in this lecture, Project Jupyter: Architecture and Evolution of an Open Platform for Modern Data Science
Useful Fortran Programs
ABINIT is a software suite to calculate the optical, mechanical, vibrational, and other observable properties of materials. Starting from the quantum equations of density functional theory, you can build up to advanced applications with perturbation theories based on DFT, and many-body Green's functions (GW and DMFT) . Compilation/Installation notes are here.
BigDFT a DFT massively parallel electronic structure code (GPL license) using a wavelet basis set. Wavelets form a real space basis set distributed on an adaptive mesh (two levels of resolution in our implementation). GTH or HGH pseudopotentials are used to remove the core electrons. Thanks to our Poisson solver based on a Green function formalism, periodic systems, surfaces and isolated systems can be simulated with the proper boundary conditions. Source code.
Critic2 is a program for the topological analysis of real-space scalar fields in periodic systems
CP2K a quantum chemistry and solid state physics software package that can perform atomistic simulations of solid state, liquid, molecular, periodic, material, crystal, and biological systems.. How to compile on a Mac
DALTON two powerful molecular electronic structure programs, Dalton and lsDalton. Together, the two programs provide an extensive functionality for the calculations of molecular properties at the HF, DFT, MCSCF, and CC levels of theory. Many of these properties are ONLY available in the DALTON2013 suite.
Dacapo is a total energy program based on density functional theory. It uses a plane wave basis for the valence electronic states and describes the core-electron interactions with Vanderbilt ultrasoft pseudo-potentials. Instructions for compiling on Intel Mac
GAMESS General ab-initio quantum chemistry package.
Postg is a program that implements the calculation of the dispersion energy and related quantities using the exchange-hole dipole moment model.
Quantum Expresso is an integrated suite of Open-Source computer codes for electronic-structure calculations and materials modeling at the nanoscale. It is based on density-functional theory, plane waves, and pseudopotentials
Illustrate is a small Fortran program for creating non-photorealistic illustrations of molecules, with cartoony colors and outlines, and soft ambient shadows. It is used to create the RCSB Molecule of the month.
Molecular simulation packages from the Mezei lab
Molpro a complete system of ab initio programs for molecular electronic structure calculations
NWChem aims to provide its users with computational chemistry tools that are scalable both in their ability to treat large scientific computational chemistry problems efficiently, and in their use of available parallel computing resources from high-performance parallel supercomputers to conventional workstation clusters
SIESTA is both a method and its computer program implementation, to perform efficient electronic structure calculations and ab initio molecular dynamics simulations of molecules and solids.
TINKER a general package for molecular mechanics and dynamics.
Photran is an IDE and refactoring tool for Fortran based on Eclipse
Fortran Standard Library, International Fortran Standards, Fortran Proposals This repository contains proposals for the Fortran Standard Committee in the Issues section. The idea for this repository is to act as a public facing discussion tool to collaborate with the user community to gather proposals for the Fortran language and systematically track all discussions for each proposal
Fortran Course run at ETH
Fortran course run by NAG
Fortran 90 Tutorial from Stanford from 1998
CLFORTRAN – Pure Fortran Interface to OpenCL
FTranProjectBuilder Mac's only native Fortran programming environment (IDE)
More details in this video
Simply Fortran includes the GNU Fortran compiler, an advanced development environment including project management, and an integrated debugger for fast and easy installation, updated August 2019
HPC Mac OSX High performance computing on a Mac
gXXforrtran is available on GitHub This package provides a “pgf77” script that emulates the Portland Group’s PGI fortran 77 compiler, instead using the Free Software Foundation’s GNU gfortran compiler instead. This emulation is sufficient to allow packages such as Gaussian03, that would otherwise require a commercial compiler, to be built using open source tools.
CUDA Fortran for Scientists and Engineers shows how high-performance application developers can leverage the power of GPUs using Fortran
Sourcery Institute a variety of resources for Fortran programmers, Sourcery institute tap for Homebrew formulae not in homebrew/homebrew-core, a Coarray Fortran Jupyter notebook kernel, forks of flang and gcc and OpenCoarrays a transport layer for coarray Fortran compilers.
f90wrap is a tool to automatically generate Python extension modules which interface to Fortran libraries that makes use of derived types. It builds on the capabilities of the popular f2py utility by generating a simpler Fortran 90 interface to the original Fortran code which is then suitable for wrapping with f2py, together with a higher-level Pythonic wrapper that makes the existance of an additional layer transparent to the final user. f90wrap has been used to wrap a number of large software packages of relevance to the condensed matter physics community, including the QUIP molecular dynamics code and the CASTEP density functional theory code.
The full paper is here https://iopscience.iop.org/article/10.1088/1361-648X/ab82d2
Install using PIP
pip install f90wrap
Source code is on GitHub https://github.com/jameskermode/f90wrap.
Updated 29 April 2021