Benchmarking DRMG with small 2D system

Hi there,

I’m wondering if you have some benchmark for the performance of ITensors in small 2D system.

I’m assuming the way the results are obtained by ‘flattening’ the 2D system into a 1-D chain, where now even the nearest hopping would become long-range, therefore the area law doesn’t apply and the bond dimensions would scale exponentially. Still, I’m curious the max size (N by N) of a feasible system you could simulate this way, assuming the hopping to be the most expensive term.

I ask about this mostly because a test 5x5 calculation with max bond dimension in the range of ~5000 with naive threaded

julia -t 24 script.jl

took around 50 hours to finish, which I thought would be faster with some rough complexity analysis. Does Julia ITensors have multi-core/node support (e.g. MPI)?

  • The ITensor Paper has some useful benchmark results: [2007.14822] The ITensor Software Library for Tensor Network Calculations
  • A 50 hour calculation does seem very long. Were you the only one using the machine at the time or was it shared with others?
  • Yes Julia ITensor does support multithreading through the Julia language multithreading support (which is roughly comparable to OpenMP, though distinct from it). You can find out more information in this part of our documentation, including guidelines about how best to use it (mainly: you should turn off BLAS multithreading if you want to use our block-sparse multithreading):
    https://itensor.github.io/ITensors.jl/stable/Multithreading.html
  • Lastly, you probably shouldn’t use -t 24 threads. As you can see in our ITensor Paper benchmarks, using 4 or 8 threads helped, and after that more threads may not help much and can even hurt the performance. Even if your CPU has 24 cores, it’s not always a good idea to divide up a calculation into 24 pieces.