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.