Douglas Walls' Weblog

« Previous month (May 2006) | Main | Next month (Jul 2006) »
20060627 Tuesday June 27, 2006

Linux Technology Preview, Build 24 - June 2006

Update: Sun Studio Compilers for Linux Technology Preview

We've just made Build 24 - June 2006 available for download visit:
http://developers.sun.com/prodtech/cc/downloads/tech_preview.jsp

Some of the features changes available in this update include:
  • Thread local storate support
  • -fast command line macro now includes: -dalign -fns -nofstore -fsimple=2 -fsingle -xalias_level=basic -xtarget=native -xO5 -xregs=frameptr
  • suncc, sunCC, sunf90, sunf77, sunf95, sunc89, sunc99, sunas compiler driver nicknames
  • -m32 and -m64 flags specifying respectively, the ILP32 and LP64 address models
  • The -xMD, -xMF, -xMMD flags for controlling makefile dependency information
  • #include_next directive
  • aligned and visibility __attribute__ support in C
  • value returning blocks in C
  • __typeof__ support in C
  • Zero length arrays in C
  • C++ compiler: stlport4 and rw7 libraries

  • -fast command line macro now includes: -xO5 -xtarget=native -xprefetch=auto -dalign -fsimple=2 -fns=yes -ftrap=common -nofstore
  • interval arithmetic on Solaris Intel
  • CAUTION messages issued when using the same symbols that are defined in different modules.
  • Faster compilation time for source files with many constant values.
  • Intrinsic functions called with UNSIGNED arguments improved.

( Jun 27 2006, 05:55:27 PM PDT ) Permalink Comments [0]

20060626 Monday June 26, 2006

Sun Studio Express Program June 2006 Build

Sun Studio Express Program June 2006 Build

Want a peek at the latest Sun Studio Compilers and Tools under development from Sun?  The Sun Studio Express Program provides the Sun developer community with an early look at new features and technologies of the Sun Studio Compilers and Tools.  The Sun developer community can assess the benefits of the most current compiler and tools innovations.  Through the Sun Studio forums, the Sun developer community can ask question and give feedback, long before they are released as products.

Wonder if the next revision of the Sun Studio Compilers is going to give your application a performance boost?  Now you can find out.

With the June 2006 Build, the Sun Studio Express Program is featuring the Data Race Detection Tool (DRDT), a cool new tool for datarace detection in OpenMP, threaded and parallel programs.  DRDT works with code written using the POSIX thread API, the Solaris Operating System(R) thread API, OpenMP directives, Sun parallel directives, Cray(R) parallel directives, or a mix of these.

So go check out the Sun Studio Express Program at:
http://developers.sun.com/prodtech/cc/downloads/express.jsp

Some of the other features being introduces with the June 2006 Build include:

  • suncc, sunCC, sunf90, sunf77, sunf95, sunc89, sunc99, sunas compiler driver nicknames
  • -m32 and -m64 flags specifying respectively, the ILP32 and LP64 address models
  • The -xMD, -xMF, -xMMD flags for controlling makefile dependency information
  • #include_next directive
  • aligned and visibility __attribute__ support in C
  • value returning blocks in C
  • __typeof__ support in C
  • Zero length arrays in C
  • -xinstrument=datarace to support the cool new Data Race Detection Tool
  • interval arithmetic on Solaris Intel
  • CAUTION messages issued when using the same symbols that are defined in different modules.
  • Faster compilation time for source files with many constant values.
  • Intrinsic functions called with UNSIGNED arguments improved.
  • Improved backward compatibility with old F77 objects produced by the Sun WorkShop 6 update 2 compiler
  • major improvements in the performance of the Fast Fourier Transform software
  • Improved the performance of the Transpose routines : CTRANS, DTRANS, STRANS, ZTRANS.
  • Improved the performance and scalability of the Cholesky factorization routines: CPOTRF, DPOTRF, SPOTRF, ZPOTRF.
  • analyzer and er_print have been enhanced to present data race detection information, ie. the Data Race Detection Tool.
  • collect and er_kernel command:
  • new -r option for collecting data-race-detection data
  • new -t option which specifies a time range for data collection
  • Function and instruction count data can be recorded using the collect -c on option
  • -P <pid> option, to attach to the process with the given PID, and collect data from it
  • -F flag for collecting data on descendant processes
  • -p <interval> may be prepended with a + sign to record additional data corresponding to dataspace profiling.

