[Bf-blender-cvs] [e6c58df] master: OpenNL: replace SuperLU by Eigen SparseLU solver.

Brecht Van Lommel noreply at git.blender.org
Sun Nov 22 22:54:38 CET 2015


Commit: e6c58df74e1fe8e7921048bc145b6318322541f2
Author: Brecht Van Lommel
Date:   Sun Nov 22 02:29:31 2015 +0100
Branches: master
https://developer.blender.org/rBe6c58df74e1fe8e7921048bc145b6318322541f2

OpenNL: replace SuperLU by Eigen SparseLU solver.

Performance is roughly the same because it's using the same COLAMD ordering
and supernodal LU factorization algorithms. Solve results also appear to be
identical.

===================================================================

M	intern/opennl/CMakeLists.txt
M	intern/opennl/SConscript
D	intern/opennl/doc/OpenNL_License.txt
D	intern/opennl/doc/OpenNL_Readme.txt
D	intern/opennl/doc/SuperLU_License.txt
D	intern/opennl/doc/SuperLU_Readme.txt
M	intern/opennl/extern/ONL_opennl.h
M	intern/opennl/intern/opennl.cpp
D	intern/opennl/superlu/Cnames.h
D	intern/opennl/superlu/get_perm_c.c
D	intern/opennl/superlu/heap_relax_snode.c
D	intern/opennl/superlu/lsame.c
D	intern/opennl/superlu/memory.c
D	intern/opennl/superlu/mmd.c
D	intern/opennl/superlu/relax_snode.c
D	intern/opennl/superlu/scolumn_bmod.c
D	intern/opennl/superlu/scolumn_dfs.c
D	intern/opennl/superlu/scopy_to_ucol.c
D	intern/opennl/superlu/sgssv.c
D	intern/opennl/superlu/sgstrf.c
D	intern/opennl/superlu/sgstrs.c
D	intern/opennl/superlu/smemory.c
D	intern/opennl/superlu/smyblas2.c
D	intern/opennl/superlu/sp_coletree.c
D	intern/opennl/superlu/sp_ienv.c
D	intern/opennl/superlu/sp_preorder.c
D	intern/opennl/superlu/spanel_bmod.c
D	intern/opennl/superlu/spanel_dfs.c
D	intern/opennl/superlu/spivotL.c
D	intern/opennl/superlu/spruneL.c
D	intern/opennl/superlu/ssnode_bmod.c
D	intern/opennl/superlu/ssnode_dfs.c
D	intern/opennl/superlu/ssp_blas2.c
D	intern/opennl/superlu/ssp_blas3.c
D	intern/opennl/superlu/ssp_defs.h
D	intern/opennl/superlu/strsv.c
D	intern/opennl/superlu/superlu_timer.c
D	intern/opennl/superlu/supermatrix.h
D	intern/opennl/superlu/sutil.c
D	intern/opennl/superlu/util.c
D	intern/opennl/superlu/util.h
D	intern/opennl/superlu/xerbla.c

===================================================================

diff --git a/intern/opennl/CMakeLists.txt b/intern/opennl/CMakeLists.txt
index 32bd438..9416bc2 100644
--- a/intern/opennl/CMakeLists.txt
+++ b/intern/opennl/CMakeLists.txt
@@ -43,51 +43,16 @@ add_definitions(
 
 set(INC
 	extern
-	superlu
 )
 
 set(INC_SYS
 	../../extern/colamd/Include
+	../../extern/Eigen3
 )
 
 set(SRC
 	intern/opennl.cpp
-	superlu/get_perm_c.c
-	superlu/heap_relax_snode.c
-	superlu/lsame.c
-	superlu/memory.c
-	superlu/mmd.c
-	superlu/relax_snode.c
-	superlu/scolumn_bmod.c
-	superlu/scolumn_dfs.c
-	superlu/scopy_to_ucol.c
-	superlu/sgssv.c
-	superlu/sgstrf.c
-	superlu/sgstrs.c
-	superlu/smemory.c
-	superlu/smyblas2.c
-	superlu/sp_coletree.c
-	superlu/sp_ienv.c
-	superlu/sp_preorder.c
-	superlu/spanel_bmod.c
-	superlu/spanel_dfs.c
-	superlu/spivotL.c
-	superlu/spruneL.c
-	superlu/ssnode_bmod.c
-	superlu/ssnode_dfs.c
-	superlu/ssp_blas2.c
-	superlu/ssp_blas3.c
-	superlu/strsv.c
-	superlu/superlu_timer.c
-	superlu/sutil.c
-	superlu/util.c
-	superlu/xerbla.c
-
 	extern/ONL_opennl.h
-	superlu/Cnames.h
-	superlu/ssp_defs.h
-	superlu/supermatrix.h
-	superlu/util.h
 )
 
 blender_add_lib(bf_intern_opennl "${SRC}" "${INC}" "${INC_SYS}")
diff --git a/intern/opennl/SConscript b/intern/opennl/SConscript
index dcd9ea4..99df29b 100644
--- a/intern/opennl/SConscript
+++ b/intern/opennl/SConscript
@@ -27,9 +27,9 @@
 
 Import ('env')
 
-sources = env.Glob('intern/*.cpp') + env.Glob('superlu/*.c')
+sources = env.Glob('intern/*.cpp')
 
-incs = 'extern superlu ../../extern/colamd/Include'
+incs = 'extern ../../extern/colamd/Include ../../extern/Eigen3'
 
 env.BlenderLib ('bf_intern_opennl', sources, Split(incs), [], libtype=['intern','player'], priority=[100,90] )
 
diff --git a/intern/opennl/doc/OpenNL_License.txt b/intern/opennl/doc/OpenNL_License.txt
deleted file mode 100644
index 4e8d97f..0000000
--- a/intern/opennl/doc/OpenNL_License.txt
+++ /dev/null
@@ -1,341 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                          675 Mass Ave, Cambridge, MA 02139, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-

-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-

-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to i

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list