Criteria for Judging Progress of the Development of Quantum Computing

Jack Krupansky
39 min readMar 9, 2018

--

When will quantum computing be ready for prime time? Research in quantum computing has been brewing for several decades now, with reasonably interesting and tantalizing results, but it’s still too much of a fringe specialty rather than a mainstream technology ready for the masses. This informal paper proposes some reasonably objective criteria for judging how much progress has been made and how close quantum computers are to something which most people would consider a mainstream technology.

For the most part, I’ll outline key aspects of the history of traditional digital computing in a reasonably quantitative manner so that quantitative achievements in quantum computing can be compared to historical developments in traditional digital computing.

Traditional digital computers, then called mainframes, were quite common for many large corporations and virtually all scientific facilities by the mid-1960’s. Cheaper minicomputers were appearing in the mid to late 1960’s and 1970’s. Microcomputers and personal computers were appearing in the late 1970’s and early 1980’s.

The digital computers of the 1940’s, 1950’s and even the early 1960’s were rather monstrous beasts, tameable only by the largest and most sophisticated of organizations and the most elite of technical staff.

The years from 1963 to 1967 were a true watershed, as mainframes were plentiful, and minicomputers as well.

Needless to say, quantum computing is nowhere near those 1963 to 1967 watershed years.

In fact, I think it’s safe to say that even the most advanced quantum computers are still only barely where traditional digital computing was in the 1940’s or maybe the early 1950’s at best.

We have a long way, a very long way, to go.

Granted the performance of even relatively simple quantum computing circuits is literally light years more advanced than the performance of even the best supercomputers of 1965, the capacity, sophistication, and certainly ease of use is still way back in the 1940’s. Or so it seems to me, at this stage.

That said, it seems almost a foregone conclusion that today’s limited quantum computing capabilities are most likely on the cusp of a dramatic breakout, so that quantum computers could very easily and likely zoom from being comparable to the beasts of the 1940’s and 1950’s to the manageable mainframes and sporty minicomputers of the mid-1960’s in a just a few years, in maybe five years, or ten years max.

Vocabulary for quantum computing

We need to have a common and rich vocabulary of shared meaning for discussing quantum computing. I’ve compiled an initial draft for a glossary of terms related to quantum computing: Quantum Computing Glossary — Introduction.

Learning from history

I hew to the dictum that those who fail to learn from history are condemned to repeat its mistakes.

But I also hew to the notion of being an iconoclast, that breaking out to new heights can and frequently requires a complete and clean break from the past, regardless of its lessons.

Those two notions conflict. Great judgment is needed to discern at every moment whether lessons from the past are relevant or whether breaking fresh ground is required.

Nothing in this paper presumes that one must learn any particular lessons from the past, but it does presume that there are positive lessons from the past that can enable innovators to make quantum leaps forward that would have required much more intensive slogging if lessons from the past had not been readily at their disposal.

This paper will endeavor to present lessons from the past, but with no bias towards whether any particular lessons might have any relevance at all to the future of quantum computing.

Categories of criteria

Some of these criteria will remain rather subjective and qualitative, but the goal is to make them as objective and quantitative as possible.

  1. Historic machines. General capabilities, capacity, and performance.
  2. Generations of processing technologies.
  3. Memory technology. Main memory, mass storage.
  4. Memory size.
  5. Memory organization.
  6. Number of qubits.
  7. Program size.
  8. Processing performance.
  9. Unit of work.
  10. Parallel processing.
  11. Granularity of modeling.
  12. Precision of calculations.
  13. Richness of data types.
  14. Coherence.
  15. Operating temperature.
  16. Abstraction of function from device.
  17. Supercomputer status.
  18. Fault tolerance.
  19. I/O performance.
  20. Cost.
  21. Operating systems and front end computers.
  22. I/O device, server, coprocessor, or functional unit?
  23. Processing modes.
  24. Programming language sophistication.
  25. Availability of programming languages and development tools.
  26. Rich collection of design patterns and programming metaphors.
  27. Shared code libraries.
  28. Open source vs. proprietary technology.
  29. Applications.
  30. Transition from ultrasimple “toy” applications.
  31. Transition from experimental novelties to development of production applications.
  32. Wide availability of proven applications.
  33. IoT applications.
  34. Applications easily implemented.
  35. General purpose quantum computing.
  36. Number of research projects.
  37. Number of commercial vendors.
  38. Number of government organizations with quantum computing in active use, beyond research.
  39. Transparency for technical claims.
  40. Education.
  41. Training.
  42. Development of standards.
  43. Key technical breakthroughs required.
  44. Key non-technical hurdles.
  45. Generations.
  46. Formalized information theory.

Historic machines

