Skip to content
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

Interface to relevant packages. #7

Closed
i2000s opened this issue Dec 23, 2014 · 2 comments
Closed

Interface to relevant packages. #7

i2000s opened this issue Dec 23, 2014 · 2 comments

Comments

@i2000s
Copy link

i2000s commented Dec 23, 2014

While Julia libraries for quantum have not been widely implemented, we can consider interfacing from the current base project with widely adopted Julia, Fortran and C quantum problem solvers. This will help accelerate our developing process as well as help benchmark for better solvers. I open this issue to accept suggestions on which packages JuliaQuantum should and are able to work on. Meanwhile, if you are willing to lead an interfacing project and collaborate with the authors of the relevant packages, you are more than welcome to post your info here. We can keep this issue open until libraries in JuliaQuantum are rich enough to cover basic quantum dynamic solvers.

Below, I nominate a few packages we can consider of.

  1. Native Julia packages:
    • QuDOS.jl: This package is intended to provide types and functionality to explore the quantum dynamics of open systems in Julia. Work in progress mainly by a JuliaQuantum member and is licensed under MIT license by Alexander Croy. It is possible to ask Alex to lead an organizational project based on this package.
    • QSimulator.jl: Unitary and Lindbladian evolution in Julia. Actively under developing by BBN-Q and licensed under Apache License V2.0. So far, it seems this package has implemented the necessary functions as advertised yet lack of documentations. One of the authors is in our org.
    • Cliffords.jl: This library allows for efficient calculation of Clifford circuits by tracking the evolution of X and Z generators (the so-called tableau representation). Released by BBN-Q under MIT license and copyrighted by Raytheon BBN Technologies as an open source software. So far, it seems this package has implemented the necessary functions as advertised with a decent documentation. One of the authors is in our org.
  2. Python packages:
    • QuTiP: It is open-source software for simulating the dynamics of open quantum systems. The QuTiP library depends on the excellent Numpy, Scipy, and Cython numerical packages. Although mainly written in Python, it has some Fortran/C core functions built-in. It uses BSD license by Paul D. Nation and Robert J. Johansson. Since I was using an earlier version of the package for my research before, Jarrett and I will look into it.
  3. C++ packages: while C and Fortran might be easier to interact with from Julia, C++ packages seems much more popular than C and Fortran over the community. As pointed out by Jiahao, “C++ will be very difficult to interface with. The main problem is the lack of a uniform C++ ABI, i.e. C++ does not provide any guarantees of how one is allowed to call a C++ function in a library from a program written in a language other than C++. This is a problem that every other language faces also when trying to interoperate with C++.”, we might not want to dive into them for interfacing at this stage. There are some publications for those packages as listed below, which may give us some insights on designing a quantum solver.
    • ALPS: Algorithms and Libraries for Physics Simulations. It is an open source effort aiming at providing high-end simulation codes for strongly correlated quantum mechanical systems as well as C++ libraries for simplifying the development of such code. ALPS strives to increase software reuse in the physics community. ALPS also provides some Python codes and interfaces to some packages like open source TEBD (Time Evolving Block Decimation Code in Fortran).
    • C++QEDv2: The multi-array concept and compile-time algorithms in the definition of composite quantum systems: Milestone10 update (computer physics communication, 2014, 185, 2380); Website .
    • A C++ library using quantum trajectories to solve quantum master equations, Computer Physics Communications, 1997. Repo.
    • Parallel computations of dissipative quantum systems: A nonlinear oscillator in a strict quantum regime, Journal of Contemporary Physics, 2013. (emailed authors but no response so far, no repo found as well.)
  4. Other packages:
    • Ref: The Feynman tools for quantum information processing: Design and implementation (written in Maple).
    • There are some codes written by some of the members in our org using Fortran and other languages for quantum dynamics calculations. These include imaginary-time path integral Monte Carlo and real time QUAPI (Makri, 1994), some simple Monte Carlo 2D Heisenberg model which could be translated into Julia. No guarantee when they will ever have time to work on this direction though.
    • Many other packages for advanced topics. We may want to look at in the future.

Some Afterthoughts:

  • We may want to pay attention to the parallel computing feature of Julia and the GUIs when making interfaces. (Suggested by acroy)
  • Contact with the authors of the original package and collaborate with them might be a good way to interface or reimplement those packages. For smaller special purpose libraries it might be easier to reimplement.
@jiahao
Copy link

jiahao commented Dec 26, 2014

There is also Cliffords.jl

@i2000s
Copy link
Author

i2000s commented Dec 26, 2014

Yes, it was in the list :) Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants