 Yeah, all right. So we now have a question by Shona Haas-Armesh, who is a PhD student at Chalmers University of Technology. No, sorry. And he just recently wrote a blog post on the rise of open source and quantum research for nature, which is pretty much the most prestigious science journal out there. And he's going to be talking about key tip, quantum simulations, and collaborative thought about it. So welcome to the future. OK, I hope everyone can hear me. Yeah? Perfect. Thank you, Mark, for the nice introduction. So my name is Shona Haas, and I'm going to talk about a project called Q-Tip, the Quantum Toolbox in Python. Very short background on how I ended up here. Right now, I'm a PhD student at Chalmers. But before, I was in the group which created Q-Tip in Japan. And I was also a Google Summer of course student. So the confluence of open source quantum simulations led me to this point. So this is something that I like to start whenever I talk about quantum physics, quantum computing, because this is a quote from the movie Ant-Man. And there's a situation where it's like, do you guys just put the word quantum in everything? He's frustrated because he's not able to understand all this quantum talk. But then it seems like technology is getting rapidly transformed by quantum. And we have all these new fields which are emerging. So along with that, you have a lot of players who are trying to develop this technology. You have the big guys, Google, IBM, some of the talks here. You have intermediate-sized companies. And then you have even traditional companies like Intel, which is collaborating with universities to develop chips. So I tried to gauge the interest here at FOSDEM. And honestly speaking, I had to change a lot of my slides today in the morning because I realized that I'm not speaking to an audience which is homogeneous, which comes from a quantum physics background or just from a coding background. So these are some of the things that we are interested at FOSDEM quantum computing dev room today. So standardization and availability of code, that's like a normal topic in an open source conference. But then we have spin systems, quantum annealing. Later on we have talks about photonic quantum computing, noisy intermediate-scale quantum physics, quantum circuits, of course. So how does QTIP, this tool, come into play? And I would like to think of it as something like quantum physics simulator and something like a Swiss army knife with which you can do a lot of things in quantum physics. So before even the quantum computing industry, the research started. Already researchers were using QTIP to do a lot of simulations of quantum systems. So these were interesting to physicists. Circuit QED, quantum optics, ion trap, superconducting circuits. Very recently, Optomechanics. And I started a request to implement something called error correction and topological circuits. But now to think of it, maybe it's like a complete different project on its own. So just a very short description of some of the really nice features. One of it is that many people don't like Python in scientific computing. They say, OK, it's very slow. We have our C++ codes. We have our Fortran codes. And I had this argument many times with veteran researchers like, oh, you knew bees, and you were with your Python and everything. But then QTIP is pretty smart about it, because at the back end you have very specialized C++ routines written to interact with the Python code so that you don't compromise on the performance. But at the same time at the surface, you don't have to worry about all the pointers or all the C++ code behind. So for physicists, it became extremely easy to use and start simulations. It also implements a lot of solvers which are relevant to people who are studying quantum physics, different kinds of methods which people have developed over the past 20 years or even before that. Because before the quantum computers come, all we have are desktops. And we need very smart techniques to simulate a quantum system on these things. So QTIP implements some of these solvers. I'm going to talk about some of them. And then, of course, we have very nice visualization tools beyond just visualizing a quantum circuit but quantum physics itself. So after QTIP, I noticed that there has been a lot of new projects, especially in Python, which are coming up. And here is just a list. And I think Mark has made a very nice list of all of it here. But I think now it's updated to the quantum open source web page. So please do check it out. Some of them are related to circuits. Some of them are related to something even more interesting. For example, NETCAT, which is using a neural network quantum state to simulate many-body physics, is very interesting. And of course, QTIP has had a lot of impact, both in research and industry. Because many of the places where quantum physics research is done, QTIP is being used to perform noise modeling. And of course, in research papers, all the time we keep seeing the use of QTIP. And people are writing to us like, hey, we have this problem. Can you help us fix it? So it's very nice to see a project like that being used across all of these areas. But how did this impact come from? I mean, we didn't realize it back then. And that's one of the things that I talk about in this blog is the open source way really benefits people in a much more impactful way than, I think, just publishing the paper. So if you get access to the paper, yes. You get access to the idea. You get access to the concept. And it's nice. But then you have to find the graduate student and spend a month simulating it, benchmarking it, testing if your implementation works according to the ideas presented in the paper. And there is a delay sometimes. And many times, you are like, OK, it's good. But it will take me a long time to simulate this. And so maybe you cannot make that kind of an impact as you would have made if you would have open access to your code. And not just any code that you write. Most people are scared of publishing their code because, OK, you write some spaghetti code. You don't want others to see your ugly code. But then if you actually incorporate this open source way, which I'm going to talk about a little later, you're really making your research much more impactful. Of course, reproducibility. We have seen that in machine learning and neural networks, this reproducibility problem came up. So now more and more people are trying to at least give the data, give the techniques, give the hyperparameters when they're training their model so that people can easily reproduce. For quantum physics also, this is a very good thing. And collaborations and feedback. I came into this whole area because of the collaborations I made through Qtip. So that's a really nice way to make people from different areas come and work with you on your projects or help their projects. And the last thing that is something I like to call paper to production. Maybe in quantum physics, it's not so much interesting right now. Maybe in AI machine learning, it's more. But still, as we develop these machines, someone comes up with a brilliant idea, writes the paper, and someone wants to run it on, I don't know, an IBM machine or a regati machine. So to go from the paper to production, if there is already an interfacing, a code written, it becomes extremely easy to test this and immediately check, okay, this works, this doesn't work. So in all these ways, open source is really revolutionizing how people are doing research, especially in quantum physics. So a brief outline of the talk that is going to follow next. First I'll talk a little bit about quantum physics in general because I realize that there might be many people here who are not from a quantum physics background or have studied physics way back and are now doing something completely different. So I will talk a little bit about the fundamentals. Then I'll give an introduction about Qtip, the code, basically what you can do with Qtip and talk about something new that is getting added to Qtip recently. And towards the end of the talk, I will talk about a little bit about open source and how Qtip uses open source. And finally, a call in some sense for Google Summer of Code. So this year we are participating in Google Summer of Code as a Qtip project. Hopefully we get some slots through NumFocus. But if we do, we have very interesting projects on GPU, using GPUs for quantum simulations, lattice models, how to simulate noise in lattice models. So I'm going to talk about this briefly. Okay, quantum physics, a brief introduction. These slides were added just this morning. So hopefully I do some justice to them. The first thing is we have to understand the qubit. So once and zeros, once and zeros together, why exactly does this picture come about in quantum physics and how is it different? Why do we have superposition in quantum physics? So the experiments that people did back a hundred years back, almost, they were so difficult to explain in terms of either a one or a zero that they were not making sense. Then someone smart came up and says, hey, the events that happen going through left slit or right slit being a one or being a zero, let's forget about the actual event and let's talk about the probabilities of these events. So then this mathematical picture of probabilities started and if you now see as a result of this probabilistic picture, superposition is a natural outcome of it. And to explain that, let me show you this animation. I hope it works. So if you take two waves and you let them cross each other, they interfere, they push amplitudes up, they push amplitudes down. So if you want to formally use probabilities and probability waves to describe events, you also have to accept that they can superimpose, interfere and do this kind of things. And it turns out that by using this idea, you're able to explain a lot of these experiments that followed. So then there's this sort of funny thing called shut up and calculate. Like don't try to understand the meaning of what it means to be a one or a zero at the same time and all this. The experiments work. So just shut up and calculate and find the answer. So, but apart from that quantum physics is one of the most successful theories out there. It has made a lot of predictions and almost all of it has been confirmed. So there has not been something that has, that quantum mechanics predicted and it's like, okay, it doesn't work like that. So it's one of the most successful theories. So we are happy with the machinery that we have developed, although it's unintuitive. So now if you think about it as a computer scientist, as an engineer, you suddenly see a massive parallelization. So if you take three quantum systems, which can be zero and one, both at the same time, you have eight possibilities. And if you go with this picture of superposition, you will suddenly think, oh, I have access to all of these eight possibilities simultaneously. So if I apply a function on these three objects, that function will apply on all of these eight possibilities simultaneously. And I have a natural massive parallelization. But here comes the problem which is called the measurement problem. The moment you check, you analyze, you just get one of the results, not this superposition. And as the previous speaker, I mean you have to be an intergalactic beam to understand this. So this is the measurement problem because the moment someone observes a quantum system, it collapses into one of the possibilities. So it will not be a superposition, but just jump in one of these. And then you have to repeat these experiments again and again and again to really make sure that the answers that you're getting are correct. So measurements can, even the slightest, can change a quantum state, collapse it into one of the possibilities. This is the Copenhagen interpretation. And it only gives you a probable answer to your computation. So this completely brings huge challenges in how we do noise, how we deal with noise, how we deal with errors, and how we verify things are working right. Because in a classical computer, you can have something like, if you have a channel and you want to make a zero pass through it, and for some reason there's a bit flip, what you do is you just add some redundancies and you make, I don't know, five channels and make zeros and do a majority voting. So this is one of the simplest way of error correcting. But in a quantum system, it gets much more tricky because the moment you observe that a zero flip to one, you're changing the quantum state. So you no longer have the quantumness. So you have to come up with very smart ideas to really correct your code and make sure things are working fine. So there are a lot of proposals, a lot of different ideas of this error correction, models of error corrections. And we are trying to also find out which one is the best and which one allows us to do error correction in a smart and efficient way. So another really interesting property of quantum systems is this thing called quantum entanglement, which means basically, if you take a larger system, break it in some parts, these parts are no longer, I mean, they behave as part of a whole. So if you have different parts and you are measuring some property of this composite system, even though they're spatially separated, they will behave in a correlated manner. And these correlations as the EPR paradox and Bell Inequalities show that these correlations can never be reproduced in a classical system. So we have had recent very good tests about proving these inequalities to show that there's fundamentally something different about correlations between parts of system when you are dealing with quantum systems than classical systems. And then you have this entanglement, it becomes a resource with which you can do something called dense coding, teleportation, quantum key distribution. So it's kind of tricky to understand entanglement because you could just see that you have a box, you take a red ball and a white ball and you separate them out. If this person opens and sees the red ball, of course the other person is going to see a white ball or you can think of some kind of momentum conservation. So how is it different than quantum entanglement? A simple picture that I think of is if you change the basis or if you change what you're looking for, so instead of red and black or red and white, you suddenly see if there's a walnut inside, one of this and a, I don't know, peanut inside, you will still find that they show the same correlations as the red and white. So it doesn't matter which basis, you can do a change of basis and you still have these correlations. But then fair warning that this doesn't mean you can do like faster than light communication where oh, I end up seeing a red ball and I know the other person has a white ball and then we are communicating, no, because the moment you uncover, you measure it, your quantum state is lost. So you cannot do further manipulation and you cannot do something like I turn the zero, one here and something goes down, no. So you have to like work around these kind of things. But still, this is a very interesting feature of quantum systems. So what can we do with all that quantum? The core idea was to simulate quantum physics. So if you take a bunch of atoms, very quickly you will see that even for the simplest of systems, because of all these correlations, because of how quantum physics works, you will quickly run out of memory to simulate a quantum system. So the core idea is we need something fundamentally quantum to simulate quantum physics. But then of course, very smart people came out with algorithms to do other kinds of stuff. Shor, which breaks the RSA. Grover search, which makes the search on an unstructured list go from N to O of root N, so our quadratic speedup. And you have some other really nice things that you can do with all the quantum. And recently you see more and more applications to optimization, machine learning, quantum chemistry, studying very large complex biological data sets, protein folding, which protein cure is doing very exciting work, quantum pattern recognition. This is something even way beyond. So if you want to recognize some patterns coming up in your quantum systems, can you even use your classical systems to identify these patterns? So we have a long way to go, but we can still do interesting things with our computers. And that's where Qtip comes in. So this is the code part of Qtip. And Qtip speaks quantum. What do I mean by Qtip speaks quantum? Because underlying all this quantum physics is just linear algebra. So if you have matrices, tensors, multiplication of vectors and matrices, you can do quantum mechanics. But then it becomes maybe troublesome every time to define everything. So Qtip has very tuned structures which you can use to just build up your quantum system immediately. So you can build up a state vector with which you can describe quantum systems. You can build up operators which act on these state vectors and change them in some way. You can even build up higher-order tensors, density matrices, and work with them. And the code to do it is simple. You import all the functions and you just declare your objects, which can be a Hamiltonian, a destruction operator. You can make tensors between different objects. And you can also do some conversions from vectors to operators, operators to vectors from states to density matrices and so on and so on. So fundamentally Qtip gives you all the tools you need to build quantum systems and study them. And at the heart of it lies the quantum object class. So everything you define in Qtip as a quantum object goes into this quantum object class which knows what is the type of this quantum object. So if it's a ket or a brow, vectors, if it's an operator, or if it's a higher-order super operator, and so on and so on. And these quantum object class can understand the algebra that you need to have in quantum physics. And they are represented very efficiently as CSR matrices, which interact with specialized siphon code to do simulations. But we are facing some trouble with the quantum object class as the problem becomes larger and larger. Many people are trying to find more abstraction of this class and we are trying to develop something where the data and the abstraction is separate. So once you have Qtip and Sol, you can also use all the operators that come with it. And here I would just like to point out one of the operators which is a destruction operator. You can just specify the size of your system and you can make destruction operators like that. Then if you have a quantum object, you can probe its properties. You can find its eigenvalues, ground states, and things like that. Of course, this ground state for a large enough system might not be correct or might give you something different because it's a ground state problem. Then you have some very exotic things that not so many people use, but you can define super operators. And then you can write Lindblad master equations and you can define these exotic maps from different spaces to different spaces. And the way you do it is very simple and intuitive. Anyone who knows a little bit about Python can just pick it up in a couple of days and start working with it. And finally, quantum circuits. So how does Qtip bridge to the whole quantum circuit idea? It's because all valid quantum object methods work directly on the quantum circuit description of Qtip. So if you write me up a circuit, immediately you can convert it in a way because of the quantum object where you can apply all Qtip's machinery to it. So here, for example, yes, you can do some kind of evolution. You can inject noise and so on and so on. So it becomes like a bridge from all the quantum computing and quantum circuits to actual quantum physics. So that's pretty cool, but the quantum information, part of Qtip is not getting developed as rapidly as the other parts right now because we have very specialized tools already by, of course, you saw many talks today. But then we, in future, we would like to really bridge these things together. So that someone can just write up a description as a quantum circuit and use Qtip to play with it. So once you define your quantum systems, your structures, what can you do, like the physics of it? So with Qtip, you can study quantum dynamics. And this is a very simple workflow of how you simulate something which is called a Lin-Blad master equation. So the role here is a density matrix. So it's, and then this equation is how this density matrix evolves. So the density matrix is, in some sense, the description of a quantum state, but it can be a mixed state, not a pure state. And then you can very simply, with this four or five lines of code, simulate this kind of dynamics and then add your own operators and so on and so on. Then Qtip allows you to work with something which is called time-dependent Hamiltonians. So you write down the Hamiltonian of your system, but now it's not just a static function, but it can change with time. So if you take a quantum system and you're driving it continuously, you can even define that. And there's just a slight change that you need to do in defining your Hamiltonian operator, which is just you make it a list of a constant part and a time-dependent function. And then you use all the Qtip machinery, which you can use with time-independent Hamiltonians. And we have recently completely rewritten the stochastic master equation solvers in Qtip. With this, this is the non-commutative analog of Ito's calculus, with which you can simulate different kinds of noise in quantum systems. So it's extremely useful to model weak measurements, feedback control methods. So these kind of things have been already used in the lab in experiments to model noise. Okay. And the nice thing about it is, because it was developed as an open-source Python project, it was always kept in mind the use, the use case of it. So once you know how to use one solver in Qtip, it becomes very easy to switch to anything else. So you define your Hamiltonian, you define some operators, some collapse operators, you define an initial state, quantum state, you define how long you want to see it evolve. And then just by replacing the ME solve or master equation solve to any of these other solvers and more, you can just apply all these different methods. So for example, okay, sorry. So for example, there are very specialized techniques to deal with situations where you have a constant drive and you don't evaluate this evolution at all times, but only at some multiples of the drive. So this is called the Flocke dynamics, Flocke formalism, and which is already implemented in Qtip. So even though you're not an expert in the field, if you just want to compare your method and benchmark to someone else's method before, you can just use some of the tutorials and build up your benchmarks. And of course, who doesn't like beautiful pictures? So Qtip has amazing visualization tools, the evolution on a block sphere, Wigner function plots, tomography, and of course the quantum circuits part is there, but the back end is I think Q-circ. And then I recently tried to implement something from a Japanese researcher who built a very beautiful JavaScript library where you can drag and drop your circuit and it builds you a topological description like that. So this is like very low level hardware description of your circuit. So what's new in Qtip? PIX, permutational invariant quantum solver. So this theory was being developed by Nathan Shama when I was at Rican. And I came into the whole Qtip picture because of this project. So the theory was being developed and then there were some problems with Qtip and simulations. And because I was someone who was like, open source enthusiasts, I asked him, oh, why don't you open source this code? And for him, it was not easy to bridge this gap. So I was like, okay, I can help with it. So we have this exchange. So I learned the physics and he learns the code. And it turned out to be a really, really exciting project because the moment we released this code, there were people using it. There were people coming us and saying, oh, hey, we have this system. Do you think we can simulate with your code? And we are facing this problem. Can you help us solve it? And it was really, really nice and interesting to see that even before the theory results got published, people were coming up and already using the code. So what are we doing here in this addition to Qtip is you few take a lot of qubits and you impose some restrictions on it, some conditions, for example, you assume all of them are identical. You have all collective operations on this. What you can do is you can apply some permutational environs to your system. And instead of studying the system in a two to the power n dimensional space, you can reduce it to something polynomial. So and permutational environs means, okay, if you change the position of two qubits, things don't change. So we ended up discovering many interesting things and extending this whole small idea to studying different kind of phenomena in quantum physics. And we published this at PRL. So it was really a good project. Then this is something that I'm currently working on with Neil Lambert, he's a senior scientist at RECAN. What do you do when you have a qubit which is interacting with a noisy environment? And the qubit is very, very strongly coupled to this environment. In most of the quantum physics simulations, you have to assume some weak coupling so that you can implement some approximations and really run the code on your computer. So then there is this method which means non-Marcovian, where the system is not memoryless, sorry, the environment is not memoryless. And you have these methods developed for quantum chemistry which we are trying to make it more general and bring it to Q-tip so that anyone who now wants to study non-Marcovian systems can use this. And there are some very exciting things that you can see in this kind of system, namely virtual photons. So you have a system and you have photons in the system but these photons cannot eject out because they are trapped in the ground state of this composite system. And if you don't use this non-Marcovian formulation, you will not observe these effects. So this is something very exciting that we are going to push in Q-tip very soon. And then there are contributions by others, not the core group. So this is Ben Bartlett from Stanford and he's, I think he works, I don't remember the group, but he submitted a request for a scattering module where he's studying how do photons scatter in a wave guide when the system is driven by some excitation field. And he has made a very beautiful tool, a package for it. I think it's also relevant for people who are doing photonic networks and photonic quantum computing or just anything with photonics. So this brings me towards the end of the talk. Maybe I have, how much time do I have? Okay, that's good. That went better than I expected. So we have a lot of time for questions and discussions. So this brings me to the last part of the talk which is open source and open science. So how does Q-tip leverage open source? So this is one of the workflow I was discussing with my friend who is very involved with numfocus about this and the title of this slide was how to do open source, how to open source your code. And then he was explaining to me that this is not the only way. Of course, you have many different ways. But this is how Q-tip is doing it right now. So the first part is, of course, you write your code and you have to test your code. So we have very strict standards at Q-tip that whenever someone submits some new code, some new change, it has to be accompanied with some very rigorous test cases. And all this happens over GitHub and we have a continuous testing environment set up with Travis. Then once we are happy with the code, we ask the developer to really write nice documentation and then we generate it automatically with Sphinx and we can publish it on Read the Docs but now we have our own website. So we just make the documentation available on the website. And finally, as a researcher, what's the incentive for you to give away your code? I mean, it takes so many months to do the research, make the code and then we impose all these conditions on writing good code tests and everything. So what's the incentive? And this is the last part, is that the happiness that you get by getting it published somewhere. So you can have Zinodo, which gives you a DOI which says, okay, this code was first published here. So even before you make your research on the archive, maybe it takes months to write your theory and everything but then you can, in fact, already get the results out and get a Zinodo DOI. You can submit it to a journal like JOS, Journal of Open Source Software and it can get reviewed by others. Did you have a question? Oh, sorry. And then we use Konda and PIP, Python Packaging Index to distribute the code because Konda has become like a nice environment for distribution of scientific code but recently we are also seeing some difficulties because Qtip has all these C code which sometimes has difficulty in compilation on some systems. So we are even thinking, okay, can we move to something like wheels or develop something which makes it even easier for people to use Qtip and install it? Maybe this part is relevant to some people. Some people are probably, of course, experts on GitHub. So how does, how do we work with GitHub and Qtip? So Qtip has an online repository. Anyone who wants to contribute to Qtip makes a fork, a copy on GitHub and then works or interacts with this local copy and then once someone is happy with the changes that they have made, they want someone in Qtip to review the code. So currently we have a small team of lead developers who are reviewing the code and then once we are happy with all the testing, the documentation and things work fine, we merge it and it becomes part of the full repository. Of course, testing. This is a line that I will never forget because my GSOC mentor once told me that, okay, untested code is broken code. I will not even start discussing your code right now because you have not written the test for it. So let's take a break this time and you write the code test and then come back to me. So this is really, really important for Qtip because as a library which is being used by so many people, if there are even very small bugs in the code, it is going to affect many people and it is going to affect fundamental research in a very big way. So we put a lot of importance on testing so that you can be really assured that the code you are using for your research is not giving some spurious results. For the documentation, sometimes we, I mean, we were trying to find out a way to separate modules. For example, sometimes someone could be so involved with a project that it becomes a sub-projects on its own. So for example, the PIX library that I was working on became something like this. So we published PIX as a library separately first, wrote all the documentation for it and then added it to Qtip. So what we use is Spinks which generates documentation automatically. It's very simple, it's just you have to define a couple of configuration files and run a make and it generates all the documentation. If you're nice when writing the code and you comment out and write everything neatly, it's even, not even a hassle, it's just a day probably or a couple of hours where you set this up and then you're good to go. And then read the docs, we'll automatically update every time someone new makes changes to the code and adds documentation. So, and then the last part, of course Qtip right now, there are three ways where you can install Qtip standard. You can install from PIP, from KONDA. So we are following the KONDA forks channel. It is a community managed channel for code or you could just download the source code if you want like the bleeding edge latest developments and you could install it with Python setup.py install which will make it, install it in a global way or develop which will install it right where it is but you can still access it from anywhere. So what this can do is if you want to make even the smallest change in your code locally, you make the change and then it will be reflected immediately when you run your notebooks and your code. So this is how we distribute and publish code. And now I would like to talk a little bit about summing up and also the background of it. So it's like a full circle. Qtip was started by Robert J. Johansson and Paul Nation. Paul Nation is at IBM Q right now I think. Okay, I don't have the IBM person here. And he was supported by Franco Nori. Right now we have several developers but Alex Pitchford, he is one of the lead developers now and we have Eric and there and Nassan Shama and we sort of try to get the word out, try to help a lot and Eric is the one who has completely rewritten the stochastic equation solvers. So he's doing a lot of these active projects and he's also going to be a Google Summer of Code mentor for some of these projects. Then I want to talk about Google Summer of Code. Hopefully some of you, if you're students would be interested in contributing and becoming a part of the Qtip community. So we are applying to Google Summer of Code this year with NumFocus. And right now we have three projects and maybe we might add a couple of more but the first project is lattice models in Qtip. So if you want to simulate a large spin system or maybe not so large because okay, we don't have a quantum computer yet but if you want to simulate or study simple spin systems and then inject noise into the system or study annealing for example, we want to make it very easy for you to do it in Qtip because of course you have different versions of annealing in all these projects but fundamentally if you want to research more on how does this spin system behave, if it's strongly coupled to something else, if you inject noise in it, if you drive it, what kind of dynamics does it show? Right now it's not so straightforward to do it with Qtip. So we are trying to make a project where we want to implement very simple spin systems. Then this is a very exciting project because I personally am interested and will be involved with it is we want to make a GPU back end for the dynamics with this method called hierarchical equations of motion. So this is a method from quantum chemistry with which you can simulate spin systems interacting very, very strongly with the environment and you see these very non-trivial effects and this problem quickly becomes extremely large because what you have is you have the main density matrix or the description of the main qubit but now you have these auxiliary, like a structure of auxiliary matrices which somehow contributes to the dynamics of the main density matrix and this auxiliary space grows very, very large. So if we can somehow put all these density matrices on the GPU and write the equations for its evolution, we think it might be very beneficial. There have been papers on this but they have not open sourced their code. It's written in MATLAB I think. So not going there. So we want to make something like that and the last part is pretty huge project where we want to completely make an abstraction out of this quantum object class so that we can connect it to all these different ideas. Maybe all the quantum computing simulators, maybe use some other linear algebra modules to really do the simulation because right now we are sort of stuck with the compressed parse row format of NumPy and many times people have come up to us and said, okay, this is not working, you have these indices which are in 32, in 64 or okay, I don't want to directly store this large matrix but I want to make an abstraction out of it and play with it and then something like what happens in TensorFlow, you define everything, you define your graph and then you run the computation. So we want to overhaul the quantum object class and abstract it out. So this is another interesting project that we're interested in. So this brings me to the end of the talk. I would like to point out to this blog written by Nathan where he keeps track of all the latest developments in quantum tech, not just the research but the funding, the different mergers, the different ideas that's coming up. If you want to give some feedback on my talk, you can go to this website called menti.com and use this code and give some feedback. It helps me make this better next time. And if you want to follow me on Twitter, I am Quant Shah, Quantum Shah Nawaz. And this is the website where you can find the link to my email, that's it. Okay, thank you. So I have five minutes for questions. This is perfect. Yes. So the quantum circuit representation that you have, is it just as a dense unitary or is it something more clever? So it's, I mean, it's in the end, it's just the quantum object. So it's like a sparse CSR matrix but actually it's very, very simple. It's just a list of these objects. So right now there's no sophistication. There's no, because this project was done, I think in 2014 by a student over the summer and after that, this part of the project didn't develop so much. But we still have all the basic machinery to do things. We apply gates and to study these systems but it's not so sophisticated. Yeah. Yeah. Yeah. So the bosonic operators are implemented. Fermionic operators right now are not because we have had this discussion on the fermionic commutation relations which are not straightforward. Yeah. It's not default by default implemented but you can still use it to construct it but it becomes like a couple of steps on part of the user. But it would be interesting. Oh, I'm sorry. I didn't repeat the question. So the question here was how does Qtip store this quantum circuits? Is there a very smart machinery to do it? No, because we just make it a quantum objects and store it as a sparse CSR. But right now actually it's just a bunch, a list actually of these different objects. So there's no sophistication involved but you can still do everything that you do with all the other simulators, maybe not as efficiently. And the question here is that are the fermionic commutation relationship implemented by default in Qtip? Right now, no as far as I know but the bosonic ones are. So probably that's a very interesting project to put forward. Yeah. Just an organizational question. The lead developers, do they get paid at all or is it just something that they take on the side because they have a universal project that aligns with it or is it like a foundation to have? So the foundation part of it is an interesting question. We have an organization but there is no one getting paid right now for it, the lead developers. But in some sense the university pays some of these developers. For example, I think Eric who is really working from Sherbrooke University, I think he is employed at the university and he has something like his soul, I don't know, work is related to Qtip, so something like that is there. But for example, for me, I'm a PhD student, so if I have something and I'm enthusiastic about Qtip, so I will develop it for free. But in some sense you're always, you have this issue of course in all open source projects, like who is getting paid and whose responsibility is it? So did I repeat the question? No. I'm so sorry. The question was, how is this organization working? Who is paying? Who man is someone getting paid to work on Qtip? Yes? Too many questions to ask here. I want to talk to you about helping out with the installation of Qtip but let's do that afterwards. The main question I had is what kind of resources can Qtip use? Can you run it on a big cluster to simulate really big things? Can it use GPUs? So GPUs it cannot. So the question is what kind of, what kind of resources can Qtip use to run simulations? GPU right now it cannot but it can be run on an MPI cluster. You have to just build it from source there. But some people have come up, come to us with some problem because of this in 32, in 64. So how the indices of this Spark CSR works? But that is more on part of like NumPy problems and things. But yes, you can parallelize, you can run parallel code. Yeah. I have a question. About the GPU, how large are the matrices that you work with? Megabytes, gigabytes. Yeah, the question, sorry, the question is regarding GPUs, how large are the matrices that you are interested in? Let me think. So right now, if you take, if you take a Qbit, a two-level system, you need four, four numbers as a density matrix to represent it. But if you use this GPU technique, these auxiliary density matrices, I think it even grows factorially, but you can have always a cutoff. So you start with something small until the results converge, you increase the cutoff and right now, I cannot give you an exact answer to it but on a normal... We're talking megabytes, gigabytes, because the problem with GPUs is that you have to transfer the data from the system memory to the GPU memory. Yeah, yeah. So it's all, of course, of order of gigabytes, actually. So we want to stay completely in the GPU and run the ODE inside the GPU. So the updating happens there. We don't want to interact with the CPU. But we don't have the expertise to do it, so we are looking, yeah, for contributors. We're out of time, so... You got an asset after this. I'm here. So let's thank the speaker once again.