Just about every one of the machines on this list was a significant milestone of sorts in the annals of computing. The point here for quantum computers is to identify how capable a given quantum computer is compared to any of these historic machines.

  1. 1890 — Hollerith punched card tabulating machines.
  2. 1920’s — punched card tabulating machines with plugboards — unit record equipment.
  3. 1930’s — punched card accounting machines.
  4. 1940’s — peak of tabulating and accounting machines.
  5. 1940 — Bell Labs Model I Relay Calculator (Complex Number Calculator). Electromechanical relays.
  6. 1941 — Zuse Z3 (electromechanical relays).
  7. 1942 — Atanasoff-Berry Computer (ABC) (first vacuum tube computer).
  8. 1943 — Colossus Mark 1 (UK) (vacuum tubes).
  9. 1943 — Bell Labs Model II Relay Interpolator (electromechanical relays).
  10. 1944 — Harvard Mark I — IBM Automatic Sequence Controlled Calculator (ASCC) (electromechanical relays).
  11. 1944 — Bell Labs Model III Ballistic Computer (electromechanical relays).
  12. 1944 — Colossus Mark 2 (UK) (vacuum tubes).
  13. 1946 — ENIAC (vacuum tubes).
  14. 1947 — Harvard Mark II (electromechanical relays).
  15. 1947 — transistor invented at Bell Labs. Not used in a computer until 1953.
  16. 1949 — Whirlwind (MIT) (vacuum tubes).
  17. 1949 — Manchester Mark 1 (vacuum tubes).
  18. 1949 — EDVAC (vacuum tubes).
  19. 1949 — EDSAC (vacuum tubes).
  20. 1950 — MESM — first computer in Soviet Union — Kiev, Ukraine (vacuum tubes).
  21. 1950 — SEAC (vacuum tubes).
  22. 1950 — SWAC (vacuum tubes).
  23. 1951 — Ferranti Mark 1 first commercially available general purpose electronic computer (vacuum tubes). Based on the Manchester Mark 1.
  24. 1951 — UNIVAC I first commercially available general purpose electronic computer in North America, second in world after Ferranti Mark 1 (vacuum tubes).
  25. 1952 — IAS (Princeton Institute for Advanced Study, von Neumann) (vacuum tubes).
  26. 1952 — ILLIAC I (vacuum tubes).
  27. 1952 — MANIAC I (vacuum tubes).
  28. 1953 — RAYDAC (vacuum tubes).
  29. 1953 — Manchester TC (first transistor computer).
  30. 1953 — IBM 701 (vacuum tubes).
  31. 1953 — JOHNNIAC (vacuum tubes).
  32. 1953 — Whirlwind core memory (vacuum tubes).
  33. 1954 — IBM 650 (vacuum tubes).
  34. 1954 — Bell Labs TRADIC (first U.S. transistor computer).
  35. 1955 — IBM 704 with core memory (vacuum tubes).
  36. 1955 — SAGE/AN/FSQ-7 (vacuum tubes).
  37. 1956 — MINAC/LGP-30 (vacuum tubes).
  38. 1955 — Harwell CADET (first fully transistorized computer in Europe).
  39. 1956 — TX-0 (MIT) (transistor).
  40. 1956 — IBM RAMAC 305 (vacuum tubes).
  41. 1958 — last year for introduction of any new computer designs based on vacuum tubes. Eleven years after invention of the transistor.
  42. 1958 — UNIVAC II (vacuum tubes).
  43. 1958 — IBM 709 (vacuum tubes, last for IBM).
  44. 1958 — Philco S-2000 TRANSAC used much faster surface barrier transistors.
  45. 1958 — RCA 501 (transistors).
  46. 1958 — SAGE goes online (vacuum tubes).
  47. 1959 — virtually all new computer designs based on transistors. Twelve years after invention of the transistor.
  48. 1959 — IBM 1401 (transistors).
  49. 1959 — IBM 1620 (transistors).
  50. 1959 — IBM 7090 (transistors).
  51. 1960 — DEC PDP-1 first minicomputer (transistors, logic modules).
  52. 1960 — CDC 160 (transistors).
  53. 1961 — IBM 7030 Stretch (transistors — first for IBM).
  54. 1962 — IBM 7094 (transistors).
  55. 1962 — Atlas early supercomputer (Univ. of Manchester).
  56. 1962 — CDC 1604 early commercial success for transistors.
  57. 1962 — DEC PDP-4.
  58. 1962 — ILLIAC II supercomputer.
  59. 1963 — IBM 7040/7044 scaled down 7090.
  60. 1963 — CDC 3600 48-bit scientific computing.
  61. 1963 — PDP-5 first successful minicomputer.
  62. 1964 — DEC PDP-6 precursor to PDP-10, low-cost mainframe-class power.
  63. 1965 — CDC 6600 one of first real, successful supercomputers.
  64. 1965 — DEC PDP-8 cheap, widely popular minicomputer.
  65. 1965 — IBM System/360 relatively cheap corporate machine.
  66. 1965 — IBM System/360 Model 75 high performance with advanced parallel and overlapped hardware for real-time computing — supported the Apollo space program.
  67. 1966 — IBM System/360 Model 91 high-speed data processing for scientific applications.
  68. 1966 — ILLIAC III specialized SIMD pattern recognition computer.
  69. 1967 — DEC PDP-10 cheap but powerful mainframe popular with research labs and universities, timesharing and ARPANET.
  70. 1967 — GE 645 hardware protected memory system designed specifically to support the Multics operating system, precursor to UNIX.
  71. 1969 — CDC 7600 ten times the performance of the CDC 6600.
  72. 1969 — Data General Nova (medium-scale integrated circuits).
  73. 1970 — DEC PDP-11 major line of cheap but powerful minicomputers.
  74. 1971 — IBM System/370 (integrated circuits).
  75. 1971 — CDC STAR-100 vector supercomputer, very limited success.
  76. 1972 — Goodyear STARAN associative memory parallel processor.
  77. 1972 — ILLIAC IV first massively parallel supercomputer (256 processors).
  78. 1976 — Cray-1 very successful vector processor supercomputer.

And that’s just the start.

This list can be extended once quantum computers have become as capable and widely available as the computers of the mid 1960’s. That said, such an update would be somewhat pointless since by definition quantum computing will have been considered to have arrived at that stage so that no further comparison to traditional digital computing will be needed at that stage.

Maybe the only really significant advances beyond this list would be the advent of cheap microprocessors, personal computers, and cheap network servers.

For reference, it might be helpful to consider the stages that microprocessors and personal computers have advanced through:

  1. 4-bit microprocessors.
  2. 8-bit microprocessors.
  3. 8/16-bit microprocessors.
  4. 16-bit microprocessors.
  5. 16/32-bit microprocessors.
  6. 32-bit microprocessors.
  7. Hyperthreaded 32-bit microprocessors.
  8. Dual-core 32-bit microprocessors.
  9. Multi-core 32-bit microprocessors.
  10. Multi-chip motherboards.
  11. 32/64-bit microprocessors.
  12. 64-bit microprocessors.
  13. Servers based on microprocessors.
  14. Servers based on multiple microprocessors.
  15. Supercomputers based on large numbers of microprocessors.

Generations of processing technologies

  1. Tabulating cards and plugboards — unit record equipment
  2. Electromechanical relays
  3. Vacuum tubes
  4. Discrete transistors
  5. Small scale integrated circuits (SSI)
  6. Medium scale integrated circuits (MSI)
  7. Large scale integration (LSI)
  8. Full microprocessor on a single chip
  9. Very large scale integration (VLSI)
  10. Large microprocessor on a chip

Memory technology

Both main memory and mass storage.

  1. Punched cards, paper tape
  2. Vacuum tubes (registers)
  3. Regenerative capacitor memory
  4. Williams tube (CRT)
  5. Mercury delay lines
  6. Magnetic drum memory
  7. Magnetic core memory
  8. Tape and disk mass storage
  9. ROM read-only memory chips
  10. Semiconductor memory
  11. CD-ROM and DVD for write-once storage
  12. Flash memory for mass storage

Memory size

  1. 1942 — ABC — 60 50-bit numbers regenerative capacitor memory.
  2. 1949 — EDVAC — 1,024 44-bit words mercury delay line.
  3. 1949 — EDSAC — 1,024 18-bit words mercury delay line.
  4. 1951 — UNIVAC I — 1,000 10-digit words.
  5. 1951 — Feranti Mark I — 512 20-bit words Williams tubes.
  6. 1953 — ENIAC — 100 word core memory.
  7. 1953 — IBM 701–2K/4K 36-bit words Williams tubes.
  8. 1955 — IBM 704–4K 36-bit words core memory.
  9. 1958 — UNIVAC II — 10,000 11-digit words/numbers.
  10. 1962 — Atlas (Univ. of Manchester) 16K 48-bit words core memory.
  11. 1959 — IBM 1401–16KB core memory.
  12. 1958 — IBM 709 32K 36-bit words core memory.
  13. 1960 — DEC PDP-1 64K 18-bit words core memory.
  14. 1955 — SAGE/AN/FSQ-7 68K 32-bit words core memory.
  15. 1965 — IBM System/360 Model 40–256MB core memory.
  16. 1961 — IBM 7030 Stretch — 256K 64-bit words core memory.
  17. 1965 — CDC 6600–256K 60-bit words core memory.
  18. 1965 — IBM System/360 Model 50 512KB core memory.
  19. 1969 — CDC 7600–576K 60-bit words.
  20. 1965 — IBM System/360 Model 65–1MB core memory.
  21. 1966 — IBM System/360 Model 67–2MB core memory.
  22. 1966 — IBM System/360 Model 91–4MB core memory.
  23. 1969 — IBM System/360 Model 195–4MB core memory.
  24. 8MB
  25. 16MB
  26. 64MB
  27. 128MB
  28. 256MB
  29. 1GB
  30. 2GB
  31. 4GB
  32. 8GB
  33. 16GB
  34. 32GB
  35. 64GB
  36. 128GB
  37. 256GB
  38. 1TB

Memory organization

How is memory organized in a quantum computer compared to a traditional digital computer?

  1. Is there a flat, linear address space?
  2. Are segments supported?
  3. Are pages supported?
  4. Is virtual memory supported?
  5. Is there a single address size or multiple sizes?
  6. Is relative addressing supported?
  7. Can memory be shared?
  8. Can memory be shared with a traditional digital computer so that data can be accessed or transferred directly between the two machines? Not all memory need be shared, but enough to cover performance critical needs.
  9. Does memory have parity error detection?
  10. Is ECC error correction supported?
  11. How fast is memory, compared to both traditional digital computers, and compared to the performance of quantum computing processing?

