Кіріспе

Кванттық есептеудің моделі

Кванттық ақпарат теориясында кванттық тізбек – классикалық тізбектерге ұқсас кванттық есептеудің моделі болып табылады, онда есептеу кванттық қақпалар, өлшемдер, кубиттерді белгілі мәндерге бастамалау және мүмкін басқа да амалдардың тізбегінен тұрады. Кванттық есептеуді жүзеге асыру үшін тізбектің кубиттерде орындауы тиіс амалдардың ең минималды жиынтығы ДиВинченцо критерийлері деп аталады. Тізбектер уақыт осын көлденең бағытта жазылады, сол жағынан басталып оң жағында аяқталады. Көлденең сызықтар кубиттерді, ал қос сызықтар – классикалық биттерді көрсетеді. Осы сызықтармен байланысқан элементтер – кубиттерде орындалатын операциялар, мысалы өлшемдер немесе қақпалар. Бұл сызықтар оқиғалардың реттілігін анықтайды және әдетте физикалық кабельдер емес. Кванттық тізбек элементтерінің графикалық бейнесі Пенроуз графикалық нотациясының бір түрі арқылы сипатталады. Ричард Фейнман 1986 жылы кванттық тізбек нотациясының алғашқы нұсқасын қолданды.

Қайталанатын классикалық логикалық қақпалар

Классикалық компьютердің көптеген қарапайым логикалық қақпалары кері қайтарылмайды. Мысалы, AND қақпасы үшін шығыс биттен екі кіріс битті әрқашан қалпына келтіру мүмкін емес; мысалы, егер шығыс биті 0 болса, кіріс биттері 01, 10 немесе 00 екенін анықтай алмаймыз. Дегенмен, классикалық компьютерлерде кез келген ұзындықтағы бит тізбектері үшін кері қайтарылатын қақпаларды жасау оңай; сонымен қатар, бұл қақпалар іс жүзінде маңызды, себебі кері қайтарылмайтын қақпалар физикалық энтропияны міндетті түрде арттыруы керек. Кері қайтарылатын қақпа – n бит деректі кері қайтаратын n бит деректің функциясы, мұнда n бит дерек – n ұзындығындағы x1, x2, ..., xn биттер тізбегі. n бит деректер жиыны – {0,1}n кеңістігі, ол 2n нөлдер мен біліктерден тұрады. Нақтырақ айтқанда: n биттік кері қайтарылатын қақпа – n биттік деректер жиынынан өзіне-өзі бейнелеу (mapping) жасаушы f функциясы. Мұндай кері қайтарылатын қақпаның мысалы – кірістеріне белгілі бір реттеу (permutation) қолданатын функция. Практикалық инженерлік себептерге байланысты, қақпаларды әдетте n-нің кіші мәндері үшін зерттейді, мысалы n=1, n=2 немесе n=3. Бұл қақпаларды кестелер арқылы оңай сипаттауға болады.

Кванттық есептеу симуляцияларын FPGA-мен жеделдету

Кванттық есептеудің пайда болуымен бірге әзірлеушілердің саны да, қолжетімді құралдар да едәуір артты. Дегенмен, технологиялық прогрестің жай темпі және кванттық компьютерлерді күтіп ұстаудың жоғары құны осы салаға кең қатысуды шектеді. Оған жауап ретінде әзірлеушілер IBM-нің Qiskit сияқты симуляторларға жүгінді, олар нақты кванттық аппараттарға толығымен сенбей кванттық мінез-құлықты модельдеуге мүмкіндік береді. Бірақ симуляторлар классикалық компьютерлер болғандықтан, олардың есептеу жылдамдығы шектеулі. Кванттық компьютерлердің басты артықшылығы – кубиттерді өңдеу қабілеті, олар бір мезгілде өзара байланыс және суперпозиция сияқты қасиеттерді пайдаланады. Кванттық симуляцияларды классикалық компьютерлерде іске қосу кванттық есептеудің ішкі параллельдігін жояды. Сонымен қатар, симуляцияланатын кубиттердің саны артқан сайын, симуляция жылдамдығы да пропорционалды түрде төмендейді. Кванттық схемада векторлар кубиттердің күйін көрсету үшін, ал түрлі матрицалар кубиттерге қолданылатын қақпаларды көрсету үшін қолданылады. Сызықтық алгебра кванттық симуляцияның маңызды бөлігі болғандықтан, кванттық есептеуді симуляциялауды жеделдету үшін өрісте бағдарламаланатын қақпалар тізімі (FPGA) қолданылуы мүмкін. FPGA – операцияларды параллель орындауға, құбыржолдарды қолдауға, жадқа жылдам қол жеткізуге және аппараттық архитектураны қажеттілікке қарай қайта конфигурациялауға мүмкіндік беретін аппараттық құрал, бұл оны матрицалық көбейтуді орындау үшін өте қолайлы етеді. Кванттық есептеу симуляцияларын жеделдетудің басты идеясы – ауыр есептеулердің бір бөлігін FPGA сияқты арнайы аппаратқа жүктеу арқылы бүкіл симуляция процесін жылдамдату. Қаншалықты үлкен кванттық схеманы (көп кубиттер мен көп қақпалар) симуляцияласақ, CPU-дағы бағдарламалық симуляциямен салыстырғанда FPGA-ға жүктеуден жылдамдық артықшылығы соғұрлым артады. Симуляцияның дерек ағыны төменде түсіндірілген. Біріншіден, пайдаланушы кванттық схема туралы барлық ақпаратты, бастапқы күйі мен түрлі қақпаларды пайдаланушы интерфейсі арқылы енгізеді. Содан кейін, барлық ақпарат сығымдалады және AXI сияқты аппараттық байланыс протоколдары арқылы FPGA-ға жіберіледі. Содан кейін барлық ақпарат FPGA-дағы чип жадында сақталады. Симуляция деректерді жадтан оқып, матрицалық көбейту модуліне жібергенде басталады. Барлық есептеулер аяқталғаннан кейін нәтиже жадқа және процессорға жіберіледі. Егер біз 5 кубиттік схеманы симуляцияласақ, онда 32 (2⁵) 16 биттік мәнді қамтитын векторды сақтау қажет, олардың әрқайсысы мүмкін болатын күйдің квадрат түбірлі ықтималдығын көрсетеді. Сондай-ақ, қақпаны көрсететін 32x32 матрицаны сақтау қажет. Бұл есептеуді параллельдеу үшін матрицаның 32 жолын бөлек сақтаймыз және әр жол үшін көбейтуді параллель орындай алатын 32 жолды қайталаймыз. Бұл FPGA-да аппараттық және жадты көп пайдаланудың есебінен симуляцияны едәуір жеделдетеді. Мұқият аппараттық жобалау арқылы аппараттық архитектураны O(n) уақыт күрделілігімен жасауға болады, мұнда 'n' кубиттер санын білдіреді. Ал Numpy-нің жұмыс уақыты O(2^2^n) шамасына жақын. Бұл жайт FPGA-ны кванттық есептеу симуляцияларын жеделдету үшін пайдаланудың мүмкіндігін көрсетеді.