Index


Home
Disclaimer
Download
People
Change Log
Acknowledgements
CAPSL Home Page
Original SPLASH-2
CAPSL Logo
UD Logo
Splash photo!
The Modified SPLASH-2 Home Page

Change Log

This is a complete list of the changes we made to the Original SPLASH-2 Benchmarks Suite:
  • The variable Global->G_root->seqnum had to be initialized to zero, in the function init_root() of the BARNES application.
  • Lines 440 and 442 of the file code.C of the BARNES application (ADDV(cmr, cmr, Pos(p)) and ADDV(cmr, cmr, Vel(p))) had to be moved out of the corresponding inner loop. This bug and the previous one were discovered when running the application on the Cyclops-64 system, which initializes all bytes in memory to 0xFF, instead of zero.
  • The _Complex type, defined in defs.H, had to be renamed into __Complex for the FMM application.
  • __DBL_DIG__, instead of DBL_DIG, had to be used in defs.H for the FMM application.
  • Most of the int variables have been converted into long variables. Although this does not change anything on 32-bit systems, it allows for better code generation on some 64-bit systems, like Cyclops-64. This is due to the fact that a long is 32 bits wide on 32-bit systems and 64 bits wide on 64-bit systems. However, some applications read data from files and expect it to have a specific size. For these cases, we were not able to change all variables. The most notable case is VOLREND.
  • All missing function prototypes have been added.
  • Parameter declaration for functions has been changed. For example:
    • void foo(x, N)
    • double *x;
    • long N;
    • {
    • ...
    • }
    has been changed into:
    • void foo(double *x, long N) {
    • ...
    • }
  • Function prototypes for functions without arguments have been corrected. For example:
    • void foo();
    has been changed into:
    • void foo(void);
  • Function prototypes for functions that do not return a value have been corrected. For example:
    • foo(double *x, long N);
    has been changed into:
    • void foo(double *x, long N);
  • All unused variables have been removed.
  • Most of the unused function parameters have been removed. This was not possible for some functions, which are executed through function pointers.
  • The semantics of the CREATE() and WAIT_FOR_END() macros have been slightly changed, in order to support the NANOS execution model.
  • The BARINCLUDE() and BAREXCLUDE() macros have been added, in order to support the Cyclops-64 system.
  • Some barrier variables have been removed. The Cyclops-64 system currently supports only up to four barrier variables. Notice that for each application, only one barrier variable is actually enough, in order to correctly execute the application.
  • A global makefile has been added (splash2/codes/Makefile.config), which includes parameters that are common among all applications. The makefile for each application includes the global makefile and adds application specific rules.
  • All comparisons of the type *string == NULL, where string is of type char *, have been replaced with *string == '\0'.
  • Most of the remaining warnings have been corrected. This allows for an almost clean compilation of all applications, even when the -Wall and -Wextra options are used with GCC.
Last Revision: 3 July 2007