As with traditional digital computers, early machines are likely to have very simple memory models, with sophistication growing over time.

Number of qubits

How to compare memory requirements for a traditional digital computer with quantum computing qubits is not so clear at this stage.

In any case, more qubits means more processing power and more capacity.

Some milestones:

  1. Single qubit.
  2. 2 qubits.
  3. 3 qubits.
  4. 4 qubits.
  5. 8 qubits.
  6. 10 qubits.
  7. 12 qubits.
  8. 15 qubits.
  9. 16 qubits.
  10. 20 qubits.
  11. 25 qubits.
  12. 30 qubits.
  13. 40 qubits.
  14. 48 qubits.
  15. 50 qubits.
  16. 60 qubits.
  17. 75 qubits.
  18. 100 qubits.
  19. 200 qubits.
  20. 250 qubits.
  21. 375 qubits.
  22. 500 qubits.
  23. 750 qubits.
  24. 1,000 qubits.
  25. 1,024 qubits.
  26. 1,500 qubits.
  27. 2,000 qubits.
  28. 2,048 qubits.
  29. 3,000 qubits.
  30. 4,000 qubits.
  31. 4,096 qubits.

How quantum computing will evolve after hitting the 4K milestone is anybody’s guess at this stage.

It would be interesting to assign dates to when those milestones might be expected to be achieved.

Some milestones purported to have been achieved so far:

  1. 49 qubits — Intel.
  2. 50 qubits — IBM.
  3. 72 qubits — Google.
  4. 2,048 qubits — D-Wave Systems.

It is not quite clear whether the D-Wave chip is a general purpose quantum computer or is specialized only for the annealing algorithm, not that annealing doesn’t have a variety of different applications.

To be sure, some of the early traditional digital computers were also specialized for particular applications or algorithms, but achieving status as general purpose was a key quality for newer machines.

This criteria should be split to distinguish the capacity of a single chip and a single computer with multiple chips, provided that those chips can work in concert for a single quantum algorithm, as opposed to distinct algorithms operating completely independently.

That would be a distinct criteria for advancement of quantum computing — coordinating computation between quantum processing chips.

Program size

How large can a program be on a quantum computer?

How complex can an algorithm be?

Early traditional digital computers had very limited program size.

Even 4,000 instructions was too much for early machines.

Some milestones for program size for quantum computers:

  1. 10 instructions or operations.
  2. 100 operations.
  3. 1,000 operations.
  4. 2K operations.
  5. 4K operations.
  6. 8K
  7. 16K
  8. 32K
  9. 64K
  10. 128K
  11. 256K
  12. 512K
  13. 1M
  14. 2M
  15. 4M
  16. 8M
  17. 16M

Of course, that begs the questions of what a single instruction or operation does and how a single higher-level language construct is compiled into lower-level quantum computing operations.

Processing performance

Some thresholds of processing performance for traditional digital computers:

  1. Operations per second. Unit record equipment and relay computers.
  2. Thousands of operations per second. Vacuum tubes.
  3. Millions of operations per second. Transistors.
  4. Billions of operations per second. Integrated circuits.
  5. Trillions of operations per second. Multiprocessors.
  6. Quadrillions of operations per second. PetaFLOPS. Large number of processors.

Types of operations:

  1. Basic instructions. MIPS — Millions of instructions per second.
  2. Integer arithmetic and boolean logic. Covered by MIPS.
  3. Floating point arithmetic. FLOPS — Floating-point operations per second.

Unit of work

It isn’t quite clear what the unit of work or processing is for a quantum computer, compared to a traditional digital computer.

As mentioned in the preceding section, a traditional digital computer works in terms of instructions, operations, integer arithmetic, boolean operations, and floating point operations.

The unit of discourse for both performance and capacity of a quantum computer is the qubit, such that n qubits can simultaneously represent 2 to the nth superimposed states. A 50-qubit machine would have one quadrillion parallel states.

But how to map states into units of work like integers and floating point operations is unclear at this stage.

Is a quantum state fairly directly equivalent to one bit of traditional information, or is it equivalent to a traditional digital computing value such as a 32-bit or 64-bit integer (or 10 decimal digits, for that matter) or a single or double precision floating point number? I suspect the former, but it remains unclear.

And how quantum states would relate to processing of text is very unclear. With billions of documents, each with many thousands of words, and with some characters requiring only one 8-bit codes while others require 16-bit codes, all of which have a fixed ordering, it is unclear how such text would be represented or processed on a quantum computer.

Progress will be when these and related questions get answered.

Parallel processing

A single computer or processor can only perform so many calculations or processing steps per unit of time. Parallelism permits more calculations or other forms of processing to be performed per unit of time.

Quantum computing changes this picture dramatically, but there is still only so much that a single processor can perform.

Various strategies or approaches to parallel processing have been employed by traditional digital computing over the decades:

  1. Dual processors.
  2. Multiple functional processing units within a single computer.
  3. Tightly coupled multiprocessor configurations.
  4. Loosely-coupled multiprocessor configurations.
  5. Single-instruction multiple data stream (SIMD) processing.
  6. Multiple-instruction multiple data stream (MIMD) processing.
  7. Local computing grids.
  8. Distributed computing. Separate computers connected by a network.
  9. Large supercomputers based on many discrete processors.

Quantum computers, by their very nature promise much finer-grained parallel processing.

But parallelism is only as useful as the magnitude of the amount of data that can be processed. Even 100% parallelism for relatively small amounts of data won’t achieve a great advantage over traditional parallel traditional digital computers.

The question is how quickly quantum computers will be able to handle larger amounts of data, in parallel.

Such as for large simulations, weather forecasting, finite element analysis, fluid dynamics.

Some thresholds for parallel processing:

  1. Dozens of data elements in parallel.
  2. Hundreds.
  3. 1,000 data elements in parallel.
  4. Low thousands.
  5. 10,000 data elements in parallel.
  6. Tens of thousands.
  7. 100,000 data elements in parallel.
  8. Hundreds of thousands.
  9. 1 million data elements in parallel.
  10. Low millions.
  11. 10 million data elements in parallel.
  12. Tens of millions.
  13. 100 million data elements in parallel.
  14. Hundreds of millions.
  15. 1 billion data elements in parallel.
  16. Low billions.
  17. 10 billion data elements in parallel.
  18. Tens of billions.
  19. 100 billion data elements in parallel.
  20. Hundreds of billions.
  21. 1 trillion data elements in parallel.
  22. Low trillions.
  23. 10 trillion data elements in parallel.
  24. 100 trillion data elements in parallel.
  25. 1 quadrillion data elements in parallel.

Ah, one caveat — by data element, I mean a 32 or 64-bit integer or a single or double precision floating point number.

Granularity of modeling

In traditional digital computing performance for modeling is improved by opting for a weaker approximation of a correct result by coarser-grained modeling.

Finer-grained modeling would give more accurate results, but at a cost of degraded performance.

Quantum computers offer the potential for much finer-grained modeling and more accurate results due to their much greater performance and ability to perform more calculations in parallel.

The main issue is not the size of granularity per se, but the dramatic increase in the number of data elements as granularity shrinks. Capacity becomes the issue.

This is really the same problem as parallel processing, but it is the desire to dramatically shrink granularity that dramatically drives up the number of data elements which could or must be processed in parallel.

Some thresholds for parallel processing due to dramatic rise of data elements due to finer granularity of models:

  1. Dozens of data elements in parallel.
  2. Hundreds.
  3. Low thousands.
  4. Tens of thousands.
  5. Hundreds of thousands.
  6. Low millions.
  7. Tens of millions.
  8. Hundreds of millions.
  9. Low billions.
  10. Tens of billions.
  11. Hundreds of billions.
  12. Low trillions.
  13. A quadrillion or more.

