Blame thirdparty/superlu/README.txt
|
kusano |
7d535a |
|
|
kusano |
7d535a |
To compile SuperLU:
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Use the Visual Studio project located in the /prj folder.
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
IMPORTANT (THREAD-SAFETY):
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
A slight modification had to be applied to the original sources of the used version (4.1).
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
The edit concerns the presence of static variables, that make SuperLU *NOT* thread-safe.
|
|
kusano |
7d535a |
There is a SuperLU version for parallel architectures (SMT), but it's obviously geared
|
|
kusano |
7d535a |
toward internal thread management - which is not what we want.
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
The only edit we've done, located in "dgstrf.c", fixes a crash when allocating resources
|
|
kusano |
7d535a |
for LU factorization:
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
In "void dgstrf (..)":
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
> /*static*/ GlobalLU_t Glu; /* persistent to facilitate multiple factors. */
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
/* DANIELE: tolto static, nocivo x multithread */
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
> memset(&Glu, 0, sizeof(GlobalLU_t)); // static inizializzava tutto a 0
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
There are other sparse static variables, which we've not had the time to double-check.
|
|
kusano |
7d535a |
Everything seems to work.
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
In case it is necessary to further modify source files, remember fiy:
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
* Files NOT starting with "d" - ie "double" - are not interesting; they are intended
|
|
kusano |
7d535a |
for single float and complex numbers, we're only sticking to doubles.
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
* We're mainly interested in LU factorization, meaning only dgstrf ramification should
|
|
kusano |
7d535a |
be tracked.
|