# coarray, Qcoarray

Enables the coarray feature.

## Syntax

Linux: | -coarray[=keyword]

macOS: | None

Windows: | /Qcoarray[:keyword]

## Arguments

keyword | Specifies the memory system where the coarrays will be implemented. Possible values are:
shared | Indicates a shared memory system. This is the default.
distributed | Indicates a distributed memory system.
single | Indicates a configuration where the image does not contain self-replication code. This results in an executable with a single running image. This configuration can be useful for debugging purposes, even though there are no inter-image interactions.

## Default

OFF | Coarrays are not enabled unless you specify this option.

## Description

This option enables the coarray feature of the Fortran 2008 Standard. It enables any coarray syntax in your program. If this option is not specified, coarray syntax is rejected.

It also tells the driver to link against appropriate libraries, and to create the appropriate executables.

Only one keyword can be in effect. If you specify more than one keyword, the last one specified takes precedence. However, if keyword single is specified anywhere on the command line, it takes precedence.

You can specify option [Q]coarray-num-images to specify the default number of images that can be used to run a coarray executable. If you do not specify that option, you get the number of execution units on the current system.

You can specify the [Q]coarray-config-file option to specify the name of a Message Passing Interface (MPI) configuration file.

Options [Q]coarray-num-images and [Q]coarray-config-file are valid for all keyword values.

### Note

Coarrays are only supported on 64-bit architectures.

## IDE Equivalent

Visual Studio: Language > Enable Coarrays

## Alternate Options

None

## Example

The following command runs a coarray program on shared memory using n images:

    /Qcoarray /Qcoarray-num-images:n          ! Windows systems

    -coarray -coarray-num-images=n            ! Linux systems

The following command runs a coarray program on distributed memory using n images:

    /Qcoarray:distributed /Qcoarray-num-images:n          ! Windows systems

    -coarray=distributed -coarray-num-images=n            ! Linux systems

The following command runs a coarray program on shared memory using the MPI configuration file specified by filename:

    /Qcoarray:shared /Qcoarray-config-file:filename        ! Windows systems

    -coarray=shared -coarray-config-file=filename          ! Linux systems

The following commands illustrate precedence:

Linux* systems:

    -coarray=single –coarray=shared               ! single takes precedence (single always takes precedence)

Windows* systems:

    /Qcoarray:distributed /Qcoarray:shared        ! shared takes precedence (last one specified)

    /Qcoarray:single /Qcoarray:shared             ! single takes precedence (single always takes precedence)

Parent topic: Advanced Optimization Options

## See Also

coarray-num-images, Qcoarray-num-images compiler option
coarray-config-file, Qcoarray-config-file compiler option
Coarrays
Using Coarrays