タグ

optimizationとsimdに関するmrknのブックマーク (3)

  • Using vector instructions in GCC

    6 MMX拡張機能 MMX拡張機能はPentium-MMX以降のX86系CPUに搭載されており,それより旧式のCPU(i386, i486, Pentium, PentiumProなど)では利用できません.MMX機能拡張がサポートするベクトル型はv8qi, v4hi, v2si, v1diとv4hiの別名であるmm_tです.それは全部64ビットのデータです. 6.1 MMX拡張機能を利用する時の前処理と後処理 #include <xmm.h> void begin_mmx(I87stack *pstk); void end_mmx(I87stack *pstk); MMX拡張機能と64ビットのベクトル型のデータを用いるSSE,SSE2の拡張機能を利用する前に,begin_mmx() を呼び出す必要があります.MMX等の拡張機能を利用した後,(SSE,SSE2ではなく,いわゆるX87コード)

  • gccで simd mmx sse sse2

    20101118追記: Programming Labさんから移転のご連絡を受けましたのでリンク貼り替えました。 ついでにメンテも。リンク切れは可能な限り移転先(もしくはWeb Archive)を追いかけました。 PDFもWeb Archiveに収録されたりするのな。なんとなく意外。 gccもVer4くらいから自動ベクトル化に対応。コンパイルオプションとして-O2などと同時に-ftree-vectorizeをつける。 gcc-4.x での SIMD 命令サポート http://jr0bak.homelinux.net/~imai/pukiwiki/pukiwiki.php?Linux%2Fmisc%2Fgcc-4.x%20%A4%C7%A4%CE%20SIMD%20%B1%E9%BB%BB%A5%B5%A5%DD%A1%BC%A5%C8 GCCの機能拡張とベクトル演算 http://www

  • SIMD演算 - MUGI COM

    C言語でSSEやSSE2を使う方法について。ポイントがいくつかあります。 xmmintrin.hやemmintrin.hをインクルードする SSE命令のみならxmmintrin.h、SSE2命令も使うならemmintrin.h SIMD命令でアクセスするメモリは16バイトアラインメントにする gccの場合、_mm_malloc関数を使えばよい。 MMX命令はAMDCPUでは使えない Pentium4以降に限定されますが、SSEやSSE2を使うのが良いでしょう。 これらを踏まえて、画像の各ピクセルのRGB値を反転させる例を示します。 各ピクセルは8bitのRGB値が並んでいるものとします。8bitの整数演算を行うので、8bit計算を16個並列で行うSSE2命令を使用します。 最初はSSE2のインクルードファイル。 #include <emmintrin.h> つづいて16バイトアラインメン

    SIMD演算 - MUGI COM
  • 1