PolySimCIM
Эмулятор квантовых вычислений
Правообладатель: Российский квантовый центр (ООО «МЦКТ»)
Свидетельство о государственной регистрации программы для ЭВМ: №2021615790
    Основные функции

    Основным назначением программного эмулятора квантовых вычислений «PolySimCIM» является решение задач полиномиальной дискретной комбинаторной оптимизации при помощи программного аннилинга - симуляции работы оптического устройства «Когерентная Машина Изинга» и обобщенной для решения задач высоких порядков.

    Основной обеспечиваемый функционал
    Основным обеспечиваемым функционалом является решение задач квадратичной дискретной комбинаторной оптимизации с высокой скоростью и качеством решения.

    Доступ к решению предоставляется:
    • в составе облачной платформы квантовых вычислений QBoard
    • установка ПО в вычислительный кластер конечного клиента
      • рекомендуемая серверная часть:
        • наличие графических процессоров с поддержкой программно-аппаратной архитектуры параллельных вычислений CUDA
    Объем программы: ~ 3 КБ
    Языки программирования: Python

    Операционные системы, пригодные для выполнения программы (на данный момент поддерживаем):
    • Linux;
    • Windows;
    • MacOS.
      Руководство пользователя

      Установка необходимого программного обеспечения
      Для запуска программы PolySimCIM необходимо предварительно установить на компьютер следующее программное обеспечение:

      1. Интерпретатор программного языка Python. Для установки Python на компьютер следуйте инструкции с официального сайта https://www.python.org/downloads/. Для корректной работы PolySimCIM необходима версия Python 3.7 и выше.
      а) Для облегчения установки дополнительных программных библиотек рекомендуется использовать дистрибутив Anaconda (https://docs.anaconda.com/anaconda/install/index.html)

      2. Библиотека NumPy. Инструкция по установке доступна на официальном сайте https://numpy.org/install/.
      a) NumPy уже входит в состав программного дистрибутива Anaconda и не требует дополнительной установки при использовании данного дистрибутива.

      3. Библиотека тензорных вычислений PyTorch. Для установки библиотеки воспользуйтесь инструкцией на официальном сайте https://pytorch.org/.

      4. (Опционально) При решении задач большой размерности рекомендуется использовать NVIDIA CUDA Toolkit. Для его применения требуется видеокарта NVIDIA. Инструкция по установке CUDA Toolkit доступна на официальном сайте https://developer.nvidia.com/cuda-downloads.

      Запуск программы PolySimCIM

      Эмулятор квантовых вычислений представляет собой класс объектно-ориентированного языка программирования Python.
      1. Открыть консоль командной строки и перейти в директорию, содержащую файлы
      PolySimCIM.py и
      PolySimCIM_example.py.
      2. В командной строке выполнить команду "python PolySimCIM_example.py"
      a) Данная команда запускает исполняемый файл PolySimCIM_example.py.
      b) В результате работы программы на экране консоли будет выведено достигнутое оптимальное значение случайно сгенерированной целевой функции.
      Exact_solution = …
      PolySimCIM_solution = …
      При корректной работе программы, значения Exact_solution и PolySimCIM_solution будут совпадать.
      Файлы примеров
      Возможные ошибки

      Возможные ошибки, возникающие при запуске программы PolySimCIM:
      1. Ошибки импортирования сторонних программных библиотек:
        1. Пример ошибки
          1. Import error: No module named numpy.
          2. Import error: No module named torch.
        2. Вариант решения:
          1. Пользователю необходимо установить стороннюю программную библиотеку на свой компьютер, руководствуясь официальной инструкцией разработчика сторонней программной библиотеки.
      2. Отсутствие совместимости с NVIDIA CUDA Toolkit (средой для управление высокопроизводительными вычислениями с использованием графических процессоров NVIDIA)
        1. Пример ошибки
          1. TypeError: type torch.cuda.FloatTensor not available. Torch not compiled with CUDA enabled.
        2. Вариант решения:
          1. Пользователю необходимо установить и настроить CUDA Toolkit, следуя официальной инструкции на сайте разработчика.
          2. Если у пользователя нет возможности использовать CUDA Toolkit, необходимо использовать мощности центрального процессора (CPU) для осуществления расчетов. Для этого при вызове экземпляра класса PolySimCIM необходимо задать параметр device="cpu".
      3. Несоответствие Exact_solution и PolySimCIM_solution при больших размерностях задачи (размер матрицы более 500 x 500 x 500), в связи с накоплением численной ошибки при расчетах.
        1. Вариант решения:
          1. Использовать повышенную точность представления тензоров (например, в представлении чисел двойной точности).
      Возможные предупреждения, не влияющие на производительность программы:
      UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor). self.J=torch.tensor(J, dtype=self.dtypef, device=self.device)
      Техническая поддержка

      Каналы взаимодействия со службой технической поддержки:
      • электронная почта: mail.qml@rqc.ru
      • live-chat модуль «Отправьте нам сообщение» на сайте https://qml.rqc.ru/

      Режим работы службы технической поддержки:
      Входящие обращения принимаются
      Понедельник - Пятница, 9:00 – 18:00 (по рабочим дням), +3 GMT

      Формат запроса в службу технической поддержки:
      Свободный
      Замечания устраняются исходя из внутренних приоритетов правообладателя.

      Фактический почтовый адрес, по которому осуществляется процесс сопровождения:
      Россия, Москва, Большой бульвар, 30с1, корпус G7, этаж 3, офис 30.

      Основания для разработки:
      • экспертное мнение и продуктовая стратегия Разработчика;
      • обратная связь от клиентов, партнеров и научно-технического сообщества.
      Тестирование обновлений производится инициативной группой пользователей.
      Сообщение об обновлениях доводятся до пользователей адресно.