{"id":584,"date":"2013-04-01T08:00:18","date_gmt":"2013-04-01T13:00:18","guid":{"rendered":"https:\/\/blogs.mathworks.com\/cleve\/?p=584"},"modified":"2013-05-02T09:58:39","modified_gmt":"2013-05-02T14:58:39","slug":"quantum-matrix-processor","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/cleve\/2013\/04\/01\/quantum-matrix-processor\/","title":{"rendered":"Quantum Matrix Processor"},"content":{"rendered":"<!DOCTYPE html\r\n  PUBLIC \"-\/\/W3C\/\/DTD HTML 4.01 Transitional\/\/EN\">\r\n<style type=\"text\/css\">\r\n\r\nh1 { font-size:18pt; }\r\nh2.titlebg { font-size:13pt; }\r\nh3 { color:#4A4F55; padding:0px; margin:5px 0px 5px; font-family:Arial, Helvetica, sans-serif; font-size:11pt; font-weight:bold; line-height:140%; border-bottom:1px solid #d6d4d4; display:block; }\r\nh4 { color:#4A4F55; padding:0px; margin:0px 0px 5px; font-family:Arial, Helvetica, sans-serif; font-size:10pt; font-weight:bold; line-height:140%; border-bottom:1px solid #d6d4d4; display:block; }\r\n   \r\np { padding:0px; margin:0px 0px 20px; }\r\nimg { padding:0px; margin:0px 0px 20px; border:none; }\r\np img, pre img, tt img, li img { margin-bottom:0px; } \r\n\r\nul { padding:0px; margin:0px 0px 20px 23px; list-style:square; }\r\nul li { padding:0px; margin:0px 0px 7px 0px; background:none; }\r\nul li ul { padding:5px 0px 0px; margin:0px 0px 7px 23px; }\r\nul li ol li { list-style:decimal; }\r\nol { padding:0px; margin:0px 0px 20px 0px; list-style:decimal; }\r\nol li { padding:0px; margin:0px 0px 7px 23px; list-style-type:decimal; }\r\nol li ol { padding:5px 0px 0px; margin:0px 0px 7px 0px; }\r\nol li ol li { list-style-type:lower-alpha; }\r\nol li ul { padding-top:7px; }\r\nol li ul li { list-style:square; }\r\n\r\npre, tt, code { font-size:12px; }\r\npre { margin:0px 0px 20px; }\r\npre.error { color:red; }\r\npre.codeinput { padding:10px; border:1px solid #d3d3d3; background:#f7f7f7; }\r\npre.codeoutput { padding:10px 11px; margin:0px 0px 20px; color:#4c4c4c; }\r\n\r\n@media print { pre.codeinput, pre.codeoutput { word-wrap:break-word; width:100%; } }\r\n\r\nspan.keyword { color:#0000FF }\r\nspan.comment { color:#228B22 }\r\nspan.string { color:#A020F0 }\r\nspan.untermstring { color:#B20000 }\r\nspan.syscmd { color:#B28C00 }\r\n\r\n.footer { width:auto; padding:10px 0px; margin:25px 0px 0px; border-top:1px dotted #878787; font-size:0.8em; line-height:140%; font-style:italic; color:#878787; text-align:left; float:none; }\r\n.footer p { margin:0px; }\r\n\r\n  <\/style><div class=\"content\"><!--introduction--><p>The Quantum Matrix Processor, being announced today, is the world's first viable quantum array processor.  Basic matrix operations are done instantaneously, with infinite procession.  The programming environment is classic MATLAB.<\/p><!--\/introduction--><h3>Contents<\/h3><div><ul><li><a href=\"#943094f0-1fe1-4240-918e-809b5b67ac37\">Quantum Research Partners<\/a><\/li><li><a href=\"#8bf2b0ef-0ed5-4ace-87a3-efaaf2577972\">QMP<\/a><\/li><li><a href=\"#fc39789f-4763-411e-b9cc-55fc7fd12e9c\">Qureal<\/a><\/li><li><a href=\"#d986cb19-7250-449e-94c8-a57a3741c019\">Uncertainty Principle<\/a><\/li><li><a href=\"#f5f5e743-5d84-449b-afa2-4248d4bbb067\">Programming Environment<\/a><\/li><li><a href=\"#075c8620-eb42-4fb4-a57b-78e7188f5a9b\">LINPACK Benchmark<\/a><\/li><\/ul><\/div><h4>Quantum Research Partners<a name=\"943094f0-1fe1-4240-918e-809b5b67ac37\"><\/a><\/h4><p>I am pleased to be involved in today's announcement of the QMP, the Quantum Matrix Processor.  This new device has been developed by Quantum Research Partners, a startup here in Santa Fe that was formed two years ago by a team from Los Alamos National Lab.  I have been a consultant from the beginning of their project because they have based their design on classic MATLAB.<\/p><h4>QMP<a name=\"8bf2b0ef-0ed5-4ace-87a3-efaaf2577972\"><\/a><\/h4><p>The QMP is similar conceptually to a GPU, or Graphics Processing Unit. It is a coprocessor that interfaces with the motherboard via an expansion slot such as PCI Express or Accelerated Graphics Port. Matrices are transferred between the memories and registers of the CPU, or central processor, and the coprocessor.  Once the data is available in the QMP, quantum computing can take place.<\/p><h4>Qureal<a name=\"fc39789f-4763-411e-b9cc-55fc7fd12e9c\"><\/a><\/h4><p>Traditional quantum computing involves \"qubits\", where a quantum circuit represents a single bit and quantum arithmetic operations are similar to digital arithmetic operations.  The primary innovative aspect of the QMP is the \"qureal\" where a single quantum circuit represents a real number. The five basic arithmetic operations of addition, subtraction, multiplication, division, and square root, can be carried out instantaneously, according to the rules of real arithmetic.<\/p><p>Quantities are stored in qureal registers and qureal memory as real numbers. There is no representation error.  Arithmetic operations are carried out exactly.  There is no roundoff error.  Arithmetic operations are done instantaneously.  If it could be measured, the execution time of an addition or multiplication operation would be found to be zero.<\/p><h4>Uncertainty Principle<a name=\"d986cb19-7250-449e-94c8-a57a3741c019\"><\/a><\/h4><p>Heisenberg's uncertainty principle implies that it is not possible to access an infinitely precise real number in finite time.  It would take an infinite amount of time, for example, to access the binary or decimal representation of a real result.<\/p><h4>Programming Environment<a name=\"f5f5e743-5d84-449b-afa2-4248d4bbb067\"><\/a><\/h4><p>The programming environment of the QMP is based on MATLAB.  The beta release of the environment is an implementation of what is now called \"classic MATLAB\", the simple interactive matrix calculator that I developed before we started MathWorks.  The available features include basic MATLAB matrix management and command processing.  Each of the following functions has been implemented as a single QMP instruction, so it is executed essentially instantaneously on a matrix of qureals.<\/p><pre>   ABS   ATAN  BASE  CHAR  CHOL  CHOP  COND  CONJ\r\n   COS   DET   DIAG  DIAR  DISP  EIG   EPS   EXEC\r\n   EXP   EYE   FLOP  HESS  HILB  IMAG  INV   KRON\r\n   LINE  LOAD  LOG   LU    MAGI  NORM  ONES  ORTH\r\n   PINV  PLOT  POLY  PRIN  PROD  QR    RAND  RANK\r\n   RAT   RCON  REAL  ROOT  ROUN  RREF  SAVE  SCHU\r\n   SIN   SIZE  SQRT  SUM   SVD   TRIL  TRIU  USER\r\n   CLEA  ELSE  END   EXIT  FOR   HELP  IF    LONG\r\n   RETU  SEMI  SHOR  WHAT  WHIL  WHO   WHY<\/pre><h4>LINPACK Benchmark<a name=\"075c8620-eb42-4fb4-a57b-78e7188f5a9b\"><\/a><\/h4><p>This processor can solve a system of simultaneous linear equations instantaneously.  Does that qualify the QMP as the faster computer in the world? My colleague Jack Dongarra and the other folks running the <a href=\"http:\/\/www.top500.org\/\">top 500 list<\/a> will have two concerns when we submit our benchmark results.  First, we can't access the computed solution in zero time.  And, second my program is written in MATLAB, not Fortran.<\/p><script language=\"JavaScript\"> <!-- \r\n    function grabCode_c7b33937ed4b485487462d0c0c304d27() {\r\n        \/\/ Remember the title so we can use it in the new page\r\n        title = document.title;\r\n\r\n        \/\/ Break up these strings so that their presence\r\n        \/\/ in the Javascript doesn't mess up the search for\r\n        \/\/ the MATLAB code.\r\n        t1='c7b33937ed4b485487462d0c0c304d27 ' + '##### ' + 'SOURCE BEGIN' + ' #####';\r\n        t2='##### ' + 'SOURCE END' + ' #####' + ' c7b33937ed4b485487462d0c0c304d27';\r\n    \r\n        b=document.getElementsByTagName('body')[0];\r\n        i1=b.innerHTML.indexOf(t1)+t1.length;\r\n        i2=b.innerHTML.indexOf(t2);\r\n \r\n        code_string = b.innerHTML.substring(i1, i2);\r\n        code_string = code_string.replace(\/REPLACE_WITH_DASH_DASH\/g,'--');\r\n\r\n        \/\/ Use \/x3C\/g instead of the less-than character to avoid errors \r\n        \/\/ in the XML parser.\r\n        \/\/ Use '\\x26#60;' instead of '<' so that the XML parser\r\n        \/\/ doesn't go ahead and substitute the less-than character. \r\n        code_string = code_string.replace(\/\\x3C\/g, '\\x26#60;');\r\n\r\n        copyright = 'Copyright 2013 The MathWorks, Inc.';\r\n\r\n        w = window.open();\r\n        d = w.document;\r\n        d.write('<pre>\\n');\r\n        d.write(code_string);\r\n\r\n        \/\/ Add copyright line at the bottom if specified.\r\n        if (copyright.length > 0) {\r\n            d.writeln('');\r\n            d.writeln('%%');\r\n            if (copyright.length > 0) {\r\n                d.writeln('% _' + copyright + '_');\r\n            }\r\n        }\r\n\r\n        d.write('<\/pre>\\n');\r\n\r\n        d.title = title + ' (MATLAB code)';\r\n        d.close();\r\n    }   \r\n     --> <\/script><p style=\"text-align: right; font-size: xx-small; font-weight:lighter;   font-style: italic; color: gray\"><br><a href=\"javascript:grabCode_c7b33937ed4b485487462d0c0c304d27()\"><span style=\"font-size: x-small;        font-style: italic;\">Get \r\n      the MATLAB code <noscript>(requires JavaScript)<\/noscript><\/span><\/a><br><br>\r\n      Published with MATLAB&reg; R2012b<br><\/p><p class=\"footer\"><br>\r\n      Published with MATLAB&reg; R2012b<br><\/p><\/div><!--\r\nc7b33937ed4b485487462d0c0c304d27 ##### SOURCE BEGIN #####\r\n%% Quantum Matrix Processor\r\n% The Quantum Matrix Processor, being announced today, is the world's first\r\n% viable quantum array processor.  Basic matrix operations are done\r\n% instantaneously, with infinite procession.  The programming environment\r\n% is classic MATLAB.\r\n\r\n%% Quantum Research Partners\r\n% I am pleased to be involved in today's announcement of the QMP,\r\n% the Quantum Matrix Processor.  This new device has been developed\r\n% by Quantum Research Partners, a startup here in Santa Fe that was formed\r\n% two years ago by a team from Los Alamos National Lab.  I have been a\r\n% consultant from the beginning of their project because they have based their\r\n% design on classic MATLAB.\r\n\r\n%% QMP\r\n% The QMP is similar conceptually to a GPU, or Graphics Processing Unit.\r\n% It is a coprocessor that interfaces with the motherboard via an\r\n% expansion slot such as PCI Express or Accelerated Graphics Port.\r\n% Matrices are transferred between the memories and registers of the\r\n% CPU, or central processor, and the coprocessor.  Once the\r\n% data is available in the QMP, quantum computing can take place.\r\n\r\n%% Qureal\r\n% Traditional quantum computing involves \"qubits\", where a quantum circuit\r\n% represents a single bit and quantum arithmetic operations are similar\r\n% to digital arithmetic operations.  The primary innovative aspect of the QMP\r\n% is the \"qureal\" where a single quantum circuit represents a real number.\r\n% The five basic arithmetic operations of addition, subtraction,\r\n% multiplication, division, and square root, can be carried out\r\n% instantaneously, according to the rules of real arithmetic.\r\n%\r\n% Quantities are stored in qureal registers and qureal memory as real numbers.\r\n% There is no representation error.  Arithmetic operations are carried out\r\n% exactly.  There is no roundoff error.  Arithmetic operations are done\r\n% instantaneously.  If it could be measured, the execution time of an\r\n% addition or multiplication operation would be found to be zero.\r\n\r\n%% Uncertainty Principle\r\n% Heisenberg's uncertainty principle implies that it is not possible to\r\n% access an infinitely precise real number in finite time.  It would take\r\n% an infinite amount of time, for example, to access the binary or decimal\r\n% representation of a real result.\r\n\r\n%% Programming Environment\r\n% The programming environment of the QMP is based on MATLAB.  The beta\r\n% release of the environment is an implementation of what is now called\r\n% \"classic MATLAB\", the simple interactive matrix calculator that I\r\n% developed before we started MathWorks.  The available features include\r\n% basic MATLAB matrix management and command processing.  Each of the\r\n% following functions has been implemented as a single QMP instruction,\r\n% so it is executed essentially instantaneously on a matrix of qureals.\r\n%\r\n%     ABS   ATAN  BASE  CHAR  CHOL  CHOP  COND  CONJ  \r\n%     COS   DET   DIAG  DIAR  DISP  EIG   EPS   EXEC  \r\n%     EXP   EYE   FLOP  HESS  HILB  IMAG  INV   KRON  \r\n%     LINE  LOAD  LOG   LU    MAGI  NORM  ONES  ORTH  \r\n%     PINV  PLOT  POLY  PRIN  PROD  QR    RAND  RANK  \r\n%     RAT   RCON  REAL  ROOT  ROUN  RREF  SAVE  SCHU  \r\n%     SIN   SIZE  SQRT  SUM   SVD   TRIL  TRIU  USER  \r\n%     CLEA  ELSE  END   EXIT  FOR   HELP  IF    LONG  \r\n%     RETU  SEMI  SHOR  WHAT  WHIL  WHO   WHY   \r\n\r\n%% LINPACK Benchmark\r\n% This processor can solve a system of simultaneous linear equations\r\n% instantaneously.  Does that qualify the QMP as the faster computer in the\r\n% world? My colleague Jack Dongarra and the other folks running the\r\n% <http:\/\/www.top500.org\/ top 500 list> will have two concerns when we submit\r\n% our benchmark results.  First, we can't access the computed solution in zero\r\n% time.  And, second my program is written in MATLAB, not Fortran.\r\n\r\n##### SOURCE END ##### c7b33937ed4b485487462d0c0c304d27\r\n-->","protected":false},"excerpt":{"rendered":"<!--introduction--><p>The Quantum Matrix Processor, being announced today, is the world's first viable quantum array processor.  Basic matrix operations are done instantaneously, with infinite procession.  The programming environment is classic MATLAB.... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/cleve\/2013\/04\/01\/quantum-matrix-processor\/\">read more >><\/a><\/p>","protected":false},"author":78,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/584"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/users\/78"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/comments?post=584"}],"version-history":[{"count":6,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/584\/revisions"}],"predecessor-version":[{"id":623,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/584\/revisions\/623"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/media?parent=584"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/categories?post=584"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/tags?post=584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}