Precision of calculations

Digits of precision for calculation is an ongoing trade-off for computing.

More precision is highly desirable, but higher precision comes at the cost of longer processing time, greater storage requirements, and greater energy consumption and greater heating issues and cooling requirements.

Some traditional thresholds for precision.

  1. Small integers. 8-bit, 16-bit
  2. Moderate integers. 24-bit, 32-bit.
  3. Larger integers. 48-bit, 60-bit, 64-bit.
  4. Very large integers. 128-bit, 256-bit.
  5. Decimal integers. Varying length, but slow processing.
  6. Fixed decimal numbers. 10-digits, 11-digits, other.
  7. Single precision floating-point numbers. 32-bit, 36-bit.
  8. Double precision floating-point numbers. 60-bit 64-bit, 72-bit, 80-bit.
  9. Decimal numbers. Varying length, varying precision, but slow processing.

What will quantum computers of the future offer and what will the performance, storage, and energy and heating characteristics be? Good questions. Awaiting the answers.

Richness of data types

  1. Simple integers. 16-bit, 32-bit.
  2. Large integers. 64-bit, 128-bit.
  3. Simple floating point numbers.
  4. Large floating point numbers.
  5. Simple decimal numbers.
  6. Large decimal numbers.
  7. Complex numbers.
  8. Fuzzy math. Probabilities.
  9. Boolean values. True or false.
  10. Fuzzy Boolean values. Probabilities.
  11. Bit values. Any number of binary bits, each of which can be set, cleared, toggled, AND-ed, OR-ed, XOR-ed, or tested. Shifting, rotation, and masking as well.
  12. Characters. 8-bit, Unicode — 8-bit, 16-bit, 24-bit, 32-bit, UTF-8, UTF-16, UTF-32.
  13. Strings.
  14. Simple structures.
  15. Complex structures.
  16. Small arrays. Dozens, hundreds of elements.
  17. Large arrays. Thousands of elements.
  18. Very large arrays. Millions, even billions of elements.
  19. Probabilities.

Coherence

Coherence is the length of time that a quantum computer or qubit can maintain its state before it begins to decay, losing information or state to the operating environment (or having its state degraded by noise or energy from the operating environment.)

Currently, coherence of quantum computers is rather short, with the recent 50-qubit IBM machine having an average coherence of 90 microseconds (a little less that 1/10,000th of a second.)

Some milestones to watch:

  1. 1 microsecond.
  2. 10 microseconds.
  3. 25 microseconds.
  4. 50 microseconds.
  5. 75 microseconds.
  6. 100 microseconds
  7. 150 microseconds.
  8. 200 microseconds.
  9. 250 microseconds.
  10. 500 microseconds.
  11. 750 microseconds.
  12. 1 millisecond (1,000 microseconds.)
  13. 2 milliseconds.
  14. 5 milliseconds.
  15. 10 milliseconds.
  16. 25 milliseconds.
  17. 50 milliseconds.
  18. 75 milliseconds.
  19. 100 milliseconds (1/10th second.)
  20. 250 milliseconds (1/4 second.)
  21. 500 milliseconds (1/2 second.)
  22. 750 milliseconds (3/4 second.)
  23. 1 second (1,000 milliseconds.)
  24. 2 seconds.
  25. 5 seconds.
  26. 10 seconds.
  27. 25 seconds.
  28. 1 minute (60 seconds.)
  29. 2 minutes.
  30. 5 minutes.
  31. 10 minutes.
  32. 25 minutes.
  33. 1 hour (60 minutes.)
  34. 2 hours.
  35. 4 hours.
  36. 8 hours.
  37. 12 hours.
  38. 1 day (24 hours.)
  39. 2 days.

Whether coherence can ultimately be maintained beyond a full day is a wide-open question.

Abstraction of function from device

A key concept enabling the rapid advance of traditional digital computing has been the abstraction of functions away from the underlying devices and technologies that implement those functions.

A user or developer can think of a traditional digital bit regardless of whether it is implemented as:

  1. A hole in a punched card.
  2. A hole in a paper tape.
  3. A relay.
  4. A charged spot on a Williams CRT tube.
  5. A sonic wave in a mercury delay line.
  6. A vacuum tube.
  7. A discrete transistor.
  8. A capacitor.
  9. An integrated circuit.
  10. An electron.
  11. A photon in an optical cable.
  12. An electromagnetic radio wave (still a photon) for wireless communication.
  13. A magnetized spot on a drum, disk, or tape.
  14. A hole burned by a laser or read by a laser on a DVD.

A logical bit is the same regardless of its physical manifestation, the physical bit.

Another abstraction in traditional digital computing is the number, integer or real (float), regardless of how it is represented in terms of bits. For many or most applications the distinction between a 32-bit integer and a 64-bit integer is irrelevant. Or 8-bit, 12-bit, 16-bit, 18-bit, 24-bit, 36-bit, 48-bit, or 60-bit integers, provided the range of values fits in that size. And most applications don’t care whether single or double precision is used for representing real numbers in floating point. Or whether a Boolean true or false value is represented as a single physical bit or as a small integer for more efficient memory access.

Similarly, operations like add, subtract, multiply, divide, square root, and transcendental functions are abstracted in traditional digital computing so that the application developer has no sense of which specific machine operations are being performed.

Granted, for some truly high-performance applications it is still necessary to care very much that the most efficient machine operations are being performed. That was frequently true in the early days of traditional digital computing as well. But over time, the basic device functions have gotten fast enough that clean abstractions — and efficient compilers — are considered more important than forcing developers to think and express themselves in terms of very low level device operations.

The question is how quantum computing will evolve for these abstraction criteria. The goal is clean abstraction unless there is some compelling rationale for a more specific, less abstract representation or operation.

Operating temperature

Quantum computers of today require cooling to almost absolute zero (zero degrees kelvin, minus 273.15 centigrade.) There are some systems that claim to operate at room temperature, at least under some conditions, but most require a super-cold operating environment. At least today they do.

Achieving super-cold temperatures is a technical challenge, very inconvenient, and expensive. Higher operating temperatures mean less technical challenge, greater convenience, and cheaper cost.

Some milestones:

  1. 10 mK (10/1,000th of one degree kelvin)
  2. 50 mK (50/1,000th of one degree kelvin)
  3. 100 mK
  4. 250 mK
  5. 500 mK
  6. 1 K
  7. 4 K (temperature that liquid helium boils)
  8. 10 K
  9. 50 K
  10. 75 K (liquid nitrogen boils at 77K, -196 C)
  11. 100 K (liquid oxygen boils at 90K, -183 C)
  12. 200 K (dry ice sublimes at 195K, -78 C)
  13. 250 K (255 K is 0 F)
  14. 275 K (273 K is freezing of water)
  15. 300 K (294 K is room temperature, 70 F)

A room temperature quantum computer is of course the holy grail for an operating environment.

Although it is worth noting that very low operating temperatures are readily available in space.

Supercomputer status

The concept of a supercomputer only takes on meaning when computers are generally available. Then, a supercomputer is a computer which has substantially greater performance and capacity than the computers which are generally available.

In the 1950’s one could have been excused for considering all of the existing computers as being supercomputers. They were certainly physically very large in size.

Only by the early 1960’s when quite a few computers were available did particular machines such as the IBM 7030 Stretch, Manchester Atlas, and finally the CDC 6600 take on the mantle of true supercomputers.

