タグ

AVXに関するy_uukiのブックマーク (7)

  • AVX-512(フォーマット)詳解

    3. • 32個の512 bit SIMDレジスタ • zmm0, zmm1, ..., zmm31 • 一つのSIMDレジスタには整数や小数が複数入る • double(64bit) x 8, qword(64bit) x 8, float(32bit) x 16 • dword(32bit) x 16, word(16bit) x 32, byte(8bit) x 64など • 一部の整数は符号あり・符号無しを選択可能 • 下位256bitは従来のymmレジスタとしてアクセス可能 • その下位128bitは従来のxmmレジスタとしてアクセス可能 AVX-512 zmm0 ymm0 xmm0 63 31 15 0 3 / 29 4. • 整数系 ; vp<演算><要素の型> dst, src1, src2 • d(dword x 32)として要素ごとにzmm2 = zmm1 + zmm0

    AVX-512(フォーマット)詳解
  • SIMDの組み込み関数のことはじめ - koturnの日記

    はじめに 現代のCPUではSIMD(Single Instruction Multiple Data)命令を利用することができる. SIMD命令とはその名の通り,ひとつの命令で複数のデータを処理するものである. Intel系のCPUでは,MMX/SSE/AVX/AVX-512といったSIMD命令が利用可能であり,ARM CPUではNEONというSIMD命令が用意されている. 各SIMDとSIMD用のレジスタの対応関係は以下のようになる. 項目 利用可能レジスタ MMX 64bit のMMレジスタ SSE 128bit のXMMレジスタ AVX 256bit のYMMレジシタ AVX-512 512bit のZMMレジシタ ARM NEON 64bitのD(Double-Word)レジスタおよび128bitのQ(Quad-Word)レジスタ これらのレジスタを用いて,例えば4つのint型を一

    SIMDの組み込み関数のことはじめ - koturnの日記
  • AVXとAVX-512のインタリーブ - koturnの日記

    はじめに 前回の記事では,Intel系のCPUとARM系のCPUSIMD命令紹介した. 記事中のサンプルコードで,画像の2倍の拡大を行うコードがあり,その中でインタリーブを行っていた. SSEであれば,単純にunpack命令を実行するだけでよかった. 簡単なサンプルコードと出力結果は以下の通り. // $ g++ -std=gnu++14 -march=native main.cpp -o main #include <iostream> #ifdef _MSC_VER # include <intrin.h> #else # include <x86intrin.h> #endif // _MSC_VER static inline void showAVX128(const __m128i& v128) noexcept { alignas(alignof(__m128i)) uns

    AVXとAVX-512のインタリーブ - koturnの日記
  • OpenCL on the CPU: AVX and SSE - StreamHPC

    Our Services and ProductsWe are a software house that writes extremely fast code for the world's most demanding companies. Software Development – From architecture to delivery, making fast softwareDevelop Fast SoftwareMaking the release version of prototype codeMaking CUDA-code work on AMD hardware (HIP)Porting CUDA to OpenCLTraining – From crash-course to full in-house trainings1-day Crash Course

    OpenCL on the CPU: AVX and SSE - StreamHPC
  • インテル® コンパイラーによる AVX 最適化入門: 第1回 AVX とは | iSUS

    マスク付きロード命令およびストア命令の追加 vmaskmov はマスク付きのロードまたはストアを行う命令です。以下のような条件分岐のあるプログラムにおいて、コンパイラーは b[i] へのアクセスを安全に行うことができるかどうか(すなわち、b[i] が常に参照可能なメモリを指しているか)判断不可能なため、従来は自動ベクトル化を断念するか、その部分だけスカラーのコードで(非効率的に)実行していました。 マスクつきロード命令により、b[i] へのメモリーアクセスを a[i]>0 の条件が真の時にだけベクトル実行することが可能になり、自動ベクトル化においても効率よく実行することができるようになりました。 void foo(float *restrict a, float *b, int n) { int i; for(i=0; i<n; i++){ if (a[i]>0) { a[i] += b[

    インテル® コンパイラーによる AVX 最適化入門: 第1回 AVX とは | iSUS
    y_uuki
    y_uuki 2011/10/26
  • Intel AVX | ホイール欲しい ハンドル欲しい

    Intel の新しい拡張命令セットです。基的には SSE と同じようなもの。 ・Intel AVX その特徴は ・256bit になった ・積和命令 ・ソース非破壊の 3オペランド命令 ・命令 Prefix の圧縮 ・メモリアライメント制限の緩和 など。 CPU core 数が増えて性能が向上するように、演算並列度を上げるために SIMD で 扱える bit 幅が拡張されるようです。 x64 の 64bit RAX~ レジスタのように、128bit XMM レジスタが 256bit YMM レジスタに拡張されています。 256bit = 32bit×8 なので float×8個の演算を一度に行うことができます。 とはいえ GPU の Shader でも xyzw までで、8要素の演算には普段あまり馴染みが ありません。むしろ 256bit = 64bit×4 と、double で一度に

    y_uuki
    y_uuki 2011/10/24
    [Lab]
  • Instruction Set Architecture

    Using Intel.com Search You can easily search the entire Intel.com site in several ways. Brand Name: Core i9 Document Number: 123456 Code Name: Emerald Rapids Special Operators: “Ice Lake”, Ice AND Lake, Ice OR Lake, Ice* Quick Links You can also try the quick links below to see results for most popular searches. Product Information Support Drivers & Software

    Instruction Set Architecture
  • 1