About Cray Compiling Environment (CCE)
| Module Collection: | PrgEnv-cray |
| Command: | ftn, cc, CC |
| Compiler-specific man pages: | crayftn(1), craycc(1), crayCC(1) Note: Compiler-specific man pages are available only when the compiler module is loaded. |
| Online help: | cc -help, CC -help, |
| Documentation: | Cray Fortran Reference Manual, Cray Compiling Environment Release Overview, Cray Classic C and C++ Reference Manual, Clang Users Manual (https://clang.llvm.org/docs/UsersManual.html) |
To use CCE, restore the PrgEnv-cray module collection.
Two different compiler suites and associated modules are included in this module collection. Module cce-sve provides CCE Fortran, C, and C++ where C and C++ are supported with Cray's legacy ("Classic") C and C++ compiler. The module must be paired with a craype-arm-nsp1 target module to generate ARM SVE code. This is the default compiler suite in this collection.
Module cce provides CCE Fortran, C, and C++ where C and C++ are supported with a Clang-based compiler. The module must be paired with a craype-arm-thunderx2 target module for the compiler to generate ARM Neon code. The craype-arm-nsp1 target is not supported with this compiler suite. To use this compiler suite, swap to the cce module using module switch cce-sve cce.
For more detailed information about the Fortran, C, and C++ compiler command-line arguments, see the crayftn(1), craycc(1), and crayCC(1) man pages, respectively.
One of the most useful compiler features is the ability to generate annotated loopmark listings showing what optimization were performed and their locations. Together with compiler messages, these listings can help zero-in on areas in the code that are compiling without error but not fully optimized.
For more detailed information about generating and reading loopmark listings, see crayftn(1), craycc(1), crayCC(1) man pages, and the Cray Fortran Reference Manual.
In many cases, code that is not optimizing well can be corrected without substantial changes to the code itself, but simply by applying the right pragmas or directives.
For more information about compiler pragmas and directives, see the intro_directives(1) man page.