Intel releases oneAPI Toolkit, free, Fortran 2018

In theory, one can apt-get install intel-oneapi-compiler-fortran (or equivalent in the other package managers that oneAPI supports, which are described in a previous link in this thread) and get the minimum stuff required to use Fortran.

5 Likes

Welcome @vsnyder, @TruongDang, and @JeffH!

3 Likes

I’m so impressed by Intel debugger integrated in Visual Studio. It helped me easily debug my Fortran code which intesively use Fortran pointer technique. I used to debug using GDB integrated in CodeBlocks IDE but it is not as good as Intel debugger. Many thanks to the Intel team.

6 Likes

@TruongDang ,

Welcome to this forum.

Glad to read of your experience using Intel Fortran integration with Visual Studio.

Microsoft’s Visual Studio is in and of itself and in the absence of Fortran, is simply the best IDE in our experience.

What it facilitates as an editor with ever advancing Intellisense and especially as a visual debugger for users of Microsoft .NET and C# and increasingly for users of modern C++ with advanced support of newer standards including C++20 and experimental C++23 features has to be seen to be believed!

One can only hope support for Fortran in Visual Studio will soon arrive at such first-class level. It’s nowhere to close to that yet. Unfortunately yet, Intel Fortran integration in Visual Studio has been rather stagnant for a while; in fact, there are aspects, such as working with components with the ALLOCATABLE attribute of derived types - standard Fortran 90 stuff nearly 30 years old - that its predecessor in DEC Digital Visual Fortran used to support with Microsoft Visual Studio circa 2001, that have long been left in the lurch even in the latest version 2021.2 with latest Visual Studio version. We have lost count of the number of erstwhile or new Fortran users who eventually migrated away from Fortran to other languages supported brilliantly in Visual Studio due to such glaring gaps.

Nonetheless, you should also consider posting your feedback at the Intel Fortran forum, it will be welcome news there: Intel® Fortran Compiler - Intel Community

3 Likes

@FortranFan

Currently I work mainly with Java and IntelliJ IDEA. One thing that I really surprise is that Intel debugger can somehow enhance production similar to IntelliJ debugger. I used to be a CFD code developer and Fortran coding was my first job. At that time when using Fortran 2003’s features, I had to get rid of the Compaq Visual Fortran’s debugger and used GDB debugger integrated in Code::Blocks.

I posted my feedback at the Intel Fortran forum.

2 Likes

Not to detract from Intel’s product, but it is worth noting that the NAG compiler is also well-known for having extensive debugging facilities.

4 Likes

It seems to be not available any more. The repository https://yum.repos.intel.com/oneapi (YUM, DNF, Zypper ) just gives permission denied. And not just today.

@VladimirF , does Intel’s base site help for Linux? That is, the one provided by @sblionel in the original post? It does work for Windows OS - a colleague just used it successfully a couple of days ago:

The link I gave comes exactly from there. In fact, I did actually install the compilers from there but it is not accessible any more. And for some considerable time (weeks, not days).

@septc What do you mean by “download”? I was writing about yum or zypper repositories.

@septc What does the link https://yum.repos.intel.com/oneapi you will get from the download page give you?

@VladimirF I used the page FortranFan suggested right above. Then,

Operating System : Linux
Distribution : Web & Local (recommended)
Installer type : Local
gave me “l_HPCKit_p_2021.2.0.2997_offline.sh” (and similarly for Mac, dmg).

I’ve just tried your link now, and it gives an error like “no style information (for XML)”. I don’t know the reason, but maybe we can use the above version for now…

I had problems with source /opt/intel/oneapi/setvars.sh in my .bash_profile script (which is normally launched at each shell login), in my Linux Ubuntu. Hence, I removed it from this file and added in my .bashrc (launched each time you open a shell) the following command:

source /opt/intel/oneapi/setvars.sh --force > /dev/null

The --force is necessary to avoid that message:

:: WARNING: setvars.sh has already been run. Skipping re-execution.
   To force a re-execution of setvars.sh, use the '--force' option.
   Using '--force' can result in excessive use of your environment variables.

The > /dev/null redirection is to avoid having a message printed each time you open a terminal.

1 Like

Does intel support conda installation of Fortran Compiler Classic (ifort)?

Following the link
and executing the command

conda install -c intel fortran_rt

it turns out to install some insignificant number of libraries but the compiler itself.

Can you elaborate? I’ve been trying to load the module files as an alternative to sourcing /opt/intel/oneapi/setvars.sh. I tried generating the module-files with

sudo /opt/intel/oneap/modulefiles-setup.sh --output-dir=/usr/share/lmod/lmod/modulefiles/intel

If I do module load intel/compiler/latest after that, it puts ifort in my PATH, but compilation doesn’t work (libimf.so: cannot open shared object file). For the record, compilation does work if I source setvars.sh, but then I can’t un-load the compiler.

Welcome to the forum, @goerz.

I’ve currently settled for using the following modulefile to load Intel’s modules:

local name = "intel"
local version = myModuleVersion()
local prefix = "/opt/intel/oneapi"
local compilerdir = pathJoin(prefix, "compiler", version, "linux")

family("compiler")

append_path("MODULEPATH", pathJoin(prefix, "modulefiles"))
pushenv("CC", pathJoin(compilerdir, "bin/intel64/icc"))
pushenv("CXX", pathJoin(compilerdir, "bin/intel64/icpc"))
pushenv("FC", pathJoin(compilerdir, "bin/intel64/ifort"))
pushenv("F77", pathJoin(compilerdir, "bin/intel64/ifort"))

depends_on("advisor/" .. version)
depends_on("compiler/" .. version)
depends_on("debugger")
depends_on("mkl/" .. version)
depends_on("mpi/" .. version)
depends_on("tbb/" .. version)
depends_on("vtune/" .. version)
1 Like

Thanks! I put that in a file ifort/2022.0.2.lua in my MODULEPATH, but then when I try to load it, I get an error attempt to call global 'depends_on' (a nil value). Any idea what’s wrong here?

I might just have to go back to doing a manual diff of my environment before/after sourcing setvars.sh and write a module file by hand based on that. But I don’t get why Intel provides module files at all if it doesn’t get their users a simple module load ifort.

I noticed that the latest Intel version does not have consistent versions for the modules anymore (just updated this evening), I had to remove the .. version part from the depends_on.

Afterwards it loads just fine again

❯ module load intel
Loading advisor version 2022.0.0
Loading compiler version 2022.0.2
Loading tbb version 2021.5.1
Loading compiler-rt version 2022.0.2
Loading oclfpga version 2022.0.2
  Load "debugger" to debug DPC++ applications with the gdb-oneapi debugger.
  Load "dpl" for additional DPC++ APIs: https://github.com/oneapi-src/oneDPL
Loading debugger version 2021.5.0
Loading mkl version 2022.0.2
Loading mpi version 2021.5.1
Loading vtune version 2022.0.0

Sorry, yeah, I noticed that too, and I should have mentioned I fixed the depends_on to make sure that the names referenced there actually exist. Still, any depends_on causes a problem. Lua just doesn’t seem to know about that function. Just pushenv is fine, though, so it does know about at least some lmod functions.

Maybe that’s a more recent addition to lmod, I’m usually using quite recent versions of most software if available

❯ module --version

Modules based on Lua: Version 8.5.16  2021-09-24 13:35 -05:00
    by Robert McLay mclay@tacc.utexas.edu

There are alternatives to depends_on, try load or always_load (see An Introduction to Writing Modulefiles — Lmod 8.6.8 documentation).

1 Like