0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LinuxのIntel x86のIntrinsic関数をRISC-VやARM用にポートする(11)

Last updated at Posted at 2024-10-21

今までIntelからRISC-VなどのプラットフォームにLinuxアプリケーションを移植する議論を行ってきたが、実は、すべての最適化及び、移植作業において、「処理の等価性チェック」のフレームワークが必要なのではという結論に達した。
すべての最適化において、処理は高速化してほしいが、多くの場合処理内容はほんの僅かでも変わってほしくない。処理内容が変わったら深刻なバグやエラーや事故を引き起こす。
よって、コンパイラ設計者としては、処理の速度より、処理の等価性を優先して設計することとなる。よって、思い切った最適化は行えなくなり、ソフトウェアは年月を経るごとに重くなっていく。
従来はムーアの法則などにより、ソフトウェアは重くなっても処理を速くすることができたが、今後は期待できるかどうかはわからない。
それはIntelからRISC-Vにポートする作業においても同じである。ポートする手法としては、自動ベクトル化を使う方法や、Universal IntrinsicやLinux on Power porting guideのように特殊なラップ構造を取ってやる方法などがあるが、全てにおいて共通するのは、処理が等価である必要性である。処理が等価でないと、ポートしたことにはならない。
僕が考えている処理の等価性チェックは、数学的な手法ではなく、2つの等価性を比較するモジュールにおいて、入力値をある程度ランダムに決めてやり、2つのモジュールに入力して、出力が同じであることを確認する方法である。
ネットワーク接続などは使用せず、ファイル転送やHDD、USBメモリの差し替えなどによって、データを転送する。よってネットワークで相互接続する必要はない。
ある意味力任せに等価性チェックする手法である。
つまるところ今まで異なるCPU間でポートや最適化が難しかったのは等価性の保証が難しかったからで、等価性の保証が簡単になればポートも簡単になる可能性がある。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?