(Хотя и тут в математических выкладках есть опечатки, на кои я указывал автору, но он не исправил). Это самая понятная статья из всех, что я видел. По этой же статье я писал свою первую программу на python / qiskit и она заработала. Но что дальше...
Во всей этой истории остается действительно непонятным
1) физическая реализация и вот эти все вопросы типа как инициализируется и стартует программа
2) практическая применимость. По ссылке которую я привел к примеру рассматривается задача "есть ли число 9 среди чисел от 0 до 15". Ну право слово смешно. Покажите мне лучше программу на q# для вычисления нонсе биткоина.
Хотелось бы понять, как это всё работает от компилятора до реализации в железе. К сожалению такой информации в понятном виде нигде не находил.
Вот к примеру, как работает обычный процессор я представляю себе - его можно самому на верилоге написать и загрузить в ПЛИС, потом написать программу откомпилировать и она будет на этом процессоре работать.
С квантовыми компьютерами все не так. Никто толком объяснить не может.
Ну извините, что я такой бестолковый и не понимаю чего-то. Но вы же написали статью, видимо предполагали, что будут вопросы?
Попробую изложить свой вопрос по другому. Вот к примеру фрагмент программы для квантового компьютера:
Здесь всего 7 кубитов. В программе используются следующие элементы: H (Адамара), X (NOT) и + (CNOT и CCNOT).
Программа придуманная человеком определяет соединение этих элементов в последовательности и связи между кубитами. Существуют ли физически эти элементы H,X,CNOT,CCNOT по отдельности в виде деталей, и как они физически соединяются?
К примеру в этой программе состояние кубита q0 передается на операцию Адамара, а состояние кубита q4 передается на NOT и потом Адамара. А кубиты q1 и q2 наоборот сперва Адамара а потом NOT.
А в другой программе будет конечно не так - ведь это будет другая программа.
Как обеспечивается загрузка / инициализация вот этих связей в квантовом компьютере?
Причем, как вы в своей статье написали есть разные архитектуры: "на кубитах на основе сверхпроводников" и на "принципе электронных подуровней атома в магнито-оптической ловушке". Вот собственно мой вопрос, а как в момент запуска программы на квантовом компьютере образуются связи между элементами в компьютерах обоих архитектур?
Вполне допускаю, что я по не знаю спрашиваю какую-то глупость. Но вы же видимо понимаете это все? Пожалуйста объясните.
Но ведь все компьютеры разные, как потом скомпилированную программу (байт код?) запустить на всех этих разных по архитектуре компьютерах? Должен быть какой-то загрузчик (созданный производителем компьютера?), который инициализирует компьютер согласно байткоду q#? Как это вообще работает? Похоже ли это к примеру на ПЛИС? В ПЛИС загружается прошивка, которая устанавливает связи между логическими элементами схемы, фактически в статическую память ПЛИС загружается битовый образ прошивки, который управляет мультиплексорами, которые связывают логические элементы. В квантовом компьютере примерно так же или нет?
А есть ли какие-то высокоуровневые языки программирования для этой штуки? Ну кроме python/qiskit, который похож скорее на ассемблер, чем на высокоуровневый язык.
Сомневаюсь, что кто-то может написать программу типа взлома ключей на qiskit.
Я прямо сейчас занимаюсь проектом, к которому нам производитель дал среду, которая собирает всю ОС. Собирать-то собирает, только пользоваться ею толком нельзя. И проблемы с драйверами конкретно Mali у нас есть и ничего сделать не можем. Уже и драйвер ядра заменили на панфрост и блобы нам дают другие, а толку нет. Репорты производителю шлем, а толку нет. Производитель чипа сделал кастомное управление памятью GPU, что именно мне неизвестно. В результате мы не можем использовать современные композиторы, доступен только Weston дурацкий.
Можно собрать ядро и подставить вместо текущего в андрюшу. Если будет работать так же, значит всё правильно
Нет. Вы так сделаете, у Вас не заработает или вообще девайс кирпичем станет. Вам скажут, что у Вас кривые руки и Вы сделали всё неправильно, а исходники Вам дали правильные.
For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable.
Сразу вижу скрипты не заработают. Ну просто потому, что у Вас другое окружение, например, installation executables требует специального аппаратного программатора, которого у вас нет. А они своими скриптами пользуются у себя и у них все нормально. И потом, будет папка со скриптами, там 500 скриптов, каждый что-то делает. Еще и в зависимости от параметров командной строки. И скрипты могут генерировать много чего разного, от дебаг версии, до релиза, пререлиза, экспериментальной версии альфа, бетта, гамма..
По вашей ссылке раздают код драйвера Midgard для ядра. Устаревший драйвер для устаревших GPU. Но неизвестно какой именно нужен ибо Mali GPU много модификаций.. На самом деле есть несколько опенсоурс драйверов для Mali, например Panfrost. Проблемы начинаются, когда подключаются user mode блобы. Они должны точно соответствовать драйверу ядра. А с этим часто проблемы.
Блобы можно забрать из текущей инсталляции.
И нет, блобы из Андроид скорее всего на 99% не подойдут в Линукс.
Линейка поддерживает сотни устройств. В целом, большинство мобильных устройств, особенно недорогих, мало чем отличаются друг от друга и собраны из стандартных компонентов.
Мне вот чисто интересно, предположим, что они отдали ему исходники ядра сразу по первому запросу. Далее что?
1) как проверить, что это именно те исходники, что ему нужны?
2) как проверить, что получил от производителя все патчи?
3) как узнать, какой именно конфигурационный файл использовался для сборки?
4) что если для системы требуются еще и несколько закрытых драйверов устройств типа Mali GPU? Особенно, если к примеру Mali GPU требует user mode blobs, исходников которых никогда не было в принципе.
5) каким тулчейном собирать? тут могут быть нюансы..
Честно говоря мне кажется, что успешное создание своего образа на кастомный девайс это скорее удача 1 из 1000, чем реальная возможность. Тут при полной поддержке производителя чипов зачастую не удается сделать хорошую ОС..
Ну как пример.. ну вот сайт armbian - есть разные девайсы и к ним можно собрать полностью ОС с нуля. Так половина же устройств не работает нормально - то звук плохой, то видео не играет толком. За то все опен соурс и тысячи патчей.
Всё равно память в FPGA выделяется блоками. Нельзя сделать блок длиной 501 элементов.
Да и указатели циклического буфера легче перемещать. После ячейки по адресу 511 сразу идет ячейка по адресу ноль. Ну и коэффициенты по адресам выше 501 равны нулю.
С теорией вопроса как раз более или менее понятно.
Лично я прочитал квантовый ликбез "Алгоритм Гровера" вот здесь https://eslitak.livejournal.com/247410.html
(Хотя и тут в математических выкладках есть опечатки, на кои я указывал автору, но он не исправил). Это самая понятная статья из всех, что я видел. По этой же статье я писал свою первую программу на python / qiskit и она заработала. Но что дальше...
Во всей этой истории остается действительно непонятным
1) физическая реализация и вот эти все вопросы типа как инициализируется и стартует программа
2) практическая применимость. По ссылке которую я привел к примеру рассматривается задача "есть ли число 9 среди чисел от 0 до 15". Ну право слово смешно. Покажите мне лучше программу на q# для вычисления нонсе биткоина.
Хотелось бы понять, как это всё работает от компилятора до реализации в железе. К сожалению такой информации в понятном виде нигде не находил.
Вот к примеру, как работает обычный процессор я представляю себе - его можно самому на верилоге написать и загрузить в ПЛИС, потом написать программу откомпилировать и она будет на этом процессоре работать.
С квантовыми компьютерами все не так. Никто толком объяснить не может.
Ну извините, что я такой бестолковый и не понимаю чего-то. Но вы же написали статью, видимо предполагали, что будут вопросы?
Попробую изложить свой вопрос по другому. Вот к примеру фрагмент программы для квантового компьютера:
Здесь всего 7 кубитов. В программе используются следующие элементы: H (Адамара), X (NOT) и + (CNOT и CCNOT).
Программа придуманная человеком определяет соединение этих элементов в последовательности и связи между кубитами. Существуют ли физически эти элементы H,X,CNOT,CCNOT по отдельности в виде деталей, и как они физически соединяются?
К примеру в этой программе состояние кубита q0 передается на операцию Адамара, а состояние кубита q4 передается на NOT и потом Адамара. А кубиты q1 и q2 наоборот сперва Адамара а потом NOT.
А в другой программе будет конечно не так - ведь это будет другая программа.
Как обеспечивается загрузка / инициализация вот этих связей в квантовом компьютере?
Причем, как вы в своей статье написали есть разные архитектуры: "на кубитах на основе сверхпроводников" и на "принципе электронных подуровней атома в магнито-оптической ловушке". Вот собственно мой вопрос, а как в момент запуска программы на квантовом компьютере образуются связи между элементами в компьютерах обоих архитектур?
Вполне допускаю, что я по не знаю спрашиваю какую-то глупость. Но вы же видимо понимаете это все? Пожалуйста объясните.
Ну допустим, это q#.
Но ведь все компьютеры разные, как потом скомпилированную программу (байт код?) запустить на всех этих разных по архитектуре компьютерах? Должен быть какой-то загрузчик (созданный производителем компьютера?), который инициализирует компьютер согласно байткоду q#? Как это вообще работает? Похоже ли это к примеру на ПЛИС? В ПЛИС загружается прошивка, которая устанавливает связи между логическими элементами схемы, фактически в статическую память ПЛИС загружается битовый образ прошивки, который управляет мультиплексорами, которые связывают логические элементы. В квантовом компьютере примерно так же или нет?
А есть ли какие-то высокоуровневые языки программирования для этой штуки? Ну кроме python/qiskit, который похож скорее на ассемблер, чем на высокоуровневый язык.
Сомневаюсь, что кто-то может написать программу типа взлома ключей на qiskit.
Есть же RISC-V, их много реализаций на любой вкос. Для чего люди делают свою?
В создании процессора самое главное не процессор, а оптимизирующий компилятор. Компилятор хороший сделать гораздо труднее, чем процессор.
Вот про libhybris я не знал. Может нам стоит попробовать использовать его и тогда все и правда получится?
Я прямо сейчас занимаюсь проектом, к которому нам производитель дал среду, которая собирает всю ОС. Собирать-то собирает, только пользоваться ею толком нельзя. И проблемы с драйверами конкретно Mali у нас есть и ничего сделать не можем. Уже и драйвер ядра заменили на панфрост и блобы нам дают другие, а толку нет. Репорты производителю шлем, а толку нет. Производитель чипа сделал кастомное управление памятью GPU, что именно мне неизвестно. В результате мы не можем использовать современные композиторы, доступен только Weston дурацкий.
Все исходники есть, а пользоваться не получается.
Можно собрать ядро и подставить вместо текущего в андрюшу. Если будет работать так же, значит всё правильно
Нет. Вы так сделаете, у Вас не заработает или вообще девайс кирпичем станет. Вам скажут, что у Вас кривые руки и Вы сделали всё неправильно, а исходники Вам дали правильные.
For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable.
Сразу вижу скрипты не заработают. Ну просто потому, что у Вас другое окружение, например, installation executables требует специального аппаратного программатора, которого у вас нет. А они своими скриптами пользуются у себя и у них все нормально. И потом, будет папка со скриптами, там 500 скриптов, каждый что-то делает. Еще и в зависимости от параметров командной строки. И скрипты могут генерировать много чего разного, от дебаг версии, до релиза, пререлиза, экспериментальной версии альфа, бетта, гамма..
Закрыли а раздают код на официальном сайте
По вашей ссылке раздают код драйвера Midgard для ядра. Устаревший драйвер для устаревших GPU. Но неизвестно какой именно нужен ибо Mali GPU много модификаций.. На самом деле есть несколько опенсоурс драйверов для Mali, например Panfrost. Проблемы начинаются, когда подключаются user mode блобы. Они должны точно соответствовать драйверу ядра. А с этим часто проблемы.
Блобы можно забрать из текущей инсталляции.
И нет, блобы из Андроид скорее всего на 99% не подойдут в Линукс.
Линейка поддерживает сотни устройств. В целом, большинство мобильных устройств, особенно недорогих, мало чем отличаются друг от друга и собраны из стандартных компонентов.
Это так только кажется.
Мне вот чисто интересно, предположим, что они отдали ему исходники ядра сразу по первому запросу. Далее что?
1) как проверить, что это именно те исходники, что ему нужны?
2) как проверить, что получил от производителя все патчи?
3) как узнать, какой именно конфигурационный файл использовался для сборки?
4) что если для системы требуются еще и несколько закрытых драйверов устройств типа Mali GPU? Особенно, если к примеру Mali GPU требует user mode blobs, исходников которых никогда не было в принципе.
5) каким тулчейном собирать? тут могут быть нюансы..
Честно говоря мне кажется, что успешное создание своего образа на кастомный девайс это скорее удача 1 из 1000, чем реальная возможность. Тут при полной поддержке производителя чипов зачастую не удается сделать хорошую ОС..
Ну как пример.. ну вот сайт armbian - есть разные девайсы и к ним можно собрать полностью ОС с нуля. Так половина же устройств не работает нормально - то звук плохой, то видео не играет толком. За то все опен соурс и тысячи патчей.
Кто-нибудь знает почему FPGA компании придумывают графические среды для проектирования блоками? Это что, удобно?
Вот здесь мой радиопередатчик с фазовой модуляцией в FPGA
https://marsohod.org/projects/proekty-dlya-platy-marsokhod3/349-pm-radio-transmitter
Использует динамически меняемую фазу PLL в ПЛИС.
В этом проекте так много всего можно улучшить или переписать по другому... Ну что поделать, не всё я написал идеально.
Ну допустим. Рассмотрим "наведите порядок в своих кейсах".
Наведите порядок в выжимке реализованного проекта? Что-то как-то не то.
Наведите порядок в выполненных этапах и в процессах реализации задач? Что-то опять не то.
Наведите порядок в демонстрации возможностей проекта?
Ловлю себя на мысли, что я не понимаю такие тексты.
кейсы были оформлены не по всем проектам..
наведете порядок в своих кейсах..
выбрали кейсы..
Вопрос: что такое "кейс"?
В мире вообще много чего есть готового и интересного. Но свой изобретенный велосипед всегда интересней и познавательней.
Всё равно память в FPGA выделяется блоками. Нельзя сделать блок длиной 501 элементов.
Да и указатели циклического буфера легче перемещать. После ячейки по адресу 511 сразу идет ячейка по адресу ноль. Ну и коэффициенты по адресам выше 501 равны нулю.
Окно конечно скользящее. Одна выборка сигнала пришла и одна ушла.
А что бывает по другому?
Ну конкретно в этом примере нет параллельного умножения 500 чисел. Есть последовательное.
Да, КИХ Это фильтр с Конечной Импульсной Характеристикой. То же самое как FIR - Finite Impulse Response.