Similarly, one could assert that the very quantum, parallel nature of quantum computing renders every quantum computer a supercomputer almost by definition.

Ignoring, for the moment that even the most powerful quantum computers can only handle a tiny fraction of the data that common personal computers can handle. That will change quickly enough in the coming years.

In fact, handheld computers common today do indeed possess more computing power than supercomputers of the 1960’s.

Five years from now (okay, maybe ten), indeed, the average quantum computer will indeed eclipse the traditional digital computers that we call supercomputers today.

Sometime further out into the future, maybe ten to fifteen years, when quantum computers are much more common, only some of them will be considered true supercomputers — even though all of them will easily eclipse all of the supercomputers of today.

I’ll suggest these thresholds for supercomputing for quantum computers:

  1. Can handle dozens of data elements in parallel.
  2. Can handle hundreds of data elements in parallel.
  3. Can handle thousands of data elements in parallel.
  4. Can handle 10,000 data elements in parallel.
  5. Can handle 50,000 data elements in parallel.
  6. Can handle 100,000 data elements in parallel.
  7. Can handle 500,000 data elements in parallel.
  8. Can handle one million data elements in parallel.
  9. Can handle 10,000,000 data elements in parallel.
  10. Can handle 100,000,000 data elements in parallel.
  11. Can handle one billion data elements in parallel.
  12. Can handle 10,000,000,000 data elements in parallel.
  13. Can handle 100,000,000,000 data elements in parallel.
  14. Can handle one trillion data elements in parallel.
  15. Can handle one quadrillion data elements in parallel.

Where a data element would be a 32 or 64-bit integer or a single or double precision floating point number.

At a more easy to grasp level, consider these thresholds for a single quantum computer on the road to supercomputer status relative to outperforming traditional digital computers:

  1. Outperform a single 256GB server.
  2. Outperform two 256GB servers.
  3. Outperform four 256GB servers.
  4. Outperform eight 256GB servers.
  5. Outperform 16 256GB servers.
  6. Outperform 32 256GB servers.
  7. Outperform 64 256GB servers.
  8. Outperform 128 256GB servers.
  9. Outperform 256 256GB servers.
  10. Outperform 1,024 256GB servers.
  11. Outperform 2,048 256GB servers.
  12. Outperform 4K 256GB servers.
  13. Outperform 8K 256GB servers.
  14. Outperform 16K 256GB servers.
  15. Outperform 32K 256GB servers.
  16. Outperform 64K 256GB servers.
  17. Outperform 128K 256GB servers.
  18. Outperform 256K 256GB servers.
  19. Outperform 1M 256GB servers.
  20. Outperform 10M 256GB servers.
  21. Outperform 100M 256GB servers.

Fault tolerance

Component and even subsystem failure is a fact of life in technology. Systems must be able to detect and recover from as many failures as possible.

Fragility is not an option for modern computing systems.

Okay, technically, even an entire system could fail, but the point there would be that the larger computing infrastructure would be able to detect and recover from even failure of an entire system (say, a network node or a distributed system.)

Approaches to fault tolerance in traditional digital computing have included:

  1. Automatic detection of component failures, with a hard stop so that the integrity of data values in a computation is never compromised.
  2. Individual components designed for much higher reliability.
  3. Automatic hardware or low level software detection of individual component failures, with automatic failover to redundant components.
  4. Same redundancy and automatic failover, but within the component. Such as ECC error-correcting memory.
  5. Multiply redundant subsystems with software that can parcel out work to available subsystems, and then switch a subset of a task to a redundant subsystem when a subsystem failure is detected.
  6. Fully replicated parallel execution. Multiple components, subsystems, or even whole systems are computing exactly the same results such that any of them can fail and success is achieved as long as one of them succeeds.

Other forms of fault tolerance include:

  1. Shielding from cosmic radiation.
  2. Shielding from background radiation.
  3. Shielding from electromagnetic radiation in general.
  4. Cooling.
  5. Filtering of power source to remove line noise.
  6. Battery backup for power failures and brownouts.

I/O performance

Processing performance is the main objective for computing, but how fast you can feed data into the computer and how fast you can get results out — input/output or I/O — are important as well.

At least with traditional digital computing there is also the issue of I/O performance for intermediate results when main memory does not have sufficient capacity to accommodate all of the data to be processed. Some sort of mass storage, whether a disk, drum, tape, or flash memory may be required, all of which operate much more slowly than main memory.

How this picture changes or will evolve for quantum computing is very unclear at this stage.

Cost

As with the earliest days of traditional digital computing when high-value research and national defense needs rendered cost irrelevant, current quantum computing efforts are proceeding despite their very high cost.

Last year, a D-Wave 2000Q with 2,048 qubits cost about $15 million.

The initial, leading edge, deployments of quantum computing in large institutions may also be free of cost as an issue, but as the promise and capabilities of quantum computing become more practical and desirable for more mainstream institutions and even businesses, cost will rear its ugly head.

The question is how quickly quantum computing will move down the cost curve compared to the comparable trend for traditional digital computing.

Some thresholds:

  1. Tens of millions of dollars.
  2. $20 million.
  3. $15 million.
  4. $10 million.
  5. Low millions of dollars.
  6. $1 million
  7. $750K
  8. $500K
  9. Hundreds of thousands of dollars.
  10. $100,000
  11. $75,000
  12. Tens of thousands of dollars.
  13. $10,000
  14. Thousands of dollars.
  15. Hundreds of dollars.
  16. Tens of dollars.

Operating systems and front end computers

The so-called operating system is the software which controls the basic operation of the computer. Its most important function is to enable the execution of applications, the programs, the actual code that implements the algorithms and logic to be performed.

The goal is to permit the application code to be as simple as possible and to offload any and all work that is required to coordinate the various functions of the hardware of the computer, including and especially input and output, and mass storage, including file systems.

Operating systems have evolved from being very simple and even nonexistent in early computers to extremely sophisticated in present day machines.

How much of that complexity is needed for quantum computers is unclear.

A lot of the work performed by a traditional operating system can be offloaded from the quantum machine itself and implemented in an attached support computer, so that the quantum computer can focus closer to 100% of its resources on actual quantum computing rather than the bookkeeping and logistics of a traditional operating system.

By the 1960’s and 1970’s it became common to have smaller computers act as front ends to larger computers. For example, the ILLIAC IV massive parallel supercomputer used a PDP-10 computer connected to the ARPANET as its front end.

It remains to be seen how operating systems and front end computers will evolve for quantum computers.

For example, it would be nice to see standardized front end computers that look and act the same regardless of what brand or model of quantum computer is under the hood.

One open issue is whether quantum computers will have anything resembling the file system and mass storage that is common in most traditional digital computers, or whether those two concepts will be offloaded entirely to the front end computer.

I/O device, server, coprocessor, or functional unit?

Beyond the question of whether quantum computers will ever evolve into general purpose computers, there are four questions related to how they will fit into the computing landscape:

  1. Will quantum computers simply be connected as I/O devices to traditional digital computers? This is where we are today.
  2. Will quantum computers be specialized servers on a network?
  3. Will they be coprocessors attached to a traditional digital computer processor?
  4. Will they be functional units within a traditional digital computer?

The first option is the more likely and current reality. Specialized interface hardware knows how to talk to both the quantum computer and the traditional digital computer, translating between the two.

One could in theory directly use the traditional digital computer as if it were a glorified desktop computer. It wouldn’t necessarily need to be connected to a network.

Of course it is very tempting and obvious that the traditional digital computer could in turn be connected to a network, either a local area network (LAN) or to the Internet, either via a network cable or a wireless connection.

Such a network connection by itself wouldn’t necessarily mean that the computer is a server on the network available to service requests from external users. The connection might simply be used for file transfer and administrative tasks.

