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.