- Implement the basic structure of the mpi lib
and specialization for arrays, basic types, std::vector
- adapted the array class for the lazy mpi mechanism
- pass tests on arrays :
- scatter, gather on array<long,2> array<complex,2>, etc...
- broadcast
- several files for readibility
- the std::vector coded but not tested.
- generic mecanism implemented and tested (mpi_generic test)
- added several tests for the mpi lib.
- TODO : more tests, doc...
A first general restructuration of the doc according to the pattern [tour|tutorial|reference].
In the reference part, objects are documented per topic.
In each topic, [definition|c++|python|hdf5] (not yet implemented)
There is a bug in Ubuntu 14.04 : the interpreter
does not return the correct position of the libpython.
We add the correct path to the path hints, at the end (lowest priority).
In most machines, the first hint is the correct answer.
The c++ version of the tail fit is wrapped to python. I also changed
slightly the code so that when replace_by_fit is true the data is
changed all the way to the end of the Matsubara axis not only on the
interval where the fit was done.
- the flag is really enforce_copy and should force a copy
- for a view : it is false, no change
- for a regular type : it is true, and now this will enforce the
copy in the call of numpy. numpy does it for us.
- The problematic case was when we construct a regular type
from a complicated view in python, which is an array
but is not C contiguous.
(hence the PyArray_Check was false, and the C_Contiguous flag was not set)
Now it is fine, since we ask numpy to systematically copy the data for us
and build a C contigous array.
--> the constructor from python does not support custom memory layout
because numpy only support C and Fortran
Conflicts:
triqs/arrays/impl/indexmap_storage_pair.hpp
- The issue comes from the fact that the default generated
+= and co by the Python API is the one for immutable types, like int.
- Indeed, in python, for an int :
x=1
id(x)
140266967205832
x+=1
id(x)
140266967205808
- For a mutable type, like a gf, it is necessary to
add explicitly the xxx_inplace_add functions.
- Added :
- the generation of the inplace_xxx functions
- a method in class_ in the wrapper generator that
deduce all += operator from the + operators.
- this assumes that the +=, ... are defined in C++.
- The generation of such operators are optional, with option
with_inplace_operators in the arithmetic flag.
- Also, added the overload g += M and g -= M for
g : GfImfreq, M a complex matrix.
Mainly for legacy Python codes.
- Cleaned of the eigensystems computations (worker is simpler, decision
at runtime, etc..).
- Fix#119 : When the matrix is in C order, the fortran lapack
sees in fact its conjugate, so we need to conjugate the eigenvectors at the end.
NB : not true if the storage order of the matrix is already fortran of course.
- When a type has no python constructor (E.g. parameters)
do not define the xxx_new function.
- Leads to a better error message when trying to construct
such an object in python.
- TODO : check there is no issue with serialization ?
- detect the use module.
- clean the code specific to wrapper generation from clang_parser.
- add support for default arguments for int, double, char.
- TODO : add more complex default arguments
- Pb was that indices for gf where empty when constructed
with default args from C++.
- changed into : make indices from the shape in the default
case.
- also added more, simpler construction, for the indices
to easy C++ construction.
- the wrapper will now add date and time
at the boundary between C++ and Python.
- using C lib, not C++ (lack of support of C++ chrono functions in gcc).
- hdfarchive : transform the key to string with str
because they can be unicode and C wrapper does not convert python unicode strings.
- gf : Correct the scheme for BlockGf : not very clean, to be improved ?