格安MCUを集めて並列計算
https://youtu.be/HRfbQJ6FdF0?si=Lotleqy9GbAx1xLV
Bitluni氏がM.2 SSDのような外観を持つ160コアのRISC-Vスーパーコンピューターを自作する過程
プロジェクトの設計と進化
着想: このプロジェクトは、以前製作した256コアのクラスターから進化しました。その時の大きな教訓は、壊れやすいピンヘッダーをやめ、より堅牢で高密度な接続方法へ移行する必要があることでした。
新設計: 新しい設計では、手頃な価格と高密度を理由にM.2エッジコネクタが採用されました。システムは、10個の垂直M.2スロットを持つメインボードで構成されています。各スロットには、16個のRISC-V MCU(CH32V003チップ)を搭載したコンパクトなモジュールが挿入されます。
MCUモジュール: 各モジュールは、わずか22x26mmの非常に複雑な4層基板です。この小さな基板に16個のMCU、64個の部品、そして数百本もの微細な配線が詰め込まれています。
製作過程は、広範囲なトラブルシューティングを必要とする一連の困難な問題に見舞われました。
1. 手作業での組み立て: 必要な垂直M.2コネクタは高価なリール単位でしか入手できず、個人で調達して手ではんだ付けする必要がありました。ピンがはんだごての先が届かない位置にあったため、こての先にワイヤーを巻きつけてはんだ付けするという独自の方法を編み出しました。
2. プログラミングの失敗: 当初のプログラマーボードは、各MCUに個別に電力を供給してプログラムする設計でしたが、MCUのボディダイオードを経由して電流が漏れ、ランダムに発熱する問題が発生しました。解決策は、全てのMCUに一度に電力を供給し、同時にプログラムすることでした。
3. 電力不足(ブラウンアウト): レイトレーシングのデモを実行した際、多くのMCUのLEDが同時に点灯すると消費電流が過大になり、システムがクラッシュしました。これは、GPIOのモードを「プッシュプル」から、はるかに消費電力の少ない内蔵の「プルアップ抵抗」を使うモードに変更することで解決しました。
4. 応答しないMCU: 各モジュールの最後の3つのMCUが応答しない問題が発生しました。これは、速度と電流に制限がある特定のGPIOピン(C13-15)を使用したことが原因でした。未使用の別のGPIOに配線を変更する基板の改造が必要でした。
5. データ破損: レイトレーサーが間違った色を表示する問題は、通信バス上のデータ破損が原因でした。オープンドレインバスに使用されていたプルアップ抵抗が弱すぎて信号の立ち上がりが遅くなっていたためです。最終的には、ホストコンピュータ側でわずかな遅延(ディレイ)を追加して信号を安定させるという妥協案で解決しました。
性能と結果
160コアのクラスターは完全に機能しました。
レイトレーシング: クラスターのテストのためにレイトレーシングのベンチマークが実装されました。動作はしたものの、性能はシリアル通信インターフェース(115キロビット/秒で動作)がボトルネックとなり、16コアのモジュール1枚で実行するのと変わらないように見えました。
ハッシュ計算(SHA-256): SHA-256のハッシュ計算ベンチマークでは、160個のMCUを合わせた性能は、制作者の8コアデスクトップCPUを上回り、しかも消費電力は4ワット未満と非常に効率的でした。