Keywords

1 Introduction

Quantum computing opens new realms to technology in ways that we had never imagined before. This new world is based on the foundations of Quantum Mechanics and Mathematics, and our understanding is crucial to develop these new types of machines. Quantum Computation terminates Moore’s Law (computer power doubles every eighteen months, valid since 1965) [1] since silicon cannot longer be used to develop better classical machines [1]. However, there exists an ultimate limit, dictated by the Laws of Thermodynamics and Quantum Physics which was predicted by Moore. This fundamental barrier lies on the size of electronic microprocessors ruled by “the speed of light and the atomic nature of matter”, Stephen Hawking.

A quantum computer is not an enhanced classical supercomputer which its functioning is based on bits, but a completely new different type of computer which uses the super-positioning of bits, called qubits. Using the double nature of the spin of an electron, it allows to perform certain types of computations more efficiently. It is crucial to understand these computers do not follow the Laws of Classical Mechanics since they are not able to describe the Quantum world. Richard Feynman, at the MIT Physics of Computation Conference in 1981, stated: “Nature isn’t classical\(\ldots \) and if you want to make a simulation of Nature, you’d better make it quantum mechanical” [2].

These machines use the principles of the Quantum Theory. They can accurately compute reality, and they will eventually let us travel beyond the classical computer limits. They can perform calculations in millions of different parallel universes of probability and make them reveal a result when it is obtained in one of them. To perform such calculations, these devices use qubits capable of interacting with each other at the same time, as well as super-positioning their states. Therefore, they must not be understood as classical bits. A bit is a binary digit and the most basic unit of information in computing. It allows only two possible values, 0 or 1. Although, a qubit or quantum bit may adopt values of 0 or 1, or both at the same, or neither of these ones. These terms are discussed on more detail on the next sections.

Due to the nature of Quantum Mechanics, this technology has a wide variety of uses and applications such as the creation of enhanced machine learning algorithms, the improvement and rapid training of neuronal networks, the calculation and simulation of cancer propagation, the calculation and replication of molecular reactions, the ability to quantize cybersecurity and blockchain algorithms, the improvement of financial modeling or the creation of solutions for unsolved mathematical models, among others [3].

2 Related Work

Research about the impact of the quantum computing technology on future developments addresses how the use of these ones can impact other types of scientific developments. Nowadays, high-technological companies such as Google, IBM, or Intel, are investing significant economic resources to develop this technology. According to certain experts, the main motivation for these companies to invest on quantum computing is to decipher public-key cryptosystems using the RSA scheme. This is a type of encryption which is commonly used to protect a wide variety of data, from text messages to digital transactions over the Internet.

Regarding the future of these systems, this paper addresses the need of improvements on their processors’ architecture to operate at lower temperatures, and eventually, to become frequently used for cloud computing services. While these devices are mostly used for scientific purposes such us Computer Science, Physics, Biology, Medicine, or engineering, it is necessary to highlight their limitations and to understand large efforts must be done to discover more of their properties and applications. In addition, at this moment, it is fundamental to establish a standardized programming language and a compiler to organize and structure the different methodologies for computer scientists to successfully implement code to communicate with the quantum processor.

The current state of Quantum Computing is comparable to the beginning of classical computers development at the end of the 20th century [4]. Developing, programming, and constructing quantum devices is an arduous task. Quantum Physics is a field of study which has been recently developed. Furthermore, our current understanding about it is limited, and its math is highly complicated. The Quantum world does not behave as the world we can see and Classical Physics is able to describe. This makes quantum computers difficult to build and to understand.

Nevertheless, the process of developing a quantum machine is surprisingly similar to building a classical one. Processors, memory, disks, compilers, and machine language are needed to build these devices. The compiler and other high-level elements run on a standard computing system. The machine language instructions are translated via a digital control unit to analog control signals, like the voltage pulses and microwave bursts, which are sent to the qubits via conventional transmission lines. The signals for qubit control are generated using conventional electronics. Although, a qubit is defined as a microwave function [5], it can be written as a linear combination of states, using the next quantum function (Eq. 1):

$$\begin{aligned} |\psi> = \alpha |0> + \beta |1> \end{aligned}$$
(1)

As it can be observed, a qubit is strictly described as a wave. While this equation not only encloses the classical states of a bit (either 0 or 1), but it also uses the complex numbers \(\alpha \) and \(\beta \) to let these ones accept quantum states. This characteristic will allow a qubit to behave as a linear combination of both states of a classical bit. Consequently, a qubit can potentially behave as 0, 1, both at the same time, or maybe neither of them. The need to use classical binary bits to describe the state of qubits points out that a classical system approach is required to successfully design and operate a quantum computer. Therefore, this indicates qubits are only one part of the entire system, and therefore, the bulk of the system is still classical.