But once a network connection is in place, that’s all of the hardware needed to allow the computer to operate as a true server, able to process service requests from clients on the network. A little bit of software is required — available off the shelf, but it’s more of an architectural and management decision rather than a technical hurdle.

At some stage, quantum computers may evolve to the point where high-end users might have their own local quantum computer, attached as an I/O device, for highest performance and ease of development and ease of use. But for the foreseeable near-term future, quantum computers are too bulky and expensive for individual users to have their own dedicated quantum computer. But someday this may change.

A coprocessor is a device or chip which is separate from the main computer, but tightly connected to it so that data and commands can be transferred very rapidly, somewhat more rapidly than a traditional I/O device.

As an example, floating point arithmetic has been implemented as a coprocessor in the past, although it has always been a priority to fully integrate floating point arithmetic into the main processor as quickly as possible, as a true functional unit, to further streamline the exchange of data and commands.

Graphical processing units or GPUs are a form of coprocessor. They are quite popular today, both for high-performance graphics as well as offloading particularly complex computations, such as bitcoin mining.

Coprocessors and GPUs are generally separate chips from the main processor of a traditional digital computer, interacting with with the main processor via a so-called bus, which is more of a highway permitting data and commands to be transported around within a computer fairly rapidly.

Traditional digital computers generally have two buses outside of the main processor, one for high speed memory access and one for I/O devices, which are generally much slower than main memory. A coprocessor generally runs at a speed comparable to main memory, at least in terms of interfacing to other system components, even though internally it will tend to run a lot faster.

A coprocessor could be a single chip, multiple chips, a separate module or daughterboard, or an external subsystem connected via cabling. Obviously a single chip is superior, but the coprocessor may be too complex or require a special operating environment, such as cryogenic cooling.

A functional unit is a circuit within the main processor itself. It tends to be fairly self-contained, which is why it is called a unit, buth has very high speed connections to other functional units within the processor, much faster than even the high speed bus that a coprocessor or GPU might use.

A functional unit will deliver the highest performance for transfer of data and commands, but is also the most complex and technically challenging.

And since the functional unit is fully integrated within the main processor, it cannot be replaced or enhanced without replacing the entire main processor.

A functional unit for quantum computing would effectively allow hybrid computers, part quantum and part traditional digital computer.

Such a hybrid would be the final stage of evolution short of a true general purpose quantum computer which would not need a separate functional unit for quantum computing, although a sophisticated quantum computer would probably have more than one functional unit for quantum computing.

Whether or how rapidly quantum computing evolves in the direction of cheaper I/O devices, coprocessors, and ultimately functional units remains to be seen and is merely speculation at this stage.

Processing modes

Processing modes for traditional digital computers have evolved greatly:

  1. Standalone, single user.
  2. Batch (commonly using punched cards), attended by an operator.
  3. Multitasking. A single computer capable of running multiple jobs simultaneously.
  4. Remote job entry (JSE). Users not required to be near the computer.
  5. Timesharing, with many users simultaneously connected via terminals.
  6. Wide area network (WAN) computers.
  7. Embedded computers. Microprocessors.
  8. Personal computing.
  9. Local area networking (LAN).
  10. Server computing.
  11. Internet. Services.
  12. On-demand utility or cloud computing.
  13. Internet of Things (IoT).

Quantum computing is presently at a hybrid of standalone single user mode and networking. True networking would support multiple simultaneous jobs or requests.

Programming language sophistication

Hardware is a key constraint, but ability to develop software to run on the hardware can be just as big a constraint.

Programming languages are a key constraint for developing applications.

  1. 1940’s — raw machine language (binary, toggle switches, holes in cards and paper tape)
  2. 1950’s — Assembly languages
  3. 1956 — Information Processing Language (IPL)
  4. 1957 — FORTRAN
  5. 1957 — COMTRAN
  6. 1958 — ALGOL 58
  7. 1958 — FLOW-MATIC
  8. 1958 — LISP
  9. 1959 — AIMACO
  10. 1960 — COBOL
  11. 1960 — ALGOL 60
  12. 1964 — PL/I
  13. 1964 — BASIC
  14. 1970 — Pascal
  15. 1972 — C

And more modern languages since then.

A key feature of programming languages is their ability to hide the details of the underlying machine language so that the developer can code in higher-level terms that make more sense to subject-matter experts, with the programming tools handling translation to the machine level features.

Availability of programming languages and development tools

Primitive development tools hold back serious development of serious applications for quantum computers.

A comprehensive suite of sophisticated development tools will be needed to assure that quantum computing will be ready for prime time.

These would include, among many others:

  1. Programming languages. Both existing languages and new languages or extensions that are optimal for quantum computing.
  2. Compilers.
  3. Simulators.
  4. Debuggers.
  5. Testing tools.
  6. Performance monitoring and planning tools.
  7. Capacity monitoring and planning tools.
  8. Visualization tools for all phases of development and deployment.

Rich collection of design patterns and programming metaphors

Reinventing the wheel for each and every quantum computing application is a tedious and unnecessarily expensive proposition. A rich collection of design patterns and programming metaphors can greatly accelerate the process of developing applications. And reduce errors and bugs as well.

Elements include:

  1. Plain English descriptions.
  2. Clear specification of intentions.
  3. Clear specification of use cases.
  4. Detailed notes on applicability.
  5. Detailed notes on limitations or restrictions.
  6. Clear specification of inputs.
  7. Clear specification of outputs.
  8. Clear specification of processing.
  9. Fully documented sample code.
  10. Fully functional libraries when possible.
  11. Full documentation overall.
  12. Comprehensive suites of test cases.

Shared code libraries

Design patterns and programming metaphors are essential, but fully self-contained code libraries are equally valuable, and even more valuable in many situations.

Code libraries must meet all of the criteria given for design patterns and programming metaphors.

Open source code libraries are best, permitting developers to more deeply understand what’s going on under the hood, as well as enabling customization and enhancement.

But since many developers will opt to use the libraries exactly as they are distributed, it is urgent that the quality of the underlying code be of as high quality as possible.

Application frameworks are another approach to shared code.

Code repositories such as GitHub will facilitate the process of sharing code.

In any case, a wide variety of shared code libraries and application frameworks will be a decent metric of how much progress has been made for quantum computing.

The ultimate measure of progress will be the extent to which any given application development task can be performed by existing shared code from a code repository rather than having to develop fresh custom code.

Open source vs. proprietary technology

Early computing technology tended to be very proprietary, with each new computer being built from scratch according to the proprietary designs of its builder.

That said, there was a fair amount of sharing of technology, knowledge, and expertise, including publication of academic papers. Not every new computer was designed 100% from scratch.

Over time, every new computer tended to have more in common with other computers than ways in which they were different.

It does seem as if each new quantum computer was designed from scratch, although there are plenty of elements of existing technology in most new quantum computers.

In some cases proprietary technology is used to gain a commercial advantage, to make money and exclude competition, but very commonly the goal is simply to gain some technical advantage over existing technology, to simply build a better mousetrap.

Open source is a newer approach to technology than was used in the early days of technology.

It is most common for software, but the open source concept can work with hardware as well, even if it is used at the component, module, and subsystem levels even if the overall system design is somewhat proprietary. Or maybe components or modules may be proprietary while larger portions of the system are open source or off the shelf.

Just about every vendor and organization now uses open source technology in traditional digital computing to some degree even if proprietary technology is still common to some extent.

The question and challenge for quantum computing is the extent to which open source technology will become the norm, and exactly what role proprietary technology will play.

The dream will be the day when a complete quantum computing system can be based 100% on open source technology, hardware, software, and applications.

