Computer Architecture Podcast - Ep 6: Quantum Computing Architectures with Dr. Fred Chong, University of Chicago

Episode Date: August 30, 2021

Dr. Fred Chong is the Seymour Goodman Professor in the Department of Computer Science at the University of Chicago, and the chief scientist of SuperTech, a quantum software startup. He is also Lead Pr...incipal Investigator for the EPiQC Project, an NSF Expedition in Computing. Previously, Fred received his Ph.D. from MIT in 1996 and was a faculty member at UC Davis and UC Santa Barbara. Fred has made significant contributions to architecture and system stack for quantum computing, and his other research interests include emerging technologies for computing, multicore and embedded architectures, computer security, and sustainable computing.

Transcript
Discussion (0)
Starting point is 00:00:00 Hi, and welcome to the Computer Architecture Podcast, a show that brings you closer to cutting-edge work in computer architecture and the remarkable people behind it. We are your hosts. I'm Suvainai Subramanian. And I'm Lisa Xu. Today we have with us Professor Fred Chong, who is the Seymour Goodman Professor in the Department of Computer Science at the University of Chicago, and also the Chief Scientist of SuperTech, a quantum software startup. He is also lead principal investigator for the EPIC project, which is an NSF expedition in computing. And previously, Fred received his PhD from MIT in 1996 and was a faculty member at UC Davis and UC Santa Barbara.
Starting point is 00:00:39 Fred has made significant contributions to architecture and the systems stack for quantum computing. And his other research interests include emerging technologies for computing, multi-core and embedded architectures, computer security, and sustainable computing. Today, he's here to talk to us about the system stack for quantum computing. A quick disclaimer that all views shared on the show are the opinions of individuals and do not reflect the views of the organizations they work for. Fred, welcome to the podcast. We're so happy to have you. So let's kick it off with something generic and broad. What is getting you up in the mornings these days?
Starting point is 00:01:24 I mean, broadly speaking, the thing that excites me the most are my students. And also, you know, more specifically, you know, the specific work that we're doing in quantum computation is really sort of at a really historic time. And so, you know, student-wise, I just had my first five PhD students graduate from this crop at UChicago in the quantum space.
Starting point is 00:01:49 And they are just taking their first jobs. One is starting at Yale as assistant professor. Several went to companies, Intel, Amazon, and HRL. And then one founded our startup company, Supertech. Right. So quantum computing is, of course, one of those paradigms that promises exponentially greater computing power as you scale the number of devices and so on. But before we sort of dive into the technical details, could you maybe paint a broad picture
Starting point is 00:02:24 of the landscape of quantum computing for our audience? How is it different from classical computing? What really the only technology that we know where, you know, adding a single device to a computational system doubles its computational power, right? So it's the only sort of exponentially, truly exponentially scaling technology that we have. And so as such, it's the only approach that we have to try to solve some of the intractable exponential scaling problems that we have in computer science. Now, of course, it only applies to certain specific problems in that space. Right. But I think it's very exciting in that way. You know, that's how it's different. But I think that, you know, what's really exciting right now at this time is for the first time we have real machines that have been implemented primarily in industry that are of a scale that can't be simulated by classical machines, right? And so for the first time, we are at a cusp of really new science
Starting point is 00:03:47 because the only way we can understand these machines is to do experiments on them. Even more to the point, the algorithms that we want to run on these machines in the near term are heuristics, which we don't have analytically sort of proven performance predictions for. So there's some promise,
Starting point is 00:04:07 and we suspect that there are some substantial performance gains to be had. But the only way we're going to learn about these algorithms and how well they're going to solve problems and how much better they are than classical algorithms is actually to run these on these machines and sort of do the engineering and some of the things we'll talk about today to make them work well and hopefully do something that hasn't been done before and something historic. That sounds awesome. In the particular field of computer architecture,
Starting point is 00:04:37 there's always been this sliver of folks who understand quantum computing and that sliver of folks has not grown by leaps and bounds the way, say, the group of people who understand quantum computing and that sliver of folks has not grown by leaps and bounds the way, say, the group of people who understands ML has grown by leaps and bounds in our field. So when it comes to quantum computing, the thing that you said initially, which was like, you know, you add a single device and everything, the computational power changes exponentially. The three things that I've learned about quantum computing in the past is that they're finicky. And so is it really the case that one device doubles it? I keep hearing about having to have all this redundancy. And so there's this notion that as you expand the number of devices, some of it have to be dedicated to redundancy to make sure that the answer is
Starting point is 00:05:21 correct. So is it truly that exponential? And I've heard that there's different approaches to how you might build the machine and trending towards needing more redundancy versus less. Does that affect the software stack? So I kind of want to hear about this aspect. Absolutely. It is definitely the case
Starting point is 00:05:40 that one of the most challenging things in quantum computation is dealing with errors, right? And part of the difficulty in that is that there is this thing called the no-cloning theorem, which says that you can't perfectly copy an arbitrary quantum state. The implication of that is there's no way to sort of make a backup copy or a checkpoint of your computation. And if you have an error that isn't correctable, you've essentially lost your entire computation. You have to start over, right? And so the approach has been to either in the near term, just run short computations and try to make your machines as reliable as possible, or come up with, as you were mentioning, some sort of error correction
Starting point is 00:06:31 method, which allows you to essentially continuously correct your errors without, there's, you can have redundancy, but you can't have essentially a perfect copy. You have to encode the particular state in a particular error correction code, and then continuously correct it without, you know, essentially have, there's not a notion of backup copy. You just have to keep the data constantly in this correctable state. And then all of your computations are within that code. And so it's true that that kind of redundancy costs you something. But in general, the redundancy is sort of polynomial in overhead, which means that you still can have that exponential gain.
Starting point is 00:07:18 One thing I didn't mention is the other big challenge in quantum computation is there are limited number of algorithms that have potentially an exponential gain. In fact, they're not, it's not a provable exponential gain. It's just in practice an exponential gain, right? Sort of the best known classical algorithms are exponential and the best known quantum algorithms are not, right? And so, but there's no proof that says that we won't come up with the polynomial algorithm for the exponential, in the classical case, right? But it is still the case that as far as we know, there are some exponential gains to be had. And even with error correction, those persist, right? That isn't to say that there's a lot of engineering to be done because there are a lot of constant factors. And
Starting point is 00:08:02 as architects, we know that even though if there's an asymptotic game, it may be that the crossover point isn't anywhere useful in practice, right? The other thing I'll mention is that there's actually sort of a middle ground between the two things I mentioned, which is make machines as reliable as possible physically and then run short programs or error correct them. There's a
Starting point is 00:08:26 middle ground sort of to bridge those two things, something that we call error mitigation techniques, where instead of using a single physical device to implement a quantum bit, we might use some, a couple of them or some ensemble and have a little bit of, it's almost like physical, it's not really error correction, but sort of just a physical ensemble that represents a little bit of, it's almost like physical, it's not really error correction, but sort of just a physical ensemble that represents a qubit that has a lower probability of error. And that's somewhere in the middle of these two things. And that's probably what's going to be next. And then hopefully we'll use that to bootstrap ourselves to some sort of error corrected system. So just picking up on the algorithms, both in the near term and long term. So how should we think about, you know, programs that are amenable to quantum acceleration,
Starting point is 00:09:12 both in these different paradigms in the near term and maybe even in the longer term? I mean, most quantum algorithms, especially in the near term, you could think of as essentially an energy minimization algorithm. You have some system that's represented many times actually just in analog on your quantum device. And then you have a means of minimizing the energy of that system. And that really just reduces to optimization, right? You can think of most quantum kernels as optimizing some hard, small problem that is a sub-problem of something you need to solve in your sort of larger application, right? So you could think of the quantum machine as a quantum processing unit,
Starting point is 00:10:02 or like a QPU, like a GPU, right? And you send it a little piece of your program that you want to accelerate it. A good example would be, for example, something called the variational quantum eigensolver is something that looks for the lowest energy state of a particular sort of molecular compound. And essentially what it's trying to do is it's trying to find the electron positions,
Starting point is 00:10:30 what orbitals they should be in, in that compound to minimize the energy. And the way it actually works is you have a classical outer loop use of supercomputer, which essentially is trying to guess or search for where the electron positions are. And then with each guess, it sends that guess to a QPU, a quantum machine, which will quickly give you an estimate of the energy of that system, right? Or sort of the ground state. And that's actually a very direct analog. You know, you have a quantum system you're trying to model, use a quantum computer to model it.
Starting point is 00:11:16 But another way you can think of it is you can use something similar where the kernel represents an arbitrary graph. And you can set it up so that if you want the max cut of that graph, for example, that can be found essentially by minimizing energy of the system that represents the graph. And so by analog, you can solve a lot of different optimization problems. It's almost like annealing. You're heuristically minimizing the energy with some error. But the idea is that because you're doing this in a quantum sense, it tends to be better at avoiding local minima and more quickly converging to a
Starting point is 00:11:59 sort of more global optimal solution. And at least that's the theory and that's the hope. Right now, I think there's a lot of work in seeing how well such algorithms will work in practice in the presence of noise, because the noise makes it so that maybe you won't find such a good solution or it won't converge a solution as quickly, right? And so there's a lot of work in looking at how good the machines have to be to implement kernels like this that you could sort of see are generally useful for many applications. And when will it be that we get an advantage from these machines? So how would you go about characterizing a quantum machine, right? Both in the presence of these variations or noise and things like that. For example, for classical machines, like GPUs will have like a headline flops number and you say, oh, this machine provides you this many raw flops.
Starting point is 00:12:55 In the quantum computing world, there's always this talk about qubits and the number of gates and things like that. So is that something that you would use to characterize the ability of a machine? And how does that interplay with would use to characterize the ability of a machine and how does that interplay with the noise characteristics of the underlying machine or the underlying technology and the algorithms on top of that? Yeah, that's a very good question, actually. In general, when you look at press releases and the news on quantum machines, you'll basically get qubit count, right?
Starting point is 00:13:25 And that's basically equivalent to characterizing microprocessors by gigahertz, right? By clock speed, which we all know is not actually the performance of those machines. And in fact, qubit count is probably the easiest thing for them to scale, which is of course why people use that to measure the progress of their machines. The harder thing is actually the fidelity of an operation or a gate.
Starting point is 00:13:47 So a two-qubit gate is really the hardest thing right now. And that is actually the limit, the thing that limits our computational power in these systems, that we can only run programs that are so long because the two qubit error rate say, right now it's about one in a hundred, which means you can run a hundred gates and then your system's dead, right? And we could see that it's probably gonna get to one in a thousand.
Starting point is 00:14:15 And I think Google has a goal of getting to one in a hundred thousand, which means we could run a hundred thousand gates in the critical path before the system is done. So that's a very critical parameter. And many times you'll see that the space that the power of machine might be, you can think of it as an area, which is the product of the gate fidelity times the number of gates, or no, the gate fidelity times the number of gates, or no, the gate fidelity times the number of qubits
Starting point is 00:14:47 it supports, because that's like sort of gives you an area of how much computation you can do. IBM actually has a metric called quantum volume, which is a little bit like that, but it's a little bit, it's a lot more complicated and And it looks at the connectivity of the machine. It looks at like by running a particular benchmark, how much can you run? And it lately has become a little bit obsolete because the machines have gotten too good. The quantum volume was sort of deliberately made so it scaled exponentially.
Starting point is 00:15:25 So the numbers got really big really quickly in the beginning. And then as machines got really good lately, the volume went from tens to 100 to a million. It became too big now. So that's probably not a good metric anymore. And so the thing that's happening now is an evolution which is, you know, analogous to classical machines, that we're starting to look at benchmarks,
Starting point is 00:15:51 right? And in fact, a number of companies and places have just starting to actually put together a much more systematic methodology for benchmarking these machines, looking at their different characteristics and creating benchmarks that exercise those different characteristics. Well, so I actually wanted to try and tie that all the way back around to the whole error correction piece that we were talking about in the beginning, right? Because, you know, to some extent, there's different places where this redundancy can be handled, right? So there's like the, you know, what Souvenay was just asking about was like the fundamental nature of the machine, right? So that seems like a machine implementation where it's like the fidelity of your gates. And then you were talking
Starting point is 00:16:48 a little bit earlier about this space where you can have, you know, you, you run only short programs, or maybe you have some of your power dedicated to error correction that, that latter piece where if you, if you know, you're on that other extreme, is that a software artifact or is that a, that seems like the way you just talked about all this stuff, maybe that's a software artifact or is that a hardware artifact? You mean, is the error correction,
Starting point is 00:17:13 do I view that as software or do I view that as hardware? Right. Some of that may be done in hardware in some sense in that it's, so all the software that we produce basically reduces to some sort of control signals. And in fact, with most machines, getting those control signals to the qubits is expensive.
Starting point is 00:17:35 And so you might think of some of the frequently occurring tasks, they might be implemented in some sort of firmware or hardware that's much closer to the machine. Or for example, with superconducting machines, the qubits are at like 20 millikelvin, right? So they're very far in the refrigerator of the machine. And getting control signals to them is very hard. I think Google thinks of it as you might as well have that machine on Mars, right? That it takes so long to get signals to it and you really can't get to it to look at the chip and debug it.
Starting point is 00:18:14 And so this question of whether it's software or hardware, yeah, I think we are starting to, you know, there are groups starting to look at taking some of that, what we would have thought of as software and making it firmware or hardware. You know, Intel has some cryo CMOS implementation of some of the control. I think we're not quite at putting error correction there yet, but I expect that we will. There've been some academic papers on such schemes. So yeah, I would say traditionally we think of it as software, but some of it will become hardware,
Starting point is 00:18:50 possibly not all of it. A lot of the schemes have a little bit of a hierarchical nature and there's some amount of like soft decoding that happens. So there are some things that probably will remain more software-ish. Interesting. Okay. So yeah, since we were wanting to talk a little bit about hardware software or system
Starting point is 00:19:14 stack design here, you know, that that's useful information or helpful information. I think the other thing that I was curious about following up on is earlier you were talking about this as like kind of like a QPU, right? So, you know, when we had things like GPUs become really prevalent as accelerators, there was a little bit of a transition for developers to A, you know, think about how to partition their problems between the CPUs and the GPUs and then B, develop the code for the accelerator piece, right? Like learning CUDA or OpenCL or something like that. Do you see a similar sort of change in how developers will have to think in terms of like, okay, here's how I partition this problem into quantum versus classical.
Starting point is 00:20:02 And then now I have to learn know learn this new framework say to express what I want to do in the quantum world in some sense I would say yes but in another sense I would say that at least for now the QPU is very constrained and so you, there may not be as much coding for the QPU as, for example, we did for CUDA or something like that. The quantum programs tend to be much smaller and sort of more specialized. And maybe there'll be a smaller number of kernels that people just sort of reuse, right? I think actually the part that maybe would require the most thought if you were a programmer trying to take advantage of the QPU is how to partition to the QPU and actually how to make use of a kernel that is really good at solving computationally hard problems of a certain type,
Starting point is 00:21:06 but actually really bad at input and output, right? And so something you can think about for a quantum machine is that it's probably not going to be a lot of bits, right? Right now, it's on the order of 100, and maybe we'll get to 1,000 or 10, ten thousand that's not a lot of bits right but the computational power is enormous right it's like two to the ten thousand right so what you have is uh you want a problem that can be described in a small number of bits that's really hard and then you can get an answer back in a small number of bits, right? You get 10,000 bits in, 10,000 bits out. Right now, more like 100 in, 100 out. And then you want that problem to be something really difficult to solve, that normally would take exponential resources to solve. Now, it's actually the case that you could
Starting point is 00:21:57 input, to be 100 bits, you could input two to the 100 values in there, but it would take you exponential time to do it. And then you've sort of lost your benefit already, right? So you want a problem that's describable in a small number of bits. So that could be like a small graph, right? But yet you're doing some graph computation that's super difficult. It could be a molecule in which you have an exponential number of interactions going on in there, and that's very difficult to model. And so there are some problems that are naturally this way. And then there are some problems that don't seem so naturally
Starting point is 00:22:36 this way, but there's some recent work by one of our collaborators, Aram Harrow at MIT, and some of our follow on work on how to use that, something called a core set for quantum algorithms. And it's essentially a sample of a large data set that then you can use to solve a representative problem and then use that to maybe inform your larger problem.
Starting point is 00:23:01 And the simplest version of that is say you were clustering a large data set, and then you have some way of sampling it, and then you cluster the samples, and that gives you a hint as to what the cluster should be for the large data set, right? They actually use core sets classically also, but it has some promise for sort of these quantum acceleration type of applications. So I imagine that that is the paradigm shift for people, you know, trying to figure out how to partition their problem, how to summarize their problem into something that, you know,
Starting point is 00:23:41 is solvable on a quantum machine in an advantageous way. But of course there's the obvious ones where, you know, is solvable on a quantum machine in an advantageous way. But of course, there's the obvious ones where, you know, you want to model some sort of quantum physics, quantum system, material problem, then, you know, perhaps that's much more obvious, right? Right. No, that's a really good summary. It sounds like what you need is like a compact problem representation, but that sort of blows up into like more exponential compute and that sort of maps really well to the quantum systems that we have today. To a large extent, it's sort of fundamental, right? You want this compact description that then becomes a lot of computation and that's how you get that exponential advantage.
Starting point is 00:24:26 So maybe we can double click on the exponential computation part itself, the kernel itself that runs on these devices. I'm sure there are a lot of challenges. Like once you know that this is the kernel that you want to accelerate, like how do you go about mapping this to the underlying hardware platform that you have
Starting point is 00:24:41 or whatever is the technology that's implementing the machine. And there are various layers in the stack. So starting from a kernel representation in some high-level language, there's a lot of layers to the stack. Like in the traditional architecture parlance, you have the compilers, you have an ISO or an architectural or an execution model for the underlying machine. And then there's a problem of mapping the problem or kernel to the underlying machine as well. So maybe you can talk about some of the challenges in this entire stack.
Starting point is 00:25:08 Where are we today? What are the gaps in this flow? And what are the interesting challenges here? Absolutely. So I'll just start with, you can think of mapping to QPU as a very specialized vertical stack of like an application specific stack, right? And
Starting point is 00:25:28 that you think of quantum applications as that sort of very specific thing. And then you map very specifically to a particular hardware platform, and probably even a specific instantiation of that platform, you have number of qubits, topology, everything. And the closest classical analog would probably be circuit synthesis for an ASIC, right? So you have particular, very specific application window, and you were synthesizing gates down to hardware and mapping it to its physical topology, right?
Starting point is 00:26:04 So I would say, as a classical person, you could sort of think of this as hardware synthesis, right? The difference here is that, and maybe it's not so different. It's very different from your compilation of programs to general purpose machines, but maybe it's not so different from certain kinds of hardware synthesis in that the programs are pretty small. We will often compile for specific input so we can get, we do very deep optimization, right?
Starting point is 00:26:32 And get an instance that's, that, you know, has all the constants propagated, all the loops unrolled. A lot of opposition that you wouldn't see in a classical machine. And since the programs are small, the machines are small, we can afford a lot more complexity. So, you know, things that we would normally do to keep our optimizations tractable and scalable, we might violate that. Right. And just, you know, unroll everything and, you know, sort of schedule out everything that we have in a very specific way. So that's where most of quantum stacks have gone, right? So this fairly optimized progress synthesis,
Starting point is 00:27:17 but still layered and abstracted. As you mentioned, we have ISAs. There's something called quantum assembly language, open quantum assembly language, OpenChasm, which most people use and provides a lot of interoperability between different software stacks and different machines out there, which is great, right? But what I will say is for the last three to five years, much of the work we've done has been to break these abstractions and essentially violate modularity and reduction of complexity and actually build software stacks that are very physics aware, that expose details of the machines that are well below
Starting point is 00:28:03 the ISA. And I'll give you a good example. The typical software flow would be you have some high-level representation, some high-level language, quantum language, and you compile it down to an ISA, which is essentially quantum gates. And then those quantum gates get compiled down to essentially the machine-level representation, which is some sort of gates that the machines represent or can implement.
Starting point is 00:28:29 So there's some translation. And then those machine gates actually get translated into control pulses. So usually they're analog microwave pulses or laser pulses, which actually implement the gates on the machine. And so there's these multiple steps. And so a few years ago, we wrote a compiler that took pieces of the program. You can think of it as a multi-bit function, right?
Starting point is 00:28:55 Treat it as an input output function of multiple bits, and then directly generated a pulse sequence that implemented that sort of macro function, right? And that ends up being, you know, two to 10x more efficient, right? You can think of it as the direct path from the start state to the end state, as opposed to a whole bunch of instructions that meander around until they get to the end. And so it's not the most scalable approach. You can only do it on a small number of bits and gates. It actually, in fact, takes exponential time to do that compilation. But there are quite a number of these physics-aware optimizations that can give us very substantial gains. And in fact, I didn't, I guess I didn't start this interview, which I often do with, you know, our project, this, our expedition called EPIC has this goal of improving the efficiency of quantum programs on machines by two to three orders of magnitude.
Starting point is 00:30:00 And the way that we're going to do that is by breaking abstraction and optimizing for the physics of machines. So that's really interesting, actually, because I think in many ways, when you think about what makes various hardwares win, there's the hardware piece, the fundamental performance of the hardware, and then the ability for people to access it through the software stack. Right. And so, you know, in some, some ways you can say the battles are won, but with better hardware, in some ways you can say the battles are won with better, better software stacks. And as of right now, you know, there's a lot of different industrial giants that have various machines and they have their own software stacks. And so now when you talk about like breaking the abstractions and making it really, really custom to the machine underneath, that makes it even sort of, you know, the fates of the two are really, really tied together. Like you kind of have to choose now which particular
Starting point is 00:30:59 machine or which particular implementation you want, and then you marry yourself to both that software stack and that machine. So I guess what I'm wondering is like, you know, in this new world, where do you think, given that everybody's kind of interested in building a, you know, quantum accelerator, where do you think the battle will be won for like, who's going to win that race, like a better machine or a better stack? Well, I mean, I think you need both, right? I think that, I mean, I think that there's much more attention being paid to better machines and better stacks. And so at some level, the bigger win is in software stacks at the moment. You know, three orders of magnitude
Starting point is 00:31:40 from the software stack is equivalent to about 20 years of hardware development, right? And so if you can implement a stack in a few years that does that, then you've cut off 20 years of time, right, in terms of making these machines happen. So I think that is our vision. Now, of course, there's some interplay between what the software stack can do and what the machines can do. And that I think is very important and exciting. Many, many of the things that we do in our software stack come from our experimentalists, right? The typical conversation would be an experimentalist would come to me and say, I can do this special thing with my machine. Can you do something with it in the software stack? And we're like, yes, we can. And so, you know, that any number of things, you know, we have this work on ternary logic, Q-trits instead of Q-bits. And, you know,
Starting point is 00:32:37 that can save you an order of magnitude in the number of devices you need in your machine, potentially. And that came from, you know, in fact, a visit I had at Yale where they were saying, we can do these three-level Q-trids. You should figure out where you can do that in software with that, right? And so that, and the same thing with this pulse optimization, right?
Starting point is 00:32:59 One of our collaborators here at UChicago uses pulse optimization to optimize sort of single qubit and two qubit gates. The question was, well, could we use that for larger functions, right? Could we just optimize the whole program with it? Turns out we can't because that's not scalable, but we can optimize chunks of it.
Starting point is 00:33:19 So there's that. The other thing I will say is that it is actually a little, maybe a little surprising, but many of the techniques that you might come up with to optimize for a specific platform will generalize to other platforms. Even though the platforms sound quite different, trapped ions and transmons or superconducting devices of different kinds, they have a lot of fundamental features that have the same architectural implications, right? They're all physical, you know, sort of 2D-ish, 1D or 2D-ish. And so they have the same sort of similar topological constraints and, you know, communication is hard. They're all controlled through some sort of analog pulse sequence of different kinds. And so there are many of the things that we come up with, even though they initially are specific to a particular technology, will translate to many other
Starting point is 00:34:20 qubit technologies and platforms. Yeah, so as you were elaborating on the importance of the software stack, so one of the thoughts that occurred to me was like in the space of accelerators, like domains specific accelerators. So one of the things that you need is, apart from the programming language, the compiler stack and all,
Starting point is 00:34:39 you need things like debugging tools or things to visualize what's going on, like either from a performance standpoint or from a correctness standpoint. So are these factors that are important in the context of a quantum system, or are we still very far away from that? This is not a concern right now. Today, they're just trying to program the machines, and people have very good visibility into the system.
Starting point is 00:35:00 How far is it away from the end user experience? And are these actually things that people care about is is terribly important actually um i haven't talked about it yet but we like in our expedition project we have a whole thrust which has to do with debugging and verification and the problem you have is that you can't simulate these machines. And if you could, then you could just simulate it cycle by cycle. And you can even look at the internal state of the machine and know what's happening and know if you read something wrong in your quantum program. Or if the machine is disagreeing with what you should be doing, right? The physical machine isn't doing what it should be doing.
Starting point is 00:35:44 In reality, what's going to happen is you're going to scale your programs up. You can't simulate them. You're going to run it on the machine and you basically won't be able to test it very well, right? So it's very hard to look at the internal state of the system. You can't step through and you can't look at anything. When you measure the system, your program's over, right? So you can run the whole thing to the end, measure and get a few bits out. You can run it somewhere to the middle, measure and get a few bits out. But every time you just have to start over, right? There's no stepping through. And, you know, there are a lot of times where you might want to know, oh, I wish I knew what the quantum state was here in the middle. And that is an exponentially large quantity. And
Starting point is 00:36:24 it actually would take an exponential number of measurements to figure out what the state was right there. So it's actually a horrible problem. And we actually have a pretty large effort in trying to formally verify quantum programs, quantum compilers. Because, you know, I think of it this way, we actually have a fair amount of formal sort of formal technology, formal methods for verification. But we're usually a little lazy about using it, because it's sort of hard. And we could just test our programs, right? Well, in the quantum world, we can't. And so there is quite a premium on being able to prove that what, for example, your software is correct.
Starting point is 00:37:06 So that when the day comes that we have a big machine, we're going to run our software on it. Well, we know we've pushed the limits of technology, the machine sort of buggy. Right. And we know that we haven't really been able to test our software and run this thing. Probably not going to end that well. Right. And if you, if the result isn't right, we won't really know whose fault it was necessarily. And so there's a lot of interesting things, a lot of interesting
Starting point is 00:37:33 problems, hard problems there. I will say that thus far, people have just sort of been careful, you know, just try to, you know, incrementally test a thing on small problems, large problems and just do the best they can. But I think we definitely are gonna get in trouble eventually if we don't develop a methodology to deal with these things. There's some nice work out of Princeton and then NC State had some ball on work
Starting point is 00:37:59 on like quantum assertions, different ways of looking for errors in your programs. And there are just, you know, there are just a lot of interesting problems here. There's a fundamental issue here, which is that if I try to verify a property of my quantum program in tractable time, say polynomial time, and that property is too close or say reducible to the answer, right, the result of that program, right, you've just proven that that program has no exponential advantage, actually, right? If you have a program that has an exponential advantage, then you know it's going to be hard, right, to verify it. And there's maybe an interesting fundamental question is how many properties can you test for that are far enough away from the result that are useful in terms of sort of debugging your program or giving you some assurance that it's correct?
Starting point is 00:38:59 We don't know that. So there's a well-motivated, very long line of research coming in that area. That's super, that's super interesting, Fred. So I think if I may try and repeat back, you know, a high level train of thought that I got out of that. So with classical computing, we work very, very, very hard to make sure that the machines themselves are error free. And so if there's a problem, it's usually the software and the software is easily debuggable. So we can get lazy about writing our software. And then we
Starting point is 00:39:33 kind of like rerun it or check it later. Cause we can stick all this stuff, you know, print statements or whatever. And, but it sounds like what you're saying and correct me if I'm wrong, cause I could totally be wrong, but that like, because the machines themselves are so error prone, really the thing that you try and verify is the correctness of the program. So that if something goes wrong, you want to make sure the program is right. And so that you can deduce that it was the hardware that was wrong. Is that, is that kind of how it is? That would be one way to look at it, because I think that it is never going to be the case that the hardware makes no errors. And well, I mean, maybe maybe you could think of it, if the hardware is error corrected, maybe it could be
Starting point is 00:40:20 error-free. But at some level, the error correction software, it's sort of software, right? And so you at least need to verify that so that when you run it on top of the machine, you know, because the underlying physical hardware will always be error-prone, right? Maybe errors that you understand, maybe not completely. Yeah, that's so interesting. That's like a total flip-flop, right? To want to formally verify your software because you just can't rely on the hardware. That's fascinating.
Starting point is 00:40:52 What is one big open question that you'd like to see solved in quantum computer architecture or quantum systems? Yeah, I mean, actually, the thing I would like to see solved is that we have techniques right now for error mitigation, which is essentially, well, okay, so let me put it this way. The way that we've been making machines better for the last five years is essentially by being more careful, like making the devices more carefully, calibrating them more carefully.
Starting point is 00:41:30 And so, you know, we're sort of going from like one nine of reliability to two nines to maybe three nines by being super careful. There's no way we're going to get to five nines that way, right? And so these error mitigation techniques are basically ways of taking ensembles of devices and making, essentially simulating a better physical device right and that's going to give us hope maybe like two more nines or something like that but we actually don't know how to marry error mitigation with error correction right and so that is actually probably like i think of as at a system level or architecture level something that needs to be solved it's a little bit hard to phrase a sort of grand challenge problem like that that's completely accessible to architects actually right um you know i think of that in the context of systems and quantum computing
Starting point is 00:42:27 the grand challenge for algorithms people has come up with better algorithms right but the grand challenge resistance people is probably something like that right you know maybe a more that if i had to pick one that would be it but but it may be a more architecture appropriate one is that for example recently we found some really nice matches from between error correction codes that people want to run and uh like 3d or two and a half d architectures like sort of topologically if we found a technology build it you could build two and a half d tech sort of system with it and then it maps really well to the dominant error correction code that people want to use. And so that is sort of like a good architecture problem, right? Looking at different organizations of devices and looking at how well that matches something you really want to
Starting point is 00:43:20 run. And there are probably more such mappings or such matches of things out there. So I think there was one other kind of large high-level question that I was hoping to ask you today before maybe we transition into talking about your career, which is, you know, when I was a grad student, like AI was a thing where people were like, yeah, you know, people have been promising cool stuff on that forever. It's still a long way away. It's been around for a long time. It's like the, I think it was pretty much one of the AI winters when I was a grad student.
Starting point is 00:43:53 And then something just happened and it took off, right? And so oftentimes, you know, given that Microsoft has a presence in the quantum world and I was quantum adjacent um for a while when i was here people would ask me and i would say like it seems to me like it's kind of similar to this right like it's you know there's a there was a step function and then something's going to happen and boom and it sounds like what you're saying is like but the the fact that we now actually have machines where you can like real machines it's we're maybe approaching the beginning of you know like a super hockey stick would you say that's the case like would that that we're at the beginning of a super hockey stick for for quantum and if that's the case you know do you advise our you
Starting point is 00:44:37 know our listeners who are still in school to to go into this space and if so you know what should what should they be thinking about? I think there is an inflection point here with these new machines. And I think it's certainly scientifically very interesting. I would say that maybe the super hotkey stick is a little bit further away that, you know, probably the super hotkey stick is going to come when we get default tolerant machines, you know, and maybe that's five years away, right? We're already at the point where we have machines that are sort of historically different from classical machines, but it, but I would say we're probably five years away from, you know, sort of useful applications and getting to the scale that maybe we have fault tolerance and then continually large machines.
Starting point is 00:45:28 Some people might say that's 10 years away. As an optimist, I would say it could be five. But I think we're still a little bit at the deep tech stage here for quantum, right? Like it's still a little bit of long-term investment. You see the federal government going into this in sort of the 10 to 20 year time scale with the National Quantum Initiative. And you see companies going into it. Hopefully they'll have the stamina to get, you know, five years more so that we get to something
Starting point is 00:46:02 where they can start seeing some big benefits. But I think one has to be prepared for a five to 10-year campaign before you see that really big acceleration. So before it was like always 10 years away and it would stay 10 years away forever. But in this case, you feel like it is you know somewhere between five and ten years away so that that's cool i i think the other piece though about like students um i don't know if you were going to reiterate on that subna but like students who are interested in the field i think there is um you know there is a lot of need right now for a sort of more system level and software level view
Starting point is 00:46:45 of quantum systems, of quantum machines, right? I think that we are at a point where, you know, the hardware platforms have reached a point where you need the system on top of it. And everyone's realizing both in industry and academia that we don't have the people for that. So I think at the scale of maybe a small industry and at the scale of academia, I think there's a great need.
Starting point is 00:47:14 And I think it would be maybe five to 10 years from now before it's like the scale of machine learning or something where everyone should be doing it. But there's certainly already a big shortage, maybe on the order of thousands of researchers, maybe thousands or tens of thousands of engineers, that kind of thing. We're not at 100,000 or anything like that yet, but it's a small industry. But certainly at the research level, there's a huge shortage. There are lots of universities trying to ramp up on this.
Starting point is 00:47:53 And I think the place that they're shortest on is this sort of architecture systems and software regime. I think if you're at the level of PhD student, that probably definitely is promising, right? Because with respect at the level of PhD student, that probably definitely is promising, right? Because with respect to the number of PhD students, it's not a small number that are needed. I see. Yeah, just expanding a little more on that. So someone with, let's say, a good systems background who is looking into this particular space, this obviously spans multiple layers of the stack. And now you've got like physics and some amount of mathematics also coming in. So what sort of skill sets or broad-based fundamentals
Starting point is 00:48:29 would you advise, you know, a systems person or someone with an architecture background, like what are the essential things that they should sort of study and skill sets that they should develop in terms of being able to understand these systems with reasonable enough depth that you can then work on top of it as a systems person. Right. I mean, there's a certain level of abstraction that you can work with that probably just requires a little bit of linear algebra and classical systems knowledge. You know, the kind of work sort of at the very cutting edge where we're trying to optimize for the physics of machines, then, you know, it would be, it is helpful to have some understanding of, of device physics and quantum device physics, actually. And, you know,
Starting point is 00:49:12 that actually is fairly specialized. I mean, there, there are, even, even if I take a student who has a physics degree, for example, they just, the most important thing they learn probably are things they learn are for like a specific technology, how is it controlled, right? And what are its properties? And there are just a few classes and papers that sort of cover that kind of thing, right? I think there's a certain comfort level with some of those things that help that is helpful if you have some physics background and one can pick it up i think but you know i think i guess there's a certain level of work you see our classical architecture groups getting into this where they're sort of working at the isa level and working at maybe the device level where they can do look at errors and variation.
Starting point is 00:50:06 And then there's sort of like one more level beyond that, which maybe is a narrower set of people anyway, where you're more optimized for the physics of the machines. I would say that there is an effort to make this more accessible to people. In fact, my student Yangchan Ding, who is going to Yale, we had a book come out last year that he was the primary author of that is really a computer systems view of quantum computing and trying to give a broad view of like, what do the problems look like in quantum computation?
Starting point is 00:50:45 And how, what classical techniques do you bring to bear to solve those problems? So I think there is sort of an entry point. In fact, that's going to be an edX class workshop at Micro-Norwiska this year, which is something they call i2 CanQuantum. And it basically targets classical architects who want to get into this space and pairs them up with mentors in the field and tries to, and actually is a development process for their ideas. So I think it's possible.
Starting point is 00:51:34 It is, when I first got into this 20 years ago, I actually personally worked at a very high level of abstraction. You know, it's just an ISA and it's just a compilation problem. And it's a little bit less like that now. It takes a little bit more work maybe to get at least at the cutting edge of what needs to be done. But there, you know, there are systems problems that maybe are even fairly abstract. Yeah. So this, this was totally leading me to ask, like, how did,
Starting point is 00:52:01 what was your path into this field? You know, you started in sort of computer architecture and then, you know, have, you know, over the last couple of decades become one of the leading lights in quantum in our field. So how did that transition happen for you? Yeah, that's an interesting question. You know, I'm asked this question and maybe more generally how I chose the different topics in my career quite often. And I guess my first answer is, you know, you have to be willing to sort of jump and do something interesting. But the topics that I've worked on in my career are largely serendipitous. You know, so the three major things I've worked on in my career were sort of near
Starting point is 00:52:45 memory computing really early on, hardware security pretty early on, and then quantum 20 some years ago. And looking back, boy, those three were pretty good bets. But, you know, it wasn't like I necessarily knew that when I did it. You know, I mostly did it just because I thought they were interesting problems. And so the way I got into quantum actually is really just because I went to school as an undergrad at MIT with Ike Chuan, who built the first quantum machine, really. He built a bulk spin NMR machine. He was at IBM. He's a faculty member at MIT these days.
Starting point is 00:53:26 And Ike just came to me back in 2000 or so and sort of said, hey, you know, it's time that we started looking at architecture for these systems. You know, they're getting big enough. And we built a DARPA project with me and Ike and actually John Kubitalitz at Berkeley, who we also went to school with. And, you know, I just said, oh, I'm going to find two good architects and start working on
Starting point is 00:53:51 this. And I think that, you know, the reason how I got into it was like, oh, I was willing to say yes. Right. And I actually had the good fortune of having, you know, one of the founders of the field from the physics side and who actually wrote this book that we call Mike and Ike which is the bible of quantum computing giant book and he just sat down for a few hours and just like wrote in my notebook and taught me enough about quantum computation to get started right one? One-on-one. And so, I would credit Ike with getting me into this, but at the time, why did I get into it? It was, back then, I think the field
Starting point is 00:54:37 of computer architecture was still pretty constrained by commodity forces, right? The most, the most, the easiest thing to do was to work on a, I don't know, a branch predictor or cache algorithm
Starting point is 00:54:50 for a risk processor or an x86 or something. And that was a little constraining, right? And so, you know, here was a new area of computer architecture where you could basically do anything you wanted, right?
Starting point is 00:55:03 And to me, that was just in itself worth doing. And in many ways, for a couple of decades off and on, it was a little bit of a hobby. And it's an interesting field because it has some national security implications. So every now and then there'd be a lot of funding and it'd become like a sort of focus area. And then, you know, then it would go off, sometimes become classified. And, you know, so there were different things that happened along the way. And then, you know, it got to the point where industry picked it up and it became, you know, national initiative, at least a public national initiative. So that's that's I guess that how it, how it came about.
Starting point is 00:55:49 I don't know. Life is serendipitous and work with smart people and get good students. That's how it works. Right. Speaking of smart students and good people, any words of advice or wisdom to our listeners based on your experience or in general? I definitely see the, just in terms of smart people, you know, I've been fortunate that I guess lots of smart people have been willing to work with me, right? Like I, you know, really it is these interdisciplinary areas.
Starting point is 00:56:24 It is, you know, it's so much, it is a lot of work, right, to learn about all these different sort of intersecting fields. And, and to some level, it's not possible to be an expert in all of those fields simultaneously, right. And a lot of it boils down to, you know, just talking to smart people in each field, right, and spending a lot of it boils down to just talking to smart people in each field and spending a lot of time learning their language, working with them and building relationships that bridge those gaps. So that's one thing. And I've definitely spent a lot of time doing that in my career. And, you know, and sort of bridging the timescales and the cultures of different fields. Right. You know, you know, a physicist might tell you they're going to do something or write a paper about it. the time scales and the cultures of different fields, right?
Starting point is 00:57:08 You know, a physicist might tell you they're going to do something or write a paper about it, and it's five years in the future, right? And I would go, what? I was thinking five months. You know? And so that's something you have to work with, right? With students, I mean, I tend to – I give my students a lot of freedom, and I think that's really key. You know, I don't know. I've been lucky to have really, really good students.
Starting point is 00:57:35 Part of it, I think, is maybe working on unusual, unorthodox topics. I think that is an attractor. I don't know. Part of it is just treating them well, you know, and letting and trusting them, really. I don't know. I don't know why I've been so lucky with that. That's so great to hear you speak so humbly about your your great career fred it's been a total delight talking to you today i've learned a lot i always have fun talking with you and um we're really appreciative that you're able to join us today yeah this was fun thanks for asking me on your show yeah thank you fred for the whirlwind tour of quantum computing and the system stack for quantum computers.
Starting point is 00:58:29 I think we could have spent a lot of time delving further into just each one of those threads and talking with you for hours on end. But thank you so much for educating us and our audience on this really fascinating space. And to our listeners, thank you for being with us on the Computer Architecture Podcast. Till next time, it's goodbye from us.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.