Furthermore, qubits require vast memory usage. We notice storing the quantum state of just 50 quantum bits, already exceeds the memory of today’s most powerful classical supercomputers. Therefore, classical technologies such as RAM and ROM must be further developed and improved to successfully operate with a quantum device. Every additional qubit doubles the memory, and consequently the processing power required by a classical supercomputer to calculate the behavior of these ones. This makes possible the computation of certain tasks that are far beyond the scope of today’s supercomputers such as simulating quantum chaotic evaluations or cancer propagation. These tasks could be achieved only by using 50-qubit systems. The superposition of quantum bits opens the possibility to make extremely complex probability calculations based on the Quantum Theory. Moreover, we encounter the concept of trapped nuclear particles that give one of the main reasons to build a completely practical quantum computer [6].

Currently, there exist different programmable quantum computer models which allow users to have a great degree of flexibility to compute different algorithms and operations without modifying the machine’s hardware [7]. This relatively new feature is extremely compelling, and we exploited it to perform a wide variety of computations on IBM’s Quantum Lab which will be described in the next sections.

Even though the number of quantum computers available now in the world is limited, there exist two different platforms: trapped atomic ions and superconducting circuits [8]. While the first platform stores the states of qubits in different ions and transfers information through the interactions and motions of these ones, the second one varies the energy states of thousands of nano-LC circuits to represent qubits by manipulating their energy levels at extremely low temperatures. In addition to this, recently quantum reenactments have further been acquiring consideration with regards to significant uses of quantum processing. First noted by Feynman and Manin [9], a quantum computer is required to be especially appropriate for reenacting different quantum mechanical marvels, similar to how an old style computer is valuable for reenacting different traditional mechanical wonders. A large group of fascinating issues which have been not realized how to address proficiently with traditional computers might be effectively tackled with quantum reenactments performed on a quantum computer. A few examples include, in increasing order of difficulty and impact, the following: 1) more profound comprehension of many body physical science and emphatically corresponded matter, with potential applications in the plan of room-temperature superconductors or materials with good electrical properties; 2) highly-accurate chemistry computations for growing new impetuses and synthetic cycles, with significant applications, for example, finding a swap for the Haber process for nitrogen fixation (NF) utilized in the synthesis of fertilizers; 3) large scale, exceptionally precise sub-atomic elements reproductions to contemplate issues in protein folding and drug design.

3 Theory and Encryption

Quantum Computing Performance Theory. The principal goal of our research is to analyze and compare the performance of a quantum computer over a classical one. The idea of quantum computers was introduced by thinking that it could be possible to reduce the time complexity of algorithms, as well as to perform certain statistical operations which could transform several science fields because of the revolutionary computational power. Researchers have been developing Quantum Processing Units (QPU) which could be allocated in high-performance computers. However, some of the features that should be incorporated in those QPU’s have very specific settings and further research is needed in order to obtain proper configurations [10]. Indeed, the important question and concern is to find out how much efficient quantum devices can be, and if it is worth to spend so many resources on attempting to achieve quantum supremacy. To accomplish such a goal, certain simulations must be run on both types of machines. Moreover, the complexity of the circuits used by these ones should increase exponentially until classical machines cannot longer perform computations. Consequently, we would reach the state of supremacy when the quantum computer is the only device capable of carrying and executing the given tasks.

Encryption. The question of whether quantum computers are powerful enough to break encryption algorithms is one of the main concerns for researchers, as it was mentioned previously. Cybersecurity is now required for the majority of data that individuals like to share through the Internet. Currently, many different sensitive tasks can be done in the Internet by just by clicking a button, from money transactions to access to private information. In order to keep privacy, and therefore this information safe, encryption must be used. This process consists on encoding information by transforming the data to cipher text. Only authorized parties can decipher this text, to then be able to access the desired information. The authorized parties will need to have a key or gain access to the decipher algorithm in order to obtain the information. The ability for quantum computers to decipher data could breakdown the current algorithms and the most commonly used methods of encryption to secure data such as RSA and Elliptic Curve Cryptosystems. Moreover, these two types of public-key algorithms could be easily bypassed by using Grover’s and Shor’s techniques in fully operative quantum computers [11]. Grover’s algorithm is characterized by its efficacy to find encrypted data and files on databases. Therefore, sophisticated encryption systems such as AES (Advanced Encryption Standard) could be negatively affected due to the performance of a quantum computer debilitating the security system [12]. On the other hand, Shor’s algorithm is a well-known technique in computer science to efficiently encrypt data. While this encrypted data would take years to be hacked by classical systems, quantum computers would be able to rapidly decipher it by performing large-integer factorization. Therefore, current encrypted data by this technique would be seriously threatened. Consequently, some researchers are attempting to implement variations of Shor’s technique which cannot be attacked by quantum devices. In addition, certain researchers suggest to enhance the security of quantum data by designing novel logic circuits such as the linear-nearest-neighbor qubit-array architecture [13].

