Show HN: Npunlock – Intel NPUでカスタムCカーネルを実行
Show HN: Npunlock – Run custom C kernels for Intel NPUs
Npunlockは、Intel NPUのSHAVEコア向けにカスタムCカーネルを実行可能にするツールです。Intel NPUはグラフレベルのプログラミングのみを公開していますが、NpunlockはカスタムCコードから実行可能なNPUカーネルへのパスを再構築します。現在の実装はWindows x64のMeteor Lake / NPU3720で検証済みです。最新のブレークスルーとして、ネイティブグラフで独立したFP32-unaryおよびFP16-binaryカスタムブランチを実行可能になり、明示的なACT-groupプリフライトがコンパイラのブランチ再編成を処理します。FP32 GELUの例では、CカーネルをPythonに埋め込み、NPUグラフに配置し、NumPyの結果と比較しています。MoviToolsツールチェーンを使用すると、を含めずにほとんどの標準的なlibm関数をカーネルで利用できます。Npunlockは、Windows x64、Meteor Lake / NPU3720、Python 3.10以降、CMake 3.24以降、およびMoviToolsツールチェーンを必要とします。OpenVINOは必須ではありませんが、NpunlockはOpenVINO形式のIRを出力します。カスタムCコンパイルには、Intel/Movidius MoviToolsが必要です。NpunlockはApache License 2.0でライセンスされていますが、MoviToolsは外部の独自依存関係です。
- Npunlockが公開され、Intel NPUのSHAVEコア向けにカスタムCカーネルを実行可能にする経路を再構築した。Intel NPUは本来グラフレベルのプログラミングしか公開していない。
- ネイティブグラフ上で独立したFP32-unaryおよびFP16-binaryのカスタムブランチ実行に対応し、明示的なACT-groupプリフライトでコンパイラのブランチ再編成を処理するブレークスルーを達成。
- 対応環境はWindows x64のMeteor Lake / NPU3720で検証済み。Python 3.10以降、CMake 3.24以降、Intel/Movidius MoviToolsツールチェーンを要求し、MoviToolsは外部の独自依存。
- OpenVINOは必須ではないが、NpunlockはOpenVINO形式のIRを出力する。ライセンスはApache License 2.0。
Intel NPUのSHAVEコアに独自Cカーネルを流し込めるようにした点は、ベンダー純正ツールチェーン(MoviTools)の外側にサードパーティの開発経路が開くことを意味する。エッジAI推論の性能最適化余地が広がる一方、実装はMeteor Lake/Win x64限定でMoviToolsという独自依存が残るため、即座に商用インパクトが出る話ではない。ただしNPUの下位レイヤが再び開放されていく流れは、AI PC向けNPUの差別化軸がツールチェーン側に移る可能性を示すシグナルとして注視したい。