3
0
mirror of https://github.com/triqs/dft_tools synced 2024-12-27 06:43:40 +01:00
Commit Graph

30 Commits

Author SHA1 Message Date
Olivier Parcollet
b534936589 Fix matrix * alias issue and adapt det_manip
- The previous version of the * operator for matrix was too clever.
It was giving a lazy object and then rewriting C = A *B into gemm (a,A,B,0,C).
The pb was in case of aliasing : when e.g. C = A, or is a part of A.
gemm is not correct that case, and as a result generic code like
a = a *b
may not be correct in matrix case, which is unacceptable.

- So we revert to a simple * operator for matrix
that does immediate computation.
Same thing for matrix* vector

- we also suppress a_x_ty class.

-> for M = a * b,
when M is a matrix, there is no overhead due to move assignment
-> however, when M is a view, there is an additionnal copy.

-Correctness comes first, hence the fix.
However, if one wants more speed and one can guarantee that
there is no aliasing possible, then one has to write a direct gemm call.

-> det_manip class was adapted, since in that case, we can show there
no alias, and we want the speed gain, so the * ops where replaced
by direct blas call (using the array blas interface).

-> also gemm, gemv, ger were overloaded in the case the return
matrix/vector (i.e. last parameter of the function) is not an lvalue,
but a temporary view created on the fly.
2013-09-11 18:49:22 +02:00
Olivier Parcollet
3c2a3c51dc arrays : fix in bug in ref counting in deserialize 2013-09-11 18:39:46 +02:00
Olivier Parcollet
c06e183ae5 arrays : revised version of map & fold
- also cleaned a bit reinterpretview example
2013-09-11 18:39:25 +02:00
Olivier Parcollet
a0eba01769 arrays : clean move constructor of cuboid::map
- remove mess linked to old icc 13 support
and write a clear and readable code.
2013-09-11 18:38:18 +02:00
Olivier Parcollet
4413c6a588 Fix #3
I have no clue why this is a pb, and I can not reproduce it,
but the change is correct and trivial so I merge this pull request.
2013-09-08 16:54:22 +02:00
Olivier Parcollet
2c542647fd clef : new version using lvalues and moving rvalues
- change : all objects are by default
  stored now by reference, not by copy any more.
  Unless the trait force_copy_in_expr is true.
- rvalue refs are moved into the tree
- simplifies a lot the writing of lazy method, objects.
- added a macro for methods
- tests ok. Further check needed to control absence of copies...
- improved documentation
2013-09-08 15:04:12 +02:00
Olivier Parcollet
11081a68b7 Fix #5
- a temp. array in stev had the wrong sign.
2013-09-08 11:58:07 +02:00
Olivier Parcollet
5d0049de7a arrays : minor cosmetics 2013-09-06 16:00:51 +02:00
Olivier Parcollet
7c758ede0d arrays : add cbegin 2013-09-02 21:25:44 +02:00
Olivier Parcollet
9f5d5ceb2d Fix for no python compilation 2013-08-30 20:11:04 +02:00
Olivier Parcollet
5a12b7eeb5 gf : correction for block
- forgot a constructor on the domain
 (was a pb for cthyb_krylov code).
- a few details (better make_gf).
2013-08-30 12:59:46 +02:00
Olivier Parcollet
3b29e9bf9d arrays : renaming concept name
CuboidArray <-> Array
added make_cuboid_domain
2013-08-29 18:06:04 +02:00
Olivier Parcollet
b88f62d50e arrays: details while writing doc
- add factories for matrices
- add make_immutablef from a lambda
- details
2013-08-29 18:05:23 +02:00
Olivier Parcollet
3d6c030b1f arrays : correct deletion of std::swap for views
- forgot the bool flags, in case a weak view is involved.
2013-08-27 13:43:58 +02:00
Olivier Parcollet
f78e6baf9e code cleaning
- TRIQS_MODEL_CONCEPT renamed : clearer for doc
- index_value_type : remove, useless...
2013-08-27 13:43:58 +02:00
Olivier Parcollet
f71ff22ed0 arrays: cleaning cuboid domain
- add one more constructor, clean constructor
- simplify foreach (use simple overload).
2013-08-27 13:43:58 +02:00
Olivier Parcollet
072b45ac1c arrays: Remove dim0, dim1, .shape in various matrix object.
Not in the concept, not needed, just an annoyance.
replaced by free functions :
first_dim(A), second_dim(A), get_shape(A) and so on...
2013-08-27 13:43:58 +02:00
Olivier Parcollet
e241f85a7d arrays: rm debug code matrix_view_proxy_DEBUG.hpp
- used only for speed issue searching...
2013-08-27 13:43:58 +02:00
Olivier Parcollet
c8fcb40164 arrays : rm linalg/determinant and inverse (links)
It is clearer to have only one file :
det_and_inverse.hpp
changed the included in tests.
2013-08-27 13:43:57 +02:00
Olivier Parcollet
017394e17f arrays : add experimental array_const_view
- not completely clear how to
manipulate this alias, in particular when
matching template function
(and portability : require C++11 compiler).
2013-08-27 13:43:57 +02:00
Olivier Parcollet
241d5636d7 arrays: rm tags file and some cleaning
- tags are defined in files, this impl/tags.hpp
was not needed any more.
- some code cleaning
2013-08-27 13:43:57 +02:00
Olivier Parcollet
6fa737978e arrays: remove .len (redundant)
.len -> .shape
with same syntax.
Made a few necessary corrections here and there.
2013-08-27 13:43:57 +02:00
Olivier Parcollet
17a741ad9e arrays: rm has_view_type_tag & add_views
- has_view_type_tag mechanism was replaced by a decltype long ago.
Cleaning since it seems to work on all supported compiler now.

- removed add_views : not used any more.
2013-08-27 13:43:57 +02:00
Olivier Parcollet
41bc8d0338 changing non_view_type to regular_type
- cosmetic : for clarity of the code.
2013-08-27 13:43:57 +02:00
Olivier Parcollet
bc64776de1 arrays: fix a missing include in eigenelements 2013-07-25 15:19:54 +02:00
Olivier Parcollet
157b014ad8 arrays/vector: little correction on = std::vector
- forgot the borrowed flag.
simple consequence of the weak view change.
2013-07-25 15:19:54 +02:00
Olivier Parcollet
f4d42a4ec8 arrays : clean an old example 2013-07-23 08:13:52 +02:00
Olivier Parcollet
552c440238 arrays : add ConstView to fix const correctness
- A()(0) = 1
will not work any more if A is const, as it should be.

- Introduced the notion of const_view, simply done by a flag
(flag 0, for easy debug)
- changed the slice of ISP to use it (only on C++11 compliant compiler)
- Move BoundCheck Flags to 5.
2013-07-23 08:13:52 +02:00
Olivier Parcollet
fc2a620eae arrays: new ref counting and weak views
- improve the mem_block and shared_block.
- the reference counting is now done in the mem_block and shared_block, removing the need of shared_ptr.

- speed tests shows that shared_ptr is very slow (due to thread safety?)
the new version is much better, though not perfect.

- Hence introducing weak views.

- also :
-- clean the guard mechanism for python (to allow returning from python without any python ref left).
-- clean code, add documentation for mem_block
-- remove nan init, which was not working, and corresponding test
-- serialisation of view still unchanged (need to forbid serialization of view ??).

- tests ok, incl. valgrind tests.
2013-07-23 08:13:44 +02:00
Olivier Parcollet
f2c7d449cc First commit : triqs libs version 1.0 alpha1
for earlier commits, see TRIQS0.x repository.
2013-07-17 19:24:07 +02:00