3
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?

Scalable Matrix Extension (SME)Advent Calendar 2024

Day 9

SME日記その8 __arm_new("za")について調べる

Posted at

ArmのScalable Matrix Extension (SME)を試すで示されているSMEによる行列乗算を実行するには,__arm_new("za")に相応する前処理・後処理を行う必要があるので,__arm_new("za")について,ドキュメントを読んでみました.

SMEシリーズ

__arm_new("za")に関するドキュメント

__arm_new

Supported Syntaxes

  • GNU
  • C++11
  • C23
  • __declspec

Keyword

  • #pragma

HLSL Annotation

#pragma clang attribute

__arm_new

The __arm_new keyword applies to function declarations and specifies that the function will create a new scope for state S.

The attribute takes string arguments to instruct the compiler for which state to create new scope. The supported states for S are:

  • "za" for Matrix Storage (requires SME)

For state "za", this means that:

  • the function requires that the target processor implements the Scalable Matrix Extension (SME).
  • the function will commit any lazily saved ZA data.
  • the function will create a new ZA context and enable PSTATE.ZA.
  • the function will disable PSTATE.ZA (by setting it to 0) before returning.

For __arm_new("za") functions Clang will set up the ZA context automatically on entry to the function and disable it before returning. For example, if ZA is in a dormant state Clang will generate the code to commit a lazy-save and set up a new ZA state before executing user code.

__arm_new キーワードは関数宣言に適用され、関数が状態 S の新しいスコープを作成することを指定します。

この属性は、どの状態に対して新しいスコープを作成するかをコンパイラに指示する文字列引数を取ります。S でサポートされている状態は次のとおりです。

  • マトリックス ストレージの場合は "za" (SME が必要)

状態 "za" の場合、次のようになります。

  • 関数では、ターゲット プロセッサが Scalable Matrix Extension (SME) を実装している必要があります。
  • 関数は、遅延保存された ZA データをコミットします。
  • 関数は新しい ZA コンテキストを作成し、PSTATE.ZA を有効にします。
  • 関数は、戻る前に PSTATE.ZA を無効にします (0 に設定)。

__arm_new("za") 関数の場合、Clang は関数に入るときに ZA コンテキストを自動的に設定し、戻る前に無効にします。たとえば、ZA が休止状態にある場合、Clang は遅延保存をコミットし、ユーザー コードを実行する前に新しい ZA 状態を設定するためのコードを生成します。

考察と将来課題

そうすると,次の処理それぞれをどのように行うかを調べれば良さそうです.

  • 関数は、遅延保存された ZA データをコミットします。
  • 関数は新しい ZA コンテキストを作成し、PSTATE.ZA を有効にします。
  • 関数は、戻る前に PSTATE.ZA を無効にします (0 に設定)。

次にこれらについて調べていきます.

3
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
3
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?