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?

IntelのIntrinsic関数をmilk-V Duoにポートするためのテストフレームワークを作る(1)

Last updated at Posted at 2024-02-04

この記事では、IntelのIntrinsic関数をmilk-V Duoにポートするためのテストフレームワークを作ります。

今回は

__m256d _mm256_add_pd (__m256d a, __m256d b)

のIntel Intrinsic関数をmilk-Vにポートします。以下のドキュメントを参考にします。

上のIntel Intrinsic関数をOpenPOWERにポートしたソースコードが以下のようになります。

ソースコード(1)

typedef double __m256d __attribute__ ((__vector_size__ (32), __may_alias__));
extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__,
__artificial__))
_mm256_add_pd (__m256d __A, __m256d __B)
{
    return (__m256d) ((__v4df)__A + (__v4df)__B);
}

このポートしたコードはRISC-Vでも使えると思います。

milk-V Duoのセットアップ方法は以下のリンク。

テストフレームワークは、ソースコード(1)の、Intel側のIntrinsic関数に__Aと__Bにランダムに生成した値を入力し、RISC-V側の__Aと__BにIntel側と同じ値を入力し、帰ってきた値が同じであることを確認します。このようにして、ポートしたソースコードが正確であることを担保します。

milk-V DuoでC言語を実行する方法は以下のリンク

まずは、__m256dの値をランダムに生成するモジュールを作成する必要があります。

このサイトを参照すれば、__m256dの値を生成するには、_mm256_set_ps(float, float, float, float, float, float, float, float) のIntrinsic関数を使用する必要があるようです。
ただし、ランダムに生成した値をネットワークに乗せて伝達する必要があるため、テキストなどに変換するモジュールなども作る必要があります。
また、テストフレームワークで使うネットワークモジュールはRISC-Vなどでも使える必要があります。よって、C言語がいいかもしれません。ソケットプログラミングでいけるでしょう。
使うネットワークはセキュリティ上の理由から有線LANがいいでしょう。
UDPとTCPどちらを使うかは悩みどころです。
ネットワークトポロジは以下のようになります。

     +-------+     +---------------+      +-----------+
     | Intel |-----|Central Server |------|  RISC-V   |
     +-------+     +---------------+      +-----------|

Central serverは今の所Intelになりそうです。Intrinsic関数を実行するIntelとは分離する必要がないように思えます。今のところはIntelとセントラルサーバは同じマシンの中でもいいかもしれません。ただ、アプリケーション的には分離したほうがいいでしょう。RISC-Vも、エミュレーションなどを使ってもいいかもしれません。

https://github.com/um4ng-tiw/Peer-to-Peer-Socket-C/tree/main
上のプログラムを参考に作ります。

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?