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