Applications

The question is how quickly useful applications will appear on quantum computers compared to the pace they appeared on traditional digital computers.

Some historical precedents:

  1. 1940’s — relay computers — atomic bomb calculations.
  2. 1942 — ABC — solving linear equations.
  3. 1945–1952 — ENIAC, ILLIAC 1 — Navier-Stokes fluid dynamics.
  4. 1946 — ENIAC — artillery firing tables, hydrogen bomb calculations.
  5. 1950 — ENIAC — weather forecast.
  6. 1950 — Whirlwind — proof of concept for aircraft early-warning radar.
  7. 1951 — Checkers.
  8. 1952 — Tic-tac-toe.
  9. 1952 — Predict results of a presidential election.
  10. 1955 — Theorem proof.
  11. 1957 — Chess.
  12. 1958 — Air defense (SAGE).
  13. 1961 — General Purpose Systems Simulator (GPSS).
  14. 1964 — Solve algebra word problems.
  15. 1964 — ELIZA natural language Q&A.
  16. 1964 Sabre — airline reservation system.

It’s not that these particular applications have significance or would be relevant to quantum computing, but simply that quantum computers will need to prove their utility for applications of comparable complexity in terms of both code and data complexity.

Transition from ultrasimple “toy” applications

Presently, most quantum computers are mere research projects, so there is little in the way of real applications.

The question is how quickly or when we will start seeing real applications rather than mere “toy” or proof of concept applications.

In other words, when quantum computers are finally able to solve real problems and earning their keep, either earning money, reducing costs, or providing real-world services that are not readily and more efficiently and more cheaply provided by existing traditional digital computers.

Two specific criteria here for having completed the transition from ultra-simple “toy” applications:

  1. Use of quantum computers for applications requiring more performance and capacity than even the simplest of modern traditional digital computers.
  2. Use of quantum computers for applications previously requiring high-end traditional digital computers.

That’s not asking a lot at all, and not even close to proving the great promise of quantum computing, but at least it is the key step to advance out of the “nursery” phase of incubation of quantum computing.

Transition from experimental novelties to development of production applications

Once organizations have transitioned out of the ultrasimple “toy” application phase, they move on to the proof of concept and experimentation phase, where they endeavor to implement something comparable to a real-world application, but are still not prepared to commit to a full-scale application directly exposed to the real world. That’s still at the experimental stage since they don’t know for sure the actual outcome of their efforts.

At some point they have enough experimentation and experience in hand to actually design and develop credible real-world applications with the full intention to deploy them for real-world use.

This transition from experimental novelties to development of production applications is a key milestone for any new technology.

Wide availability of proven applications

Beyond simply advancing from ultrasimple “toy” applications and larger-scale experimental applications, the next big baby step for quantum computing is the accumulation of more than a very few real-world, proven applications.

Just a few examples to wait for:

  1. Weather modeling.
  2. Optimization and scheduling.
  3. Integrated circuit layout, routing, and validation.
  4. Protein folding.
  5. Computational chemistry.
  6. General purpose simulation.
  7. Artificial intelligence, machine intelligence, machine learning.
  8. Business intelligence.

IoT applications

Will quantum computing be relevant to the Internet of Things (IoT)?

One would think so.

There are three areas of potential:

  1. Handling a very large volume of devices. Lots of data. In parallel. High demands on I/O performance of the quantum computer.
  2. Handling a large stream of rapidly and continuously changing data, within a single IoT device. Assuming a quantum computer could be built that small.
  3. Spanning and connecting a significant group of IoT devices. A blend of lots of data streams and lots of devices. Maybe not that many devices, but with data that needs to be coordinated very closely between separate devices, all in real-time.

Applications easily implemented

More information is needed here, but maybe that is simply a sign of how immature the field of quantum computing is.

But that will be a good test of maturity of the field, when a substantial list of categories and specific applications can be listed that have been easily implemented.

General purpose quantum computing

Quite a few of the early big successes for traditional digital computing in the 1940’s and 1950’s were fairly specialized computers, even tailored to specific applications or specific types of algorithms or operations. To be sure, these were significant advances and specialization may have been the only way to make such big leaps so quickly in those days.

But it was only when a critical mass of technical breakthroughs had occurred that permitted computers to be truly general purpose that they could be broadly and widely adopted.

Quantum computing may face this some hurdle. Or I should say that it is highly likely to face this hurdle. Or maybe we should simply call it an opportunity to accelerate progress rather than a problem per se.

In fact, attempting to directly make the big leap to truly general purpose quantum computers first may delay their adoption for more critical applications that don’t require full generality.

It may indeed be much better to more quickly leap to very high value specialized applications, and then, later, figure out how to build on and exploit those specialized technologies to produce more general purpose machines.

In any case, general purpose quantum computing is a key criteria for judging the progress of quantum computing.

Some milestones:

  1. Very limited proof of concept machines.
  2. More general, but still limited proof of concept machines.
  3. Prematurely generalized machines. They work, sort of, but not so well.
  4. Very specialized machines for very narrow niches of very high value applications that do extremely well.
  5. Better but still prematurely generalized machines. They work better, but not as well as specialized machines.
  6. Broader but still very specialized machines for specific classes of applications. Real progress.
  7. Somewhat more general machines for broader classes of applications. Further progress.
  8. Early fully general purpose machines, but may not be as well suited as specialized machines for specific niche use cases.
  9. Mid-maturity general purpose machines that handle a fair fraction of applications that previously required specialized machines.
  10. Full maturity general purpose quantum computers which handle most applications quite well. Although some niche applications may still be better served by specialized machines.
  11. General purpose quantum machines that are finally good enough that the extra effort and expense of specialized machines is not worth it.

Is general purpose quantum computing unlikely?

Personally, I think it’s likely that eventually quantum computers will be general purpose, capable of any application that a traditional digital computer is capable of, and a lot more, of course.

But, curiously, esteemed research firm Gartner doesn’t think so. They have these two dismissive statements in their report entitled The CIO’s Guide to Quantum Computing (November 29, 2017):

  • However, it’s important to note that quantum computers will never replace classic computers for general-purpose computing.
  • Current applications and, according to Gartner, future applications for quantum computing will be narrow and focused. General-purpose quantum computing will never be realized.

Those are really strong words. The opposite of hype.

Personally, I’m more of a never say never kind of guy. And even if you’re thinking never, say unlikely instead.

This reminds me of an article in Business Week magazine back when the Intel 486 processor chip came out. It was initially focused on high-end servers. The writer asserted a little too boldly that the 486 would never be used in desktop computers. We know how that movie ended.

In any case, I believe that it is safe to say that general purpose quantum computing will not be happening in the near future, the next few years.

Maybe five to ten years.

Although even then I would have to hedge and distinguish two distinct outcomes:

  • Quantum computers technically capable of supporting all applications of traditional digital computers.
  • Quantum computers cheap and easy enough to use to be a viable alternative to most traditional digital computing tasks.

The former being more likely sooner, while the latter would more likely be even further out in the timeline. Maybe twenty years?

Number of research projects

There are indeed plenty of research projects underway for quantum computing.

See:

  1. https://quantumcomputingreport.com/players/universities/
  2. https://en.wikipedia.org/wiki/List_of_companies_involved_in_quantum_computing_or_communication
  3. https://edgylabs.com/11-companies-set-for-a-quantum-computing-leap
  4. https://www.cbinsights.com/research/quantum-computing-corporations-list/
  5. https://www.predictiveanalyticstoday.com/what-is-quantum-computing/

Whether these are sufficient is hard to say. I’d say more would be better.

Number of commercial vendors