The age of practical quantum computers has been heralded by technological breakthroughs such as the Transmon cryogenic 5-qubit machines [14]. Nowadays, many different researchers are working to enhance the mass production of multi-qubit devices, to eventually assemble quantum computers with millions or billions of qubits [15]. In addition, it is critical to develop a quantum ecosystem which includes standardized quantum programming languages [16], compilers, and debuggers [17], as well as hardware that enables single programs to be compiled. Furthermore, since all qubit technologies available today are fragile and vulnerable to errors, quantum computers will need extra effort to detect and correct these ones.

4 Experimental Setup

Throughout our research, we have learnt high performance and speed are two of the most important characteristics of quantum computers. We are aware that there are many other factors which condition performance while executing certain scripts or algorithms, such as available memory and disk or processor power. Nevertheless, testing certain algorithms, techniques and tasks using quantum computers is valuable to analyze how these machines could eventually be operated by regular users. As it is impossible for this research team to directly access a quantum computer, an online tool created and developed by IBM was used to perform the next experiments. This tool makes usage of their superconducting IBM Q device, and it allows users to easily compile code with it by using Jupyter and Python. Clients can gain access to this service through the Internet from their own personal computers using any operating system.

Our code was implemented in Python, and three different tests using the timeit library were performed. This library implements software profiling in order to calculate the performance of a given piece of code. This analysis can measure the resources used by the CPU and the memory, frequency or duration of the function calls or wall clock execution time for a piece of code [18]. Our idea is to utilize this module to compare the performance of a regular personal computer versus IBM’s Cloud Quantum Computer Lab. The computer used throughout the experiment was a MacBook Pro 2019 mounting a 1.4GHz Quad-Core Intel Core i5 processor, and 8 GB 2133 MHz LPDDR3 of RAM Memory. As Jupyter Notebooks is used to run our code in the Quantum Computer Lab, Anaconda and Jupyter were used on our local machine, as well.

It is important to highlight why we use this method. A primitive version of our experiment was tested just using the time library. This library is extensively known along Python users. This software allows programmers to easily measure the running time of their software. It is implemented as a stopwatch, initialized at the beginning of the scrip, and stopped at the end of this one [18]. This method is extremely convenient to test certain pieces of code or applications in given specific environments and conditions. Nevertheless, this technique is not completely accurate. It fails to discriminate the conditions which make the running time of a script change. Thus, this method does not implement any performance calculation, but only a mere time measurement. This is the reason why timeit is used. This software can test hypotheses regarding algorithms and Python idioms efficiency. In addition, timeit tests each piece of code 100,000 times by default using the lambda function defined by this library. By following the online documentation, users can vary this number of times.

4.1 Massive Random Numbers Generation

To start testing the IBM Cloud Quantum Computer Lab, a script was designed to generate 100 decimal random numbers from 0 to 1 by using the random library in Python. This piece of code was set into a loop. The user can decide the times this loop is executed. As an example, if the user were to enter 100, the loop would execute the code 10,000 times. timeit is used to measure the performance of this code an average of 100, 000 times by default. This increases the difficulty of the calculations significantly.

The next measurements were taken (Table 1) after performing this task different times. These results will be discussed in the next section.

Table 1. Massive random number generator testing comparison.

It is important to highlight the difficulty found to perform certain types of computations in the IBM computer. It was impossible to overpass the 100,000 iterations.

4.2 Classic Algorithms Performance

Secondly, a similar process is followed to calculate the efficiency of two of the most well-known algorithms in the computer science field: Linear Search and Binary Search. Linear Search is frequently used to locate a target value in certain types of data structures, usually arrays or lists, depending on the programming language used. This method examines each of the elements, from the first one to the last one. This algorithm has a complexity of O(n+1/2) [19]. On the other hand, Binary Search is a frequently used algorithm which locates a target value in an array or a list by successfully eliminating half of the structure from consideration. This algorithm has a complexity of O(logN) [20].

Then, by using the timeit library, these searching techniques were tested with random data structures. As we can see, the complexity of Binary Search is lower than Linear Search, and therefore, we expect to obtain faster runtimes for this one. Each of the techniques was tested ten different times in each machine. The average of both was calculated (Table 2):

Table 2. Classical algorithm performance.

4.3 For Loop Concatenation

Finally, a script was designed to run a certain for loop structures for 100 times. Afterwards, this loop was additionally run different times. For the purpose of our experiment, we went from 10 to 10,000 iterations. Again, timeit was used to accurately calculate the performance of this piece of code. The results obtained can be found on the next table (Table 3):

