Pull to refresh

Comments 24

И это "официально", а сколько кубитов в машинах которые уже работают в АНБ - хз ...

А есть ли какие-то высокоуровневые языки программирования для этой штуки? Ну кроме python/qiskit, который похож скорее на ассемблер, чем на высокоуровневый язык.

Сомневаюсь, что кто-то может написать программу типа взлома ключей на qiskit.

q#

https://habr.com/p/769148/

https://habr.com/p/768666/

https://habr.com/p/766512/

https://habr.com/p/766512/

Сомневаюсь, что кто-то может написать программу типа взлома ключей на qiskit.

если взгляните на эти мои статьи - то увидите, что там по ходу вычислений, заодно, и ключик находится ...

ну а программировать можно хоть на балалайке ... те же креи имели разную архитектуру ... ну а на ферритовых матрицах с операциями матричных трансформаций тоже народ писал - и даже диспетчерские авиаслужбы с этим работали чтобы разводить самолёты по эшелонам

Ну допустим, это q#.

Но ведь все компьютеры разные, как потом скомпилированную программу (байт код?) запустить на всех этих разных по архитектуре компьютерах? Должен быть какой-то загрузчик (созданный производителем компьютера?), который инициализирует компьютер согласно байткоду q#? Как это вообще работает? Похоже ли это к примеру на ПЛИС? В ПЛИС загружается прошивка, которая устанавливает связи между логическими элементами схемы, фактически в статическую память ПЛИС загружается битовый образ прошивки, который управляет мультиплексорами, которые связывают логические элементы. В квантовом компьютере примерно так же или нет?

Но ведь все компьютеры разные, как потом скомпилированную программу (байт код?) запустить на всех этих разных по архитектуре компьютерах?  ...

Ну извините, что я такой бестолковый и не понимаю чего-то. Но вы же написали статью, видимо предполагали, что будут вопросы?

Попробую изложить свой вопрос по другому. Вот к примеру фрагмент программы для квантового компьютера:

Здесь всего 7 кубитов. В программе используются следующие элементы: H (Адамара), X (NOT) и + (CNOT и CCNOT).

Программа придуманная человеком определяет соединение этих элементов в последовательности и связи между кубитами. Существуют ли физически эти элементы H,X,CNOT,CCNOT по отдельности в виде деталей, и как они физически соединяются?

К примеру в этой программе состояние кубита q0 передается на операцию Адамара, а состояние кубита q4 передается на NOT и потом Адамара. А кубиты q1 и q2 наоборот сперва Адамара а потом NOT.

А в другой программе будет конечно не так - ведь это будет другая программа.

Как обеспечивается загрузка / инициализация вот этих связей в квантовом компьютере?

Причем, как вы в своей статье написали есть разные архитектуры: "на кубитах на основе сверхпроводников" и на "принципе электронных подуровней атома в магнито-оптической ловушке". Вот собственно мой вопрос, а как в момент запуска программы на квантовом компьютере образуются связи между элементами в компьютерах обоих архитектур?

Вполне допускаю, что я по не знаю спрашиваю какую-то глупость. Но вы же видимо понимаете это все? Пожалуйста объясните.

Ну наверно это надо будет спрашивать у производителей оборудования.

Например, а могу допускать, что можно построить вычислитель где реализация схемы будет реально механическим устройством - то есть шаговые двигатели будут двигать поляризационные фильтры в область прохождения луча - приблизительно как это было с компьютером, который разработал тьюринг для энигмы - там реально диски механические крутились ...

А программеру даётся набор базовых операций - и делай реализацию требуемой вычислительной модели ...

ЗЫ. по поводу механики - если, допустим надо 1000 гейтов, а каждое механическое соединение требует 1 см, то этот регистр физически потребует 10 метров, как минимум. И лазер нужен, чтобы всё это пробить и не сжечь

ЗЗЫ. Вы видимо не помните откуда пошёл термин "прошивка" - так там вообще ручками провод по ферритовой матрице протягивали

Хотелось бы понять, как это всё работает от компилятора до реализации в железе. К сожалению такой информации в понятном виде нигде не находил.

Вот к примеру, как работает обычный процессор я представляю себе - его можно самому на верилоге написать и загрузить в ПЛИС, потом написать программу откомпилировать и она будет на этом процессоре работать.

С квантовыми компьютерами все не так. Никто толком объяснить не может.

Для тех кого волнует теория вопроса

Лично я послушал лекции на openedu.ru https://openedu.ru/course/spbu/QUANTUMCOMP/?session=spring_2021

и почитал на ИНТУИТ https://intuit.ru/studies/courses/3633/875/info (https://intuit.ru/verifydiplomas/101614264)

