Licensed Materials - Property of IBM
Copyright IBM Corp. 2009, 2012.
本書では、XML 形式のコンパイラー・レポートによって使用されるマークアップ言語について説明します。コンパイラー・レポートには、コンパイル中にコンパイラーが実行したコード変換の試みが記録されます。
IBM XL C、C++、および Fortran などの高性能コンパイラーは、コード変換を実行することによって最適化を実現する機能を備えています。しかしながら、ソース・コードの制限や互換性のないコンパイル・オプションなど、さまざまな制約により、コンパイラーは、試行した変換のすべてを正常には適用できない場合があります。より高いアプリケーション・パフォーマンスを発揮するには、アプリケーション調整が必要です。通常、この作業は非常に時間がかかるものであり、経験豊富で、技術に精通したアプリケーション調整者が必要です。アプリケーション調整の困難さを軽減し、アプリケーション調整者の生産性を向上することを目的として、IBM XL C、C++、および Fortran コンパイラーは XML 形式でコンパイラー・レポートを生成するようになりました。コンパイル中に、レポートは、変換が試行されたコード領域を記録します。さらに、レポートは試行された変換のタイプを特定し、それが正常に適用されたかどうかを判別します。レポートは、ツール取り込みのための標準形式である XML 1.0 で出力されます。アプリケーション調整者は、独自のツールを作成してレポートを取り込むことにより、自動パフォーマンス調整を実現できることが期待されます。
コンパイラー変換マークアップ言語は、コード変換の試みを記述するための仕様であり、コンパイラー・レポートによって使用されます。このマークアップ言語の構造および内容は、コンパイラー・パッケージによって提供される XML スキーマによって定義されます。ツール書き込みプロセスを支援するために、このドキュメントは、平易な記述による XML スキーマの変換として提供されます。
コンパイラー・レポートはバージョン管理されます。バージョン情報は、ドキュメント・ルート・エレメントのバージョン属性内でエンコードされます。バージョンは、メジャー・バージョンとマイナー・バージョンの 2 つの部分で構成され、それぞれドットで分離されます (major.minor)。バージョン管理モデルでは、以下のケースが考慮されます。
ケース 1. 互換性のある変更の概要
これには、エレメント、属性、または列挙子の値の追加などのケースが含まれます。マイナー・バージョンが増分されます (例えば、1.0 -> 1.1)。後方互換性 (より新しいスキーマを基にしたツールで、それより古いレポートを処理できること) を実現するために、追加事項は、より新しいスキーマでオプションとして定義されます。前方互換性 (より古いスキーマを基にしたツールで、それより新しいレポートを処理できること) を実現するために、コンパイラー・レポートを取り込むツールは、認識されないすべての内容を無視します。
ケース 2. 互換性のない変更の概要
これには、必須エレメントまたは属性の除去などのケースが含まれます。メジャー・バージョンとデフォルトの名前空間の両方が更新されます (例えば、1.1 -> 2.0)。後方互換性と前方互換性は、維持されなくなります。
XML 名前空間は、XML 文書で使用されるエレメント名と属性名に URI をプレフィックシングすることで、それらの名前を修飾する方式です。コンパイラー・レポートの場合、エレメントはデフォルトの名前空間を使用して修飾されますが、属性は修飾されません。このバージョンのコンパイラー・レポートで使用されるデフォルトの名前空間は、次のようになります。
http://www.ibm.com/2010/04/CompilerTransformation
デフォルトの名前空間は、バージョン管理モデルの一部です。名前空間は、互換性のない変更が導入されたときに更新されます。ツールでは異なる名前空間が必要となるため、これにより、ツールが互換性のないコンパイラー・レポートを間違って構文解析しなくなります。
コンパイルは、コンパイルおよびリンクなど、複数のステップで構成することができます。IBM XL C、C++、および Fortran コンパイラーで実行されるコンパイル・ステップごとに、記録された情報が、それに対応する <CompilationStep> エレメント内に存在します。<CompilationStep> エレメントには、4 つのセクションがあります。<StepDetails> エレメントには、コンパイラー名およびコンパイル日など、コンパイル・ステップに関する一般情報が含まれています。<ProgramHierarchy> エレメントには、ソース・ファイル、ソース領域、およびループなどのプログラム情報が含まれています。このプログラム情報は、<TransformationHierarchy> エレメント内にリストされている変換の試行によって参照されます。多種多様な変換を細分化するために、それらはさらに <IntraTransformation> (プロシージャー内変換) エレメントおよび <InterTransformation> (プロシージャー間変換) エレメントによって分類されます。<ProfilingReports> エレメントには、プロファイル情報が含まれます。
「エレメント」列にあるリンクによって、特定のエレメントおよびその属性についての詳細情報が提供されます。
エレメント | 説明 |
XLTransformationReport | これはドキュメント・ルート・エレメントです。 |
CompilationStep | このエレメントには、コンパイル・ステップの記録情報が含まれています。 |
StepDetails | このエレメントには、コンパイル・ステップの一般情報が含まれています。 |
Detail | このエレメントは、一般情報を記述しています。 |
FieldTitle | このエレメントには、記述のタイトルが含まれています。 |
FieldValue | このエレメントには、記述の値が含まれています。 |
ProgramHierarchy | このエレメントには、プログラム情報が含まれています。 |
FileList | このエレメントには、ソース・ファイルのリストが含まれています。 |
File | このエレメントは、ソース・ファイルを記述しています。 |
RegionList | このエレメントには、ソース・ファイルのソース領域リストが含まれています。 |
Region | このエレメントは、ソース領域を記述しています。 |
Pseudocode | このエレメントには、疑似コードが含まれています。 |
PseudoLoop | このエレメントは、疑似コード・ループを記述しています。 |
PseudoBlock | このエレメントは、疑似コード・ブロックを記述しています。 |
PseudoLine | このエレメントは、疑似コード内の行を記述しています。 |
LoopList | このエレメントには、ソース領域のループ・リストが含まれています。 |
Loop | このエレメントは、ループを記述しています。 |
TransformationHierarchy | このエレメントには、変換の試みが含まれています。 |
IntraTransformationList | このエレメントには、内部プロシージャー変換のリストが含まれています。 |
LoopTransformationList | このエレメントには、ループ変換の試みのリストが含まれています。 |
LoopTransform | このエレメントは、ループ変換の試みを記述しています。 |
AttributeList | このエレメントには、ループ変換の試みの属性リストが含まれています。 |
Attribute | このエレメントは、属性を記述しています。 |
AttributeTitle | このエレメントには、属性のタイトルが含まれています。 |
AttributeValue | このエレメントには、属性の値が含まれています。 |
InterTransformationList | このエレメントには、プロシージャー間変換のリストが含まれています。 |
InlineOptimizationList | このエレメントには、インライン最適化の試みのリストが含まれています。 |
InlineOpt | このエレメントは、インライン最適化の試みを記述しています。 |
DataReorganizationList | このエレメントには、実行されたデータ再編成のリストが含まれています。 |
DataReorg | このエレメントは、実行されたデータ再編成を記述しています。 |
ProfilingReports | このエレメントには、プロファイル情報が含まれています。 |
BlockCounterList | このエレメントには、ブロック・カウンター情報のリストが含まれています。 |
BlockCounter | このエレメントは、ソース領域のブロック・カウンターを記述しています。 |
BlockList | このエレメントには、ブロック・カウンターのブロックのリストが含まれています。 |
Block | このエレメントは、ブロック・カウンターのブロックを記述しています。 |
CallCounterList | このエレメントには、呼び出しカウンター情報のリストが含まれています。 |
CallCounter | このエレメントは、ソース領域の呼び出しカウンターを記述しています。 |
CallList | このエレメントには、呼び出しカウンターの呼び出しリストが含まれています。 |
Call | このエレメントは、呼び出しカウンターの呼び出しを記述しています。 |
ValueProfileList | このエレメントには、値プロファイル情報のリストが含まれています。 |
ValueProfile | このエレメントは、プロファイルを作成されたステートメントを記述しています。 |
ValueList | このエレメントには、プロファイルを作成された値のリストが含まれています。 |
Value | このエレメントは、特定の値を記述しています。 |
CacheMissList | このエレメントには、キャッシュ・ミス情報のリストが含まれています。 |
CacheMiss | このエレメントは、キャッシュ・ミス情報を記述しています。 |
説明: これはドキュメント・ルート・エレメントです。
親エレメント: なし
エレメント | オカレンス (最小 - 最大) | 説明 |
CompilationStep | 1 - unbounded | このエレメントには、コンパイル・ステップの記録情報が含まれています。 |
属性 | Value | 説明 |
version | このスキーマに対して 1.x である必要があります。 | 必須. コンパイラー・レポート・バージョン。 |
説明: このエレメントには、コンパイル・ステップの記録情報が含まれています。
親エレメント: <XLTransformationReport>
エレメント | オカレンス (最小 - 最大) | 説明 |
StepDetails | 1 - 1 | このエレメントには、コンパイル・ステップの一般情報が含まれています。 |
ProgramHierarchy | 1 - 1 | このエレメントには、プログラム情報が含まれています。 |
TransformationHierarchy | 1 - 1 | このエレメントには、変換の試みが含まれています。 |
ProfilingReports | 1 - 1 | このエレメントには、プロファイル情報が含まれています。 |
属性 | Value | 説明 |
name | compiling | linking | 必須. コンパイル・ステップ名。 |
説明: このエレメントには、コンパイル・ステップの一般情報が含まれています。
親エレメント: <CompilationStep>
エレメント | オカレンス (最小 - 最大) | 説明 |
Detail | 0 - unbounded | このエレメントは、一般情報を記述しています。 |
属性: なし
説明: このエレメントは、一般情報を記述しています。
親エレメント: <StepDetails>
エレメント | オカレンス (最小 - 最大) | 説明 |
FieldTitle | 1 - 1 | このエレメントには、記述のタイトルが含まれています。 |
FieldValue | 1 - 1 | このエレメントには、記述の値が含まれています。 |
属性: なし
説明: このエレメントには、記述のタイトルが含まれています。
親エレメント: <Detail>
子エレメント: なし
属性: なし
説明: このエレメントには、記述の値が含まれています。
親エレメント: <Detail>
子エレメント: なし
属性: なし
説明: このエレメントには、プログラム情報が含まれています。
親エレメント: <CompilationStep>
エレメント | オカレンス (最小 - 最大) | 説明 |
FileList | 0 - 1 | このエレメントには、ソース・ファイルのリストが含まれています。 |
属性: なし
説明: このエレメントには、ソース・ファイルのリストが含まれています。
親エレメント: <ProgramHierarchy>
エレメント | オカレンス (最小 - 最大) | 説明 |
File | 1 - unbounded | このエレメントは、ソース・ファイルを記述しています。 |
属性: なし
説明: このエレメントは、ソース・ファイルを記述しています。
親エレメント: <FileList>
エレメント | オカレンス (最小 - 最大) | 説明 |
RegionList | 0 - 1 | このエレメントには、ソース・ファイルのソース領域リストが含まれています。 |
属性 | Value | 説明 |
id | 正整数 | 必須. 固有のソース・ファイル ID。 |
name | ストリング | 必須. ソース・ファイル名。 |
説明: このエレメントには、ソース・ファイルのソース領域リストが含まれています。
親エレメント: <File>
エレメント | オカレンス (最小 - 最大) | 説明 |
Region | 1 - unbounded | このエレメントは、ソース領域を記述しています。 |
属性: なし
説明: このエレメントは、ソース領域を記述しています。
親エレメント: <RegionList>
エレメント | オカレンス (最小 - 最大) | 説明 |
Pseudocode | 0 - 1 | このエレメントには、疑似コードが含まれています。 |
LoopList | 0 - 1 | このエレメントには、ソース領域のループ・リストが含まれています。 |
属性 | Value | 説明 |
id | 正整数 | 必須. 固有のソース領域 ID。 |
name | ストリング | 必須. ソース領域名。 |
demangledName | ストリング | オプション. ソース領域のデマングル名。 |
startLineNumber | 正整数 | オプション. ソース領域の開始行番号。 |
endLineNumber | 正整数 | オプション. ソース領域の終了行番号。 |
説明: このエレメントには、疑似コードが含まれています。
親エレメント: <Region>
エレメント | オカレンス (最小 - 最大) | 説明 |
PseudoLoop | 0 - unbounded | このエレメントは、疑似コード・ループを記述しています。 |
PseudoBlock | 0 - unbounded | このエレメントは、疑似コード・ブロックを記述しています。 |
PseudoLine | 0 - unbounded | このエレメントは、疑似コード内の行を記述しています。 |
属性: なし
説明: このエレメントは、疑似コード・ループを記述しています。
親エレメント: <Pseudocode>
エレメント | オカレンス (最小 - 最大) | 説明 |
PseudoLoop | 0 - unbounded | このエレメントは、疑似コード・ループを記述しています。 |
PseudoBlock | 0 - unbounded | このエレメントは、疑似コード・ブロックを記述しています。 |
PseudoLine | 0 - unbounded | このエレメントは、疑似コード内の行を記述しています。 |
属性 | Value | 説明 |
index | 正整数 | 必須. ソース領域内の固有のループ指標。 |
説明: このエレメントは、疑似コード・ブロックを記述しています。
親エレメント: <Pseudocode>
エレメント | オカレンス (最小 - 最大) | 説明 |
PseudoLoop | 0 - unbounded | このエレメントは、疑似コード・ループを記述しています。 |
PseudoBlock | 0 - unbounded | このエレメントは、疑似コード・ブロックを記述しています。 |
PseudoLine | 0 - unbounded | このエレメントは、疑似コード内の行を記述しています。 |
属性 | Value | 説明 |
index | 正整数 | 必須. ソース領域内の固有のブロック指標。 |
説明: このエレメントは、疑似コード内の行を記述しています。
親エレメント: <Pseudocode>
子エレメント: なし
属性 | Value | 説明 |
fileId | 正整数 | オプション. この行をソース・ファイルにマップします。 |
lineNumber | 正整数 | オプション. この行をソース行にマップします。 |
説明: このエレメントには、ソース領域のループ・リストが含まれています。
親エレメント: <Region>
エレメント | オカレンス (最小 - 最大) | 説明 |
Loop | 1 - unbounded | このエレメントは、ループを記述しています。 |
属性: なし
説明: このエレメントは、ループを記述しています。
親エレメント: <LoopList>
子エレメント: なし
属性 | Value | 説明 |
index | 正整数 | 必須. ソース領域内の固有のループ指標。 |
startLineNumber | 正整数 | オプション. ループの開始行番号。 |
endLineNumber | 正整数 | オプション. ループの終了行番号。 |
parentLoopIndex | 正整数 | オプション. 親ループの指標。 |
nestLevel | 負でない整数 | オプション. 親ループ内のネスト・レベル。 |
minCost | 負でない整数 | オプション. 最低ループ実行コスト。 |
maxCost | 負でない整数 | オプション. 最大ループ実行コスト。 |
iterKind | array | default | exact | PDF | user | estimated | オプション. 反復カウントのタイプ。 |
iterCount | 負でない整数 | オプション. ループ内の反復数 |
residual | true | false | オプション. 最適化の後に、残余反復があります。 |
perfectNest | true | false | オプション. ループは完全なネストです。 |
wellBehaved | true | false | オプション. ループに単一の入り口および出口があります。 |
mayThrow | true | false | オプション. スローされる例外、longjmp、または出口となる可能性のある呼び出しが、ループに含まれています。 |
bumpNormalized | true | false | オプション. ループ・バンプは 1 に正規化されます。 |
guarded | true | false | オプション. ループは、少なくとも 1 回の反復を実行するように保護されています。 |
irreducible | true | false | オプション. ループは、削減できない領域に対応しています。 |
lowerBoundNormalized | true | false | オプション. ループの下限はゼロです。 |
説明: このエレメントには、変換の試みが含まれています。
親エレメント: <CompilationStep>
エレメント | オカレンス (最小 - 最大) | 説明 |
IntraTransformationList | 0 - 1 | このエレメントには、内部プロシージャー変換のリストが含まれています。 |
InterTransformationList | 0 - 1 | このエレメントには、プロシージャー間変換のリストが含まれています。 |
属性: なし
説明: このエレメントには、内部プロシージャー変換のリストが含まれています。
親エレメント: <TransformationHierarchy>
エレメント | オカレンス (最小 - 最大) | 説明 |
LoopTransformationList | 0 - 1 | このエレメントには、ループ変換の試みのリストが含まれています。 |
属性: なし
説明: このエレメントには、ループ変換の試みのリストが含まれています。
親エレメント: <IntraTransformationList>
エレメント | オカレンス (最小 - 最大) | 説明 |
LoopTransform | 1 - unbounded | このエレメントは、ループ変換の試みを記述しています。 |
属性: なし
説明: このエレメントは、ループ変換の試みを記述しています。
親エレメント: <LoopTransformationList>
エレメント | オカレンス (最小 - 最大) | 説明 |
AttributeList | 0 - 1 | このエレメントには、ループ変換の試みの属性リストが含まれています。 |
属性 | Value | 説明 |
seq | 正整数 | 必須. ループ変換の試みのシーケンス番号。 |
type | 『変換タイプ』セクションを参照してください | 必須. ループ変換の試みのタイプ。 |
result | success | fail | 必須. ループ変換の試みの結果。 |
regionId | 正整数 | オプション. このループ変換の試みをソース領域にマップします。 |
loopIndex | 正整数 | オプション. このループ変換の試みをループ指標にマップします。 |
lineNumber | 正整数 | オプション. このループ変換の試みをソース行にマップします。 |
phase | Driver | C++ Front End | C Front End | Fortran Front End | Low Level Optimizer | High Level Optimizer | 必須. このループ変換が試行されるコンパイル・フェーズ。 |
説明: このエレメントには、ループ変換の試みの属性リストが含まれています。
親エレメント: <LoopTransform>
エレメント | オカレンス (最小 - 最大) | 説明 |
Attribute | 1 - unbounded | このエレメントは、属性を記述しています。 |
属性: なし
説明: このエレメントは、属性を記述しています。
親エレメント: <AttributeList>
エレメント | オカレンス (最小 - 最大) | 説明 |
AttributeTitle | 1 - 1 | このエレメントには、属性のタイトルが含まれています。 |
AttributeValue | 1 - 1 | このエレメントには、属性の値が含まれています。 |
属性: なし
説明: このエレメントには、属性のタイトルが含まれています。
親エレメント: <Attribute>
子エレメント: なし
属性: なし
説明: このエレメントには、属性の値が含まれています。
親エレメント: <Attribute>
子エレメント: なし
属性: なし
説明: このエレメントには、プロシージャー間変換のリストが含まれています。
親エレメント: <TransformationHierarchy>
エレメント | オカレンス (最小 - 最大) | 説明 |
InlineOptimizationList | 0 - 1 | このエレメントには、インライン最適化の試みのリストが含まれています。 |
DataReorganizationList | 0 - 1 | このエレメントには、実行されたデータ再編成のリストが含まれています。 |
属性: なし
説明: このエレメントには、インライン最適化の試みのリストが含まれています。
親エレメント: <InterTransformationList>
エレメント | オカレンス (最小 - 最大) | 説明 |
InlineOpt | 1 - unbounded | このエレメントは、インライン最適化の試みを記述しています。 |
属性: なし
説明: このエレメントは、インライン最適化の試みを記述しています。
親エレメント: <InlineOptimizationList>
子エレメント: なし
属性 | Value | 説明 |
seq | 正整数 | 必須. インライン化の試みのシーケンス番号。 |
type | 『変換タイプ』セクションを参照してください | 必須. インライン化の試みのタイプ。 |
result | success | fail | 必須. インライン化の試みの結果。 |
callerRegionId | 正整数 | オプション. この呼び出し元をソース領域にマップします。 |
calleeRegionId | 正整数 | オプション. この呼び出し先をソース領域にマップします。 |
callsiteFileId | 正整数 | オプション. この呼び出しサイトをソース・ファイルにマップします。 |
callsiteLineNumber | 正整数 | オプション. この呼び出しサイトをソース行にマップします。 |
callsiteColumnNumber | 正整数 | オプション. この呼び出しサイトをソース列にマップします。 |
phase | Driver | C++ Front End | C Front End | Fortran Front End | Low Level Optimizer | High Level Optimizer | 必須. このインライン化が試行されるコンパイル・フェーズ。 |
説明: このエレメントには、実行されたデータ再編成のリストが含まれています。
親エレメント: <InterTransformationList>
エレメント | オカレンス (最小 - 最大) | 説明 |
DataReorg | 1 - unbounded | このエレメントは、実行されたデータ再編成を記述しています。 |
属性: なし
説明: このエレメントは、実行されたデータ再編成を記述しています。
親エレメント: <DataReorganizationList>
子エレメント: なし
属性 | Value | 説明 |
seq | 正整数 | 必須. 実行されたデータ再編成のシーケンス番号。 |
type | 『変換タイプ』セクションを参照してください | 必須. データ再編成のタイプ。 |
dataName | ストリング | 必須. 実行されたデータ再編成に関係するデータ名。 |
category | ストリング | オプション. 実行されたデータ再編成のカテゴリー。 |
regionId | 正整数 | オプション. この実行されたデータ再編成をソース領域にマップします。 |
lineNumber | 正整数 | オプション. この実行されたデータ再編成をソース行にマップします。 |
phase | Driver | C++ Front End | C Front End | Fortran Front End | Low Level Optimizer | High Level Optimizer | 必須. このデータ再編成が実行されるコンパイル・フェーズ。 |
説明: このエレメントには、プロファイル情報が含まれています。
親エレメント: <CompilationStep>
エレメント | オカレンス (最小 - 最大) | 説明 |
BlockCounterList | 0 - 1 | このエレメントには、ブロック・カウンター情報のリストが含まれています。 |
CallCounterList | 0 - 1 | このエレメントには、呼び出しカウンター情報のリストが含まれています。 |
ValueProfileList | 0 - 1 | このエレメントには、値プロファイル情報のリストが含まれています。 |
CacheMissList | 0 - 1 | このエレメントには、キャッシュ・ミス情報のリストが含まれています。 |
属性: なし
説明: このエレメントには、ブロック・カウンター情報のリストが含まれています。
親エレメント: <ProfilingReports>
エレメント | オカレンス (最小 - 最大) | 説明 |
BlockCounter | 1 - unbounded | このエレメントは、ソース領域のブロック・カウンターを記述しています。 |
属性: なし
説明: このエレメントは、ソース領域のブロック・カウンターを記述しています。
親エレメント: <BlockCounterList>
エレメント | オカレンス (最小 - 最大) | 説明 |
BlockList | 0 - 1 | このエレメントには、ブロック・カウンターのブロックのリストが含まれています。 |
属性 | Value | 説明 |
regionId | 正整数 | 必須. このブロック・カウンターをソース領域にマップします。 |
execCount | 負でない整数 | 必須. ソース領域の実行カウント。 |
coveredBlock | 負でない整数 | オプション. 実行されるソース領域のブロック。 |
totalBlock | 負でない整数 | オプション. ソース領域における合計ブロック。 |
説明: このエレメントには、ブロック・カウンターのブロックのリストが含まれています。
親エレメント: <BlockCounter>
エレメント | オカレンス (最小 - 最大) | 説明 |
Block | 1 - unbounded | このエレメントは、ブロック・カウンターのブロックを記述しています。 |
属性: なし
説明: このエレメントは、ブロック・カウンターのブロックを記述しています。
親エレメント: <BlockList>
子エレメント: なし
属性 | Value | 説明 |
index | 正整数 | 必須. ブロック指標にマップします。 |
execCount | 負でない整数 | 必須. ブロックの実行カウント。 |
startLineNumber | 正整数 | オプション. ブロックの開始行番号。 |
endLineNumber | 正整数 | オプション. ブロックの終了行番号。 |
説明: このエレメントには、呼び出しカウンター情報のリストが含まれています。
親エレメント: <ProfilingReports>
エレメント | オカレンス (最小 - 最大) | 説明 |
CallCounter | 0 - unbounded | このエレメントは、ソース領域の呼び出しカウンターを記述しています。 |
属性: なし
説明: このエレメントは、ソース領域の呼び出しカウンターを記述しています。
親エレメント: <CallCounterList>
エレメント | オカレンス (最小 - 最大) | 説明 |
CallList | 0 - 1 | このエレメントには、呼び出しカウンターの呼び出しリストが含まれています。 |
属性 | Value | 説明 |
regionId | 正整数 | 必須. この呼び出しカウンターをソース領域にマップします。 |
execCount | 負でない整数 | 必須. ソース領域の実行カウント。 |
coveredCall | 負でない整数 | オプション. ソース領域において実行される呼び出し。 |
totalCall | 負でない整数 | オプション. ソース領域における合計呼び出し。 |
説明: このエレメントには、呼び出しカウンターの呼び出しリストが含まれています。
親エレメント: <CallCounter>
エレメント | オカレンス (最小 - 最大) | 説明 |
Call | 1 - unbounded | このエレメントは、呼び出しカウンターの呼び出しを記述しています。 |
属性: なし
説明: このエレメントは、呼び出しカウンターの呼び出しを記述しています。
親エレメント: <CallList>
子エレメント: なし
属性 | Value | 説明 |
name | ストリング | 必須. 呼び出しの名前。 |
execCount | 負でない整数 | 必須. 呼び出しの実行カウント。 |
lineNumber | 正整数 | オプション. この呼び出しをソース行にマップします。 |
説明: このエレメントには、値プロファイル情報のリストが含まれています。
親エレメント: <ProfilingReports>
エレメント | オカレンス (最小 - 最大) | 説明 |
ValueProfile | 1 - unbounded | このエレメントは、プロファイルを作成されたステートメントを記述しています。 |
属性: なし
説明: このエレメントは、プロファイルを作成されたステートメントを記述しています。
親エレメント: <ValueProfileList>
エレメント | オカレンス (最小 - 最大) | 説明 |
ValueList | 0 - 1 | このエレメントには、プロファイルを作成された値のリストが含まれています。 |
属性 | Value | 説明 |
name | ストリング | 必須. プロファイルを作成された値の型。 |
regionId | 正整数 | 必須. この値プロファイルをソース領域にマップします。 |
lineNumber | 正整数 | 必須. この値プロファイルをソース行にマップします。 |
numberOfValues | 負でない整数 | 必須. プロファイルを作成された固有値の数。 |
symbolName | 負でない整数 | オプション. プロファイルを作成されたシンボルの数。 |
説明: このエレメントには、プロファイルを作成された値のリストが含まれています。
親エレメント: <ValueProfile>
エレメント | オカレンス (最小 - 最大) | 説明 |
Value | 1 - unbounded | このエレメントは、特定の値を記述しています。 |
属性: なし
説明: このエレメントは、特定の値を記述しています。
親エレメント: <ValueList>
子エレメント: なし
属性 | Value | 説明 |
name | ストリング | 必須. プロファイルを作成された値。 |
execCount | 負でない整数 | 必須. 値が観測された回数。 |
説明: このエレメントには、キャッシュ・ミス情報のリストが含まれています。
親エレメント: <ProfilingReports>
エレメント | オカレンス (最小 - 最大) | 説明 |
CacheMiss | 0 - unbounded | このエレメントは、キャッシュ・ミス情報を記述しています。 |
属性: なし
説明: このエレメントは、キャッシュ・ミス情報を記述しています。
親エレメント: <CacheMissList>
子エレメント: なし
属性 | Value | 説明 |
memoryReference | ストリング | 必須. キャッシュ・ミスのメモリー参照。 |
regionId | 正整数 | オプション. このキャッシュ・ミスをソース領域にマップします。 |
lineNumber | 正整数 | オプション. このキャッシュ・ミスをソース行にマップします。 |
cacheLevel | 負でない整数 | オプション. キャッシュ・レベル。 |
cacheMissCount | 負でない整数 | オプション. キャッシュ・ミス・カウント。 |
cacheMissRate | 10 進数 | オプション. キャッシュ・ミス率。 |
タイプ | 説明 |
AliasingInducedDependence | 別名割り当てによって従属性が生じているため、SIMD ベクトル化の試みは失敗しました。 |
AssistThreadDataPrefetch | データ・プリフェッチの支援スレッドが生成されました。 |
BasicBlockThresholdExceeded | 基本ブロックの数がしきい値を超えるため、ループをモジュロ・スケジュールできません。 |
CompleteLoopUnroll | 完全なループのアンロール (展開) が実行されました。 |
ContainsControlFlow | 制御フローがループに含まれているため、SIMD ベクトル化の試みは失敗しました。 |
ContainsFunctionCall | 関数呼び出しがループに含まれているため、SIMD ベクトル化の試みは失敗しました。 |
ContainsNonVectorizableReduction | ベクトル化不可能な縮約がループに含まれているため、SIMD ベクトル化の試みは失敗しました。 |
ContainsVolatileReference | 揮発メモリー参照がループに含まれているため、SIMD ベクトル化の試みは失敗しました。 |
ControlFlowTooComplicated | 制御フローが複雑すぎるため、ループをモジュロ・スケジュールできません。 |
DataDependence | データ従属性により、SIMD ベクトル化の試みは失敗しました。 |
DataPrefetch | データ・プリフェッチが実行されました。 |
FullLoopUnroll | 完全なループのアンロール (展開) が実行されました。 |
InnerLoopUnroll | 内部ループのアンロール (展開) が実行されました。 |
InstructionThresholdExceeded | 命令の数がしきい値を超えるため、ループをモジュロ・スケジュールできません。 |
IterationCountTooSmall | 反復カウントが小さすぎるため、SIMD ベクトル化の試みは失敗しました。 |
LoopBlocked | ループはブロックされました。 |
LoopBlockGather | 収集/分散が実行されました。 |
LoopCarriedDependence | 変数に従属性があるため、ループは自動並列化されませんでした。 |
LoopCollapsed | ループは縮小されました。 |
LoopDistribution | 子ループが、その親ループの分配によって作成されました。 |
LoopFusion | ループはフューズされました。 |
LoopHasCycles | ループに CYCLE があります。 |
LoopHasDependencies | アンロールおよびフューズを防止する従属関係がループに含まれるため、ループのアンロールかつフューズは行われませんでした。 |
LoopHasNoDataDependence | データ従属性が算出されなかったため、ループのアンロールかつフューズは行われませんでした。 |
LoopHasPrivateVariables | private 変数がループ・ネストで認識されました。 |
LoopHasSideEffects | 副次作用があるため、ループのアンロールかつフューズは行われませんでした。 |
LoopHasSideEffectsCall | 副次作用を持つ可能性のある呼び出しが含まれているため、ループは自動並列化されませんでした。 |
LoopHasSpills | ループにスピルがあります。 |
LoopHasUserReduction | ユーザー縮約が含まれているため、ループのアンロールかつフューズは行われませんでした。 |
LoopHasVolatileVariable | 変数が揮発性であるため、ループは自動並列化されませんでした。 |
LoopInterchange | ループ変換がループ・ネストに適用されました。 |
LoopNestGather | 収集/分散がループ・ネストに適用されました。 |
LoopNotCountable | ループはカウント不能であるため、正規化されませんでした。 |
LoopNotPerfectNest | ループは完全なネストではないため、ループのアンロールかつフューズは行われませんでした。 |
LoopNotSimdize | SIMD ベクトル化の試みは失敗しました。 |
LoopParallelized | ループは自動並列化されました。 |
LoopReversal | ループ取り消しがループ・ネストに適用されました。 |
LoopRolled | ロールされたループが適用されました。 |
LoopSimdize | SIMD ベクトル化が実行されました。 |
LoopUnroll | ループのアンロール (展開) が実行されました。 |
LoopVector | ループ・ベクトル化が実行されました。 |
LoopVectorVersion | ベクトルのバージョン管理が実行されました。 |
ModuloSchedule | ループはモジュロ・スケジュールされました。 |
NonInnermostLoop | ループは最も内側のループではないため、SIMD ベクトル化の試みは失敗しました。 |
NonNormalizableLoop | ループは正規化可能ではないため、ループ最適化の試みは失敗しました。 |
NonStrideOneInShift | サポートされない配置を持つストライド 1 ではない参照がループに含まれているため、SIMD ベクトル化の試みは失敗しました。 |
NonStrideOneStore | ストライド 1 ではないストアがループに含まれているため、SIMD ベクトル化の試みは失敗しました。 |
NonVectorizableAlignment | ベクトル化可能ではない配置を持つ変数がループに含まれているため、SIMD ベクトル化の試みは失敗しました。 |
NonVectorizableStride | ベクトル化可能ではないストライドがループに含まれているため、SIMD ベクトル化の試みは失敗しました。 |
NotProfitable | SIMD ベクトル化の試みは、ベクトル化に有益ではないため失敗しました。 |
NoValidSchedule | 適正なサイクル・カウントを持つ有効なスケジュールが見つからないため、ループをモジュロ・スケジュールできません。 |
OuterLoopUnroll | 外部ループのアンロールが実行されました。 |
ProhibitedByOption | SIMD ベクトル化がオプションによって使用不可に設定されていたため、SIMD ベクトル化の試みは失敗しました。 |
RegisterPressureTooHigh | レジスター・プレッシャーが高すぎるため、ループをモジュロ・スケジュールできません。 |
StrideOneRequireBF1 | 抽出できない、ストライド 1 ではない参照のブロックがループに含まれるため、SIMDベクトル化の試みは失敗しました。 |
UnrollLimitExceeded | 要求されたアンロール係数がネストに対する制限を超えたため、ループのアンロールかつフューズは行われませんでした。 |
UnsupportedOperation | サポートされない演算がループに含まれるため、SIMD ベクトル化の試みは失敗しました。 |
UnsupportedStructure | サポートされない構造がループに含まれるため、SIMD ベクトル化の試みは失敗しました。 |
UnsupportedVectorTypes | サポートされないベクトル・タイプがループに含まれるため、SIMD ベクトル化の試みは失敗しました。 |
UPCArrayIdiom | 以下の細分化共有アクセスを変換しました。 |
UPCArrayIdiomBlkFactorOne | 細分化されたアクセスを置換できません。 |
UPCArrayIdiomDiffBlkFactors | サポートされない配列イディオムです。 |
UPCCoalesing | 以下の共有参照を合体しました。 |
UPCForallIVUsedInMultipleDims | upc_forall 最適化が失敗しました: affinity 式が複数の配列次元の帰納変数を参照しています。 |
UPCForallLoopVersioned | upc-forall ループはバージョン管理されました。 |
UPCForallNotInnerParallel | upc_forall 最適化が失敗しました: affinity 式では、一番内側の配列次元の帰納変数は使用しません。 |
UPCForallOpt | upc_forall ループは最適化されました。 |
UPCForallVersioningPtrNotInvariant | ポインターがループ・インバリアントでないため、upc_forall ループのバージョン管理が失敗しました。 |
UPCPrivatizedRef1 | 以下の共有参照を private 化しました。 |
UPCPrivatizedRef2 | 共有参照を private 化しました。 |
UPCRemoteUpdate | 共有参照用のリモート更新呼び出しを生成しました。 |
UPCRemoteUpdateUnknownPattern | 共有参照に対する認識されないリモート更新操作です。 |
UserSpecifiedNoSIMD | オプションまたはプラグマによって、SIMD ベクトル化が使用不可に設定されていたため、SIMD ベクトル化の試みは失敗しました。 |
タイプ | 説明 |
ArgumentIsVolatile | 呼び出しに対する引数が揮発性であるため、関数はインライン化されませんでした。 |
CalleeIsCompact | 呼び出し先がサイズに関して最適化されているため、関数はインライン化されませんでした。 |
CalleeIsNoopt | 呼び出し先が noopt でコンパイルされているため、関数はインライン化されませんでした。 |
CallerIsCompact | 呼び出し元がサイズに関して最適化されているため、関数はインライン化されませんでした。 |
CallerIsNoopt | 呼び出し元が noopt でコンパイルされたため、関数はインライン化されませんでした。 |
ExternalLabel | 関数に外部で表示されるラベルが含まれているため、関数はインライン化されませんでした。 |
FunctionTooBig | 関数は、インライン化するには大きすぎるため、インライン化されませんでした。 |
FunctionTryBlock | 呼び出し元が関数試行ブロックであり、呼び出し先がデストラクターであるため、関数はインライン化されませんでした。 |
MiscellaneousLimitation | 制限のため、関数はインライン化されませんでした。 |
MismatchedArguments | 引数のタイプまたは数が呼び出し先のパラメーターと一致しないため、関数はインライン化されませんでした。 |
NestedAddressTakenProcedure | アドレスを取り、呼び出し先の auto にアクセスするネストされた関数が呼び出し先に含まれているため、関数はインライン化されませんでした。 |
NonIPAObject | 呼び出し先が IPA でコンパイルされなかったため、関数はインライン化されませんでした。 |
OptionMismatch | 呼び出し元と呼び出し先が、インライン化と互換性を持たないオプションを使用してコンパイルされたため、関数はインライン化されませんでした。 |
ParameterOfVariablyModifiedType | 呼び出し先に、可変長配列の 1 つ以上のパラメーターが含まれているため、関数はインライン化されませんでした。 |
PDFLowFrequency | 呼び出し先が過度に頻繁に呼び出されたため、インライン化を保証できなかったことが PDF に示されているため、関数はインライン化されませんでした。 |
PrimaryFromSecondaryEntryPoint | 関数は 2 次入り口点を持つ関数から 1 次入り口点への呼び出しであるため、インライン化されませんでした。 |
ProhibitedByUser | ユーザーによって指定されたプラグマまたはディレクティブのため、関数はインライン化されませんでした。 |
RecursiveCall | 関数は帰納的であるため、インライン化されませんでした。 |
SuccessfulInline | 関数は、正常にインライン化されました。 |
VirtualBaseDestructor | 関数は仮想ベースのデストラクターへの呼び出しであるため、インライン化されませんでした。 |
WeakAndNotExplicitlyInline | 呼び出し先が弱く、インラインとしてマークが付けられていないため、関数はインライン化されませんでした。 |
タイプ | 説明 |
ArrayCoalescing | グローバル変数が集約されました。 |
ArrayInterleaving | 小さいデータ型の配列は、大きい集合データ型に分類されました。 |
ArraySplitting | 大きい集合データ型の配列は、より小さいデータ型の複数の配列に分割されました。 |
ArrayTransposing | 多次元配列が転置されました。 |
CommonBlockSplitting | Fortran 共通ブロックまたはモジュールは、より小さいデータ部分に分割されました。 |
MemoryAllocationMerging | 多次元動的配列は、隣接するメモリー・スペースにフラット化されました。 |
これは第 1 版です。