118 lines · plain
1OpenMP Optimization Remarks2===========================3 4The :doc:`OpenMP-Aware optimization pass </optimizations/OpenMPOpt>` is able to5generate compiler remarks for performed and missed optimisations. To emit them,6pass these options to the Clang invocation: ``-Rpass=openmp-opt7-Rpass-analysis=openmp-opt -Rpass-missed=openmp-opt``. For more information and8features of the remark system, consult the clang documentation:9 10+ `Clang options to emit optimization reports <https://clang.llvm.org/docs/UsersManual.html#options-to-emit-optimization-reports>`_11+ `Clang diagnostic and remark flags <https://clang.llvm.org/docs/ClangCommandLineReference.html#diagnostic-flags>`_12+ The `-foptimization-record-file flag13 <https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-foptimization-record-file>`_14 and the `-fsave-optimization-record flag15 <https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang1-fsave-optimization-record>`_16 17 18OpenMP Remarks19--------------20 21.. toctree::22 :hidden:23 :maxdepth: 124 25 OMP10026 OMP10127 OMP10228 OMP11029 OMP11130 OMP11231 OMP11332 OMP12033 OMP12134 OMP13035 OMP13136 OMP13237 OMP13338 OMP14039 OMP15040 OMP16041 OMP17042 OMP18043 OMP19044 45.. list-table::46 :widths: 15 15 7047 :header-rows: 148 49 * - Diagnostics Number50 - Diagnostics Kind51 - Diagnostics Description52 * - :ref:`OMP100 <omp100>`53 - Analysis54 - Potentially unknown OpenMP target region caller.55 * - :ref:`OMP101 <omp101>`56 - Analysis57 - Parallel region is used in unknown / unexpected ways. Will not attempt to58 rewrite the state machine.59 * - :ref:`OMP102 <omp102>`60 - Analysis61 - Parallel region is not called from a unique kernel. Will not attempt to62 rewrite the state machine.63 * - :ref:`OMP110 <omp110>`64 - Optimization65 - Moving globalized variable to the stack.66 * - :ref:`OMP111 <omp111>`67 - Optimization68 - Replaced globalized variable with X bytes of shared memory.69 * - :ref:`OMP112 <omp112>`70 - Missed71 - Found thread data sharing on the GPU. Expect degraded performance due to72 data globalization.73 * - :ref:`OMP113 <omp113>`74 - Missed75 - Could not move globalized variable to the stack. Variable is potentially76 captured in call. Mark parameter as `__attribute__((noescape))` to77 override.78 * - :ref:`OMP120 <omp120>`79 - Optimization80 - Transformed generic-mode kernel to SPMD-mode.81 * - :ref:`OMP121 <omp121>`82 - Analysis83 - Value has potential side effects preventing SPMD-mode execution. Add84 `[[omp::assume(\"ompx_spmd_amenable\")]]` to the called function85 to override.86 * - :ref:`OMP130 <omp130>`87 - Optimization88 - Removing unused state machine from generic-mode kernel.89 * - :ref:`OMP131 <omp131>`90 - Optimization91 - Rewriting generic-mode kernel with a customized state machine.92 * - :ref:`OMP132 <omp132>`93 - Analysis94 - Generic-mode kernel is executed with a customized state machine that95 requires a fallback.96 * - :ref:`OMP133 <omp133>`97 - Analysis98 - Call may contain unknown parallel regions. Use99 `[[omp::assume("omp_no_parallelism")]]` to override.100 * - :ref:`OMP140 <omp140>`101 - Analysis102 - Could not internalize function. Some optimizations may not be possible.103 * - :ref:`OMP150 <omp150>`104 - Optimization105 - Parallel region merged with parallel region at <location>.106 * - :ref:`OMP160 <omp160>`107 - Optimization108 - Removing parallel region with no side-effects.109 * - :ref:`OMP170 <omp170>`110 - Optimization111 - OpenMP runtime call <call> deduplicated.112 * - :ref:`OMP180 <omp180>`113 - Optimization114 - Replacing OpenMP runtime call <call> with <value>.115 * - :ref:`OMP190 <omp190>`116 - Optimization117 - Redundant barrier eliminated. (device only)118