Rene – Hi! Welcome back to season four of QuBites. Your bite-sized pieces of quantum computing. My name is Rene from Valorem Reply and today we're going to talk about approachable Quantum algorithmic design. And for this I'm very honored to have a special expert guest today Yuval Boger. Hi Yuval and welcome to the show. How are you today?

Yuval - I'm great, thanks for having me. How are you?

Rene - I'm doing awesome! So, tell us a little bit about yourself and your background as it relates to quantum computing and also other related things.

Yuval - Of course! So, by education I have a masters in physics on fiber optic sensor arrays and also an MBA from Kellogg Northwestern. For the past 20 something years, I've been CEO of several Frontier technology companies which was cool and for the past six months I'm now a marketing officer of Classiq, which makes quantum algorithmic design platform. I was attracted to Classiq because it combines my love for physics and my passion for marketing. So that's why I'm here and that's what we do.

Rene – Awesome! It sounds like a perfect combo and also it's always great to have this kind of diverse background and you know have this kind of experience and bring it all together for this new quantum world, right?

Yuval – Absolutely. It's a lot of fun and one of the things that I was checking when I entered the field is what a twitter handles are available, and I'm QubitGuy and the fact that QubitGuy was available is really a sign that we're in an early stage of the industry.

Rene – Ya. Well that actually reminds me that I probably need to secure QuBites. No one else did but yeah! But anyhow, let's dive in to our topic for today, what are the challenges actually when designing a quantum algorithms. I mean we all know classic algorithmic design, but the quantum world is so much different. So, what are some of the challenges for this quantum algorithmic design?

Yuval – Sure. So, there are of course many challenges today. The first thing is thinking in quantum, meaning, how do I take a classical problem and how do I convert it into a quantum thing? What can I do with quantum, how can I do it in parallel, how do I take advantage of entanglement and superposition and so on. The next thing is, how do I actually implement it. I mean today you've got programming languages that basically are almost in assembly language. They say take this qubit and connect it to this quantum gate. Take the algorithm of that quantum gate and connect it here and so on. It's like a big spaghetti dish. This is fine when you're doing with five qubits but it's probably not very easy to scale for 10 or 50 or 100 or 500 or 1000 qubits. When you look at some of the road map of the large hardware vendors, they're saying, we'll have 100 qubit computers very soon. So, how do you program them? The other thing is, how do you port software from one quantum machine to another? Every machine has different limitations. It might have a different gate set, it might have a different number of qubits and so on and so forth. Customers today are unsure who is going to be the winner? Maybe it's going to be IBM, maybe it's going to be Honeywell, maybe it's going to be PsiQuantum, who knows? So I don't want to write software that only works on one type of machine. So both the ability to work with a large number of qubits, not in sort of assembly language and the ability to take code from one machine to another is something that's challenging in quantum and something that I think we can help with.

Rene – Gotcha. It almost like for me sometimes feels like I'm still old enough to remember, like good old graphics cards and where they had dedicated SDK's and dedicated APIs. Like, when the first hardware accelerated graphics card for PCs came out, you had to talk with specific graphics card. Then open GL happened and Microsoft DirectX happened these kind of middle layers that also drove a little bit of the graphics card design in the end like with DirectX specification later on. But now we have this common layer basically and on top you have another layer right now. So, we have these kind of frameworks, open GL, DirectX. Well Open GL is broken these days but and then on top you have these 3D engines like Unreal, Unity and so on, that target these specific API sets that you know under the hood the firmware translates it from DirectX into the instructions. And right now we're actually like you say, right, when we design quantum algorithm and we have to, you know, really deal and think about how the hardware works, like, assembly or maybe machine language kind of style and of course that's not going to scale, right? So that's why I'm trying, you know, sometimes reminds me a little bit like what time of age we are currently in. We're in this kind of beginning, where we have these specific APIs. So how can it be made easier and approachable for not just for quantum computing experts?

Yuval – So, once we realize that this is a problem we started looking for a solution and one good thing is to look back in history and say where has this problem been solved before and how was it solved before?

Rene - I hope I didn't steal your answer but I'm sure that you got another inspiration there.

