tahoma2d/thirdparty/superlu
2016-03-24 01:31:57 +09:00
..
SuperLU_4.1 Add 3rd party libraries 2016-03-24 01:31:57 +09:00
libsuperlu_4.1.a Add 3rd party libraries 2016-03-24 01:31:57 +09:00
README.txt Add 3rd party libraries 2016-03-24 01:31:57 +09:00
SuperLU_32.d.lib Add 3rd party libraries 2016-03-24 01:31:57 +09:00
SuperLU_32.lib Add 3rd party libraries 2016-03-24 01:31:57 +09:00
SuperLU_64.d.lib Add 3rd party libraries 2016-03-24 01:31:57 +09:00
SuperLU_64.lib Add 3rd party libraries 2016-03-24 01:31:57 +09:00

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.