Enviar búsqueda
Cargar
X86opti01 nothingcosmos
•
1 recomendación
•
1,975 vistas
N
nothingcosmos
Seguir
X86/X64最適化勉強会での紹介資料 コンパイラ系の簡単な紹介
Leer menos
Leer más
Denunciar
Compartir
Denunciar
Compartir
1 de 22
Descargar ahora
Descargar para leer sin conexión
Recomendados
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
sandai
【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門
sandai
【学習メモ#5th】12ステップで作る組込みOS自作入門
【学習メモ#5th】12ステップで作る組込みOS自作入門
sandai
Recomendados
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
sandai
【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門
sandai
【学習メモ#5th】12ステップで作る組込みOS自作入門
【学習メモ#5th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門
sandai
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
Hiro Yoshioka
Lithium Labo #1
Lithium Labo #1
Yusuke Ando
PHP buildpackでhackとphalconが動いた件について
PHP buildpackでhackとphalconが動いた件について
健治郎 安井
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSP
NSaitoNmiri
Ssaw08 0617
Ssaw08 0617
Atsushi Tadokoro
あるコンテキストスイッチの話
あるコンテキストスイッチの話
nullnilaki
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
Koji Shinkubo
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
do_aki
PHP AST 徹底解説
PHP AST 徹底解説
do_aki
Buffer overflow
Buffer overflow
ionis111
OPcache の最適化器の今
OPcache の最適化器の今
y-uti
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ
Kazuki Onishi
今、最も勢いのあるWebフレームワーク「fuel php」
今、最も勢いのあるWebフレームワーク「fuel php」
Soudai Sone
php-src の歩き方
php-src の歩き方
do_aki
NetBeansではじめる FuelPHP
NetBeansではじめる FuelPHP
Junichi Yamamoto
Kanazawa.js.Next
Kanazawa.js.Next
dynamis
PHPとシグナル、その裏側
PHPとシグナル、その裏側
do_aki
Stack Buffer OverFlow
Stack Buffer OverFlow
sounakano
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
hiroshi oshiba
x86x64 SSE4.2 POPCNT
x86x64 SSE4.2 POPCNT
takesako
Popcntによるハミング距離計算
Popcntによるハミング距離計算
Norishige Fukushima
Más contenido relacionado
La actualidad más candente
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門
sandai
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
Hiro Yoshioka
Lithium Labo #1
Lithium Labo #1
Yusuke Ando
PHP buildpackでhackとphalconが動いた件について
PHP buildpackでhackとphalconが動いた件について
健治郎 安井
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSP
NSaitoNmiri
Ssaw08 0617
Ssaw08 0617
Atsushi Tadokoro
あるコンテキストスイッチの話
あるコンテキストスイッチの話
nullnilaki
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
Koji Shinkubo
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
do_aki
PHP AST 徹底解説
PHP AST 徹底解説
do_aki
Buffer overflow
Buffer overflow
ionis111
OPcache の最適化器の今
OPcache の最適化器の今
y-uti
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ
Kazuki Onishi
今、最も勢いのあるWebフレームワーク「fuel php」
今、最も勢いのあるWebフレームワーク「fuel php」
Soudai Sone
php-src の歩き方
php-src の歩き方
do_aki
NetBeansではじめる FuelPHP
NetBeansではじめる FuelPHP
Junichi Yamamoto
Kanazawa.js.Next
Kanazawa.js.Next
dynamis
PHPとシグナル、その裏側
PHPとシグナル、その裏側
do_aki
Stack Buffer OverFlow
Stack Buffer OverFlow
sounakano
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
hiroshi oshiba
La actualidad más candente
(20)
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
Lithium Labo #1
Lithium Labo #1
PHP buildpackでhackとphalconが動いた件について
PHP buildpackでhackとphalconが動いた件について
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSP
Ssaw08 0617
Ssaw08 0617
あるコンテキストスイッチの話
あるコンテキストスイッチの話
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
PHP AST 徹底解説
PHP AST 徹底解説
Buffer overflow
Buffer overflow
OPcache の最適化器の今
OPcache の最適化器の今
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ
今、最も勢いのあるWebフレームワーク「fuel php」
今、最も勢いのあるWebフレームワーク「fuel php」
php-src の歩き方
php-src の歩き方
NetBeansではじめる FuelPHP
NetBeansではじめる FuelPHP
Kanazawa.js.Next
Kanazawa.js.Next
PHPとシグナル、その裏側
PHPとシグナル、その裏側
Stack Buffer OverFlow
Stack Buffer OverFlow
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Destacado
x86x64 SSE4.2 POPCNT
x86x64 SSE4.2 POPCNT
takesako
Popcntによるハミング距離計算
Popcntによるハミング距離計算
Norishige Fukushima
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
A x86-optimized rank&select dictionary for bit sequences
A x86-optimized rank&select dictionary for bit sequences
Takeshi Yamamuro
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
MITSUNARI Shigeo
AVX2時代の正規表現マッチング 〜半群でぐんぐん!〜
AVX2時代の正規表現マッチング 〜半群でぐんぐん!〜
Ryoma Sin'ya
正規表現に潜む対称性 〜等式公理による等価性判定〜
正規表現に潜む対称性 〜等式公理による等価性判定〜
Ryoma Sin'ya
研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法
Takeshi Yamamuro
LLVM最適化のこつ
LLVM最適化のこつ
MITSUNARI Shigeo
77386springrealestatemarketreportsoctober2012 121023082045-phpapp02
77386springrealestatemarketreportsoctober2012 121023082045-phpapp02
Tanya Lavoie Bugbee
Final powerpoint
Final powerpoint
salesianas2011
Social Media: Fans and followers are an end, not a means
Social Media: Fans and followers are an end, not a means
Kantar
Eco 202 ch 30 the monetary system
Eco 202 ch 30 the monetary system
Gale Pooley
9 Habits to Nurture Back Your Health
9 Habits to Nurture Back Your Health
Jeffrey Pickett
Colors
Colors
Ivette Fernández
101 lecture 11
101 lecture 11
Gale Pooley
310 lecture 6
310 lecture 6
Gale Pooley
101 lecture 19 earnings and discrimination
101 lecture 19 earnings and discrimination
Gale Pooley
Brand equity: what's price got to do with it?
Brand equity: what's price got to do with it?
Kantar
Dhvm 2.0
Dhvm 2.0
Arman Sharma
Destacado
(20)
x86x64 SSE4.2 POPCNT
x86x64 SSE4.2 POPCNT
Popcntによるハミング距離計算
Popcntによるハミング距離計算
明日使えないすごいビット演算
明日使えないすごいビット演算
A x86-optimized rank&select dictionary for bit sequences
A x86-optimized rank&select dictionary for bit sequences
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
AVX2時代の正規表現マッチング 〜半群でぐんぐん!〜
AVX2時代の正規表現マッチング 〜半群でぐんぐん!〜
正規表現に潜む対称性 〜等式公理による等価性判定〜
正規表現に潜む対称性 〜等式公理による等価性判定〜
研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法
LLVM最適化のこつ
LLVM最適化のこつ
77386springrealestatemarketreportsoctober2012 121023082045-phpapp02
77386springrealestatemarketreportsoctober2012 121023082045-phpapp02
Final powerpoint
Final powerpoint
Social Media: Fans and followers are an end, not a means
Social Media: Fans and followers are an end, not a means
Eco 202 ch 30 the monetary system
Eco 202 ch 30 the monetary system
9 Habits to Nurture Back Your Health
9 Habits to Nurture Back Your Health
Colors
Colors
101 lecture 11
101 lecture 11
310 lecture 6
310 lecture 6
101 lecture 19 earnings and discrimination
101 lecture 19 earnings and discrimination
Brand equity: what's price got to do with it?
Brand equity: what's price got to do with it?
Dhvm 2.0
Dhvm 2.0
Similar a X86opti01 nothingcosmos
LLVM overview 20110122
LLVM overview 20110122
nothingcosmos
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
Tamakoshi Hironori
UE4におけるLoadingとGCのProfilingと最適化手法
UE4におけるLoadingとGCのProfilingと最適化手法
エピック・ゲームズ・ジャパン Epic Games Japan
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
Masashi Shibata
MongoDB Configパラメータ解説
MongoDB Configパラメータ解説
Shoken Fujisaki
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話
Toshihiro Araki
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...
Insight Technology, Inc.
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
エピック・ゲームズ・ジャパン Epic Games Japan
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
Froyo DalvikVM JIT
Froyo DalvikVM JIT
Tetsuyuki Kobayashi
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
Yusuke Suzuki
Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節
Yuichiro Saito
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索
yoyamasaki
プロとしてのOracleアーキテクチャ入門 ~番外編~
プロとしてのOracleアーキテクチャ入門 ~番外編~
ryouta watabe
Benchmark during different architecture cloud IBM z Systems vs Intel Xeon
Benchmark during different architecture cloud IBM z Systems vs Intel Xeon
Hirofumi Nakata
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
Yoshinori Matsunobu
TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門
tak9029
Linux Kernel Seminar in tripodworks
Linux Kernel Seminar in tripodworks
tripodworks
Similar a X86opti01 nothingcosmos
(20)
LLVM overview 20110122
LLVM overview 20110122
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
UE4におけるLoadingとGCのProfilingと最適化手法
UE4におけるLoadingとGCのProfilingと最適化手法
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
MongoDB Configパラメータ解説
MongoDB Configパラメータ解説
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...
[db tech showcase Tokyo 2018] #dbts2018 #D15 『5年連続!第三者機関の評価で(圧倒的)最強のピュアストレージが...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Froyo DalvikVM JIT
Froyo DalvikVM JIT
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索
プロとしてのOracleアーキテクチャ入門 ~番外編~
プロとしてのOracleアーキテクチャ入門 ~番外編~
Benchmark during different architecture cloud IBM z Systems vs Intel Xeon
Benchmark during different architecture cloud IBM z Systems vs Intel Xeon
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門
Linux Kernel Seminar in tripodworks
Linux Kernel Seminar in tripodworks
Más de nothingcosmos
2014 dart flight school in Tokyo
2014 dart flight school in Tokyo
nothingcosmos
Dart 1.1
Dart 1.1
nothingcosmos
Source Code of Dart
Source Code of Dart
nothingcosmos
Dart VM Performance
Dart VM Performance
nothingcosmos
DartVM on Android
DartVM on Android
nothingcosmos
Adaptive optimization of JIT compiler
Adaptive optimization of JIT compiler
nothingcosmos
OpenJDK HotSpot C1Compiler Overview
OpenJDK HotSpot C1Compiler Overview
nothingcosmos
Más de nothingcosmos
(7)
2014 dart flight school in Tokyo
2014 dart flight school in Tokyo
Dart 1.1
Dart 1.1
Source Code of Dart
Source Code of Dart
Dart VM Performance
Dart VM Performance
DartVM on Android
DartVM on Android
Adaptive optimization of JIT compiler
Adaptive optimization of JIT compiler
OpenJDK HotSpot C1Compiler Overview
OpenJDK HotSpot C1Compiler Overview
X86opti01 nothingcosmos
1.
本物の X86Optimizer は
icc を使う Outline 1. X86 なら icc だよね! 2. コンパイラと協調した最適化 3. 各種オプションの詳細 2011/08/06 X86/X64 最適化勉強会 1 nothingcosmos <nothingcosmos@gmail.com>
2.
プロフィール
HN:nothingcosmos コンパイラ屋歴 6 年くらい X86 アセンブリプログラミング経験は少なめ X86 を最適化する上で、 コンパイラと上手に付き合うための方法を紹介 決して Intel の回し者ではありませんので、、
3.
X86 なら ICC
だよね! Linux 版の IntelCompiler およびライブラリは 非商用において、無償でつかえる Linux 版 URL:http://goo.gl/nOeTP 今回の資料は、 Intel Composer XE 2011 最適化クイック・リファレンス・ガイド をちょっと掘り下げています。
4.
icc のコンパイルオプション
Icc に一番速いやつで頼むオプションは、 fast fast = xHOST O3 ipo noprecdiv static xHOST : ホストで最速な命令セットを使用する O3 : speed 最優先のアグレッシブな最適化 ipo : プロシージャ間の最適化 noprecdiv: 浮動小数点精度の向上 static : 共有ライブラリを使用せず、内部に取り込む
5.
コンパイラと協調した最適化
コンパイラオプションでチューニングする プロシージャ間の最適化 手軽 プロファイルに基づいた最適化 きめ細やかなチューニングオプション pragma directive 等の使用 手でボトルネック部分を最適化する コンパイラのレポート機能の活用 効果高い Vtune などのパフォーマンスアナライザの活用 SIMD 等のアセンブリプログラミング
6.
コンパイラと協調した最適化
コンパイラオプションでチューニングする プロシージャ間の最適化 手軽 プロファイルに基づいた最適化 きめ細やかなチューニングオプション コンパイラ担当なので、 コンパイラオプションの紹介をします 効果高い ハンドオプティマイズや SIMD アセンブリプログラミングなんかは 他の方が紹介してくれるそうなので
7.
ここからオプションの詳細
プロシージャ間の最適化 (IPO) プロファイルに基づいた最適化 (PBO) きめ細やかなチューニングオプション ループアンローリング ソフトウェアプリフェッチ エイリアシング 既にご存知の方はどのくらい???
8.
プロシージャー間の最適化
複数ファイルに跨った最適化を有効にする 複数ファイルのコンパイル時に効果を発揮する 別ファイルの関数の inline 展開、メモリレイアウトの改善 別名解析の精度向上、不要なシンボルの除去に伴うプログラムサイズの改善 複数ファイルをコンパイルする coremark で性能測定 20297 iterations O3 xHOST fargumentnoalias 20533 iterations O3 xHOST fargumentnoalias ipo
9.
プロシージャー間の最適化
普通のコンパイルプロセス a.c a.s a.o cc as ld a.out b.c a.s a.o IPO(LTO) のコンパイルプロセス a.c a.il cc1 cc2 a.s as ld a.out b.c a.il icc は ipo を付与すると、 o ファイルに __ildata が埋まっている gcc は gimple レベル、 llvm は bitcode レベルで行う。
10.
プロシージャー間の最適化
JVM は必要なクラスを全て取り込んだ状態で JIT コンパイルするので プロシージャ間と考え方は同じ。 積極的に inline 展開や脱仮想化を試行できる classloader が上記を阻害するけど、脱最適化と再コンパイルで回避 IPO や LTO の注意点として llvm(O4, stdlinkopts, internalize) は、 1 つの実行ファイルとして仮定して最適化し、シンボルの static 化を行う。 他からの参照があると、 ld で見つからないことも。。
11.
プロファイルに基づく最適化
プロファイル情報を使用してさらに高度な最適化を行う 使うためには、 3 段階の手順が必要 1. $ icc profgen O0 xxx.c 関数の埋め込み 2. $ ./a.out プロファイル情報の収集 3. $ icc profuse fast xxx.c 最適化を有効化 Coremark も性能向上。ほんのちょっと。 19404 iterations fast 19531 iterations fast profuse 20567 iterations fast fargumentnoalias 21398 iterations fast fargumentnoalias profuse 4% 性能向上
12.
プロファイルに基づく最適化
profgen を指定すると、関数の入口 出口、分岐に命令を埋め込む 関数やブロックの実行回数、 分岐確率等をファイルに記録し、 最適化に活かすことができる。 JVM はインタプリタ実行時に取得 ↓llvm 的にはこんな感じ
13.
プロファイルに基づく最適化
PGO の利点 分岐予測の最適化が改善される。マニュアルの 3.4.1 過度なループ展開、ベクトル化、プリフェッチの抑止 細かい最適化テクニックを駆使するよりも、 PGO に任せた方がよい。 プロファイルのパラメータと異なる場合、性能劣化の可能性 プロファイル結果に敏感なコンパイラの場合は注意 icc はあまり劣化するようなことはしないが、 java server コンパイラなんかは積極的に活用します
14.
きめ細かなチューニングオプション
インテル ComposerXE2011 最適化クイック・リファレンス・ガイドより unroll[n] optprefetch[n] fargument[no]alias
15.
きめ細かなチューニングオプション
unroll[n] ループ展開の最大数 n を指定する。 0 で展開無効化 ループを n 倍展開すると、様々な恩恵を得て性能向上 やりすぎると様々なキャッシュがオーバーして性能劣化 個人的には、 しきい値の調整は PGO に 任せればいいんじゃないか と思ってます。
16.
きめ細かなチューニングオプション
unroll[n] ループ展開の効果を coremark で測定 共通オプション fast fargumentnoalias 20107 iterations unroll0 20338 iterations unroll2 ← デフォ 20519 iterations unroll4 20761 iterations unroll6 ← 2%程度性能向上 20435 iterations unroll8 ← 8 倍以上にはアンロールされない 20422 iterations unr0ll16 X 86はプロセッサがいろいろ頑張りすぎて、 アンロールの有効性は少ないかもしれない。
17.
きめ細かなチューニングオプション
unroll[n] アンロールは最適化リファレンス・マニュアルに 83 回も出てくる重要キーワード ドキュメントで unroll のトレードオフを熱心に説明するわりに、 内部で heuristics に決めてるらしく、 max パラメータしか指定できない。。
18.
きめ細かなチューニングオプション
optprefetch[n] 自動的に prefetcht0 命令を挿入する最適化 初期値 n=0 なので、意図的に指定する必要あり PGO では自動的に挿入してくれない 無駄な prefetcht0 は削除してくれる openjdk7 server JIT コンパイラは prefetcht0 を自動挿入してくれる
19.
きめ細かなチューニングオプション
optprefetch[n] 姫野ベンチのようなキャッシュ依存のベンチで効果がある himenobmtxps.c DSMALL O3 optprefetch[n] n=0: 5695 MFLOPS n=2: 6409 MFLOPS 13% 弱向上 ただし、挿入しすぎると性能劣化する coremark キャッシュによる影響が少ないベンチマーク n=0 19505 iterations prefetcht0 が 0 命令 O3 n=2 19317 iterations prefetcht0 が 21 命令 O3 optprefetch2 n=4 19157 iterations prefetcht0 が 33 命令 O3 optprefetch4 profuse n=4 18359 iterations prefetcht0 が 71 命令 O3 optprefetch4
20.
きめ細かなチューニングオプション
fargument[no]alias 別名の有無を制御するためのオプション 初期値は fargumentalias 別名の制御は一般的に難しいが、 argument は理解しやすい 一般のコンパイラは、下記に示すポインタ A と B が 同じものを指す可能性を考慮して最適化する。
21.
きめ細かなチューニングオプション
fargument[no]alias icc で fargumentnoalias を指定すると、 最内側ループのベクトル化を促進 他にも様々な恩恵が
22.
きめ細かなチューニングオプション
fargument[no]alias fargumentnoalias は restrict みたいなもの 引数のポインタ同士が同じものを指すことがない と仮定させるので、結果不正に注意 Aggressive なループ展開と組み合わせると こんな素敵ループが生成される。 ベクトル化で速くなるとは限らないけど、、 Coremark は fargumentnoalias で 4% 性能向上 19404 iterations fast 20174 iterations fast fargumentnoalias
Descargar ahora