Environment Variables
=====================

For parsing
---------------

.. envvar:: MIGRAPHX_TRACE_ONNX_PARSER

Set to "1", "enable", "enabled", "yes", or "true" to use.
Print debugging traces for the onnx parser.
Prints: initializers (if used), ONNX node operators, added MIGraphX instructions

.. envvar:: MIGRAPHX_DISABLE_FP16_INSTANCENORM_CONVERT

Set to "1", "enable", "enabled", "yes", or "true" to use.
Disables the conversion from fp16 to fp32 for the InstanceNormalization ONNX operator that MIGX does as a workaround for accuracy issues with reduce_mean/variance.
See ``parse_instancenorm.cpp`` for more details.


Matchers
------------

.. envvar:: MIGRAPHX_TRACE_MATCHES

Set to "1" to print the matcher that matches an instruction and the matched instruction.
Set to "2" and use the ``MIGRAPHX_TRACE_MATHCES_FOR`` flag to filter out results.

.. envvar:: MIGRAPHX_TRACE_MATCHES_FOR

Set to the name of any matcher and only traces for that matcher will be printed out.

.. envvar:: MIGRAPHX_VALIDATE_MATCHES

Set to "1", "enable", "enabled", "yes", or "true" to use.
Validate the module after finding the matches (runs ``module.validate()``).

Program Execution 
---------------------

.. envvar:: MIGRAPHX_TRACE_EVAL

Set to "1", "2", or "3" to use.
"1" prints the instruction run and the time taken.
"2" prints everything in "1" and a snippet of the output argument and some statistics (ex. min, max, mean) of the output.
"3" prints everything in "1" and the full output buffers.


Program Verification
------------------------

.. envvar:: MIGRAPHX_VERIFY_ENABLE_ALLCLOSE

Set to "1", "enable", "enabled", "yes", or "true" to use.
Uses ``allclose`` with the given ``atol`` and ``rtol`` for verifying ranges with ``driver verify`` or the tests that use ``migraphx/verify.hpp``.


Pass debugging or Pass controls
-----------------------------------

.. envvar:: MIGRAPHX_TRACE_ELIMINATE_CONTIGUOUS

Set to "1", "enable", "enabled", "yes", or "true" to use.
Debug print the instructions that have input ``contiguous`` instructions removed.

.. envvar:: MIGRAPHX_DISABLE_POINTWISE_FUSION

Set to "1", "enable", "enabled", "yes", or "true" to use.
Disables the ``fuse_pointwise`` compile pass.

.. envvar:: MIGRAPHX_DEBUG_MEMORY_COLORING

Set to "1", "enable", "enabled", "yes", or "true" to use.
Print debug statements for the ``memory_coloring`` pass.

.. envvar:: MIGRAPHX_TRACE_SCHEDULE

Set to "1", "enable", "enabled", "yes", or "true" to use.
Print debug statements for the ``schedule`` pass.

.. envvar:: MIGRAPHX_TRACE_PROPAGATE_CONSTANT

Set to "1", "enable", "enabled", "yes", or "true" to use.
Traces instructions replaced with a constant.

.. envvar:: MIGRAPHX_8BITS_QUANTIZATION_PARAMS

Set to "1", "enable", "enabled", "yes", or "true" to use.
Print the quantization parameters in only the main module.

.. envvar:: MIGRAPHX_DISABLE_DNNL_POST_OPS_WORKAROUND

Set to "1", "enable", "enabled", "yes", or "true" to use.
Disable the DNNL post ops workaround.

.. envvar:: MIGRAPHX_DISABLE_MIOPEN_FUSION

Set to "1", "enable", "enabled", "yes", or "true" to use.
Disable MIOpen fusions.

.. envvar:: MIGRAPHX_DISABLE_SCHEDULE_PASS

Set to "1", "enable", "enabled", "yes", or "true" to use.
Disable the ``schedule`` pass.

.. envvar:: MIGRAPHX_DISABLE_REDUCE_FUSION

Set to "1", "enable", "enabled", "yes", or "true" to use.
Disable the ``fuse_reduce`` pass.

.. envvar:: MIGRAPHX_ENABLE_NHWC

Set to "1", "enable", "enabled", "yes", or "true" to use.
Enable the ``layout_nhwc`` pass.

.. envvar:: MIGRAPHX_ENABLE_CK

Set to "1", "enable", "enabled", "yes", or "true" to use.
Enable using the Composable Kernels library.
Should be used in conjunction with ``MIGRAPHX_DISABLE_MLIR=1``.

.. envvar:: MIGRAPHX_DISABLE_MLIR*
Set to "1", "enable", "enabled", "yes", or "true" to use.
Disable using the rocMLIR library.

.. envvar:: MIGRAPHX_ENABLE_EXTRA_MLIR
Set to "1", "enable", "enabled", "yes", or "true" to use.
Enables additional opportunities to use MLIR that may improve performance.

.. envvar:: MIGRAPHX_COPY_LITERALS

Set to "1", "enable", "enabled", "yes", or "true" to use.
Use ``hip_copy_to_gpu`` with a new ``literal`` instruction rather than use ``hip_copy_literal{}``.

Compilation traces
----------------------

.. envvar:: MIGRAPHX_TRACE_FINALIZE

Set to "1", "enable", "enabled", "yes", or "true" to use.
Debug print instructions during the ``module.finalize()`` step.

.. envvar:: MIGRAPHX_TRACE_COMPILE

Set to "1", "enable", "enabled", "yes", or "true" to use.
Print trace information for the graph compilation process.

.. envvar:: MIGRAPHX_TRACE_PASSES