Yuval – So, our inspiration was actually chip design because if you take a, you know, when I was a kid my parents bought me an electronics kit so I could play around and create some simple circuits. And if I give you a some logical gates and or nor or a couple of wires, you can create a simple circuit but we're running, we're recording this podcast on a CPU that's got billions of gates, millions of transistors. Well, how are these designed? They're not designed at the gate level. The way they are designed is with high level functional models. So you have languages like VHDL or Verilog that express what is it that you're trying to do and then you've got really smart computer software from companies like Cadence or Verilog that synthesize electronic circuits from these high level functional models. But we do the same for quantum. We allow you to say what is it that you want to do? So for instance, here is a math expression that I want to implement and then our engine takes that and synthesizes it into a gate level code, taking into account both the hardware that you're running on, as well as your constraints. And your constraints could be, I only have so many qubits or I want to limit the depth of the circuit because it's the noisy and I have coherence time issues. Or, I want to maintain a certain level of entanglement or I have a gate set that I want to use and try to avoid different kinds of sets. So, our software takes high level functional code and translates it into Qiskit or Q# or Cirq or other sort of lower-level code and allows you to focus on what you're trying to do, the algorithm that you're trying to develop as opposed to how to do it, exactly what gates and how they're connected.

Rene – Gotcha. So, would also find the most optimal configuration if we would call it order how would you call it? The most optimal script, would you call it like this?

Yuval – So, we certainly try to optimize it and by the way, earlier I said Cadence and Verilog. It’s Cadence and Synopsis, as far as companies that synthesized electronic circuits. But there is a lot. There are many different options to create the quantum circuit. It's almost like if I have code in C, the compiler will generate different assembly language code, depending on what optimizations you are trying to do or certainly what processor you're running on. Well, when you have high level functional quantum code, we evaluate thousands and thousands of options and say which ones are meeting your requirements in terms of functionality but also meeting your requirements in terms of constraints. Sometimes an analogy that we use is a mathematical problem called rectangle packing. So if I give you 10 rectangles and says arrange them on the table so that the minimum bounding boxes, you could probably do it. If I give you 1000 rectangles, you could come up with a solution but is it really optimal? It's probably not going to be optimal. That's the kind of thing that the computer does much better than a human and that's the kind of thing that the classic software does much better than the human in terms of making sure that we can fit the maximum functionality into the minimum resources.

Rene – Gotcha. That makes a lot of sense and I'm sure that also makes the job a lot easier for quantum algorithmic design and it reminds me a little bit about AutoML, right, Auto machine learning, where you have these, might call it meta search or whatever you want call it. But basically you have these multiple ways of approaching a certain machine learning problem and you have all these different machine learning approaches, like, I don't know, random forestry and a couple of other, all these different algorithms or approaches for machine learning and AutoML will pick the best one for your particular case for you for the data you have and all these constraints and AutoML will basically choose the best one to get the best results for you and so is it valid to compare it like what you're doing at Classiq with the algorithmic design and providing the most optimal way, it's going in that direction?

Yuval - I think it's certainly a valid comparison, but there are other aspects to it. One thing that you want to do is be able to iterate quickly on your design. So, for instance, let's assume you do a design and say, oh it's too big, it's too long, well what happens if I have more qubits, could I perhaps reduce the accuracy of the circuit and compress it to something else? We allow you to explore these. The other thing that we see customers using our platform for is what we call resource estimation. So let's assume you're doing option pricing and you say I've got this really cool model that I want to implement or maybe you're doing a portfolio optimization you've got so and so many assets. Well one thing that you're asking yourself is do I have a quantum computer that's large enough to run my problem? So, we can quickly generate code for you and say, oh you need 152 qubits, so either wait until next year or make the problem simpler, reduce the constraints, reduce the accuracy and you can run it today. So we help you figure out how soon you can run the code that you really wanna run.

Rene – Awesome! Well that's amazing stuff and we will also put a link in the show notes so that folks can check out all the things you're providing and the product you're offering. We're already at the end of the show here. Thank you so much Yuval for joining us today and sharing your insights. Thank you very much. Appreciate it.

Yuval - Thank you very much for that. Thanks for having me!

Rene - Thanks everyone for joining us for another episode of QuBites, your bite-sized pieces of quantum computing. Watch our blog, follow our social media channels to hear all about the next episodes and also you can find all the previous episodes from season one to four on our website. Take care and see you soon! Bye-bye.