Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Jan 25 16:36
    vehre commented #727
  • Jan 25 11:29
    vehre synchronize #746
  • Jan 25 11:29

    vehre on issue-745-rename-co_reduce-operator-for-F2018

    Fix using co_reduce(...operator… (compare)

  • Jan 24 17:27
    everythingfunctional commented #746
  • Jan 24 09:22
    vehre commented #746
  • Jan 24 09:21
    vehre synchronize #746
  • Jan 24 09:21

    vehre on issue-745-rename-co_reduce-operator-for-F2018

    Fix using co_reduce(...operator… (compare)

  • Jan 22 02:49
    rouson closed #743
  • Jan 22 02:49
    rouson commented #743
  • Jan 20 21:33
    rouson commented #746
  • Jan 20 21:29

    rouson on rm-yaml

    (compare)

  • Jan 20 21:29

    rouson on main

    git rm no-response.yml stale.yml Merge pull request #747 from so… (compare)

  • Jan 20 21:29
    rouson closed #747
  • Jan 20 21:29
    rouson commented #744
  • Jan 20 20:57

    rouson on issue-743-fix-compile-warnings

    (compare)

  • Jan 20 20:57
    rouson closed #744
  • Jan 20 20:57

    rouson on main

    Fix compile warnings LOGICAL ->… Merge branch 'issue-743-fix-com… (compare)

  • Jan 20 20:53
    rouson opened #747
  • Jan 20 20:51

    rouson on rm-yaml

    git rm no-response.yml stale.yml (compare)

  • Jan 11 20:18
    everythingfunctional commented #746
Damian Rouson
@rouson
@chienesh I don't recall who owned www.co-array.org, but I don't think it was ever "official" as the official standards body for Fortran (including the standardized coarray features) is the ISO WG5 site. The most official resource is the draft version of the Fortran 2015 standard, which is available on the WG5 site here. With the support of OpenCoarrays, gfortran supports most coarray features with the only major exception being teams. Also, it's worth noting that even though "coarray Fortran" is a popular term for historical reasons, it's also possible to accomplish quite a lot by way of parallel programming without ever declaring or using a coarray. For some applications, any communication needs can be covered by the Fortran 2015 collective subroutines (co_broadcast, co_sum, co_max, co_min, and co_reduce). I highly recommend reading about those subroutines in the standard and using them whenever they are applicable. The can accomplish parallel communication and computation in a very efficient manner in shared or distributed memory and the arguments to these subroutines do not need to be declared as coarrays.
chiensh
@chiensh
Thank you Damian! I was also checking if there is any plan for collective routines in future, and you have answered my question. BTW, although www.co-array.org has never been the official CAF site, but it was referenced in the homepage of J3 Fortran Committee and wikipedia, so I think it needed to be clarified.
Damian Rouson
@rouson
Interesting. I didn't realize that. FYI, the Cray compiler also supports the Fortran 2015 collective subroutines. And as you might know, Intel's compiler reached full Fortran 2008 compliance this year with the beta release of version 18. I assume that means they'll start on Fortran 2015 parallel features after the 18 (they already support many if not all of the Fortran 2015 C-interop features so the parallel features should be next). Collective procedures are probably the easiest of the Fortran 2015 parallel features because they can be implemented as thin wrappers around MPI_Reduce. Let's hope we can have three Fortran 2015 compilers within 2-3 years.
Jeff Hammond
@jeffhammond
it is true that Fortran 2015 coarray collectives are easy to implement, particularly in compilers that use MPI as the coarray runtime. i don't know when Intel plans to implement these, but in general, the compiler team prioritizes features based upon customer demand. posting on the Intel forums or filing support tickets is the right way to create this demand (in addition to setting procurement requirements, which is not an option for most folks, obviously).
(says Jeff who works for Intel but does not speak for Intel )
Izaak "Zaak" Beekman
@zbeekman
I'm thinking it may not be too hard to get a binder notebook up and running with a coarray Fortran kernel. That would be pretty darn cool.
Stefano Zaghi
@szaghi

Dear @zbeekman and @rouson ,

I know that it is impossible to support all OS... but I would like to report that OpenCoarrays install.sh seems to fail on CentOS (an OS that is quite ancient).

Here my log

[root@broglia-6 OpenCoarrays]# ./install.sh -p gcc -b trunk -i /opt/gcc/bin/8.0.0 -j 8 -d
...
2017-06-05 10:35:13 UTC [     info] build_path="/opt/gcc/src/OpenCoarrays"/prerequisites/builds
+ export build_script=/opt/gcc/src/OpenCoarrays/prerequisites/build.sh
+ build_script=/opt/gcc/src/OpenCoarrays/prerequisites/build.sh
+ info 'build_script="/opt/gcc/src/OpenCoarrays"/prerequisites/build.sh'
+ '[' 7 -ge 6 ']'
++ _fmt info
++ local 'color_debug=\x1b[35m'
++ local 'color_info=\x1b[32m'
++ local 'color_notice=\x1b[34m'
++ local 'color_warning=\x1b[33m'
++ local 'color_error=\x1b[31m'
++ local 'color_critical=\x1b[1;31m'
++ local 'color_alert=\x1b[1;33;41m'
++ local 'color_emergency=\x1b[1;4;5;33;41m'
++ local colorvar=color_info
++ local 'color=\x1b[32m'
++ local 'color_reset=\x1b[0m'
++ '[' '' = true ']'
++ [[ xterm-256color != \x\t\e\r\m* ]]
++ '[' -t 1 ']'
+++ date -u '+%Y-%m-%d %H:%M:%S UTC'
+++ printf '[%9s]' info
++ echo -e '2017-06-05 10:35:13 UTC \x1b[32m[     info]\x1b[0m'
+ echo '2017-06-05 10:35:13 UTC [     info] build_script="/opt/gcc/src/OpenCoarrays"/prerequisites/build.sh'
2017-06-05 10:35:13 UTC [     info] build_script="/opt/gcc/src/OpenCoarrays"/prerequisites/build.sh
+ source /opt/gcc/src/OpenCoarrays/prerequisites/stack.sh
+ stack_new dependency_pkg
+ : dependency_pkg
+ stack_exists dependency_pkg
+ : dependency_pkg
+ eval '_i=${_stack_dependency_pkg_i:-}'
++ _i=
+ [[ -z '' ]]
+ return 1
++ uname
+ [[ Linux == \D\a\r\w\i\n ]]
+ eval 'declare -ag _stack_dependency_pkg'

I have trimmed out a lot of hopefully non useful log-lines before the very end.

On the same CentOS workstation I have trouble to compile manually gcc...

Cheers

Izaak "Zaak" Beekman
@zbeekman
Hi Stefano/@szaghi, first of all what does /usr/bin/env bash --version say? Also, can you please include the entire log? I'm not seeing where the error occurred... Damian created a script for use on the ParaTools HPC Linux VM which is also CentOS based, but I'm not sure it has all the same features as ./install.sh (specifying individual packages to build etc.). You could try your luck invoking prerequisites/build.sh ... directly as in https://github.com/sourceryinstitute/OpenCoarrays/blob/master/developer-scripts/hpclinux-install.sh#L64-L69 but you may have trouble resolving the pre-requisite dependencies, I'm not sure....
I also find that sometimes I need to build an intermediate compiler to get a very modern GCC built...
Stefano Zaghi
@szaghi

@zbeekman

Sorry for my delay.

The bash says

(riccardo@broglia-6)-(0)-(05:51 PM Tue Jun 06)
(/opt/gcc/bin)-(2 files, 16Kb)-> /usr/bin/env bash --version
GNU bash, version 4.1.2(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

The complete log of ./install.sh is too long to paste here, can I send it via email?

Anyhow, I manged to install gcc & Co. manually on this CentOS workstation (and in our small cluster that is also CentOS based):

/opt/gcc/bin/ 
├── 7.1.0 
│   ├── bin 
│   ├── include 
│   ├── lib 
│   ├── lib64 
│   ├── libexec 
│   ├── module.sh 
│   └── share 
└── 8.0.0 
   ├── bin 
   ├── include 
   ├── lib 
   ├── lib64 
   ├── libexec 
   ├── module.sh 
   └── share

/opt/mpi/bin/mpich/3.2.0/gnu/ 
├── 7.1.0 
│   ├── bin 
│   ├── include 
│   ├── lib 
│   ├── module.sh 
│   └── share 
└── 8.0.0 
   ├── bin 
   ├── include 
   ├── lib 
   ├── module.sh 
   └── share

FYI, I had not need to build an intermediate gcc for the 7.x and 8.x trunks: this CentOS provides gcc 4.x and it was enough to build them. Probably something is changed with respect 6.x trunks because I remember that I had more problem to build 6.x from 4.x than 7/8.x from 4.x. The only trick was to populate contrib prerequisites before configure/make (that was not necessary in my other workstation with a more decent linux distro...).

My best regards.

Izaak "Zaak" Beekman
@zbeekman
sure, email me the logs at zbeekman@gmail.com
Izaak "Zaak" Beekman
@zbeekman

Hi @/all, Just wanted to let you know that you can now try OpenCoarrays in the cloud via Binder. It is implemented as a kernel for Jupyter over at https://github.com/sourceryinstitute/jupyter-CAF-kernel. You can launch the binder (which also has python, Julia, and R kernels installed) using this button: Binder.

Navigate to the index.ipynb file to run a demo. Or create a new notebook using the Coarray Fortran kernel and run your own experimental code, after seeing a few tutorial details in the index.ipynb file. If you just want to skip straight to that file use this link: https://bit.ly/TryCoarrays. To get to the full on binder instance, same as the button, go to https://bit.ly/CAF-Binder

Jeff Hammond
@jeffhammond
Why in Homebrew does OpenCoarrays say it requires "mpi" but then refuses to accept the one true MPI implementation ("mpich")? Particularly given how buggy Open-MPI has been w.r.t. RMA over the years, it's pretty shocking that you all would rely on it anywhere.
jrhammon-mac01:github jrhammon$ brew info opencoarrays
opencoarrays: stable 1.9.0 (bottled), HEAD
Open-source coarray Fortran ABI, API, and compiler wrapper
http://opencoarrays.org
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/opencoarrays.rb
==> Dependencies
Build: cmake ✔
Required: gcc ✔
==> Requirements
Required: fortran ✔, mpi ✘
==> Options
--without-test
    Skip build time tests (not recommended)
--HEAD
    Install HEAD version
==> Installing dependencies for opencoarrays: libevent, open-mpi
==> Installing opencoarrays dependency: libevent
==> Downloading https://homebrew.bintray.com/bottles/libevent-2.1.8.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring libevent-2.1.8.sierra.bottle.tar.gz
^C
jrhammon-mac01:github jrhammon$ brew install mpich && brew install opencoarrays
==> Downloading https://homebrew.bintray.com/bottles/mpich-3.2_3.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring mpich-3.2_3.sierra.bottle.tar.gz
==> Using the sandbox
🍺  /usr/local/Cellar/mpich/3.2_3: 885 files, 14.2MB
==> Installing dependencies for opencoarrays: libevent, open-mpi
==> Installing opencoarrays dependency: libevent
==> Downloading https://homebrew.bintray.com/bottles/libevent-2.1.8.sierra.bottle.tar.gz
Already downloaded: /Users/jrhammon/Library/Caches/Homebrew/libevent-2.1.8.sierra.bottle.tar.gz
==> Pouring libevent-2.1.8.sierra.bottle.tar.gz
==> Using the sandbox
🍺  /usr/local/Cellar/libevent/2.1.8: 847 files, 2.2MB
==> Installing opencoarrays dependency: open-mpi
Error: Cannot install open-mpi because conflicting formulae are installed.
  mpich: because both install mpi__ compiler wrappers

Please `brew unlink mpich` before continuing.

Unlinking removes a formula's symlinks from /usr/local. You can
link the formula again after the install finishes. You can --force this
install, but the build may fail or cause obscure side-effects in the
resulting software.
I mean, there's a reason that ARMCI-MPI in Travis CI has the XFAIL list that it does... (https://travis-ci.org/jeffhammond/armci-mpi)
Damian Rouson
@rouson
@szaghi My apologies for not responding sooner. I just came out of a stretch of insane travel to 5 countries in about 8 weeks for both business and family travel and I'm just digging out from under about 2,000 unread emails. I have seen problems with the installer with older Fedora-based distributions. The problems I've seen relate to the stack-management code that I borrowed from http://brizzled.clapper.org/blog/2011/10/28/a-bash-stack/. I believe that's the same code that failed on CentOS for you. I have found that it works on more recent distributions so I decided not to investigate further. I would be glad to review a pull request if you or another user wants to fork OpenCoarrays and submit a fix. Otherwise, I'm hopeful that most people with either be able to update to a newer release of the Linux distribution or will use package management such as linuxbrew.
Stefano Zaghi
@szaghi

@rouson Dear Damian, do not worry, I know how much busy you are. For the CentOS we are very in trouble: the cluster front-end has a more recent CentOS with respect other nodes thus also the manual compilation of gcc is problematic (it works with some tricks on the front-end, but nope into the nodes...), not only the installation of opencoarrays. Unfortunately, I am also very busy for an open public contest that will end in August (all my work is almost "freeze") thus I cannot try to fix our cluster issues neither try to provide a patch for OpenCoarrays for supporting such an aged OS. Anyhow, thank you very much for having found the time to replay to me, you are great!

Cheers.

P.S. I read about the new initiative of the standard committee for collecting users suggestions: Jacob ( @jacobwilliams ) has started a GitHub repository for collecting such items https://github.com/Fortran-FOSS-Programmers/Fortran-202X-Proposals . It would be wonderful if you and other committee members will "put an eye" on it (I know that Van Snyder has many many proposals, it would be great if he will join us on GitHub).

Jeff Hammond
@jeffhammond
@szaghi You can submit the compilation of GCC as a batch job to build it on the compute nodes.
Stefano Zaghi
@szaghi
@jeffhammond Hi Jeff, yes you are right, but the problem is that I have to find how to build gcc on the nodes and now I am too much busy. On the nodes, it seems that before building gcc 6,.x I have to build gcc 5.x by means of the gcc 4.x provided by the system... this needs some tests that now I cannot do. On the contrary, the frontend builds gcc 6.x straightforward. Why on the Earth we use CentOS... Anyhow, thank you very much! Cheers
Jeff Hammond
@jeffhammond
@szaghi If your issue is figuring how to build GCC non-interactively, please consider using my script for this. https://github.com/jeffhammond/HPCInfo/blob/master/buildscripts/gcc-release.sh#L58 is the only line you should need to edit, according to which version(s) you want.
Jeff Hammond
@jeffhammond
if you want GCC 6.4.0, change bz2 to xz until i push a fix.
those are boot-strapped builds so they should not require a new version of GCC. i use that on CentOS 6.6 with GCC 4.4.7 system compiler.
Stefano Zaghi
@szaghi
Hi @jeffhammond thank you for sharing your script, tomorrow I'll try it. Cheers
Izaak "Zaak" Beekman
@zbeekman
@jeffhammond sorry for the slow response regarding your Homebrew inquiry. I have seen this before and been mystified by it. When you do brew info mpich does it show mpich is installed? I have a Brewfile that you can use with brew bundle. First brew tap homebrew/bundle && brew bundle # Brewfile must be in CWD
Izaak "Zaak" Beekman
@zbeekman
hmmm I may have to add a build-from-source argument to the Brewfile... Your problem stems from the fact that Homebrew defaults to OpenMPI even though, as you point out, it has serious RMA problems. If you can cite compelling reasons and evidence of it's dysfunction, I would suggest opening an issue on the main Homebrew repo. I will weigh in with my support. When you install OpenCoarrays, adding a --build-from-source argument should alleviate your issues and allow it to use MPICH. Homebrew bottles all formulae by default, and using it's preferred/default MPI: OpenMPI. So, when homebrew builds binaries for OpenCoarrays it defaults to linking against OpenMPI. So, to satisfy the MPI requirement locally, without OpenMPI installed, you need to build OpenCoarrays from source by passing --build-from-source to brew install --build-from-source OpenCoarrays
Izaak "Zaak" Beekman
@zbeekman
OpenCoarrays 1.9.1 has been released and includes many bug fixes: https://github.com/sourceryinstitute/OpenCoarrays/releases/latest

Github Releases (by Asset) Build Status license Twitter URL

Bug fixes

  • #325 install.sh will help user download and install Xcode command line tools (CLT) on Mac OS which is needed to compile code on Macs if it is missing or excessively outdated
  • #378 mpirun changed to mpiexec and mpif90 changed to mpifort, consistent with MPI standard recommendations
  • #398 fix some erroneous internal library calls when exceptions are encountered
  • #399 fix allocation of allocatable components of coarray derived types
  • #402 increase portability of install script install.sh by removing dependency on tree command
  • #404 fix issue where install.sh was ignoring user specified -m/--with-cmake CMake location
  • #406 use secure https/encrypted sources for fetching and installing prerequisites to help mitigate the possibility of a man-in-the-middle (MITM) attack
  • #408 switch to downloading the gzipped GCC archive rather than the bz2 because gzip is more common/portable and because bz2 compressed GCC archives seem to have disappeared for some recent releases on GCC mirrors
  • #411 fix bug causing event_post to hang when going over the network (multiple nodes)
  • #422 clarify runtime error messages for partially or un-implemented
  • Corrected logic to control under which circumstances certain tests are run that may only work correctly under GFortran 6 or GFortran 7

Enhancements

  • #410 add option --disable-bootstrap to install.sh to help speed builds of GCC when bootstrapping is not required because a recent GCC is performing the build
  • #424 add option to install.sh to download the requested package from a user specified URL
  • Prevent developer's advanced Makefiles and GASNet directory from being distributed with release tarballs

Installation

Please see the installation instructions for more details on how to build and install this version of OpenCoarrays


GitHub forks GitHub stars GitHub watchers Twitter URL