-
Notifications
You must be signed in to change notification settings - Fork 131
Tensor design #109
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Tensor design #109
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 9a77db2
Working on Dense-Dense contraction
mtfishman 4c4dc4b
Basic Dense-Dense contraction working
mtfishman 559b43f
Most dense tests pass
mtfishman 6119d46
Get SVD working (tests fail because DenseTensor*DiagTensor not define…
mtfishman 0940c48
Get dense decompositions working. Need to make DiagTensor
mtfishman ffec17a
More progress on DiagTensor
mtfishman 685d94d
Fix DenseTensor tests that had gotten broken
mtfishman b163b06
Start Diag*Diag contraction
mtfishman b3c3cba
Get more Diag tests to pass (like Diag*Diag)
mtfishman 44ca757
Fix some type promotions of Diag storage
mtfishman 9e57bed
Added Dense*Diag contraction (most Dense and Diag tests passing)
mtfishman 431db0e
Dense and Diag tests pass, starting on Combiner
mtfishman 0f2fc27
Get combiner tests passing. Some MPS, MPO and DMRG tests are still fa…
mtfishman 7ac5f19
Get most tests passing. DMRG is currently hanging
mtfishman 4765cac
Some code cleanup
mtfishman 13a402b
More code cleanup
mtfishman 05db16a
Merge branch 'master' into tensor_design
emstoudenmire 0c15d32
Get tests passing again. Change Tensor -> tensor for creating a Tenso…
mtfishman e197ad3
Speed up contraction a bit. Fix bug in eigenHermitian (wasn't truncat…
mtfishman db7ffef
Add benchmark executable to gitignore
mtfishman bb7a8e4
Add timers in dmrg and davidson
mtfishman c7cab48
Speed up permutedims! of DenseTensor
mtfishman dae3d83
Make scale!(ITensor,Number) faster
mtfishman bd6e870
Some small optimizations?
mtfishman 3b6b9e1
Some hints for type inference
mtfishman 401dc0c
Fix TRG/CTMRG unit tests
mtfishman 76f8096
Merge conflicts
mtfishman 84bf2e7
Remove getindex(::Index,::Colon) test
mtfishman File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,2 +1,3 @@ | ||
| *.o | ||
| *.swp | ||
| benchmark/mult |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
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).
There was a problem hiding this comment.
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).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok I see - great!
There was a problem hiding this comment.
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.jlcalledGLOBAL_TIMER, and some timings that you can turn on withTimerOutputs.enable_debug_timings(ITensors)indmrg. 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 inextras, 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.