タグ

SIMDに関するtekimenのブックマーク (5)

  • x86-64機械語入門 AVX/AVX-512編

    この記事はx86-64機械語入門の続きです。SSE/AVX/AVX-512の紹介と、それに伴うVEXプリフィックス、EVEXプリフィックスの紹介を行います。 SSE x86-64で単精度・倍精度の浮動小数点数を扱うには、SSE (Streaming SIMD Extensions) と呼ばれる機能(命令セットとレジスター)を使います。元々は命令セット拡張でしたが、x86-64ではSSE2が常に利用可能なので、標準で使える機能だと思って構いません。 SSEでは128ビット幅のレジスターを16(32ビットモードでは8)利用できます。データ型は無印SSEでは単精度浮動小数点数(32ビット幅)が、SSE2以降では倍精度浮動小数点数(64ビット幅)や整数が使えます。 SSEの128ビット幅のレジスターはXMMレジスターと呼ばれ、xmm0, xmm1, ..., xmm15のように番号をつけて呼ば

    x86-64機械語入門 AVX/AVX-512編
  • SIMDの基礎と関数の実装例

    配信講義 計算科学技術特論A(2023)(2023年4月13日~7月27日・オンライン) 第11回 6月29日 SIMDの基礎と関数の実装例 https://www.r-ccs.riken.jp/outreach/schools/20230413-1/

    SIMDの基礎と関数の実装例
  • Armの命令セットとNEON拡張 - Qiita

    このアドベントカレンダーのスコープ、対象読者について この記事はひとりNEONアドベントカレンダー2020 1日目の記事です。 目次にも書きましたが、あくまで手島個人の知識の範囲内で書くので、すべて公開情報がもとになっています。 個人で趣味の範囲で書くので、筆者の勤務先とは無関係です 一人advent calendarなので、省エネモードがモットーになってます。悪しからず。 Arm v8.4、SVEと行ったArmの現在進行形の拡張に関しては実機が手元に無いこともあって、あまり深入りはしない予定 実際のコードはアセンブラではなく、GCCのintrinsicをもとに解説する C/C++のコードからNEON命令を使うコードを解説するので、それが読めるぐらいの読者を想定。 日のトピック いきなり「NEONとは」、と飛び込んでもわからない人が居ると思うので、第1日目は概要を説明しようと思います。

    Armの命令セットとNEON拡張 - Qiita
  • AVX/AVX2による整数のShuffleとPermute - Qiita

    Zen2,Zen3のメモリからのshuffleはUopsが1です.他は2になります. 説明 floatとは異なり,1つのレジスタの値を,128ビットの壁を超えずにintの整数を並べ替えます. floatの場合のpermute_psと同じ挙動をするため,immによる指定によってXMMとYMMの並びは同じになります. 同様に_MM_SHUFFLEでの指定が便利です. 以下にサンプルコードを示します. void test_shuffle_epi32() { __m256i a, d; a = _mm256_setr_epi32(0, 1, 2, 3, 4, 5, 6, 7); print_m256i_int(a); printf("\n"); d = _mm256_shuffle_epi32(a, _MM_SHUFFLE(3, 2, 1, 0)); print_m256i_int(d); d =

    AVX/AVX2による整数のShuffleとPermute - Qiita
  • 高速UTF-8バリデーションの世界 - Qiita

    参照: http://www.unicode.org/versions/Unicode6.0.0/ch03.pdf の "Table 3-7. Well-Formed UTF-8 Byte Sequences" アルゴリズムを理解する上で重要なUTF-8の特徴について述べます。 1コードポイントは1-4バイトのシーケンスで表現される 上位ニブル(1バイト8ビットのうち、上位4ビット)を確認することでシーケンスの情報が得られる そのバイトがシーケンス先頭バイトかどうかわかる もしそれがシーケンス先頭バイトだったなら、何バイトのシーケンスかわかる 先頭でないバイトは基的に0x80..0xBFの範囲が許容されているが、何箇所か例外があるのでそれもバリデーションしなければならない 例外の箇所は表では太字で示した 例えば、表を見て分かるように、先頭バイトが0xE0のとき2バイト目は0xA0..0x

    高速UTF-8バリデーションの世界 - Qiita
  • 1