https://habr.com/p/759352/

Могу только предполагать, что с использованием существующей электроники девайс будет управлять этим нечто, называемое "кубит/кудит/и тд". то есть будет некий набор сигналов управления и считывания, который вы так же сможете смоделировать через verilog и загнать в плис (то есть как и для станка с чпу)

ну а для программирования - также опишите микрокоманды, а дальше развернёте весь язык высокого уровня.

собственно набор действий нужен небольшой

  • аллокирование ресурса

  • инициализация

  • применение гейта (контролируемого гейта) или просто трансформации, заданной тензором ... те создание конвейера обработки

  • считывание состояния

  • освобождение ресурса

С теорией вопроса как раз более или менее понятно.

Лично я прочитал квантовый ликбез "Алгоритм Гровера" вот здесь https://eslitak.livejournal.com/247410.html

(Хотя и тут в математических выкладках есть опечатки, на кои я указывал автору, но он не исправил). Это самая понятная статья из всех, что я видел. По этой же статье я писал свою первую программу на python / qiskit и она заработала. Но что дальше...

Во всей этой истории остается действительно непонятным

1) физическая реализация и вот эти все вопросы типа как инициализируется и стартует программа

2) практическая применимость. По ссылке которую я привел к примеру рассматривается задача "есть ли число 9 среди чисел от 0 до 15". Ну право слово смешно. Покажите мне лучше программу на q# для вычисления нонсе биткоина.

#В любом случае, 1000 кубитов – существенный шаг вперёд для индустрии.

раз индустрия, значит можно купить? сколько стоит машина? Вы как специалист работающей в области уверен знаете

Можно. Машины в десятках/сотнях кубит стоят несколько десятков миллионов баксов. Аннилеры D-wave на 2000 кубитов стоили миллионов 15 но это не универсальный компьютер это аннилер. Порядок величин примерно такой. Расценки на доступ через облака есть на AWS braket и Microsoft Azure. На нейтральных атомах продает, например, французский Pasqal.

P.S. двухкубитное на спинах у китайцев можно купить тысяч за пять https://www.spinquanta.com/products-solutions/gemini

А что-то реально ценное с этими машинами уже посчитали? Иначе какой толк от них?

Решают задачу коммивояжёра.

Что вы хотите от дитя - сказал Фарадей когда спросили что дает еле уловимый ток при перемещении магнита

Никто не знает к чему это приведет, может это бесперспективное направление как экранопланы, а может и выльется во чтото полезное

я к тому что 1000 кубитов это реально много. Можно вроде ассиметричную криптографию ломать с таким количеством. Но ничего об этом не слышно, что наводит на мысли что эти 1000 кубитов какие-то не те кубиты..

Здесь еще не стоит забывать, что факт взлома не всегда выгодно раскрывать. Например, как было с Энигмой, когда компрометация вскрылась только спустя продолжительное время. Так что есть небольшой шанс, что "ничего не слышно" по вполне закономерным причинам)

В данном случае это секрет полишинеля - алгоритм известен, и как только появиться возможность на нем наверняка попытаются прогнать ту же факторизацию.

На уровне идеи 1000-кубитный регистр даёт невероятные возможности ... атакой 256-битных симметричных шифров.

А вот это вообще нереально, причем скорее всего никогда - для симметричных алгоритмов есть только алгоритм Гровера, а он бесполезен т.к. сложность остается экспоненциальной, только уполовинивается степень.

так может есть и другие алгоритмы? как это было с алгоритмом известным впоследствии как rsa?

1000 кубитов это очень мало, т.к. для реализации любого реального алгоритма нужна коррекция ошибок. Каждый логический кубит требует десятков и сотен тысяч физических кубитов с учетом алгоритмов коррекции. Так что какой-то полезный взлом можно будет делать с КК с ~1млн кубитов.

сколько устойчивых к ошибкам логических кубитов мы можем получить?

Как понял, эту проблему решили с помощью нескольких (сотен, тысяч, миллионов) прогонов.

Прогоны не решают проблемы ошибок. Прогоны нужны для получения правильного результата вычислений. За каждый прогон вы получаете случайный результат, правильный при этом только наиболее вероятен, но не гарантирован. Поэтому надо набрать большую статистику, чтобы быть уверенным в правильности результата.

так не обязательно строить вавилонскую башню, а потом прогонять многократно умножая ошибку.

можно же и отдельные элементы делать параллельно с голосованием для окончательного выбора ;) ... только здесь есть проблема - учиться надо и пятиминутная компетентность (прочитал - сделал) не поможет

Sign up to leave a comment.