Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
42bbdfa
WIP: new Tensor design
mtfishman Aug 29, 2019
9a77db2
Working on Dense-Dense contraction
mtfishman Aug 30, 2019
4c4dc4b
Basic Dense-Dense contraction working
mtfishman Aug 30, 2019
559b43f
Most dense tests pass
mtfishman Sep 3, 2019
6119d46
Get SVD working (tests fail because DenseTensor*DiagTensor not define…
mtfishman Sep 4, 2019
0940c48
Get dense decompositions working. Need to make DiagTensor
mtfishman Sep 5, 2019
ffec17a
More progress on DiagTensor
mtfishman Sep 9, 2019
685d94d
Fix DenseTensor tests that had gotten broken
mtfishman Sep 10, 2019
b163b06
Start Diag*Diag contraction
mtfishman Sep 10, 2019
b3c3cba
Get more Diag tests to pass (like Diag*Diag)
mtfishman Sep 12, 2019
44ca757
Fix some type promotions of Diag storage
mtfishman Sep 13, 2019
9e57bed
Added Dense*Diag contraction (most Dense and Diag tests passing)
mtfishman Sep 13, 2019
431db0e
Dense and Diag tests pass, starting on Combiner
mtfishman Sep 17, 2019
0f2fc27
Get combiner tests passing. Some MPS, MPO and DMRG tests are still fa…
mtfishman Sep 19, 2019
7ac5f19
Get most tests passing. DMRG is currently hanging
mtfishman Sep 20, 2019
4765cac
Some code cleanup
mtfishman Sep 20, 2019
13a402b
More code cleanup
mtfishman Sep 20, 2019
05db16a
Merge branch 'master' into tensor_design
emstoudenmire Sep 21, 2019
0c15d32
Get tests passing again. Change Tensor -> tensor for creating a Tenso…
mtfishman Sep 30, 2019
e197ad3
Speed up contraction a bit. Fix bug in eigenHermitian (wasn't truncat…
mtfishman Oct 1, 2019
db7ffef
Add benchmark executable to gitignore
mtfishman Oct 15, 2019
bb7a8e4
Add timers in dmrg and davidson
mtfishman Oct 15, 2019
c7cab48
Speed up permutedims! of DenseTensor
mtfishman Oct 15, 2019
dae3d83
Make scale!(ITensor,Number) faster
mtfishman Oct 15, 2019
bd6e870
Some small optimizations?
mtfishman Oct 15, 2019
3b6b9e1
Some hints for type inference
mtfishman Oct 15, 2019
401dc0c
Fix TRG/CTMRG unit tests
mtfishman Oct 16, 2019
76f8096
Merge conflicts
mtfishman Oct 16, 2019
84bf2e7
Remove getindex(::Index,::Colon) test
mtfishman Oct 16, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
*.o
*.swp
benchmark/mult
73 changes: 73 additions & 0 deletions Manifest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# This file is machine-generated - editing it directly is not advised

[[Base64]]
uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"

[[Crayons]]
deps = ["Test"]
git-tree-sha1 = "f621b8ef51fd2004c7cf157ea47f027fdeac5523"
uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f"
version = "4.0.0"

[[Distributed]]
deps = ["Random", "Serialization", "Sockets"]
uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"

[[InteractiveUtils]]
deps = ["Markdown"]
uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"

[[Libdl]]
uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"

[[LinearAlgebra]]
deps = ["Libdl"]
uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"

[[Logging]]
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"

[[Markdown]]
deps = ["Base64"]
uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"

[[Printf]]
deps = ["Unicode"]
uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"

[[Random]]
deps = ["Serialization"]
uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"

[[Serialization]]
uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"

[[Sockets]]
uuid = "6462fe0b-24de-5631-8697-dd941f90decc"

[[SparseArrays]]
deps = ["LinearAlgebra", "Random"]
uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"

[[StaticArrays]]
deps = ["LinearAlgebra", "Random", "Statistics"]
git-tree-sha1 = "db23bbf50064c582b6f2b9b043c8e7e98ea8c0c6"
uuid = "90137ffa-7385-5640-81b9-e52037218182"
version = "0.11.0"

[[Statistics]]
deps = ["LinearAlgebra", "SparseArrays"]
uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"

[[Test]]
deps = ["Distributed", "InteractiveUtils", "Logging", "Random"]
uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[[TimerOutputs]]
deps = ["Crayons", "Printf", "Test", "Unicode"]
git-tree-sha1 = "b80671c06f8f8bae08c55d67b5ce292c5ae2660c"
uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
version = "0.5.0"

[[Unicode]]
uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
5 changes: 3 additions & 2 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,15 @@ LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should move the TimerOutputs dependency to being a test-only dependency (so in the [extras] section below). The reason is it pulls in some other dependencies we don't need (Unicode, Crayons).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is fine, I am just putting it in for now since I am using it to test a performance regression (and it is easier to just include it in this branch so I can more easily switch back and forth with master).

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok I see - great!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While debugging this pull request, I put a global timer in ITensors.jl called GLOBAL_TIMER, and some timings that you can turn on with TimerOutputs.enable_debug_timings(ITensors) in dmrg. What do you think of keeping it as a dependency to make it easier to keep timers like that in the code? If it is in extras, I guess we wouldn't be able to leave those timers in the code. I doubt anyone will really notice it is being installed, it is a very light dependency.


[compat]
julia = "1"

[extras]
Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
QuadGK = "1fd47b50-473d-5c70-9696-f719f8f3bcdc"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Test","Combinatorics","QuadGK"]
test = ["Test", "Combinatorics", "QuadGK"]
35 changes: 25 additions & 10 deletions src/ITensors.jl
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ module ITensors
using Random,
Printf,
LinearAlgebra,
StaticArrays # For SmallString
StaticArrays,
TimerOutputs

# TODO: move imports to individual files
import Base.adjoint,
Expand Down Expand Up @@ -50,22 +51,36 @@ import Base.adjoint,

#####################################
# Global Variables

#
const warnTensorOrder = 10
const GLOBAL_TIMER = TimerOutput()

#####################################

# Index and IndexSet
#
# TODO: load these after Tensor functions
include("smallstring.jl")
include("readwrite.jl")
include("tagset.jl")
include("index.jl")
include("indexset.jl")
include("storage/tensorstorage.jl")
include("storage/dense.jl")
include("storage/diag.jl")
include("storage/combiner.jl")
include("storage/contract.jl")
include("storage/svd.jl")

#####################################
# Tensor
#
include("tensor/tensor.jl")
include("tensor/tensorstorage.jl")
include("tensor/contraction_logic.jl")
include("tensor/dense.jl")
include("tensor/linearalgebra.jl")
include("tensor/diag.jl")
include("tensor/combiner.jl")
include("tensor/truncate.jl")
include("tensor/svd.jl")

#####################################
# ITensor
#
include("itensor.jl")
include("decomp.jl")
include("iterativesolvers.jl")
Expand All @@ -91,4 +106,4 @@ include("physics/site_types/electron.jl")
include("physics/site_types/tj.jl")
include("physics/autompo.jl")

end # module
end # module ITensors
Loading