CuoptとHighs最新版(1.11.0)でCUPDLPのWarmStartがサポートされたようです。実装を見ると、CuoptとHighs実装は、共にCOPT版のCUPDLPを基礎にしているものの同じではないようです。
Cuoptの方は、RMMを使っています。GPUを使ったボトルネックは、メインGPUメモリの帯域問題の他に、CPUとの通信速度が極めて遅いことがあります。特に小規模のLPの場合、一回の計算サイクルが短く、相対的にCPUとの通信速度がボトルネックになってしまいます。反対に、大規模LPでは、計算サイクルが長く相対的に問題にはなりえません。RMMを使えば小規模LP時の問題を回避できるのですが、残念ながらRMMは、Windowsではサポートされていません。恐らくはデバイスドライバ関連の問題だと思うので、多分、今後も変わることはないでしょう。。従い、Windowsでは、Cuopt版をそのまま使用することは出来ないと思います。この辺はサーバAPIとして使ってくれ、というスタンスかもしれません。また、SPMV改善は未だなされていないようです。
SPMV改善がなされれば、COPT版と明確な差異となる筈です。こちらは、メインGPUメモリの帯域問題を改善するので、大規模であればあるほど、その寄与度合いは上がるはずです。なので、NVIDAも本気で取り組むはずです。Mittleman Benchmarkに現れると思いますので、結果を待ちたいと思います。
とりあえず、HIGHSは、RMMの問題はないと思いますので、HIGHSをそのままポートしたいと思います。また、近い将来Cuopt版でSPMV改善がなされると思うのでそちらもWatchして行きたいと思います。
0 件のコメント:
コメントを投稿