This includes vendors at all stages:

  1. Vendors with research projects.
  2. Vendors with experimental products.
  3. Vendors with evaluation and alpha and beta test-level products.
  4. Vendors with off-the-shelf products, ready to plug and play.

A semi-comprehensive list of companies at least involved in quantum computing can be synthesize from these lists:

  1. https://en.wikipedia.org/wiki/List_of_companies_involved_in_quantum_computing_or_communication
  2. https://edgylabs.com/11-companies-set-for-a-quantum-computing-leap
  3. https://www.cbinsights.com/research/quantum-computing-corporations-list/
  4. https://www.predictiveanalyticstoday.com/what-is-quantum-computing/

Categories of vendors include (or will eventually include):

  1. Full-system hardware suppliers.
  2. Component suppliers. Chips, modules, subsystems, peripheral products.
  3. Programming and development tool suppliers.
  4. Application framework and library and software subsystem suppliers.
  5. Application suppliers.
  6. Large consulting firms.
  7. Systems integrators.
  8. Defense contractors.

Number of government organizations with quantum computing in active use, beyond research

A list of some of the government labs and agencies using quantum computers from D-Wave Systems:

But I suspect that many of those uses are for research rather than active use in government operations. You know, “Let’s see what we can do with this new technology” rather than scheduling of predictable results. Any application without “experimental”, “testbed”, or “prototype” in its title.

Transparency for technical claims

Commercial vendors in all fields are prone to making exaggerated claims. It is important to have full transparency so that all technical claims for products and services can be independently verified.

This includes aspects such as:

  1. Features.
  2. Technical specifications.
  3. Performance.
  4. Capacity.
  5. Application availability.
  6. Compatibility.

Education

Students need access to high quality courses in quantum computing:

  1. Basics of quantum mechanics.
  2. Advanced quantum mechanics.
  3. Quantum computing basics.
  4. Advanced quantum computing.
  5. Quantum algorithm basics.
  6. Advanced quantum algorithms.
  7. Performance of quantum algorithms.
  8. Software engineering for quantum computing.
  9. Quantum circuit design.
  10. Quantum computer engineering.
  11. Applied quantum computing.
  12. Business use cases for quantum computing.

Training

Technical professionals and staff need access to high quality technical training for quantum computing:

  1. Quantum computing basics.
  2. Advanced quantum computing.
  3. Use.
  4. Operations.
  5. Maintenance.
  6. Application development.
  7. Application use.

Development of standards

One measure of the maturity of a field or industry is the development of standards.

Some areas where standards could be developed for quantum computing:

  1. Terminology.
  2. Standardized chips, components, modules, and subsystems. And connectors.
  3. Interface standards.
  4. Mechanical engineering standards.
  5. Cooling standards.
  6. Performance measurement, testing, and modeling standards.
  7. Standards for measuring key factors. Performance, capacity, features.
  8. Benchmarks. For comparing performance between machines.
  9. Validation suites. For confirming support for standardized features.
  10. Operations and instructions
  11. Data formats.
  12. Data structures.
  13. Programming languages.
  14. Design patterns and programming metaphors.
  15. Shared code libraries.
  16. Data structures.
  17. Databases.

It may be premature to see development of standards in any or many of these areas, but that could simply be a measure of how nascent and undeveloped the field remains.

Key technical breakthroughs required

Some of the key technical hurdles that are severely restraining the widespread adoption of quantum computing:

  1. Super-cold operating temperature. Room temperature may be too much to ask for yet, but requiring near-zero degrees kelvin is a major impediment.
  2. Programming languages and tools.
  3. Design patterns and programming metaphors.
  4. Clear definitions of what problems, applications, and algorithms are best for quantum computing.
  5. Fast and accurate simulators of quantum computing on traditional digital computers. Allow developers to observe state changes that the actual quantum computer cannot allow to be observed due to the very nature of quantum computation.

I’m sure that there are plenty of additional hurdles, but those are enough put a distinct damper on any significant forward progress.

Key non-technical hurdles

Beyond technical hurdles there are plenty of other, non-technical hurdles, including:

  1. Cost. The raw, total cost of the machines.
  2. Cumbersome operating environments. As with the original big computers and even more modern mainframe computers, very specialized and expensive operating environments are required.
  3. Organizational knowledge and expertise. Managers and executives understand traditional digital computers (well… sort of), but understanding how quantum computing fits into the mission of an organization is another matter. Understanding the limitations and appropriate applications of quantum computing are key issues.
  4. Cost and difficulty of finding, attracting, hiring, managing, and retaining appropriate technical staff for quantum computing.
  5. Kick-starting, budgeting, and maintaining momentum for standards efforts. A world in which each new machine is special and unique is a very unmanageable situation.
  6. Auditing and audit trails. The magic of quantum computing is that magic happens, but the downside is that quantum mechanics says that you can’t observe and track progress as the magic is happening. This could present significant management and legal problems. Generally, you need to be able to demonstrate how a result was achieved, not simply ask for the result to be accepted on nothing more than faith that the algorithm must have been right. Management must be able to validate that a given quantum computation is what people say it is.

I’m sure that there are plenty of additional non-technical hurdles, but those are enough put a distinct damper on any significant forward progress.

Generations

Traditional digital computers have gone through quite a few generations.

Quantum computers are still in their first generation, or since they are still mostly research projects, they are not technically in their first generation yet.

There are no clear criteria for what should define a generation of quantum computers, but the simple model could be a significant step function in any of the criteria proposed by this paper.

Although I’m not sure raw number of qubits should define a generation per se.

But many of the other criteria could be used to define generations.

At this stage, some of the more significant criteria that might represent generations might include:

  1. Size of application. Lines of code plus overall complexity.
  2. Amount of data that can be processed.
  3. Real applications rather than toy applications.
  4. Production applications rather than experimental and proof of concept projects.
  5. Size of application compared to size of traditional digital computer needed to support the application.
  6. Availability of sophisticated development tools.
  7. Availability of programming languages and compilers that can fully exploit the unique capabilities of quantum computers.
  8. Performance scaleup factor relative to same application on a high-end traditional digital computer. Times ten, 25, 50, one hundred, 250, 500, one thousand, etc.
  9. Reduction in cost. By factors of two to ten.
  10. Reduction in physical size. By factors of two to ten.
  11. Increase in operating temperature. Big leaps.

Those would not be specific generations, but any big step up in any of those criteria would quality for at least a 0.1 bump up in the generation. A bunch of such bumps could qualify for a full 1.0 bump up in the generation.

Right now, I would say that we are dealing with 0.01 bumps or occasional a 0.1 bump with most announcements.

I’ll go out on a limb and suggest that we are currently around generation 0.25. And likely to step up by 0.25 each year until we make some strong quantum leaps.

Formalized information theory

Digital communications is based on information theory, as formalized initially by Claude Shannon. Communications and computation are somewhat distinct domains but clearly overlap. Quantum communication is an area of intensive current research interest.

The issue is how ad hoc and informal or how formalized information theory is as applied to the quantum computing domain. Again, presumably overlapping with quantum communication.

As more of a placeholder for further thought in this area, I’ll suggest these preliminary levels of progress in formalization of information theory for the domain of quantum computing and quantum communication:

  1. Rather ad hoc and informal.
  2. Rudiments of formalization.
  3. Minimal formalization.
  4. Moderate formalization.
  5. Extensive formalization.
  6. Very formalized.
  7. Fully formalized.
  8. Full formalization of information theory for both quantum computing and quantum communication, integrated with formalized information theory of traditional digital computing and digital communications.

Work in progress

This informal paper is a work in progress. It will be updated as new information or new thinking develops.

--

--