gccで simd mmx sse sse2

ここでは、「gccで simd mmx sse sse2」 に関する記事を紹介しています。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
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.wakayama-u.ac.jp/~chen/gccxmm.htm


【C++】高速化手法【SSE】
http://pc11.2ch.net/test/read.cgi/tech/1130349336/
hibari.2ch.net/test/read.cgi/tech/1130349336/
Cマガジン2005年10月号に「最適化コンパイラの効率的なパフォーマンス向上」という特別記事がある。
http://www.cmagazine.jp/contents/200510.html
www.jbook.co.jp/p/p.aspx/1847006/s/
Auto-vectorization in GCC
http://gcc.gnu.org/projects/tree-ssa/vectorization.html
MMX SSE 3D NOW!のプログラミング
http://pc11.2ch.net/test/read.cgi/tech/1085749218/
logsoku.com/thread/pc12.2ch.net/tech/1085749218/

821 名前: デフォルトの名無しさん 投稿日:2009/12/08(火) 12:02:31

イントリンシック命令の解説がなかなか見つからず探し回ってたら
インテルコンパイラの解説がよい感じだった

インテル(R) C++ コンパイラー・ユーザー・リファレンス・ガイド
ttp://www.issp.u-tokyo.ac.jp/super/manual/system-b/Intel_Cdoc110/main_cls/index.htm

ヘルプファイルがあるらしいので探したら

日本語翻訳版ユーザー・ドキュメントのインストールについて (Windows* OS)
http://www.intel.com/software/products/compilers/docs/Intel_translated_11_documents_Windows.htm

ファイルが見つからない…とファイル名で検索したら以下のところで見つけた。

インテル(R) C++ コンパイラ Windows 版 日本語マニュアル 無料ダウンロードサービス
ttp://www.xlsoft.com/jp/products/download/intelccmanualdown.html


日本語技術資料のダウンロード
http://www.intel.co.jp/jp/download/index.htm Intel系CPUの資料が大量においてある。以下はその中から抜粋。

AP-943 インテル潤・アーキテクチャー (IA) 浮動小数点ユニット (FPU)、ストリーミング SIMD拡張命令 (SSE)、ストリーミング SIMD 拡張命令 2 (SSE2) を使用した浮動小数点算術演算
http://download.intel.com/jp/developer/jpdoc/w_fp_precision_j.pdf 

AP-941 ストリーミング SIMD 拡張命令 2 (SSE2) を使用した大数の乗算の実行
http://download.intel.com/jp/developer/jpdoc/w_big_mul_j.pdf 多倍長乗算のSIMD化の話

AP-803 Increasing the Accuracy of the Results from the Reciprocal and Reciprocal Square Root Instructions using the Newton-Raphson Method
http://cache-www.intel.com/cd/00/00/04/10/41007_nrmethod.pdf 『ニュートン・ラフソン法を使用した逆数命令および逆数の平方根命令の結果の精度の向上』資料番号 243637
http://softwarecommunity.intel.com/articles/eng/1818.htm の

IA-32 インテル潤・アーキテクチャソフトウェア・デベロッパーズ・マニュアル上巻
http://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol1_Online_i.pdf にMMXやSSEの各テクノロジでのレジスタや命令セットの説明や、それぞれのテクノロジの間の互換性がまとまっている。有用。
IA-32 インテル潤・アーキテクチャソフトウェア・デベロッパーズ・マニュアル中巻
http://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol2B_i.pdf の「機能的に同等のインテル潤・/C++ コンパイラ組み込み関数」の章にSIMD命令と機能的に同等なコンパイラの組み込み関数が列挙されている。

Extending the World’s Most Popular Processor Architecture
http://cache-www.intel.com/cd/00/00/32/26/322663_322663.pdf SSE4関連のドキュメント
移転した模様:download.intel.com/technology/architecture/new-instructions-paper.pdf


