Cray Compiler Environment
Overview
HPE Cray Compiling Environment (CCE) consists of a Fortran compiler, libraries, and utilities that perform code analysis during compilation and automatically generate highly optimized code. The compiler supports numerous command-line arguments to enable manual control over compiler behavior and optimization. CCE provides a Fortran compiler for x86-64 and AArch64 CPUs, as well as AMD and NVIDIA GPUs.
Introduction
HPE Cray’s proprietary Fortran compiler that fully supports the Fortran 2018 standard with some exceptions and deferred features as noted in the HPE Cray Compiling Environment Release Overview (S-5212). The HPE Fortran programming environment consisting of the tools and libraries used to develop Fortran applications. Some of those tools and libraries are outlined below.
The crayftn(1) command, a compiler driver that compiles source into object code and links object code files and libraries to create executable files.
The ftnlx(1) command, which generates listing and checks for possible Fortran programming errors.
The ftnsplit(1) command, which splits named Fortran files into separate files with one program unit per file.
The ftnmgen(1) command, which invokes the Fortran makefile generator.
CrayLibs libraries, which provides library routines, intrinsic procedures, I/O routines, and data conversion routines.
Compiling and Launching
Compiling a code is typically done on a user access or login node rather than directly on a compute node. Use the HPE Cray Fortran compiler driver, crayftn(1), to quickly and easily compile, assemble, and link Fortran code. Use the -hcpu, -haccel, and -hnetwork compiler flags to select CPU, accelerator, and network targets. See crayftn(1) for more information.
The cray-fortran module adds crayftn and its man pages to the PATH and MANPATH environment variables. It does not integrate with CPE modules or Cray PE drivers.
After an executable is generated it is launched via a workload manager, such has PBS Professional or Slurm.
The following sections detail some of the larger CCE components.
Introduction Man Pages
These man pages introduce and explain various compiler features and concepts.
- Introduction to Compiler Directives
- Introduction to Conversion
- Introduction to ffio
- Introduction to IEEE
- Introduction to intrin
- Introduction to IO
- Introduction to libm
- Introduction to OpenACC
- Introduction to OpenMP
- Introduction to PGAS
- Introduction to pxf
- Introduction to Quad Precision
- Introduction to Timing
- Overview of CCE Compiler Interoperability
Directives
- autothread
- blockable
- blockingsize
- bounds
- buffered_async
- cache
- cache_nt
- clone
- clonealways
- collapse
- concurrent
- defer_sync
- copy_assumed_shape
- duplicate
- free
- fusion
- hand_tuned
- ident
- inline
- inlinealways
- instantiate
- interchange
- ivdep
- loop_info
- memory
- nextscalar
- nofission
- nosideeffects
- opt
- optimize
- pattern
- permutation
- pgo_loop_info
- pipeline
- prefervector
- prefetch
- preprocess
- probability
- safe_address
- safe_conditional
- same_tbs
- shortloop
- stack
- suppress
- unroll
- vector
- weak
IEEE Man Pages
- ieee_class
- ieee_copy_sign
- ieee_get_flag
- ieee_get_halting_mode
- ieee_get_rounding_mode
- ieee_get_status
- ieee_get_underflow_mode
- ieee_is_finite
- ieee_is_nan
- ieee_is_negative
- ieee_is_normal
- ieee_logb
- ieee_next_after
- ieee_real
- ieee_rem
- ieee_rint
- ieee_scalb
- ieee_selected_real_kind
- ieee_set_flag
- ieee_set_halting_mode
- ieee_set_rounding_mode
- ieee_set_status
- ieee_set_underflow_mode
- ieee_support_datatype
- ieee_support_denormal
- ieee_support_divide
- ieee_support_flag
- ieee_support_halting
- ieee_support_inf
- ieee_support_io
- ieee_support_nan
- ieee_support_rounding
- ieee_support_sqrt
- ieee_support_standard
- ieee_support_underflow_control
- ieee_unordered
- ieee_value
Math Man Pages
AIO Man Pages
PXF Man Pages
- pxfaccess
- pxfalarm
- pxfcfgetospeed
- pxfchdir
- pxfchmod
- pxfchown
- pxfchroot
- pxfclearenv
- pxfclose
- pxfconst
- pxfcreat
- pxfctermid
- pxfdirectory
- pxfestrget
- pxfexecv
- pxffastexit
- pxffcntl
- pxffileno
- pxffork
- pxfgetarg
- pxfgetcwd
- pxfgetegid
- pxfgetenv
- pxfgeteuid
- pxfgetgid
- pxfgetgrgid
- pxfgetgrnam
- pxfgetgroups
- pxfgetlogin
- pxfgetpgrp
- pxfgetpid
- pxfgetppid
- pxfgetpwnam
- pxfgetpwuid
- pxfgetuid
- pxfintget
- pxfintset
- pxfisatty
- pxfisblk
- pxfischr
- pxfisdir
- pxfisfifo
- pxfisreg
- pxfkill
- pxflink
- pxflocaltime
- pxfopen
- pxfpause
- pxfpipe
- pxfrename
- pxfrmdir
- pxfsetenv
- pxfsetsid
- pxfsetuid
- pxfsigaddset
- pxfsigdelset
- pxfsigemptyset
- pxfsigfillset
- pxfsigismember
- pxfsigpending
- pxfsigprocmask
- pxfsigsuspend
- pxfsleep
- pxfstat
- pxfstrget
- pxfstrset
- pxfstructcopy
- pxfstructcreate
- pxfstructfree
- pxfsysconf
- pxfsystem
- pxftime
- pxftimes
- pxfucompare
- pxfumask
- pxfuname
- pxfunlink
- pxfutime
- pxfwait
Misc Man Pages
- abort
- adjustl
- adjustr
- all
- allocated
- amo
- any
- asnctl
- asnqfile
- assign
- assign
- associated
- bit_size
- btest
- c_loc
- char
- clock
- cmr
- co_bcast
- co_broadcast
- co_max
- co_min
- co_sum
- command_argument_count
- compl
- count
- cpu_time
- cri2ieg
- cry2ieg
- cshift
- csmg
- cvmg
- date
- date_and_time
- dble
- digits
- dim
- dshiftl
- dshiftr
- eoshift
- epsilon
- eqv
- erf
- ex
- execute_command_line
- exit
- explain
- expm1
- fcd
- fdcp
- ffassign
- fffcntl
- ffiolock
- fflistio
- ffopen
- ffread
- ffseek
- ffstrerror
- flush
- fp_class
- fraction
- fseek
- gbit
- get_command
- get_command_argument
- get_environment_variable
- heap_allocate
- huge
- ia2ieg
- iand
- ibchng
- ibits
- ibm2ieg
- idate
- ieu2ieg
- ilen
- index
- int_mult_upper
- ipxfargc
- ipxfwexitstatus
- ipxfwstopsig
- ipxfwtermsig
- is_iostat
- isha
- ishc
- ishft
- ishftc
- ishl
- kind
- lbound
- leadz
- len
- len_trim
- length
- lge
- lio_listio
- loc
- logical
- malloc
- mask
- matmul
- maxloc
- maxval
- merge
- minloc
- minval
- mips2ieg
- models
- mpp2ieg
- mvbits
- nearest
- not
- null
- num_images
- num_nodes
- num_pes
- numblks
- openacc.examples
- pack
- pbit
- popcnt
- poppar
- precision
- present
- radix
- ran
- random_number
- random_seed
- range
- real
- repeat
- reshape
- rrspacing
- rtc
- scale
- scan
- second
- secondr
- selected_char_kind
- selected_int_kind
- selected_real_kind
- set_exponent
- shape
- shift
- shifta
- size
- sizeof
- spacing
- spread
- sysclock
- system_clock
- this_image
- this_node
- time
- timef
- tiny
- trailz
- transfer
- transpose
- trim
- trimlen
- ubound
- unit
- unpack
- usr2ieg
- vax2ieg
- verify