-
Notifications
You must be signed in to change notification settings - Fork 57
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Major changes to the code due to switch to complex types of C99 (issu…
…e 70). All the code using complex numbers has been looked through, and in many cases it was significantly simplified. Many functions from cmplx.h (operating on complex scalars) has been removed, as they are no more used. - E2_alldir is now used to store only the final result, while (intermediary) complex fields are stored in a new vector E_ad. This slightly increases required memory (proportional to number of angles), but improves clarity. - removed restrict optimizations from cmplx.h, because the functions are inline anyway. - added boolVector to memory.c/h (and a couple of minor corrections) - arguments of CalcField in crosssec.c are now declared as 3-vectors. - added test of gcc version in Makefile, '-pedantic' is used only for versions >= gcc (otherwise spurious warnings about complex numbers appear). - MatVec in sparse mode was updated to use standard functions from linalg.c - removed copying of scalar function arguments into registers for functions in linalg.c. That had some sense for double[2] arguments, but can be left to compiler to arguments that are passed by value. - removed all '#pragma ivdep' in linalg.c, since now this information should be obvious to compiler anyway. - version incremented to 1.3a1 MPI part: - To have portable coupling with 'double complex', MPI_C_DOUBLE_COMPLEX is now used when available. However, it can be either unavailable, or not supported in reduction operations. Therefore, rather complicated logic has been added to parbas.h to detect different cases and take full advantage of the available features. Missing features are emulated by replacing 'double complex' with 'double[2]' as was before. But it is not perfectly portable. - Similar issues were addressed for MPI_C_BOOL. The corresponding part of granule generator was changed to take full advantage of it. - Accumulate() now operates in place and operates on any datatype. Corresponding buffers Egrid_buffer, Eplane_buffer, and E2alldir_buffer were removed (somewhat decreasing the memory footprint in MPI mode). Quick tests of sequential and MPI parts showed marginal improvement of computational speed. Both sequential and MPI parts (including sparse, without SSE3, counterparts) were thoroughly testes with tests/2exec. Remaining issues: test and fix coupling with Fortran, C++, OpenCL parts, and sparse-SSE3. They seem to be working, but not perfectly portable.
- Loading branch information
Showing
28 changed files
with
898 additions
and
1,751 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.