SSE2による浮動小数演算の仕組みと検証(CodeZine)
http://codezine.jp/a/article/aid/458.aspx
http://codezine.jp/a/article/aid/458.aspx?p=2 には、各CPUが持っているSIMD命令の種類の一覧表、SSE2のいくつかの命令セットが紹介さいていて、簡単なコード例が載っている。ただし性能的にFPUとの差が出るところまでは行かなかった模様。


x86拡張命令一覧表(Programming Lab)
http://krypton1.at.infoseek.co.jp/x86/x86ext.htm うまく分類され、要領よくまとまっている。やりたい処理から命令を探すことができて便利。
移転のご連絡をいただきました(2010 11/18追記):
http://krypton.pv.land.to/x86/x86ext.htm

SIMD演算テクニック(Programming Lab)
http://krypton1.at.infoseek.co.jp/x86/simdcalc.htm こちらには、SIMDの環境でのレジスタの初期化や定数の代入、いくつかの四則演算の例が載っている。整数除算も。有用。
移転のご連絡をいただきました(2010 11/18追記):
http://krypton.pv.land.to/x86/simdcalc.htm

AVX拡張命令一覧表(Programming Lab)
http://krypton.pv.land.to/x86/x86avx.htm

- SSEによる単精度の数値積分の高速化 -
http://yosirin9.hp.infoseek.co.jp/contents/no1/paper_no1_v2.htm rcpps命令の使用例あり。また、ソースコードや性能評価が書いてある。



2. MMX
http://homepage1.nifty.com/herumi/adv/adv10.html 読み込み・書き込み、加減、乗算、積和演算、比較、ビット演算、パック・アンパック演算などに付いて解説してある。
MMXテクノロジ最適化テクニック』のアンパック演算の解説にはいくつか誤りがあるらしい。

4. SSE
http://homepage1.nifty.com/herumi/adv/adv50.html 読み込み・書き込み、四則演算、比較→マスク、比較→フラグ、逆数、平方根、最大最小、型変換、ビット演算、パック演算、シャッフル演算等について解説。逆数や逆数平方根の近似式 についての解説も。

6. SSE2
http://homepage1.nifty.com/herumi/adv/adv52.html 命名規則を括り出したうえで、データ移動や型変換命令を説明してあってコンパクト。


SSE Performance Programming Apple のサイト。

8.2 SIMD並列化 COINSコンパイラ・インフラストラクチャより

SIMD Programming on x86 東京大学/国立天文台似鳥啓吾氏。4x4行列転置の例がある
こちらに移転された模様です:SIMD Programming on x86

行列の積とかsseでやってみた。 4x4行列積のSSE版。Delphi
GCC: CPU に関する最適化オプション gcc3.0系以降、x86対象(-march、-mcpu、-mtune)

gcc -march=nativeが生成する最適化オプション -march=nativeが生成するオプションはCPUごとに異なる。いくつかのCPUでの実験レポート。gcc 4.2以降対象。

マニュアルにないgccのコマンドラインオプションの調べ方 $gcc -v --helpすることによってマニュアルにないオプションが見つかることもあるとのこと。












アセンブラ画像処理プログラミング―SIMDによる処理の高速化IA-32SIMDリファレンスブック 上 (1)マルチコアCPUのための並列プログラミング―並列処理&マルチスレッド入門IA-32SIMDリファレンスブック 下 (3)インテル スレッディング・ビルディング・ブロック ―マルチコア時代のC++並列プログラミング
MMXテクノロジオフィシャルガイド (SOFTBANK BOOKS)MMXテクノロジ最適化テクニック (Ascii books)



スポンサーサイト
コメント
この記事へのコメント
Programming Lab は移転しました。
移転先URL:http://krypton.pv.land.to/
2010/11/18(木) 00:44 | URL | Krypton #GCA3nAmE[ 編集]
ご連絡ありがとうございます。
リンク貼り替えました。
2010/11/18(木) 11:29 | URL | tekitobibourokuの中のひと #-[ 編集]
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://tekitobibouroku.blog42.fc2.com/tb.php/10-15c0b542
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
管理人の承認後に表示されます
2016/12/04(日) |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。