blob: 2c683a4376c491dec34e804058560d9194b89c8a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
OpenMP Optimization Remarks
===========================
The :doc:`OpenMP-Aware optimization pass </optimizations/OpenMPOpt>` is able to
generate compiler remarks for performed and missed optimisations. To emit them,
pass these options to the Clang invocation: ``-Rpass=openmp-opt
-Rpass-analysis=openmp-opt -Rpass-missed=openmp-opt``. For more information and
features of the remark system, consult the clang documentation:
+ `Clang options to emit optimization reports <https://clang.llvm.org/docs/UsersManual.html#options-to-emit-optimization-reports>`_
+ `Clang diagnostic and remark flags <https://clang.llvm.org/docs/ClangCommandLineReference.html#diagnostic-flags>`_
+ The `-foptimization-record-file flag
<https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-foptimization-record-file>`_
and the `-fsave-optimization-record flag
<https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang1-fsave-optimization-record>`_
OpenMP Remarks
--------------
.. toctree::
:hidden:
:maxdepth: 1
OMP100
OMP101
OMP102
OMP110
OMP111
OMP112
OMP113
OMP120
OMP121
OMP130
OMP131
OMP132
OMP133
OMP140
OMP150
OMP160
OMP170
OMP180
OMP190
.. list-table::
:widths: 15 15 70
:header-rows: 1
* - Diagnostics Number
- Diagnostics Kind
- Diagnostics Description
* - :ref:`OMP100 <omp100>`
- Analysis
- Potentially unknown OpenMP target region caller.
* - :ref:`OMP101 <omp101>`
- Analysis
- Parallel region is used in unknown / unexpected ways. Will not attempt to
rewrite the state machine.
* - :ref:`OMP102 <omp102>`
- Analysis
- Parallel region is not called from a unique kernel. Will not attempt to
rewrite the state machine.
* - :ref:`OMP110 <omp110>`
- Optimization
- Moving globalized variable to the stack.
* - :ref:`OMP111 <omp111>`
- Optimization
- Replaced globalized variable with X bytes of shared memory.
* - :ref:`OMP112 <omp112>`
- Missed
- Found thread data sharing on the GPU. Expect degraded performance due to
data globalization.
* - :ref:`OMP113 <omp113>`
- Missed
- Could not move globalized variable to the stack. Variable is potentially
captured in call. Mark parameter as `__attribute__((noescape))` to
override.
* - :ref:`OMP120 <omp120>`
- Optimization
- Transformed generic-mode kernel to SPMD-mode.
* - :ref:`OMP121 <omp121>`
- Analysis
- Value has potential side effects preventing SPMD-mode execution. Add
`[[omp::assume(\"ompx_spmd_amenable\")]]` to the called function
to override.
* - :ref:`OMP130 <omp130>`
- Optimization
- Removing unused state machine from generic-mode kernel.
* - :ref:`OMP131 <omp131>`
- Optimization
- Rewriting generic-mode kernel with a customized state machine.
* - :ref:`OMP132 <omp132>`
- Analysis
- Generic-mode kernel is executed with a customized state machine that
requires a fallback.
* - :ref:`OMP133 <omp133>`
- Analysis
- Call may contain unknown parallel regions. Use
`[[omp::assume("omp_no_parallelism")]]` to override.
* - :ref:`OMP140 <omp140>`
- Analysis
- Could not internalize function. Some optimizations may not be possible.
* - :ref:`OMP150 <omp150>`
- Optimization
- Parallel region merged with parallel region at <location>.
* - :ref:`OMP160 <omp160>`
- Optimization
- Removing parallel region with no side-effects.
* - :ref:`OMP170 <omp170>`
- Optimization
- OpenMP runtime call <call> deduplicated.
* - :ref:`OMP180 <omp180>`
- Optimization
- Replacing OpenMP runtime call <call> with <value>.
* - :ref:`OMP190 <omp190>`
- Optimization
- Redundant barrier eliminated. (device only)
|