Table 3. Massive for-loop concatenation.

5 Analysis

The nature of the results obtained was compelling. It was not expected to find such a wide variety of outcomes. The analysis will be divided into three different sections to discuss each of the experiments’ performance.

5.1 Massive Random Number Generation

As it was previously explained, timeit library was used to measure the performance of our code while generating a vast number of random digits from 0 to 1. It can be clearly understood on Table 1 that our computer (in orange) performs better runtimes than the IBM Quantum Lab (in blue). This is remarkable since the cloud computer was expected to perform exactly the same operations in a shorter period of time.

On the next figure, it can be observed the time needed to perform each of the tasks in comparison to the amount of random numbers to be generated for each of them (Fig. 1).

Fig. 1.
figure 1

Massive random number generator test (0, 1) - MB Pro 2019 VS IBM cloud quantum computer

Both systems had performed similar while generating random numbers from 10 to 1,000 times. Later, while attempting to generate 10,000 different digits, the IBM Lab environment clearly slowed down. On the next figure (Fig. 1), it is shown how the blue line slightly diverged from the orange one. This points out the MacBook Pro needed less time than the other machine to compute the results. In addition, it is important to highlight neither of the devices were able to generate more than 10,000 numbers. While the Quantum Lab was expected to perform these computations easily and efficiently, it was shown this environment was unable to reach such expectations. Furthermore, it is necessary to point out the lines obtained follow a linear tendency. Thus, by calculating the slope of these ones, the run time needed for these machines to carry out the generation of random numbers could be theoretically predicted.

5.2 Classic Algorithms Performance

The results obtained for this part of the experiment verified the complexity of the tested algorithms. We could observe Binary Search performed faster than Linear Search. This is caused due to the characteristics of each of these techniques. The Binary Search does not iterate through all the structure, but just half of it. This is the reason why it has a complexity of O(logN). The Linear Search algorithm has a complexity of O(n + 1/2), and therefore slower runtimes were expected.

Our experiment concludes, in this case, that the Quantum Computer averagely performs faster searches than our computer. It can perform Binary Searches in less than 2.87 s.

5.3 For Loop Concatenation

The results obtained for the for loop concatenation experiment were compelling. This task required more complex computations, and therefore, longer runtimes were needed than in the previous experiments. While we expected to find quadratic tendencies (Fig. 2) due to the complexity of concatenating different loops together, the results shown on Fig. 2 are linear. Therefore, we understand these ones are erroneous. We attribute these errors to the low number of trials performed by the devices used.

By the end of this experiment, we could just compare three different data points, as it can be observed on Table 3. Again, it was impossible for our device and the IBM Lab to perform more complex calculations.

Fig. 2.
figure 2

For loop concatenation test - MB Pro 2019 VS IBM Q cloud quantum computer

6 Conclusions

The results obtained throughout the experimental phase did not satisfy our expectations. We expected to find extremely low runtimes using the IBM Cloud Quantum Computer Lab. Obtaining more data would dramatically improve the results, as well as the accuracy of our experiment. We propose the idea that the performance of random number generation vs. runtime, as well as times-looped vs runtime could be predicted by calculating the slope produced by the data gathered. Therefore, this would proof the linearly behavior of the Quantum Lab to perform the required tasks during our experiment. In addition, this could eventually point out the computational power available for the user by calculating how many tasks can be performed in a specific period of time. Although, we do not have the capacity to test if this thesis is valid and would apply to more complex versions of our experiments.

We understand the processing power of a Quantum Computer is superior to the power of a classical device, as it was explained throughout this paper. This is the reason why we cannot attribute the error to the Quantum Computer but to the interface used to interact with this one. We believe the IBM’s Cloud Service Lab environment does not take advantage of all the computational power available to run code. Therefore, IBM limits the power available to the user. Furthermore, we ignore if the fluctuations on our internet connection or the browser used are elements which would potentially alter the performance of the Quantum Lab since this one is accessed through the Internet. Moreover, we encountered a wide variety of anomalous runtimes while performing similar tasks using the Quantum Lab. Additionally, while attempting to conduct different experiments, we found IBM’s software to fail in numerous occasions, as well as we experienced extremely long runtimes to compile simple pieces of code. Consequently, we do not find the IBM Quantum Lab to be reliable as a daily coding tool neither as an online compiler.

In conclusion, we doubt the real usefulness of the IBM Quantum Lab. Faster runtimes can be obtained using a regular desktop machine by running Jupyter Notebooks and Anaconda. On future work, we expect to address IBM Quantum Lab environment issues, as well as to understand the reason why the processing power is so limited.