2022 Sep 10
contact@valsid.in
Quantum Computing is one of the many buzzwords that is often hyped to cure the world of all its ills. The word quantum has an intimidating image to it. The field of quantum computing seems to say, "Hey retards, go away. I need only Einsteins". But modern developments in this field have drastically reduced the entry barrier and mental power needed to make a living in QC. The developers at Microsoft deserve a big applause for an awesome work of computer engineering by erecting the Azure Quantum infrastructure and keeping most of it opensource!
In binary digital computers, the fundamental unit of information is a box that can contain a 0 or 1, a binary digit or bit. In QC, this has evolved into a quantum bit, with the difference being the box may contain 0 or 1 or all shades of 0 and 1 mixed up. This mix up is what gives half of the extra power that QC has over traditional computing. The other half of extra power comes from entanglement. To manipulate and measure the state of Qubits, a lot of conventional electronics and computing is needed. Each qubit can be implemented using many physical phenomenon like trapped ions, super conductors etc.. From the perspective of conventional computers, this may feel like binary information being implemented in hard disk or CD or SRAM cell or DRAM or flip flops.
In C or Verilog, you could do
variable1 = variable2 ;
assign net1 = net2 ;
But in QC, you can't do that. One quantum bit cannot be fully copied without being totally corrupted. It is counter intuitive to the real world experience where you can photo copy a book without corrupting the book. In quantum, the mere act of looking at the page of a book is enough to wipe out the page into an all white or all black page. Sounds like a Harry Potter movie? Well, it is!
In conventional software, a program gives a definite result. But in QC, the result of one execution of a program is vague. It most often gives a result that has a "good chance" of being correct. To get to almost perfectly correct, the program needs to be executed many times.
Imagine you lost your car key somewhere inside your house. As one person, you could search every closet, suitcase, attic and any other area (off course nobody knows the secret location of underside of the doormat) of your house. Just you looking for the car key, one place after another would be like a single CPU software program. Then you could employ your daughter, mom and wife to search at may be 4x higher speed. This would be like multi CPU program. Suppose you employed 10 ghosts that can simultaneously be in your attic, closets, bathrooms and in many other places of your house, then this would come close to searching in the QC world.
Although there is nothing preventing QC to be implement independent of the conventional binary computer, the current Azure Quantum is architected towards solving problems that existing computers are unable to solve. In effect, the usage of QC is like a mind boggling hardware accelerator and not as a novel from-scratch computer architecture.
Microsoft has gone to great lengths to lay a strong foundation starting from a C#/Python compatible new language that is able to express the weirdness of QC.
It is not enough to just dump a new language on unsuspecting developer community. Microsoft has taken the effort to build a complete Quantum Development Kit to develop your own programs without having to wrap one's head around the quantum weirdness for every use case. The familiar Visual Studio and Jupyter are supported too.
Going even beyond SDK, Azure quantum offers libraries for chemistry, math, machine learning and more.
Though not exactly QC, QIO tries to include some quantum phenomenon like tunneling to improve optimization algorithms. I guess in the future, true QC based optimizations will become part of Azure Quantum.
All this advanced computing power is open to just about anyone. So, if you have a great idea to solve a problem, you could create your QC program and deploy it in Azure cloud and let your users access it using the familiar HTTP GET method. Or more simply, by just using a webpage to pass data to the QC program. How wonderful!
Azure is a platform linking developers, users and hardware providers in one big ecosystem. The hardware providers do the work of developing, installing and maintaining the Quantum Processing Units. Some providers offer simulation of quantum processors and not real QPUs. List of providers -
Quantinuum (Honeywell)
IonQ
Quantum Circuits Inc.
Rigetti
Pasqal
1Qbit
Microsoft
Toshiba
Random number generation
The easiest to understand quantum program is the random number generation. The pseudocode is given below
Reset a qubit to known state (0)
Mix up the qubit state of 0 and 1 (Called superposition, or Hadamard operator)
Now the qubit is in superposition, meaning, measuring it will give 0 or 1 with equal probabilities.
Measure the qubit
The output you get is the true random number, either 0 or 1.
If you use many qubits you could get bigger true random numbers.
Azure quantum comes with a good set of documentation, tutorials and example projects in the form of Quantum Katas. Not sure if Kata has something to do with the Karate Kata.
IBM has developed its own QC offering and has ambitious plans to scale up the power of its quantum computers.
https://www.ibm.com/quantum/qiskit-runtime
Dwave
Dwave Systems is another promising company to follow. The number of qubits projected for the near future runs into the 1000s. QC seems to be really hitting escape velocity.
Scaled up qubit count
As of 2022, the qubit count seems too small (in the range of ~30) to challenge the supremacy of conventional binary computers. But come 2025 or later, quantum supremacy in many real world useful problems is all but guaranteed. By 2027, the QC fever may infect all the universities and students may be paying a high premium to enroll into great online/offline QC courses.
How would QC be used to improve the design of the next versions of QC?
How would QC be applied to hard chip EDA problems like power optimization, placement and routing?
Could there be QCs with Quantum ternary or quaternary or higher order digits? May be even quantum decimal digit?
https://docs.microsoft.com/en-us/azure/quantum/
https://docs.microsoft.com/en-us/azure/quantum/?view=qsharp-preview