First Impressions from SGI’s MIPSpro Compiler Suite 7.4

The compiler suite coming for all SGI MIPS-based machines is one of the best optimized development tools for any platform. SGI has put many years of experience on the newest version of the series, MIPSpro 7.4, which we recently gave it a spin.The tools support C/C++ and Fortran 77/90. For legacy and other reasons, the tools support no less than 3 ABIs for both 32bit and 64bit development and execution (the 32bit part supports 32bit data addressing and pointers while the 64bit part supports 64bit data addresses and pointers). Supported platforms are the MIPS R4000 up to R14000 and the suite can be installed on any IRIX 6.5.x platform but full C99 support can only be provided on 6.5.18 because the new C99-compliant C library is provided with the operating system.

Some of the great features found on the MIPSpro compilers is the ability for Automatic Parallelization Option which allows the applications to automatically take advantage of an SMP environment and multi threading. Additionally, there is a good integration between the supported programming languages. For example, libraries written in Fortran 77 or 90, can be reused/linked against C/C++ apps with no code changes.

Among the major new features you will find in the brand new version of the compiler suite is OpenMP 2.0 support on Fortran, C99 support, full Fortran 90 support and several back-end enhancements.

For C code, you can either use the “cc -c99” flag to access the new features, or you will need to use the new command “c99” on the command line. Among the new features in C you will find support for __Bool, __Complex and Imaginary keywords and data types. Also, you will find support for designated initializers for arrays, structures and unions, variable length arrays and variable number of macros.

The debugger on IRIX 6.5.18 - Click for a larger view

One great feature found on MIPSpro is the ability to load “modules” that will let you compile your application with the same libraries and compiler found on older version with two simple command like this:
module load modules
module load MIPSpro.7313

and if you want to go back to the latest version, you do again
module load MIPSpro.74

To debug, you can do it via the command line, like this: cc -g myprog.c
or by loading cvd, which is the GUI front end to the debugger. With CVD you can expect to find all what a developer would expect to find on a modern debugger (you can debug memory, arrays…) SGI also includes support for the great “fix and continue” feature, which lets you modify the program at the source level while under the debugger and automagically continues running from the new source transparently!

The profiler can be used with any language, while it may be used often for Fortran programs, it is not a limitation. The profiler has 4 settings of optimizations. For example you can do something like ff77 -00 myprog.f which is the default optimization level. Changing the -00 setting to -01 up to -03 would give you higher level of optimizations. We should not forget that SGI has got into great lengths to create tools that generate extremely optimized code. The ssrun command, used to find bottlenecks in code, executes performance analysis experiments with users program and the results can either be displayed with a GUI tool (cvperf) or as text using the prof command.

Documentation is very good. There are 13 books about the MIPSpro compiler which are get installed along with the dev tools and you can find some of them online too.

Prices start from $700 USD for a single user and it goes up depending on the machine that the compiler will run, on contracts, number of CPUs or number of users.

For the Itanium machines, SGI will stick to the Intel C and Fortran compilers.

We did not experience problems with the MIPSpro compiler suite, but what is really missing from the solution is a GUI IDE.


  1. 2002-12-09 5:41 am
  2. 2002-12-09 5:59 am
  3. 2002-12-09 6:10 am
  4. 2002-12-09 7:13 am
  5. 2002-12-09 12:11 pm
  6. 2002-12-09 12:50 pm
  7. 2002-12-09 1:33 pm
  8. 2002-12-09 4:23 pm
  9. 2002-12-09 5:29 pm
  10. 2002-12-09 5:53 pm
  11. 2002-12-09 6:07 pm
  12. 2002-12-09 6:11 pm
  13. 2002-12-09 6:19 pm
  14. 2002-12-09 6:48 pm
  15. 2002-12-09 9:32 pm
  16. 2002-12-09 9:35 pm
  17. 2002-12-09 9:37 pm
  18. 2002-12-09 10:18 pm
  19. 2002-12-09 10:52 pm
  20. 2002-12-10 12:16 am
  21. 2002-12-10 11:50 am
  22. 2002-12-10 1:04 pm
  23. 2002-12-10 7:46 pm