( Jun 26 2006, 08:00:25 PM PDT ) Permalink Comments [0]

20060615 Thursday June 15, 2006

Report bugs on Sun Studio Compilers and Tools at bugs.sun.com
You can now report bugs on Sun Studio Compilers and Tools at bugs.sun.com.

Here is how:

  • C Compiler
  • C++ Compiler
  • Fortran
  • Dbx
  • Performance Analyzer
  • IDE
  • Dmake
  • Other
 
You'll recieve an acknowledgment of your submital, and if accepted and entered into Sun's bug database an email with a Bug ID to track the issue with.

Check it out.

Comming soon, the ability to search for Sun Studio Compilers and Tools bugs at bugs.sun.com ...

( Jun 15 2006, 12:41:40 PM PDT ) Permalink Comments [0]

20060602 Friday June 02, 2006

The real story on the cc command and the -xregs=frameptr option
Alas the Sun Studio 11 C User's Guide documentation about -xregs=frameptr and -fast expansion that includes -xregs=frameptr is incorrect to the point of being completely confusing.

http://docs.sun.com/source/819-3688/cc_ops.app.html Appendix B 2.16, Table B-5 -fast option description incorrectly list -fast on x86 as expanding to -xregs=no%frameptr.  That is not correct.  The -fast macro option on x86 expansion includes -xregs=frameptr.

Later in Appendix B at 2.129, near the end of the description of -xregs, exists the following incorrect sentence:

The x86 default is -xregs=no%frameptr unless you specify -fast or an optimization of -xO5 in which case -xregs=frameptr.

-xO5 has no effect what-so-ever on -xregs option.  The sentence should read:

The x86 default is -xregs=no%frameptr unless you specify the -fast macro option whose expansion includes -xregs=frameptr.

Unfortunately the cc man page also has the equivalent errors incorrectly showing -fast expanding to -xregs=no%frameptr, and claiming -xO5 implies -xregs=frameptr.



So to recap, here is an accurate description of -xregs=frameptr, and how the -fast macro expands for cc on x86/64:

-xregs=frameptr    Tells the compiler it is allowed to use the frame-pointer
                              register as an unallocated callee-saves register for purposes
                              of optimization.

-xregs=no%frameptr  Tells the compiler it is NOT allowed to use the frame=pointer
                                   register for purposes of optimization.

The x86 default is -xregs=no%frameptr unless you specify the -fast macro option whose expansion includes -xregs=frameptr.



-xregs=frameptr allow the compiler to use the frame-pointer register (%ebp on IA32, %rbp on AMD64) as an unallocated callee-saves register.  Using this register as an unallocated callee-saves register may improve program run time. However, it also reduces the capacity of some tools to inspect and follow the stack. This stack inspection capability is important for system performance measurement and tuning.  Therefor, using this optimization may improve local program performance at the expense of global system performance.
The failures in C++ exceptions occur when a C function that has lost its frame pointer calls a C++ function that throws an exception through the C function. Such calls typically occur when a function accepts a function pointer (for example, qsort) or when a global function, such as malloc, is interposed upon. The last two affects listed above may impact the correct operation of applications. Most application code will not encounter these problems.



Note some might also be confused by the following bullet item in the C man page ...

The documentation at the top of the cc man page about -xregs=no%frameptr is incorrect, it currently says:

     o A new x86-only flag for the -xregs option,
     -xregs=[no%]frameptr, lets you use the frame-pointer regis-
     ter as an unallocated callee-saves register to increase the
     run-time performance of applications.

This needs to be corrected to say:

     o A new x86-only flag for the -xregs option,
     -xregs=frameptr, lets you use the frame-pointer regis-
     ter as an unallocated callee-saves register to increase the
     run-time performance of applications.



Note the Sun Studio 10 C User's guide does not have these errors, i.e. it correctly describes -xregs=frameptr and -fast  ( Jun 02 2006, 02:59:24 PM PDT ) Permalink Comments [0]

Search

Calendar

Links

Navigation

Referers