xerus issueshttps://git.hemio.de/xerus/xerus/-/issues2018-04-23T03:03:38+02:00https://git.hemio.de/xerus/xerus/-/issues/73Ensure that xerus works at least with tensors of size 2^64-1 (size_t).2018-04-23T03:03:38+02:00Sebastian WolfEnsure that xerus works at least with tensors of size 2^64-1 (size_t).Tensors (e.g. TTTensors) with order 10 and dimensions 10 do not fit in an unit32, causing serious malfunction somewhere in xerus.Tensors (e.g. TTTensors) with order 10 and dimensions 10 do not fit in an unit32, causing serious malfunction somewhere in xerus.Version 1.0https://git.hemio.de/xerus/xerus/-/issues/61Makefile does not cover changes in .hxx files correctly2018-04-23T03:03:38+02:00Fuchsi*Makefile does not cover changes in .hxx files correctlychanges in .hxx files cause recompilation of the binary - but apparently not the text object fileschanges in .hxx files cause recompilation of the binary - but apparently not the text object filesVersion 1.0Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/54Compiling xerus without runtime checks causes the test cases to end with and ...2018-04-23T03:03:39+02:00Sebastian WolfCompiling xerus without runtime checks causes the test cases to end with and segmentation fault.Version 1.0https://git.hemio.de/xerus/xerus/-/issues/44REQUIRE_TEST macro file name identification (in cases of ../ in the path)2018-04-23T03:03:39+02:00Fuchsi*REQUIRE_TEST macro file name identification (in cases of ../ in the path)Version 1.0Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/87Find portable solution for lapacke.h2018-04-23T03:03:37+02:00Sebastian WolfFind portable solution for lapacke.hIn commit d18723aaee268c242cb3af5ac21a61301931610b the include <lapacke/lapacke.h> was changed to <lapacke.h>. This does not compile on a standard Fedora 21 system (or at least not on the two I use). I.e. our "stable" branch does not com...In commit d18723aaee268c242cb3af5ac21a61301931610b the include <lapacke/lapacke.h> was changed to <lapacke.h>. This does not compile on a standard Fedora 21 system (or at least not on the two I use). I.e. our "stable" branch does not compile on my systems!version 1.1Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/83useless-casts in TensorNetwork?2018-04-23T03:03:38+02:00Fuchsi*useless-casts in TensorNetwork?g++ 5.1.1 shows following warnings (errors in default configuration)
~~~
src/xerus/tensorNetwork.cpp: In member function ‘xerus::TensorNetwork::operator xerus::FullTensor() const’:
src/xerus/tensorNetwork.cpp:134:100: warning: useless...g++ 5.1.1 shows following warnings (errors in default configuration)
~~~
src/xerus/tensorNetwork.cpp: In member function ‘xerus::TensorNetwork::operator xerus::FullTensor() const’:
src/xerus/tensorNetwork.cpp:134:100: warning: useless cast to type ‘xerus::FullTensor’ [-Wuseless-cast]
return FullTensor(std::move(*static_cast<FullTensor*>(fully_contracted_tensor().get())));
^
src/xerus/tensorNetwork.cpp: In member function ‘xerus::TensorNetwork::operator xerus::SparseTensor() const’:
src/xerus/tensorNetwork.cpp:142:104: warning: useless cast to type ‘xerus::SparseTensor’ [-Wuseless-cast]
return SparseTensor(std::move(*static_cast<SparseTensor*>(fully_contracted_tensor().get())));
^
```version 1.1https://git.hemio.de/xerus/xerus/-/issues/77Doxygen doesn't parse xerus/algorithms/*2018-04-23T03:03:38+02:00Sebastian WolfDoxygen doesn't parse xerus/algorithms/*E.g. http://libxerus.org/xerus_8h.html includes a link to all includes files but xerus/algorithms/als.h".E.g. http://libxerus.org/xerus_8h.html includes a link to all includes files but xerus/algorithms/als.h".version 1.1Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/75TTTensors canonicalize (and probably also other functions) apparently writes ...2018-04-23T03:03:38+02:00Sebastian WolfTTTensors canonicalize (and probably also other functions) apparently writes to shared data (tensorsObjects of its nodes).version 1.1Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/70TTTensor Chop not working as intended2018-04-23T03:03:38+02:00Fuchsi*TTTensor Chop not working as intended- Number of external indices of left and right side is wrong in the operator case.
- same functionality can be obtained by simply contracting the component tensors as `nodes[i].tensorObject(i&1,j) * nodes[i+1].tensorObject(j,k&1)`, so w...- Number of external indices of left and right side is wrong in the operator case.
- same functionality can be obtained by simply contracting the component tensors as `nodes[i].tensorObject(i&1,j) * nodes[i+1].tensorObject(j,k&1)`, so why the hassle of manually counting dimensions?
- one could argue that this function is rather specific to one purpose and thus rather a part of the ALS it is being written for, than an important part of tttensor :P (alternatively this function should be less specific. eg. by allowing to remove several nodes inbetween to allow dmrg implementations to use it)version 1.1Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/33problems with the MISC_NAMESPACE macro2018-04-23T03:03:39+02:00Fuchsi*problems with the MISC_NAMESPACE macro1. not defining it before including any individual misc/*.h file will result in a warning about undefined macros / variables
2. setting it via `#define MISC_NAMESPACE` results in `#define MISC` which interestingly results in the followi...1. not defining it before including any individual misc/*.h file will result in a warning about undefined macros / variables
2. setting it via `#define MISC_NAMESPACE` results in `#define MISC` which interestingly results in the following error message:
```
bla.cpp:(.text+0xa58): undefined reference to `(anonymous namespace)::get_call_stack()'
```
This might be the only way to reference an anonymous namespace...???version 1.1https://git.hemio.de/xerus/xerus/-/issues/117source and destination overlap in memcpy (lapack wrapper)2018-04-23T03:03:37+02:00Fuchsi*source and destination overlap in memcpy (lapack wrapper)```
==7990== Source and destination overlap in memcpy(0x7c70a60, 0x7c70a60, 16)
==7990== at 0x4C2BDF3: memcpy@@GLIBC_2.14 (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==7990== by 0x7C26DA: xerus::misc::array_copy(d...```
==7990== Source and destination overlap in memcpy(0x7c70a60, 0x7c70a60, 16)
==7990== at 0x4C2BDF3: memcpy@@GLIBC_2.14 (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==7990== by 0x7C26DA: xerus::misc::array_copy(double*, double const*, unsigned long) (selectedFunctions.cpp:73)
==7990== by 0x7BBBC7: xerus::blasWrapper::qr_destructive(double*, double*, double*, unsigned long, unsigned long) (blasLapackWrapper.cpp:358)
==7990== by 0x7B83B2: xerus::blasWrapper::inplace_qr(double*, double*, unsigned long, unsigned long) (blasLapackWrapper.cpp:315)
==7990== by 0x6BED55: xerus::TTNetwork<false>::round_train(std::vector<unsigned long, std::allocator<unsigned long> > const&, double) (ttNetwork.cpp:308)
==7990== by 0x6E4FDE: xerus::TTNetwork<false>::round(double) (ttNetwork.cpp:828)
==7990== by 0x79BA91: xerus::examples::peaking_diagonals(unsigned long, unsigned long, double) (specificLowRankTensors.cpp:43)
==7990== by 0x466961: {lambda()#2}::operator()() const (in /store/botanix/datastore/huber/code/xerus/XerusTest)
==7990== by 0x469290: _ZNSt17_Function_handlerIFbvEUlvE0_E9_M_invokeERKSt9_Any_data (functional:2057)
==7990== by 0x7C62BF: std::function<bool ()>::operator()() const (functional:2468)
==7990== by 0x7C413C: xerus::misc::internal::test(std::pair<std::string, std::function<bool ()> > const&) (test.cpp:102)
==7990== by 0x7C54EE: main (test.cpp:238)
```Version 1.3Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/116dyadic_product of degree-0 TTTensors fails2018-04-23T03:03:37+02:00Fuchsi*dyadic_product of degree-0 TTTensors fails```
+00:00:00,009 ttNetwork.cpp : 522 : fatal: !node.tensorObject->has_factor() failed msg: n=0
callstack:
[0x000000000072650a .text] /homes/numerik/huber/store/code/xerus/src/xerus/ttNetwork.cpp:522 (inside xerus::TTNetwor...```
+00:00:00,009 ttNetwork.cpp : 522 : fatal: !node.tensorObject->has_factor() failed msg: n=0
callstack:
[0x000000000072650a .text] /homes/numerik/huber/store/code/xerus/src/xerus/ttNetwork.cpp:522 (inside xerus::TTNetwork<false>::is_valid_tt() const)
[0x000000000073dda4 .text] /homes/numerik/huber/store/code/xerus/src/xerus/ttNetwork.cpp:945 (inside xerus::TTNetwork<false>::move_core(unsigned long, bool))
[0x000000000072dd41 .text] /homes/numerik/huber/store/code/xerus/src/xerus/ttNetwork.cpp:672 (inside xerus::TTNetwork<false>::dyadic_product(xerus::TTNetwork<false> const&, xerus::TTNetwork<false> const&))
[0x0000000000810503 .text] /homes/numerik/huber/store/code/xerus/src/xerus/examples/specificLowRankTensors.cpp:43 (inside xerus::examples::peaking_diagonals(unsigned long, unsigned long, double))
[0x000000000046fa8d .text] /homes/numerik/huber/store/code/xerus/src/unitTests/largestEntry.cxx:106 (inside operator())
[0x0000000000470d66 .text] /usr/include/c++/4.8/functional:2058 (inside _M_invoke)
[0x0000000000843456 .text] /usr/include/c++/4.8/functional:2469 (inside std::function<bool ()>::operator()() const)
[0x0000000000840ccd .text] /homes/numerik/huber/store/code/xerus/src/xerus/misc/test.cpp:102 (inside xerus::misc::internal::test(std::pair<std::string, std::function<bool ()> > const&))
[0x00000000008423e0 .text] /homes/numerik/huber/store/code/xerus/src/xerus/misc/test.cpp:238 (inside main)
[0x00002b34da646be5 .text] ??:? (inside __libc_start_main +0x245)
[0x0000000000409379 .text] /home/abuild/rpmbuild/BUILD/glibc-2.18/csu/../sysdeps/x86_64/start.S:125 (inside _start)
```Version 1.3Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/115TTOperator * TTOperator / value_t not working2018-04-23T03:03:37+02:00Fuchsi*TTOperator * TTOperator / value_t not workingthe operator / likely tries to evaluate the left part, which is forbidden for TTStacks
```
ttNetwork.h : 463 : fatal: Forbidden
callstack:
[0x0000000000757617 .text] /usr/include/c++/4.8/sstream:584 (inside std::basic_...the operator / likely tries to evaluate the left part, which is forbidden for TTStacks
```
ttNetwork.h : 463 : fatal: Forbidden
callstack:
[0x0000000000757617 .text] /usr/include/c++/4.8/sstream:584 (inside std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::str() const)
[0x00000000007b7c96 .text] /homes/numerik/huber/store/code/xerus/src/xerus/indexedTensorMoveable.cpp:47 (inside xerus::IndexedTensorMoveable<xerus::TensorNetwork>::IndexedTensorMoveable(xerus::IndexedTensorReadOnly<xerus::TensorNetwork> const&))
[0x000000000076fd34 .text] /homes/numerik/huber/store/code/xerus/src/xerus/indexedTensorReadOnly.cpp:72 (inside xerus::IndexedTensorReadOnly<xerus::TensorNetwork>::operator/(double) const)
[0x000000000048dce3 .text] /homes/numerik/huber/store/code/xerus/src/unitTests/steepestDescent.cxx:28 (inside operator())
[0x0000000000805bc7 .text] /usr/include/c++/4.8/functional:2468 (inside std::function<bool ()>::operator()() const)
[0x0000000000418819 .text] /homes/numerik/huber/store/code/xerus/src/xerus/misc/test.cpp:238 (inside main)
[0x00002b5fb2b6cbe5 .text] ??:? (inside __libc_start_main +0x245)
[0x00000000004198f1 .text] /home/abuild/rpmbuild/BUILD/glibc-2.18/csu/../sysdeps/x86_64/start.S:125 (inside _start)
```Version 1.3Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/108restore thread safety2018-04-23T03:03:37+02:00Fuchsi*restore thread safetycontraction heuristics are not threadsafe at the moment...contraction heuristics are not threadsafe at the moment...Version 1.3Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/103ALS has to take care of the global factor2018-04-23T03:03:37+02:00Sebastian WolfALS has to take care of the global factorVersion 1.2Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/99Invalid memory access in projection ALS2018-04-23T03:03:37+02:00Sebastian WolfInvalid memory access in projection ALS```
| projectionALS starting: ==10187== Invalid read of size 16
==10187== at 0x7B9815: dswap_k (in /home/baum/code/xerus/XerusTest)
==10187== by 0x781F76: dswap_ (swap.c:90)
==10187== by 0x794D37: dbdsqr_.constprop.238 (dbds...```
| projectionALS starting: ==10187== Invalid read of size 16
==10187== at 0x7B9815: dswap_k (in /home/baum/code/xerus/XerusTest)
==10187== by 0x781F76: dswap_ (swap.c:90)
==10187== by 0x794D37: dbdsqr_.constprop.238 (dbdsqr.f:830)
==10187== by 0x79FB2A: dlasdq_.constprop.237 (dlasdq.f:377)
==10187== by 0x7A07C9: dbdsdc_.constprop.233 (dbdsdc.f:363)
==10187== by 0x6C0250: dgesdd_ (dgesdd.f:937)
==10187== by 0x7A2A8F: LAPACKE_dgesdd_work.constprop.229 (lapacke_dgesdd_work.c:115)
==10187== by 0x6FCE6D: LAPACKE_dgesdd (lapacke_dgesdd.c:77)
==10187== by 0x6FCE6D: xerus::blasWrapper::svd_destructive(double*, double*, double*, double*, unsigned long, unsigned long) (blasLapackWrapper.cpp:184)
==10187== by 0x5F6B16: xerus::TTNetwork<false>::round_train(std::vector<unsigned long, std::allocator<unsigned long> > const&, double) (ttNetwork.cpp:303)
==10187== by 0x75EF53: xerus::TTNetwork<false>::round(unsigned long) (ttNetwork.cpp:756)
==10187== by 0x5DEC9F: {lambda()#2}::operator()() const [clone .isra.189] [clone .lto_priv.1270] (als.cxx:72)
==10187== by 0x6EDAD6: operator() (functional:2439)
==10187== by 0x6EDAD6: xerus::misc::internal::test(std::pair<std::string, std::function<bool ()> > const&) (test.cpp:97)
==10187== Address 0x6aac950 is 384 bytes inside a block of size 392 alloc'd
==10187== at 0x4C29BCF: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==10187== by 0x7A2941: LAPACKE_dgesdd_work.constprop.229 (lapacke_dgesdd_work.c:96)
==10187== by 0x6FCE6D: LAPACKE_dgesdd (lapacke_dgesdd.c:77)
==10187== by 0x6FCE6D: xerus::blasWrapper::svd_destructive(double*, double*, double*, double*, unsigned long, unsigned long) (blasLapackWrapper.cpp:184)
==10187== by 0x5F6B16: xerus::TTNetwork<false>::round_train(std::vector<unsigned long, std::allocator<unsigned long> > const&, double) (ttNetwork.cpp:303)
==10187== by 0x75EF53: xerus::TTNetwork<false>::round(unsigned long) (ttNetwork.cpp:756)
==10187== by 0x5DEC9F: {lambda()#2}::operator()() const [clone .isra.189] [clone .lto_priv.1270] (als.cxx:72)
==10187== by 0x6EDAD6: operator() (functional:2439)
==10187== by 0x6EDAD6: xerus::misc::internal::test(std::pair<std::string, std::function<bool ()> > const&) (test.cpp:97)
==10187== by 0x410CE5: main (test.cpp:212)
==10187==
```Version 1.2Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/23Code coverage detection not working properly2018-04-23T03:03:39+02:00Sebastian WolfCode coverage detection not working properlyCode coverage says:
file index.hpp : 2 of 4 tests performed
However there are only two REQUIREs in index.hpp, which are most certainly called. Probably the problem is that the corresponding functions also appear inlined?Code coverage says:
file index.hpp : 2 of 4 tests performed
However there are only two REQUIREs in index.hpp, which are most certainly called. Probably the problem is that the corresponding functions also appear inlined?Version 1.2Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/140TensorNetwork fix_slate also callable by TTNetworks, without returning a vali...2017-05-29T23:27:29+02:00Sebastian WolfTensorNetwork fix_slate also callable by TTNetworks, without returning a valid TTNetwork.The TensorNetwork implementation of fix_slate does not preserve the TTNetwork format.The TensorNetwork implementation of fix_slate does not preserve the TTNetwork format.Version 1.5https://git.hemio.de/xerus/xerus/-/issues/139Move operations and definition of "Valid state" for Tensor/FullTensor/SparseT...2017-05-29T23:27:29+02:00Sebastian WolfMove operations and definition of "Valid state" for Tensor/FullTensor/SparseTensorAs of now our definition of a valid state of a FullTensor is that it is that all variables are consistent. I.e. size is the product of dimensions, the data pointer points to an array of size `size` and the factor is a valid value (not in...As of now our definition of a valid state of a FullTensor is that it is that all variables are consistent. I.e. size is the product of dimensions, the data pointer points to an array of size `size` and the factor is a valid value (not inf,...).
Following the design of the C++ std lib move operations should leave the object in question in such a valid state. Currently this is NOT fulfilled by our move-operations. In particular the FullTensor move constructors use the Tensor move constructors which do not preserve the consistency between size and dimensions and also do not leave the data pointer in a consistent state.
Therefore I would suggest to either:
- Weaken the definition of valid state for FullTensor/Tensor/SparseTensor to allow such inconsistencies and require a call to reset before the object can be used again.
- Or remove the move-operations for FullTensor/Tensor/SparseTensor altogether as a rigorous implementation of the current definition does not allow any gains compared to the non-move operations.Version 1.5https://git.hemio.de/xerus/xerus/-/issues/136ADF returns wrong dimensions2017-05-29T23:27:30+02:00Fuchsi*ADF returns wrong dimensions````
| adf_completion starting: +00:00:16,525 fullTensor.cpp : 582 : fatal: resultDims == _result.dimensions failed msg: The given results has wrong dimensions { 6 } should be { 5 }
✗
| Test has thrown an uncaught xerus::ge...````
| adf_completion starting: +00:00:16,525 fullTensor.cpp : 582 : fatal: resultDims == _result.dimensions failed msg: The given results has wrong dimensions { 6 } should be { 5 }
✗
| Test has thrown an uncaught xerus::generic_error():
+00:00:16,525 fullTensor.cpp : 582 : fatal: resultDims == _result.dimensions failed msg: The given results has wrong dimensions { 6 } should be { 5 }
callstack:
[0x00000000008b3ecf .text] /homes/numerik/huber/store/code/xerus/src/xerus/fullTensor.cpp:562 (inside xerus::contract(xerus::FullTensor&, xerus::FullTensor const&, bool, xerus::FullTensor const&, bool, unsigned long))
[0x0000000000a79a5e .text] /homes/numerik/huber/store/code/xerus/src/xerus/algorithms/adf.cpp:213 (inside xerus::ADFVariant::solve(xerus::TTNetwork<false>&, std::vector<xerus::SinglePointMeasurment, std::allocator<xerus::SinglePointMeasurment> > const&) const)
[0x0000000000862cf5 .text] /homes/numerik/huber/store/code/xerus/src/unitTests/ttCompletion.cxx:29 (inside $_0::operator()() const)
[0x0000000000a70f61 .text] /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../include/c++/4.8/functional:2468 (inside std::function<bool ()>::operator()() const)
[0x0000000000a72a5d .text] /homes/numerik/huber/store/code/xerus/src/xerus/misc/test.cpp:221 (inside main)
[0x00002b62f6a9bbe5 .text] ??:? (inside __libc_start_main +0x245)
[0x0000000000423a61 .text] /home/abuild/rpmbuild/BUILD/glibc-2.18/csu/../sysdeps/x86_64/start.S:125 (inside _start)
exception thrown in function: contract (src/xerus/fullTensor.cpp : 582)
````Version 1.5Sebastian WolfSebastian Wolf