Set to "1", "enable", "enabled", "yes", or "true" to use.
Print the compile pass and the program after the pass.

.. envvar:: MIGRAPHX_TIME_PASSES

Set to "1", "enable", "enabled", "yes", or "true" to use.
Time the compile passes.


GPU Kernels JIT compilation debugging (applicable for both hiprtc and hipclang)
-----------------------------------------

.. envvar:: MIGRAPHX_TRACE_CMD_EXECUTE

Set to "1", "enable", "enabled", "yes", or "true" to use.
Print commands executed by the MIGraphX ``process``.

.. envvar:: MIGRAPHX_TRACE_HIPRTC

Set to "1", "enable", "enabled", "yes", or "true" to use.
Print HIPRTC options and C++ file executed.

.. envvar:: MIGRAPHX_DEBUG_SAVE_TEMP_DIR

Set to "1", "enable", "enabled", "yes", or "true" to use.
Make it so the created temporary directories are not deleted.

.. envvar:: MIGRAPHX_GPU_DEBUG

Set to "1", "enable", "enabled", "yes", or "true" to use.
Internally, this adds the option ``-DMIGRAPHX_DEBUG`` when compiling GPU kernels. It enables assertions and capture of source locations for the errors. 

.. envvar:: MIGRAPHX_GPU_DEBUG_SYM

Set to "1", "enable", "enabled", "yes", or "true" to use.
Adds the option ``-g`` when compiling HIPRTC.

.. envvar:: MIGRAPHX_GPU_DUMP_SRC

Set to "1", "enable", "enabled", "yes", or "true" to use.
Dump the HIPRTC source files compiled.

.. envvar:: MIGRAPHX_GPU_DUMP_ASM

Set to "1", "enable", "enabled", "yes", or "true" to use.
Dump the hip-clang assembly.

.. envvar:: MIGRAPHX_GPU_OPTIMIZE

Set the optimization mode for GPU compile (``-O`` option).
Defaults to ``-O3``.

.. envvar:: MIGRAPHX_GPU_COMPILE_PARALLEL

Set to the number of threads to use.
Compile GPU code in parallel with the given number of threads.

.. envvar:: MIGRAPHX_TRACE_NARY

Set to "1", "enable", "enabled", "yes", or "true" to use.
Print the ``nary`` device functions used.

.. envvar:: MIGRAPHX_ENABLE_HIPRTC_WORKAROUNDS

Set to "1", "enable", "enabled", "yes", or "true" to use.
Enable HIPRTC workarounds for bugs in HIPRTC.

.. envvar:: MIGRAPHX_USE_FAST_SOFTMAX

Set to "1", "enable", "enabled", "yes", or "true" to use.
Use the fast softmax optimization.

.. envvar:: MIGRAPHX_ENABLE_NULL_STREAM

Set to "1", "enable", "enabled", "yes", or "true" to use.
Allow using null stream for miopen and hipStream.

.. envvar:: MIGRAPHX_NSTREAMS

Set to the number of streams to use.
Defaults to 1.

.. envvar:: MIGRAPHX_TRACE_BENCHMARKING

Set to "1" to print benchmarching trace.
Set to "2" to print benchmarching trace with more detail.

MLIR vars
-------------

.. envvar:: MIGRAPHX_TRACE_MLIR

Set to "1" to trace MLIR and print any failures.
Set to "2" to additionally print all MLIR operations.

.. envvar:: MIGRAPHX_MLIR_USE_SPECIFIC_OPS

Set to the name of the operations you want to always use MLIR regardless of GPU architecture.
Accepts a list of operators separated by commas (ex: "fused", "convolution", "dot").

.. envvar:: MIGRAPHX_MLIR_TUNING_DB

Set to the path of the MLIR tuning database to load.

.. envvar:: MIGRAPHX_MLIR_TUNING_CFG

Set to the path of the tuning configuration.
Appends to tuning cfg file that could be used with rocMLIR tuning scripts.

.. envvar:: MIGRAPHX_MLIR_TUNE_EXHAUSTIVE

Set to "1", "enable", "enabled", "yes", or "true" to use.
Do exhaustive tuning for MLIR.

.. envvar:: MIGRAPHX_MLIR_TUNE_LIMIT

Set to an integer greater than 1.
Limits the number of solutions that MLIR will use for tuning.

CK vars
-----------

.. envvar:: MIGRAPHX_LOG_CK_GEMM

Set to "1", "enable", "enabled", "yes", or "true" to use.
Print Composable Kernels GEMM traces.

.. envvar:: MIGRAPHX_CK_DEBUG

Set to "1", "enable", "enabled", "yes", or "true" to use.
Always add the ``-DMIGRAPHX_CK_CHECK=1`` for compiling Composable Kernels operators.

.. envvar:: MIGRAPHX_TUNE_CK

Set to "1", "enable", "enabled", "yes", or "true" to use.
Use tuning for Composable Kernels.

Testing 
------------

.. envvar:: MIGRAPHX_TRACE_TEST_COMPILE

Set to the target that you want to trace the compilation of (ex. "gpu", "cpu").
Prints the compile trace for the given target for the verify tests.
This flag shouldn't be used in conjunction with ``MIGRAPHX_TRACE_COMPILE``.
For the verify tests only use ``MIGRAPHX_TRACE_TEST_COMPILE``.

.. envvar:: MIGRAPHX_TRACE_TEST

Set to "1", "enable", "enabled", "yes", or "true" to use.
Prints the reference and target programs even if the verify passed successfully.

.. envvar:: MIGRAPHX_DUMP_TEST

Set to "1", "enable", "enabled", "yes", or "true" to use.
Dumps verify tests to ``.mxr`` files.
