Hi-QUBOの特徴

Hi-QUBO: QUBO/HUBOによる組合せ最適化のためのモデリング・求解フレームワーク

Hi-QUBO は、組合せ最適化問題をバイナリ変数の多項式(QUBO/HUBO)として定式化・求解するフレームワークです。

  • C++ と Python — C++(QUBO++)でも Python(PyQBPP)でも利用できます。

  • シンボリックDSL — 行列インデックスではなく数式を書く感覚で最適化モデルを構築できます。自然な for ループで制約を書くことも、ベクトル演算によってループなしで記述することも可能です。

  • 簡単インストール — C++ は sudo apt install qbpp、Python は pip install pyqbpp でインストール可能。ソースコードからビルドする必要はありません。

  • 次数無制限の HUBO — 二次項だけでなく任意次数の高次項をサポート。否定リテラル(~x)をネイティブにサポートしており、 \(\overline{x}\)\(1 - x\) に置き換えることで発生する項数爆発を回避します。

  • GPU 加速 — 内蔵の ABS3 ソルバーが GPU リソースを最大限活用して並列探索を実行します。マルチ GPU にも対応しています。Exhaustive Solver も CUDA GPU を自動利用します。

  • CPU 並列加速 — すべてのソルバーがマルチコア CPU 上でマルチスレッド並列実行されます。

  • 任意精度整数係数 — ビット数無制限の整数係数を扱えます。32 ビット整数から数千桁規模まで、オーバーフローを気にせず計算できます。

  • 3 種類の内蔵ソルバー — Easy Solver(高速ヒューリスティック)、Exhaustive Solver(最適性保証付き完全探索)、ABS3(GPU + CPU ヒューリスティック)を搭載しています。

  • 実験的なサードパーティソルバー連携(PyQBPP のみ) — Fixstars Amplify、D-Wave Ocean(Advantage / Leap Hybrid / Neal / Tabu / Steepest)、dimod ExactSolver、OpenJij、TYTAN-SDK MIKAS、qubovert、Simulated Bifurcation、IBM CPLEX、IBM Qiskit Optimization、Google OR-Tools CP-SAT を統一された Solver.search() プロトコルで呼び出せます。詳細は「実験的なソルバー連携」を参照してください。

  • どこでも実行可能 — Raspberry Pi からノート PC、GPU サーバー、スーパーコンピュータまで対応。amd64(x86_64)および arm64 Linux で利用可能です。

Hi-QUBO ソルバー: Easy Solver, Exhaustive Solver, ABS3 Solver

Easy Solver

QUBO/HUBO に最適化されたヒューリスティックソルバーです。マルチコア CPU 上で QUBO/HUBO モデルの解を探索します。

  • マルチスレッド加速 — マルチコア CPU 上で並列探索を実行します。

  • 任意精度整数係数 — 任意の大きさの整数係数をサポートします。

Exhaustive Solver

マルチコア CPU および CUDA GPU 上で QUBO/HUBO 定式化の全解を列挙します。

  • 最適性保証 — 大域最適解を発見し、その最適性を証明します。

  • マルチスレッド加速 — マルチコア CPU 上で並列探索を実行します。

  • 任意精度整数係数 — 任意の大きさの整数係数をサポートします。

  • GPU 加速 — CUDA GPU が利用可能な場合、GPU ワーカーが CPU スレッドと並行して探索に参加します。128 ビット整数までの係数で GPU 加速が利用可能で、それを超える係数では CPU のみで実行されます。

ABS3 Solver

マルチコア CPU および CUDA GPU を使用するヒューリスティックソルバーです。CPU スレッドと CUDA GPU の両方を使用して QUBO/HUBO インスタンスの解を探索します。

  • 任意精度整数係数 — 任意の大きさの整数係数をサポートします。

  • マルチ GPU スケーリング — Linux ホスト上で検出されたすべての GPU を使用します。128 ビット整数までの係数で GPU 加速が利用可能で、それを超える係数では CPU のみで実行されます。

