modern-fortran / neural-fortran

A parallel framework for deep learning
MIT License
398 stars 82 forks source link

Avoiding co-arrays e.g. co_sum, co_broadcast when using intel compilers? #19

Closed mspritch closed 4 years ago

mspritch commented 4 years ago

I'd like to use some of the core library source files within a climate model code that I can only compile with intel (not gnu) compilers due to rampant violations of gnu protocols elsewhere in its [substantial] code that would take ages to clean up.

As far as I can tell unless I use gnu I cannot access the co_sum intrinsic for coarrays assumed to be available by mod_network.F90 and mod_layer.F90. Does anyone know a workaround? Maybe an equivalent functionality that is intel-safe?

Thanks in advance!

mspritch commented 4 years ago

Oops! Never mind I see the commit 15 days ago already shielded calls to co_* with CPPDEFs... answered my own question, thanks for anticipating it.

milancurcic commented 4 years ago

Cool! Do you mind sharing which climate model it is?

Yes, as of that commit that added CAF cpp macro, the collectives will be excluded if you run cmake with -DSERIAL=1. However the collectives are currently the only implementation that allows parallel training. It'd be straightforward to add mpi_sum() and mpi_broadcast() equivalents. I will open a separate issue for that.