| |
| 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. |
| |