From: Ulf L. <ul...@wa...> - 2013-01-20 00:03:46
|
Hi, so I had a look at the candidates for tensor libraries. You can have a more detailed view by looking at the discussion thread of the task ( https://sourceforge.net/p/wavepacket/cpp/tickets/5/). Here only a short summary, since ... let me put it this way, it does not look like a tie: I did a google search for tensor libraries and stopped on page 20 or so when projects started to be repeated the third time or so. Most tensor libraries are either restricted to 3 or 4 dimensions (for modern computers and not too unusual problems, this can become too low), or they are based on template programming (vastly increasing the compilation time, requiring us to write everything using template metaprogramming as well, and being a pain to test). Apart from these, I found three libraries: 1. The Portable Science Toolkit is more for solving huge partial differential equations on parallel machines. I do not know how far Andrea has come with checking it out, but it was a bit of a long shot. The advantage would be that things like parallel computing would be included (though we still would have to layout our data for that), and it includes e.g. a lot of solvers. The disadvantage is that it would be pretty much overkill (including installation for single workstation users). 2. ITensor. What I did not like here is the installation, which requires some non-standard libraries, the code, which is among other things mostly undocumented, and the fact that my first test gave wrong results. Besides, the library does about the same as candidate #3 with 6x the amount of code. In any case, this library requires a lot of developer resources to make it usable. 3. Tensor C++ library. It is modeled relatively close to Matlab. I do not like or agree with everything there, and there are also things that need to be done, but the library itself is pretty mature (8 years productive use), usable and stable. With about 5.000 lines of code, it is also not too big. I also contacted the developer and he is open-minded to feedback or code from our side. As a consequence I would suggest to go with the third candidate. We will have to dig into it and contribute to the library (some documentation is missing, there were some bugs in the head, we need fft sooner of later), but from the testing so far, it looks the most suitable one. Comments? Ulf |