ABS3 対応 GPU アーキテクチャ

  • sm_80 : NVIDIA A100(Ampere)

  • sm_86 : NVIDIA RTX A6000、GeForce RTX 3090 / 3080 / 3070(Ampere)

  • sm_89 : NVIDIA RTX 6000 Ada、GeForce RTX 4090 / 4080 / 4070(Ada)

  • sm_90 : NVIDIA H100 / H200 / GH200(Hopper)

  • sm_100 : NVIDIA B200 / GB200(Blackwell、データセンター向け)

  • sm_120 : GeForce RTX 5090 / 5080 / 5070(Ti) / 5060(Ti) / 5050、RTX PRO 6000 / 5000 / 4500 / 4000 / 2000 Blackwell(ワークステーション向け)

  • 検証について : 上記アーキテクチャの一部のみが実機で検証済みです。

性能に関する注意

パフォーマンスを最大化するため、算術オーバーフローチェックは省略されています。

ビルド環境

以下の環境を使用して Hi-QUBO をビルドしています。Hi-QUBO は Ubuntu 20.04 に限定されません。Ubuntu 22.04 / 24.04 およびその他の Linux ディストリビューション(CentOS / RHEL 系を含む)でもテスト済みです。

互換性を確保するため、以下のコンポーネントと同じ、またはそれ以降のバージョンを使用してください。

  • オペレーティングシステム : Ubuntu 20.04.6 LTS

  • C++ 標準 : C++17

  • glibc : 2.31

  • コンパイラ : g++ 9.4.0

  • Boost : 1.81.0

  • CUDA : 12.8

Hi-QUBO ライセンス

無料の Trial ライセンス(30 日間、10,000 変数対応)は Hi-QUBO User Portal で取得できます。

Hi-QUBO をインストールした後、qbpp-license -s を実行して当日のサインアップコードを取得し、portal 上で登録すると Trial キーを受け取れます。

ライセンスの有効化方法、ライセンス種別、利用条件の詳細については「License Management」を参照してください。

サードパーティライブラリ

以下のライブラリは Hi-QUBO の共有ライブラリ(qbpp_*.so)にリンクされています。

  • Boost C++ Libraries — Boost Software License, Version 1.0
    https://www.boost.org/LICENSE_1_0.txt

  • xxHash — BSD 2-Clause License, Copyright © Yann Collet
    https://opensource.org/license/bsd-2-clause/

オプションのソルバーバックエンド

Hi-QUBO は外部ソルバーを動的ロードによって呼び出すことができます。

  • C++ : dlopen

  • Python : 遅延 import

これらの外部ソルバーは Hi-QUBO には同梱されません。必要なもののみ個別にインストールしてください。

各パッケージはそれぞれ独自のライセンスで配布されています。

  • Stable(Gurobi) — 複数リリースを経て成熟済みの機能です。

  • Experimental(その他) — 2026.05.07 に追加された新機能であり、API は将来的に変更される可能性があります。

ソルバー

Status

言語

ライセンス

ソース / ドキュメント

Gurobi Optimizer

stable

C++ + Python

プロプライエタリ(アカデミック無償)

https://www.gurobi.com · Gurobi Optimizer の使用方法

Fixstars Amplify

experimental

Python

プロプライエタリ(クラウド SDK)

https://amplify.fixstars.com/

D-Wave Ocean (6 ソルバー: QPU / Hybrid / Neal / Tabu / Steepest / Exact)

experimental

Python

Apache 2.0

https://github.com/dwavesystems/dwave-ocean-sdk

OpenJij (+ jij-cimod)

experimental

Python

Apache 2.0

https://github.com/OpenJij/OpenJij

TYTAN-SDK (MIKASAmpler)

experimental

Python

MIT

https://github.com/tytansdk/tytan

qubovert

experimental

Python

Apache 2.0

https://github.com/jiosue/qubovert

Simulated Bifurcation

experimental

Python

MIT

https://github.com/bqth29/simulated-bifurcation-algorithm

IBM CPLEX

experimental

Python

プロプライエタリ(ライセンス必要)

https://www.ibm.com/products/ilog-cplex-optimization-studio

IBM Qiskit Optimization (+ qiskit-algorithms)

experimental

Python

Apache 2.0

https://github.com/Qiskit/qiskit

Google OR-Tools CP-SAT

experimental

Python

Apache 2.0

https://github.com/google/or-tools

PyTorch(TYTAN-SDK / Simulated Bifurcation の推移依存)

Python

BSD 3-Clause

https://pytorch.org/


利用規約

利用規約につきましては、 Hi-QUBOのホームページ をご確認ください。