1. 24 Mar, 2023 1 commit
    • Illia Silin's avatar
      Merge up from staging to master. (#653) · 4aefd6e1
      Illia Silin authored
      
      
      * remove options.hpp.in (#240)
      
      * example of conv bwd weight 1d/2d/3d fp32/fp16/bf16 xdl (#244)
      
      * enable example of conv 1d/3d for bwd weight
      
      * make bf16 kernel do not use atomic add
      
      * using new gridwise gemm for bwd weight on convnd bwd weight
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * fix build (#246)
      
      * fix build
      
      * Revert "fix build"
      
      This reverts commit d7310238
      
      .
      
      * post PR #235 merge fix
      
      * amend
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      
      * add GetWorkSpaceSize to base arg (#253)
      
      * add GetWorkSpaceSize to base arg and make an example on convnd_bwd_weight
      
      * remove redundant compute
      
      * use datatype and split k to check whether a workspace is used
      
      * remove unused computation for work space size
      
      * Add performance tests as a stage of CI. (#247)
      
      * modify ckProfiler_gemm output
      
      * fix syntax
      
      * change ckProfiler output and return 0
      
      * fix syntax
      
      * output datatype
      
      * fix syntax
      
      * output datatype in another way
      
      * fix syntax
      
      * fix syntax
      
      * test return values of ckProfiler
      
      * add layout info and tests, make sure ckprofiler returns 0
      
      * fix syntax
      
      * change layout output
      
      * fix syntax
      
      * fix syntax again
      
      * update script to process perf results
      
      * rearrange jenkins stages
      
      * fix typo
      
      * add python packages to Docker file
      
      * adding setuptools-rust package
      
      * modify parsing for new test parameters
      
      * test db credentials on jenkins
      
      * fix syntax
      
      * update python script to handle incomplete lines
      
      * ungrade python to 3.8 and write the gemm_params table
      
      * add sqlalchemy package to docker
      
      * move perf data processing to master node
      
      * move the master node inside a steps region
      
      * add new stage for result processing
      
      * move results processing to separate stage
      
      * reduce number of tests to speedup debugging
      
      * pass config to processPerfResults stage
      
      * run script on master in a docker container
      
      * replace show_node_info
      
      * try loading docker on master node again
      
      * use ansible node instead of master
      
      * get rid of pymysql package
      
      * try ssh connection using paramiko
      
      * put back pymysql
      
      * put the perf data processing back on the gpu node
      
      * put back artifact definition
      
      * archive the perf_log before parsing
      
      * clean up jenkinsfile, fix parsing
      
      * fix typo
      
      * enable all perf tests
      
      * put all stages in original order, finalize script
      
      * fix gpu_arch version
      
      * update parsing script
      
      * remove obsolete file causing merge conflict
      
      * Overhaul to Reducton and its dependants  (#237)
      
      * Tiny fix in dynamic_buffer.hpp to support vectorized AtomicAdd for double type
      
      * Update to host layer and host reduction
      
      * Merge and remove reduction kernels
      
      * Merge and remove reduction device interfaces and update pooling device interface
      
      * Merge and remove useless reduction device instances
      
      * Update to reduction profiler and reduction ctests
      
      * Update to reduction and pooling examples and add one reduction example
      
      * Change to reduction examples to let them testable by ctest
      
      * Add explicit pass checking for reduction and pooling examples
      
      * Explicit assignment of tensor shapes in example reduce_blockwise_two_call
      
      * Use atomic_add to repace atomicAdd and add atomic_add for double type
      
      * Add reduce ctest support for double data type
      
      * Replace to_int_vector() by using c++ std::vector::assign()
      
      * Keep DeviceReduceThreadWise separated from DeviceReduceBlockWise
      
      * Merge DeviceReduceBlockWise and DeviceReduceMultiBlockAtomicAdd into DeviceReduceMultiBlock
      
      * Add GetAtomicOperationZeroValue() support for AtomicMax
      
      * Tiny change to reduce example README.md
      
      * Fix some tiny issues due to branch merging
      
      * Revoke previous change in dynamic_buffer.hpp and add atomic_add for double2_t
      
      * Add reduce multiblock_atomic_add instances for fp64 to verify vectorized atomic_add on fp64
      
      * Renaming
      
      * Clean the header includings in device_reduce instances header files
      
      * Navi21 gemm (#197)
      
      * start adding navi21 GEMM
      
      * navi_gemm_km_kn_mn_fp32 compiles and passes one test.
      
      * rename variables and functions in gridwise_gemm_dlops_v1r3
      
      * add other 3 layouts; format instance
      
      * adding more tuning parameters
      
      add tuning parameters for other 3 layouts
      
      * add gemm_dlops_f16
      
      * tmp
      
      * add dependence of DeviceGemm::IsSupportedArg() on arch
      
      * minor changes
      
      * minor changes
      
      * minor changes
      
      * minor changes
      
      * minor changes
      
      * minor changes
      
      * minor changes
      
      * push gemm_dlops into profiler
      
      * minor changes
      
      * if using xdl or dlops is moved into profiler_gemm_impl
      
      * minor changes
      
      * minor changes
      
      * remove is_xdl from profile_gemm_impl
      
      * make IsSupportedArg dependent on arch for other device_gemm
      
      * minor changes
      
      * minor changes
      
      * fix a bug in f_generate_tensor_value
      
      * add 64x64x64 for gemm_dlops_int8
      
      * add 64x64x64 for gemm_dlops_int8
      
      * comment out 3 layouts in gemm_dlops_int8; add 32x32x32 for gemm_dlops_int8; init A values to 1
      
      * fix
      
      * start fixing tuning parameters
      
      * monir
      
      * minor changes
      
      * minor changes
      
      * minor changes
      
      * fixing
      
      * adding example
      
      * adding example
      
      * adding example
      
      * add gemm fp32 example
      
      * clean up
      
      * use 128x128x16 as MNK tile in navi21 gemm example
      
      * bug fix
      
      * fix test
      
      * use new block c tile
      
      * clean
      
      * fix build
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: wangshaojie6's avatarshaojiewang <wsjmessi@163.com>
      
      * minor fix for recent PR (#255)
      
      * minor fix
      
      * clean
      
      * Tensile-style block to C tile map (#239)
      
      * fix build
      
      * Revert "fix build"
      
      This reverts commit d7310238
      
      .
      
      * post PR #235 merge fix
      
      * amend
      
      * adds tensile-stype c-tile map
      
      * make it dynamic version
      
      * add k-split flavor tile map
      
      * apply tensile-style tile map to all xdl gridwise gemms
      
      * remove dead code
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Hotfix binary elementwise (for broadcast on fastest axis) (#254)
      
      * Support different length of ScalarPerVector
      
      * Add example of broadcast on fastest axis
      
      * Typo
      
      * Refine fastest example
      
      * Add dimension check
      
      * Modify fastest broadcast example to 3d
      
      * Enforce users give scalarPerVector explicitely
      
      * 1. Add CscalarPerVedctor
      2. Not only broadcast on fastest need to set scalarPerVector to 1
      
      * Rename var
      
      * Move IsScalarPerVectorValid() inside IsSupportedArgument()
      
      * Separate GridDesc_M0 into A, B and C
      
      * rename var
      
      * Rename var of length
      Co-authored-by: default avatarrocking <chunylai@amd.com>
      
      * Add pooling example (#257)
      
      * Add example for computing LayerNorm mean and meansquare
      
      * Refactor the pool2d_fwd example and add example for float type testing
      
      * Revert "Add example for computing LayerNorm mean and meansquare"
      
      This reverts commit df52e6f9d897b00c981baa48f291450bcd60925d.
      
      * Tiny fix in pool2d_fwd_common.hpp
      
      * Add FP64 XDL GEMM built-in function (#199)
      
      * add intrin_mfma_f64_16x16x4f64
      
      * add example
      
      * gemm reference add double data type
      
      * chang init data
      
      * fix M N PerXdlops
      
      * fix ifdef
      
      * add comparsion config
      
      * add conv fwd example
      
      * format log out
      
      * change rc matrix egister layout
      
      * reorganize example
      
      * reorganize example 2
      
      * format,because merge develop
      
      * fix call impl adding acc data type
      
      * lost ;
      
      * add compiler warning
      
      * change example tunning parameters
      
      * add test for fp64
      
      * add instance
      
      * add test/gemm/gemm_fp64.cpp
      
      * fix get name issue
      
      * remove some tunning parameter
      
      * fix conflict
      
      * format
      
      * use integer value for GEMM test
      
      * add acc data type
      
      * remove typeid because fp16
      
      * fix streamconfig etc bug from merging develop
      
      * format
      
      * remove test_gemm_xdl_fp64
      
      * add AccDataType
      
      * AccDataType problem
      Co-authored-by: default avatarqinletao <letaoqin@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Fixing conv bug  (#258)
      
      * debugging conv
      
      * fix oversight where ctile map is constructed before initializing c desc
      
      * example program should returns error code
      
      * clean up
      
      * changed Block2CTileMap in conv2d and convnd
      
      * clean up
      
      * clean up
      
      * cleanup
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      
      * gemm + layernorm (#261)
      
      * Implement reduction meand and reduction square mean
      
      * Refine file name
      
      * Add reduce mean and square mean
      
      * Fix parameter name
      
      * Add normalize device op (not implement invoker::run())
      
      * Remove epislon
      
      * Refine deviceop
      
      * Add 5ary elementwise for normalization
      
      * Add layernorm example
      
      * layerNorm verication
      
      * Fix compiler error due to merge from develop
      
      * Fix typo
      
      * Fix compile error
      
      * Refine naming
      
      * [What] Suport non pointer for invoker and argument
      [Why] Snyc coding style with gemm
      
      * Refine folder name
      
      * Refine class name
      
      * Evaluate perf of the kernel
      
      * Fix compile error
      
      * [What] Refine perf evaluation in example of gemm + reduction
      [Why] evaluation of gemm + reduction may cause verification fail. Because evaluation will not initial global memory
      
      * clang-format
      
      * Minor fix for recent PR (#260)
      
      * fix example
      
      * update IsSupportedArgument
      
      * fix
      
      * disable fp64 conv example as test
      
      * Multi-kernel CGEMM (#230)
      
      * Reference CGEMM + test stub
      
      * Format.
      
      * Incomplete simple implementation
      
      * Library instances
      
      * Sketch of tests
      
      * Test fixes.
      
      * Example added
      
      * Cosmetics
      
      * Add elementwise operation kernel and example
      
      * Add comment
      
      * Add template argument of dim . Prepare to support multiple dimension
      
      * Rename example
      
      * Support 1 dimension
      
      * Add static assert
      
      * Add comment
      
      * Second auxiliary buffer added
      
      * Extract pad
      
      * Remove redundant argument
      
      * Support any dimension for elementwise operation
      
      * Remove line
      
      * Let it be the multiple number of CU
      
      * Move thread per block to the parameter of constructor
      
      * Consuming binary ops to do A+B / A-B
      
      * Fix + cosmetics + bf16 test commented out temporarily
      
      * Format
      
      * Enabling bf16 test
      
      * Revert "Enabling bf16 test"
      
      This reverts commit f497e2ba.
      
      * Fix + test reenabled
      
      * fix build
      
      * Revert "fix build"
      
      This reverts commit d7310238
      
      .
      
      * post PR #235 merge fix
      
      * amend
      
      * Single workspace for cgemm + helper
      
      * Perf calc fix
      
      * Review remarks: static_cast
      
      * Review remarks: binary ops templated
      
      * Cleaning
      
      * Removal of instances and their tests
      
      * Review remarks from aosew addressed
      
      * Review remark: unnecessary attribute
      
      * Post-merge fixes
      
      * Restrict 4gemm to PassThrough + bug fix
      
      * Review remarks
      
      * update licence
      
      * change cgemm example to fp16
      Co-authored-by: default avatarrocking <chunylai@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      
      * Pass gemm_descs for grouped gemm via __constant__ buff (#232)
      
      * moved gemm_descs_args into const buff
      
      * use CK_CONSTANT_ADDRESS_SPACE instead of global constant
      
      * clean
      
      * moved hipMemAlloc outside of deviceOp
      
      * add SetWorkSpacePointer
      
      * fix ignore
      
      * Unify the naming of the math functions used by the host and kernel (#262)
      
      * Use the unified naming for math functions on host and HIP kernel
      
      * Corresponding change/simplification in reduction host/profiler/examples due to unified math functions renaming
      
      * Renaming GetReductionZeroVal() to GetIdentityValue()
      
      * Tiny renaming in profile_reduce_impl.hpp
      
      * More renaming in profile_reduce_impl.hpp
      
      * Replace zeroVal by identiyVal
      
      * Remove ck_ prefix in the naming of ck::math provided functions
      
      * use old ctile to avoid conv2d fwd bias relu add compute error (#271)
      
      * Adding Resnet50 test to Performance tests (#268)
      
      * add resnet50 test to performance tests
      
      * add blanks before gpu_arch in log files
      
      * add resnet50 test with N=4 and process its results
      
      * add ROCM and HIP versions to test tables
      
      * uncomment the sql queries
      
      * fix script syntax in jenkinsfile
      
      * Add performance tests on MI200 in CI, reporting number of CUs, add stand-alone perf test. (#277)
      
      * use pre-built docker instead of building a new one
      
      * try docker.image.pull
      
      * change syntax in docker.image()
      
      * add 30 min timeout
      
      * increase timeout to 3 hours
      
      * move performance tests to first stage for testing
      
      * set image variable to the new container name
      
      * update image name
      
      * check available images
      
      * check available images in both places
      
      * try different image name
      
      * use image ID to refer to image
      
      * run performance on gfx90a
      
      * fix the gpu_arch labeling, add parameter
      
      * move env vars out of stages
      
      * add stand-alone performance script, MI200 tests, CU numbers
      
      * Use new github credentials (#278)
      
      * use pre-built docker instead of building a new one
      
      * try docker.image.pull
      
      * change syntax in docker.image()
      
      * add 30 min timeout
      
      * increase timeout to 3 hours
      
      * move performance tests to first stage for testing
      
      * set image variable to the new container name
      
      * update image name
      
      * check available images
      
      * check available images in both places
      
      * try different image name
      
      * use image ID to refer to image
      
      * run performance on gfx90a
      
      * fix the gpu_arch labeling, add parameter
      
      * move env vars out of stages
      
      * add stand-alone performance script, MI200 tests, CU numbers
      
      * dos2unix for run_perf_tests.sh
      
      * try the new git credentials
      
      * use env var for git credentials
      
      * example for convnd bwd weight bf16 splitk (#265)
      
      * add GetWorkSpaceSize to base arg and make an example on convnd_bwd_weight
      
      * add bwd weight for bf16: init
      
      * remove redundant compute
      
      * use datatype and split k to check whether a workspace is used
      
      * remove unused computation for work space size
      
      * add some code for bfp16
      
      * add device/grid unary op
      
      * add unary type convert to bwd-weight example
      
      * support bf16 splitk kernel for convnd bwd weight
      
      * 1. remove comments. 2. add checkvalidity. 3. add gridsize computation
      
      * add workspace size check
      
      * fix format
      
      * change function name
      
      * Gemm + bias + relu + add + layernorm (#272)
      
      * Copy "gemm reduce" to "gemm bias add reduce"
      
      * Implement gemm bias add reduction
      
      * Fix compiler error due to merge from develop
      
      * Add tensor operation for gemm + bias + add + reduce
      
      * Add gemm_bais_add_reduce to ckProfiler
      
      * Add c1 functor
      
      * Refine type
      
      * Use reduceAccDataType instead of explicitly float
      
      * Change to use check_err()
      
      * Do relu in float32 instead of bhalf_t. Because bhalf_t is unsigned
      
      * Refactor relu. using type_trait instead of overloading
      
      * Rename DxsReduceAccElementwiseOperation to DxsReduceAccElementwiseOperation
      
      * Fix denominator
      
      * Refine nameing
      
      * Fix denominator  in host
      
      * Remove useless include header
      
      * Use AccDataType
      
      * Fix static_cast order
      
      * Refine type
      
      * [What] Remove tuple type in the base class
      [Why] External api depend on base class. if base class has relationship with type, we will need many class for different type
      
      * add p_workspace to baseargument (#275)
      
      * use universal workspace pointer in bwd-weight (#286)
      
      * Regulate reduction accumulator operations and Element-wise operations (#274)
      
      * Remove template from Reducton operation classes and add template to their operator() and GetIdentityValue() interfaces
      
      * Change to unary elementwise operators and the reduce_unary_operator (class for mapping) and dependent variations in all host layers
      
      * Remove the data type template parameter from reduce_binary_operator (class for mapping) and dependent variations in host layers
      
      * Add InMemoryDataOperatonSupportedOnDataType to check the matching between data type and InMemoryDataOperation
      
      * Use struct-scope operator template instantiation for binary and unary element-wise operations
      
      * Change a few more elementwise operations to use template for operator()
      
      * Tiny correction in Normalize operator
      
      * Add static_assert to check the data type appliability for some reduction accumulator and element-wise operatons
      
      * Correction in some examples with regard to using ReduceAccDataType
      
      * Use static_assert for UnaryDivide
      
      * Update to merged codes to use Element-wise operations and Reduction Accumulator operations correctly
      
      * Tiny fix with regard to SetWorkSpacePointer()
      
      * Don't look up the /sys/module/amdgpu/version file. (#287)
      
      * use pre-built docker instead of building a new one
      
      * try docker.image.pull
      
      * change syntax in docker.image()
      
      * add 30 min timeout
      
      * increase timeout to 3 hours
      
      * move performance tests to first stage for testing
      
      * set image variable to the new container name
      
      * update image name
      
      * check available images
      
      * check available images in both places
      
      * try different image name
      
      * use image ID to refer to image
      
      * run performance on gfx90a
      
      * fix the gpu_arch labeling, add parameter
      
      * move env vars out of stages
      
      * add stand-alone performance script, MI200 tests, CU numbers
      
      * dos2unix for run_perf_tests.sh
      
      * try the new git credentials
      
      * use env var for git credentials
      
      * don't look up /sys/module/amdgpu/version
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * GEMM with Multiple Source, GEMM+Bias+Add+FastGeLU example and ckProfiler (#241)
      
      * ad gelu and fast_gelu
      
      * added GeLU and fast GeLU
      
      * clean up
      
      * add gemm+fastgelu example
      
      * add gemm+gelu instances
      
      * update profiler
      
      * clean up
      
      * clean up
      
      * adding gemm+bias+activation
      
      * clean
      
      * adding bias
      
      * clean
      
      * adding gemm multiple d
      
      * debugging
      
      * add gemm bias add fastgelu
      
      * rename, clean
      
      * refactoring; add readme
      
      * refactor
      
      * refactor
      
      * refactor
      
      * refactor
      
      * refactor
      
      * refactor
      
      * fix
      
      * fix
      
      * update example
      
      * update example
      
      * rename
      
      * update example
      
      * add ckProfiler
      
      * clean
      
      * clean
      
      * clean
      
      * clean
      
      * add comment
      
      * use type_convert
      
      * clean
      
      * clean element wise op
      
      * update readme and script (#290)
      
      * bring up to date with the usage of __builtin_amdgcn_sched_barrier (#293)
      
      * Create MIT LICENSE (#229)
      
      * Create LICENSE
      
      * add contributors, add license into config.hpp
      
      * update
      
      * Standalone softmax kernel (#284)
      
      * initial stub for standalone softmax
      
      * start device_softmax_mk_to_mk as a wrapper to device_reduce_mk_to_m
      
      * host softmax validates
      
      * compiles; to implement beta scaling
      
      * use NaN trick to efficiently ignore OOB values during sum of exponentials
      
      * freeload device_reduce's utility functions
      
      * clean up interface
      
      * adding prior value (beta scaling)
      
      * remove restriction related to perf considerations
      
      * apply clang-format
      
      * clean; disable diagnostics
      
      * resolve conflicts
      
      * add exp wrapper
      
      * honor HostTensorDesc interface; allow implicit cast from different vector<T> type
      
      * test softmax for fp16/fp32
      
      * update readme
      
      * amend commit NaN trick
      
      * remove redundant param added during development
      
      * format
      
      * replace ScalarDataType with AccDataType
      
      * separate out test programs by precision type
      
      * move softmax sample code to its own folder
      
      * format
      
      * keep up with recent changes in reduction API
      
      * remove extra header
      
      * fix Issue 291 (#294)
      
      * rename for typeconvert functor
      
      * refine code
      
      * Testing all fwd convolution specializations. (#259)
      
      * UniforFill with integer values.
      
      * Log tested instance type string.
      
      * Add UT for all convolution specializations.
      
      * debugging conv
      
      * Fix dangling reference bug.
      
      * Small refinements.
      
      * Fix call to error checking function.
      
      * Small refinements to tests.
      
      * Configure error tolerance
      * Change problem size.
      * Remove OddC case from types that do not support it.
      
      * Add helper traits for AccumulatorDataType.
      
      * Print first 5 errs in check_err for integral types.
      
      * Rename FillUniform to FillUniformDistribution
      
      * Refactor
      
      * Do not use typed tests.
      * Instead use plain fixture class with templatized member functions.
      * Initialize tensors with integer values.
      
      * Refine test instances.
      
      * Properly set accumulator data type.
      * Add another "big" instance.
      
      * Refactor convolution tests.
      
      * Revert "debugging conv"
      
      This reverts commit b109516455631ff8fd6dce99cf7c14bf8e323ebb.
      
      * Add pragma once + format + small refinement.
      
      * Fix some unwanted changes.
      
      * Clang-format
      
      * Fix profile_convnd to use renamed tensor initializer.
      
      * Add instances for ConvFWDND kernel case 2D
      
      * Helpers to get ConvNDFwd 2D instances.
      
      * Refactoring.
      
      * Remove "small block" instance as it was generating compiler errors.
      * Remove default template parameters values.
      
      * Refine and fix test.
      
      * Fix problem with default template parameter types.
      * Adjust error thresholds for floating point values test.
      * Use integer values initialization for instances test.
      * Add tests for ConvNDFwd 2D case.
      
      * Remove AccumulatorDataType type trait.
      
      * Update unit-tests.
      
      * Remove operator<< overload.
      
      * Unlock conv1d/3d nd fwd instances.
      
      * Enable skipping calculating reference using flag.
      
      * Fix number of channels for first ResNet50 layer.
      
      * Clang-format.
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * update license (#297)
      
      * update license
      
      * update license
      
      * update license
      
      * update license
      
      * Absolute include path (#281)
      
      * ad gelu and fast_gelu
      
      * added GeLU and fast GeLU
      
      * clean up
      
      * add gemm+fastgelu example
      
      * add gemm+gelu instances
      
      * update profiler
      
      * clean up
      
      * clean up
      
      * adding gemm+bias+activation
      
      * clean
      
      * adding bias
      
      * clean
      
      * adding gemm multiple d
      
      * debugging
      
      * add gemm bias add fastgelu
      
      * rename, clean
      
      * refactoring; add readme
      
      * refactor
      
      * refactor
      
      * refactor
      
      * refactor
      
      * refactor
      
      * refactor
      
      * fix
      
      * fix
      
      * update example
      
      * update example
      
      * rename
      
      * update example
      
      * add ckProfiler
      
      * clean
      
      * clean
      
      * clean
      
      * clean
      
      * add client app example
      
      * update readme
      
      * delete obselete files
      
      * remove old client app
      
      * delete old file
      
      * cleaning
      
      * clean
      
      * remove half
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path for all examples
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * revert client app example
      
      * clean build
      
      * fix build
      
      * temporary disable client test on Jenkins
      
      * clean
      
      * clean
      
      * clean
      
      * add license in file (#303)
      
      * Switch to standard ROCm packaging (#301)
      
      * Switch to standard ROCm packaging
      
      * Revert .gitignore changes
      
      * install new rocm-cmake version
      
      * update readme
      Co-authored-by: default avatarillsilin <Illia.Silin@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * External Interface (#304)
      
      * add client example
      
      * clean
      
      * clean
      
      * reorg
      
      * clean up profiler
      
      * reorg
      
      * clea
      
      * fix profiler
      
      * function for getinstances
      
      * update client example
      
      * update client example
      
      * update client example
      
      * update
      
      * update example
      
      * update Jenkins file
      
      * update cmake
      
      * update Jenkins
      
      * external api for gemm + layernorm (#285)
      
      * Extract base class for elementwise
      
      * Refactor interface of DeviceGemmReduce. Do not use tuple in interface
      
      * [What] Rename d into reduce in gemm + reduction related code
      [Why] Prepare to add d term for add
      
      * Unify base class of gemm + reduce and gemm + bias + add + reduce
      
      * 1. Rename gemm_bias_add_reduce for external api
       2. Refine cmake
      
      * Add normalize device operation
      
      * [What] Reorder the argument
      [Why] Because d0 is also the input of c.
      
      * Add type string
      
      * Add example of gemm_bias_add_layernorm  via external api
      
      * Refactor example code
      
      * clang-format
      
      * Fix compile error
      
      * clang-format
      
      * Add external api for gemm_add_add_layernorm and normalize
      
      * Add client example
      
      * clang-format
      
      * Remove incorrect old packaging statement (#308)
      
      * Standalone sweep once softmax kernel w/ ckProfiler (#295)
      
      * use 'sweep once' softmax kernel where applicable
      
      * threadwise copy's dst buffer can specify invalid element value
      
      * add int8 in/out float compute softmax support
      
      give a bit of leeway for int absolute tolerance as there's a single data point of all test cases showing off-by-1 error
      
      * format
      
      * softmax inherits DeviceNormalization
      
      * softmax profiler stub
      
      * tighten up reference softmax interface
      
      * example prints tensor dimension
      
      * add fp32 to softmax profiler
      
      * rename header
      
      * hook with ckProfiler
      
      * format
      
      * resolve merge conflict
      
      * resolve merge conflicts
      
      * update normalization profiler help string
      
      * resolve conflict
      
      * typo
      
      * remove residual
      
      * softmax profiler: address feedback
      
      * test for mixed precision input/output
      
      * fully qualify ck::math::isnan
      
      * add comment for device normalization interface
      
      * revise wording
      
      * constness for alpha/beta scaler pointer
      
      * Grouped Gemm ckProfiler hotfix (#313)
      
      * add setWorkspace in profiler
      
      * fix
      
      * Gemm + bias + c_permute (#312)
      
      * init commit
      
      * add desc
      
      * finished c permute
      
      * fixed vector lens
      
      * Improve external interface for GEMM and GEMM+add+add+fastgelu (#311)
      
      * interface for GEMM and GEMM+add+add+fastgelu
      
      * rename namespace
      
      * instance factory
      
      * fix build
      
      * fix build; add GEMM client example
      
      * clean
      
      * add batch_stride into batched gemm (#314)
      
      * add batch_stride
      
      * fixed test
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Single-kernel GEMM + layernorm (#263)
      
      * dump lds content in appropriate precision type
      
      * add squared add reduction op; allows sq sum
      
      * initial stub from regular gemm impl
      
      * layernorm example code & host verification
      
      * initial layernorm implementation
      
      * tidy up
      
      * make C0 precision type consistent with C
      
      * clang-tidy and additional comments
      
      * tighten up example code
      
      * account for extra flops/bytes from normalization
      
      * clang-format
      
      * c0 bias/beta/gamma now have its own precision type
      
      * AccElemOp for gemm outputs prior to feeding to layernorm
      
      * update workgroup mapping
      
      * rename kernel template param to reflect its dual use
      
      * use LDS mem pool for reduction workspace
      
      * change cshuffle precision type to f16; clean up
      
      * clang-format
      
      * correct naming
      
      * explicit cast
      
      * fully implemented gemm + bias + activation + add + norm
      
      * activation in correct order
      
      * reflect reduction API's recent change
      
      * amend
      
      * clean up; add comment
      
      * keep up with recent changes in reduction API
      
      * format
      
      * resolve merge conflicts
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * modified grouped gemm addressing method (#307)
      
      * modified grouped gemm addressing method
      
      * modified addressing method in device_grouped_gemm_xdl.hpp
      Co-authored-by: default avatarroot <root@dc-smc-13.amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Gemm+Bilinear (#316)
      
      * refactor
      
      * update example
      
      * update example
      
      * gemm bilinear
      
      * clean
      
      * update
      
      * Batched Gemm with C Permute (#305)
      
      * init commit
      
      * add c_permute
      
      * add mnk padding
      
      * fixed comments
      
      * Fixed comments
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * N-D Tensor Contraction example, instance, and client example (#270)
      
      * adding contraction
      
      * add contraction example
      
      * update examle
      
      * update example
      
      * format
      
      * update readme
      
      * clean header
      
      * clean header
      
      * contraction with multiple D
      
      * rename
      
      * fix naming issue; add instances for contraction+bilinear
      
      * change assumed virtual layout of contraction; add client example
      
      * update example
      
      * update
      
      * contraction+scale
      
      * use type_convert
      
      * rename
      
      * add conv1d/3d bwd weight instances (#318)
      
      * add conv1d/3d bwd weight instances
      
      * add profiler code
      
      * GEMM pipeline v2 (#317)
      
      * format
      
      * improving pipeline
      
      * fix typo
      
      * format
      
      * adding thread group
      
      * adding thread group
      
      * adding thread group
      
      * adding gemm pipeline
      
      * tweak
      
      * refactor
      
      * refactor
      
      * add missing type convert
      
      * refactor
      
      * refactor
      
      * refactor
      
      * clean
      
      * fix build
      
      * refactor
      
      * format
      
      * clean up
      
      * use remove_cvref_t
      
      * clean
      
      * use pipeline_v2 for gemm kernel
      
      * Remove inconsistent indent
      
      * Fix compilation errors due to incomplete merge process
      
      * Add missing include directives
      
      * Fix compilation errors in currently unused files
      
      * Add license in newly added files
      
      * Re-format touched files by clang-format-10
      
      * Fix wrong template argument count of DeviceGemm<>
      
      * Use language construct to choose between types
      
      * Use language construct to choose GEMM example instance
      
      * Fix compilation error due to interface change
      
      * Re-use type alias to avoid duplication
      
      * Unify type alias usage in source file
      
      * Only use v2 pipeline in one gridwise GEMM type
      
      * Remove no-longer used include directives
      
      * Add static_assert() to check pipeline type requirements
      
      * Revert "Add static_assert() to check pipeline type requirements"
      
      This reverts commit f0985f0a132671a1caaea92810c9f30dcf062bde.
      
      * clean
      
      * clean
      
      * clean
      
      * clean
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: wangshaojie6's avatarshaojiewang <wsjmessi@163.com>
      
      * Add switch between compilers, make 9110 compiler default, add full QA scripts. (#322)
      
      * adding scripts for full perf test suite
      
      * uncomment the sql queries
      
      * fix typo and chmod a+x for scripts
      
      * dos2unix for all new scripts
      
      * disable verification in full performance test
      
      * fix reduction scripts, add gfrouped_gemm hotfix
      
      * fix the grouped_gemm hotfix and only run reduction for fp16
      
      * change compiler flag syntax
      
      * fix syntax
      
      * add predefinition of dockerArgs
      
      * avoid redefinitions of dockerArgs
      
      * add blank space at the end of dockerArgs
      
      * try to build with release compiler
      
      * adding spaces inside if condition
      
      * limit the number of threads for building 9110 compiler
      
      * change the way HIP_CLANG_PATH is set
      
      * remove the export command
      
      * change the conditional ENV syntax
      
      * set HIP_CLANG_PATH at docker run time
      
      * update scripts for full qa
      
      * enable the sql write query
      
      * fix typo
      
      * remove a comment from a script
      
      * minor fix in gemm client example (#328)
      
      * Standalone layernorm (#315)
      
      * Implement layernorm kernel and deviceOp
      
      * verify gpu kernel with host code
      
      * 1. Separate gamma aand beta from affine
      2. Check if argument is valid
      
      * clean
      
      * Sync the naming
      
      * Support sweep once mode if we can put k dimension data inside one block
      
      * [What] Get length from upper length.
      [Why] if we get length directly, we may get length after padding.
      
      * We only use one block in K dimension.
      Hence, we can simplify the indexing of global R/W.
      
      * Use 1d descriptor for gamma and beta
      
      * Add accElementwiseOp
      
      * Extract layernorm host code
      
      * Support different YVectorDim in GridwiseLayernorm
      
      * Rename XSrcVectorDim to XYSrcVectorDim. Because we use same parameter in deviceOp
      
      * Gamma and beta can share the VGPR.
      
      * Add test for fp32 and fp16
      
      * Fix bug of concurrency and add test case which may fail orignally
      
      * Propagate NaN for layernorm
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * fix standalone softmax race condition around blockwise reduction (#323)
      
      * Grouped Gemm device with multiD grid (#319)
      
      * replace gridwise_v2r3 with multiD
      
      * adjust parameters
      
      * add instances
      
      * fixed test_grouped_gemm
      
      * fix standalone softmax race condition around blockwise reduction
      
      * fixed ci
      
      * fixed comment: remove redundant workspace
      
      * use instanceFactory
      
      * add test layout
      
      * add empty Ds
      
      * add bias example
      
      * use array
      
      * sperate examples
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      
      * Add full QA with verification option, few other changes. (#331)
      
      * add verify flag and update scripts
      
      * replace old check_error function with the new check_err
      
      * fix syntax
      
      * remove blank spaces
      
      * remove empty line
      
      * add check_err for tensors
      
      * fix syntax
      
      * replace tensors with vectors in check_err calls
      
      * fix syntax
      
      * remove blank spaces
      
      * fix syntax
      
      * add new line at end of file
      
      * disable conv2d_bwd_weight test, add gpu check
      
      * set check_gpu using export
      
      * check GPU using runShell
      
      * add definition of runShell
      
      * fix script syntax
      
      * reduce the number of threads, add full qa option
      
      * run processing scripts in bash
      
      * fix the branch and host names in performance scripts, add chronos
      
      * replace parameterizedCron with cron
      
      * archive the perf log files
      
      * try to fix git call
      
      * pass branch and host names as arguments into scripts
      
      * fix script arguments
      
      * fix script arguments
      
      * process results on master
      
      * fix pipeline
      
      * add definition of gpu_arch
      
      * run processing scripts in docker
      
      * fix the brackets
      
      * add agent master for the processing stage
      
      * get rid of show_node_info call on master
      
      * try using mici label instead of master, disable MI100 tests for now
      
      * fix syntax
      
      * simplify container for results processing
      
      * remove node(master) from the process_results stage
      
      * put all stages in original order
      
      * change the agent label from master to mici for gfx908
      
      * Batched Gemm with multiD (#329)
      
      * add batched_gemm_multiD
      
      * add ds
      
      * rename file
      
      * add batched_gemm_bias example
      
      * add batch_strides into bmm_c_permute
      
      * clean
      
      * rename example_28 to example_29
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * comment out cron trigger (#334)
      
      * Clean up conv example, Instances, profiler and test (#324)
      
      * convnd_fwd fp16 example
      
      * update example
      
      * update example
      
      * update instance
      
      * updating refernce conv
      
      * update reference conv
      
      * update conv fwd profiler
      
      * update conv 1d and 3d instance
      
      * update include path
      
      * clean
      
      * update profiler for conv bwd data and weight
      
      * update conv bwd weight
      
      * clean
      
      * update conv example
      
      * update profiler for conv bwd weight
      
      * update ckprofiler for conv bwd data
      
      * fix reference conv bwd data bug; update conv bwd data test
      
      * update examples
      
      * fix initialization issue
      
      * update test for conv fwd
      
      * clean
      
      * clean
      
      * remove test case too sensitive to error threshhold
      
      * fix test
      
      * clean
      
      * fix build
      
      * adding conv multiple d
      
      * adding conv multiple D
      
      * add matrix padder
      
      * add gemm padding to convnd
      
      * adding group conv
      
      * update gemm multi-d
      
      * refactor
      
      * refactor
      
      * refactor
      
      * clean
      
      * clean
      
      * refactor
      
      * refactor
      
      * reorg
      
      * add ds
      
      * add bias
      
      * clean
      
      * add G
      
      * adding group
      
      * adding group
      
      * adding group
      
      * update Tensor
      
      * clean
      
      * update example
      
      * update DeviceGemmMultipleD_Xdl_CShuffle
      
      * update conv bwd-data and bwd-weight
      
      * upate contraction example
      
      * update gemm and batch gemm with e permute
      
      * fix example build
      
      * instance for grouped conv1d
      
      * update example
      
      * adding group conv instance
      
      * update gemm bilinear instance
      
      * update gemm+add+add+fastgelu instance
      
      * update profiler
      
      * update profiler
      
      * update test
      
      * update test and client example
      
      * clean
      
      * add grouped conv into profiler
      
      * update profiler
      
      * clean
      
      * add test grouped conv, update all conv test to gtest
      
      * update test
      
      * Run CI on MI100 nodes only, run daily QA on MI200 nodes. (#339)
      
      * turn on full qa only on gfx90a, use int initialization
      
      * change script syntax
      
      * update script parsing clinfo, throw exception if 0 devices
      
      * fix syntax
      
      * try using toBoolean for the QA conditions
      
      * run regular CI on MI100 only, use MI200 only for daily QA
      
      * evaluate when conditions before agent
      
      * launch QA on develop branch and update profile_reduce script
      
      * update test script
      
      * update script
      
      * remove false dependency from dockerfile
      
      * try removing rbuild completely
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      
      * CGEMM examples bf16, fp32, int8 (#332)
      
      * Add int8 specialization for elementwise Add and Subtract.
      
      * CGEMM examples bf16, fp32, int8
      
      * Add convert reference output to CDataType.
      
      * Skip BF16 data type during testing.
      
      * Lower K value to get rid of accumulation error.
      
      * Fix merge artifact.
      
      * Fix changed function name: GetElementSpaceSize()
      
      * Fix merge artifact.
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * Update Group convolution (#341)
      
      * add conv oddC
      
      * update example
      
      * update example
      
      * fix bug in example
      
      * fix bug in group conv example
      
      * fix bug in gemm profiler (#344)
      
      * Fix QA, allow switching compiler versions, fix google test compilation error. (#348)
      
      * allow selecting compiler version
      
      * fix typo
      
      * add Wno-deprecated flag for google tests
      
      * change git repo, fix qa log files names
      
      * change the git clone syntax
      
      * use Omkar's git credentials
      
      * try to use jenkins as git user
      
      * try using illsilin username for gerrit repo with ssh key
      
      * try new gerrit authorization
      
      * change ssh key syntax
      
      * try another way of passing ssh key to docker
      
      * add mount ssh in dockerfile
      
      * create .ssh folder
      
      * move ssh-keyscan to later
      
      * get rid of npm call
      
      * build first docker image on master
      
      * check the contents of the .ssh folder
      
      * try replacing omkars creds with gerrit creds
      
      * use open repo, clean up changes
      
      * get rid of ssh default argument
      
      * Add batched/grouped_gemm contraction deviceOps (#349)
      
      * convnd_fwd fp16 example
      
      * update example
      
      * update example
      
      * update instance
      
      * updating refernce conv
      
      * update reference conv
      
      * update conv fwd profiler
      
      * update conv 1d and 3d instance
      
      * update include path
      
      * clean
      
      * update profiler for conv bwd data and weight
      
      * update conv bwd weight
      
      * clean
      
      * update conv example
      
      * update profiler for conv bwd weight
      
      * update ckprofiler for conv bwd data
      
      * fix reference conv bwd data bug; update conv bwd data test
      
      * update examples
      
      * fix initialization issue
      
      * update test for conv fwd
      
      * clean
      
      * clean
      
      * remove test case too sensitive to error threshhold
      
      * fix test
      
      * clean
      
      * fix build
      
      * adding conv multiple d
      
      * adding conv multiple D
      
      * add matrix padder
      
      * add gemm padding to convnd
      
      * adding group conv
      
      * update gemm multi-d
      
      * refactor
      
      * refactor
      
      * refactor
      
      * clean
      
      * clean
      
      * refactor
      
      * refactor
      
      * reorg
      
      * add ds
      
      * add bias
      
      * clean
      
      * add G
      
      * adding group
      
      * adding group
      
      * adding group
      
      * update Tensor
      
      * clean
      
      * update example
      
      * update DeviceGemmMultipleD_Xdl_CShuffle
      
      * update conv bwd-data and bwd-weight
      
      * upate contraction example
      
      * update gemm and batch gemm with e permute
      
      * fix example build
      
      * instance for grouped conv1d
      
      * update example
      
      * adding group conv instance
      
      * update gemm bilinear instance
      
      * update gemm+add+add+fastgelu instance
      
      * update profiler
      
      * update profiler
      
      * update test
      
      * update test and client example
      
      * clean
      
      * add grouped conv into profiler
      
      * update profiler
      
      * clean
      
      * add test grouped conv, update all conv test to gtest
      
      * update test
      
      * change gemm_c_permute with contraction
      
      * add grouped_contraction
      
      * add contraction in group_gemm
      
      * add example of grouped_gemm with contraction
      
      * add example of grouped_contraction_bias_e_permute
      
      * clean
      
      * fixed ds
      
      * add m3n2 m2n3 examples into gemm_bias_e_permute
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * ckProfiler for layernorm (#330)
      
      * Refine parameter
      
      * Add base class for layernorm
      
      * Add layernorm instance
      
      * Add layernorm to ckProfiler
      
      * Remove redundant
      
      * Add verification
      
      * Fix compile error due to merge
      
      * Add examples for GEMM + AddAddFastGelu (data type: int8, bf16, fp32) (#340)
      
      * Add always_false<> util to delay symbol resolution
      
      * Use always_false<> to prevent trying instantiate unwanted method
      
      * Add new specializations of AddAddFastGelu::operator() method
      
      * Add GEMM + AddAddFastGelu examples for data types: int8, bf16, fp32
      
      * Use floating point literal to simplify code
      
      * Remove unnecessary capture in lambda expressions
      
      * Extract fast GeLU calculation as standalone method
      
      * Mark methods as 'constexpr'
      
      * Add constraint for HostTensorDescriptor templated ctors
      
      * Simplify HostTensorDescriptor ctor calls
      
      * Add C++23 std::size_t literal suffix
      
      * Use _uz suffix to shorten example code
      
      * Remove unnecessary conversion to std::array<>
      
      * Re-order include directives
      
      * Remove C-style casting by literal suffix
      
      * Remove unnecessary statements in main()
      
      * Remove unused type parameter of always_false<>
      
      * Remove unused include directive
      
      * Exit main() by returning meaningful value
      
      * Use 'if constexpr' to switch example flow
      
      * Use std::is_same_v<> to shorten example code
      
      * Add 'inline' specifier to literal functions
      
      * Unify output methods in example
      
      * Move common codes into .inc file
      
      * Add type check in type_convert<>()
      
      * Add type_convert<float>() before computation
      
      * Merge AddAddFastGelu method specializations
      
      * Remove always_false<>
      
      * Add constraint to AddAddFastGelu::operator() parameter types
      
      * Build docker only once in CI, fix conv_bwd logfile names. (#353)
      
      * build docker in separate stage
      
      * build docker with only one prefix
      
      * add parallel statement
      
      * add docker repo url
      
      * fix the name of perf_conv_bwd_data log file
      
      * add g; fixed strides (#355)
      
      * Add example of conv_fwd_bias_relu_add for int4, int8, bfp16, fp16, and fp32 (#343)
      
      * [LWPCK-359] Initial commit
      
      * Working version for fp16, add results to readme
      
      * Update according to PR #341
      
      * Update results in readme
      
      * Add fp32 example
      
      * Add bf16 example
      
      * Update fp16 and fp32 examples
      
      * Add int8 example
      
      * Add separate lengths and strides tensors for D tensors
      Co-authored-by: default avatarRosty Geyyer <rosty.geyyer@amd.com>
      
      * Move literal ""_uz & ""_zu into namespace 'ck::literals' (#354)
      
      * Move literal ""_uz & ""_zu into namespace 'literals'
      
      * Move namespace 'literals' as 'ck::literals'
      
      * Fused attention (#345)
      
      * initial stub for gemm_gemm_xdl_cshuffle
      
      * set up example code
      
      * compiles
      
      * prevent integer overflow
      
      * harmonize interface between ref_gemm and ref_batched_gemm
      
      * batched_gemm_gemm
      
      * fix example
      
      * host tensor gen: diagonal pattern in lowest two-dimensions only
      
      * make c descriptors containing only integral constants
      
      * clean up
      
      * add BlockwiseGemmXdlops_v2 while exploring an unified approach
      
      * implement proper interface
      
      * tidy up example
      
      * fix compilation warnings
      
      * coarsely controlled 2nd gemm padding
      
      * remove rocm-cmake's hard requirement for certain revision
      
      * clang-format
      
      * resolve merge conflict
      
      * fix compilation error on gfx10
      
      * adds acc0 elementwise op to interface
      
      * attention host validation
      
      * add blockwsie softmax v1
      
      * iteratively update softmax+gemm
      
      * transpose both gemm0 and gemm1 xdl output so as to avoid broadcasting softmax max/sum
      
      * add init method for easier debugging
      
      * do away with manual thread cluster calculation
      
      * generalize blockwise softmax interface
      
      * row-wise softmax sum & max
      
      * format
      
      * rename to DeviceBatchedGemmSoftmaxGemm
      
      * add gemm_softmax_gemm instances and tests
      
      * comment
      Co-authored-by: default avatarltqin <letao.qin@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Gemm multiple d multiple r (#335)
      
      * Imitate XXX_gemm_multiple_d, add XXX_gemm_multiple_d_multiple_r for gemm + reduction
      
      * Implement run of kernel
      
      * Add example
      
      * Fix parameter of typo
      
      * Rewrite the reduceMax example
      
      * Rewrite the reduceMean + reduceMeanSquare example
      
      * Refine naming
      
      * Refine folder name
      
      * refine naming
      
      * Rewrite the gemm + bias + relu + add + layernorm example
      
      * Rewrite the gemm + layernorm example
      
      * clang-format
      
      * Fix bug if sync lds
      
      * Fix compile error
      
      * Add examples  for reduction fp16/fp32/bp16/int8/fp64   for  3d/4d/5d  (#342)
      
      * Update the reduce_blockwise example to support user specified data type and input+reducing dimensions
      
      * Add examples for using reduce_multiblock_atomic_add
      
      * Add more running examples to the default command-line
      
      * Remove un-necessary header including
      
      * Update to the example README.md
      
      * Skip  lds of b matrix (#326)
      
      * start
      
      * read for gridwise gemm
      
      * add MakeBGridDescriptor_K0_N0_N1_N2_N3_K1
      
      * add thread  copy desc and register buffer
      
      * add K0PerBlock dim
      
      * add read global data
      
      * finish gridwise gemm
      
      * finish blockwise gemm
      
      * add print data
      
      * add smallest config
      
      * add compare code for gridwis gemm
      
      * fix NXdlPerWave
      
      * fix k0perthread and gridewis gemm main loop
      
      * remove b matrix lds alloc
      
      * fix name
      
      * add test code
      
      * create b_grid_desc_k0_k1_k2_n0_n1_n2_n3_k3 from parameter
      
      * add double register
      
      * modify b_thread_desc_
      
      * add float
      
      * fp16 tag
      
      * add tail for pipeline
      
      * finish main loop
      
      * optimize main loop
      
      * start clear gridwise gemm
      
      * clear code
      
      * clear redundant code
      
      * change file name
      
      * change file name
      
      * fix bug after merge develop
      
      * fix input parameters
      
      * using MultiK0 control b load data loop
      
      * fix some config
      
      * 4 buffer
      
      * fix bug
      
      * one can use
      
      * change read order
      
      * change buffer array to tuple
      
      * change to 8 buffer
      
      * interleave buffer load
      
      * change to 16
      
      * read 8 buffer
      
      * add data buffer to template
      
      * fix after merge develop(head file)
      
      * format
      
      * change to 4 buffer
      
      * remove unnecessary lambda fun
      
      * Fused GEMM+GEMM (#351)
      
      * initial stub for gemm_gemm_xdl_cshuffle
      
      * set up example code
      
      * compiles
      
      * prevent integer overflow
      
      * harmonize interface between ref_gemm and ref_batched_gemm
      
      * batched_gemm_gemm
      
      * fix example
      
      * host tensor gen: diagonal pattern in lowest two-dimensions only
      
      * make c descriptors containing only integral constants
      
      * clean up
      
      * add BlockwiseGemmXdlops_v2 while exploring an unified approach
      
      * implement proper interface
      
      * tidy up example
      
      * fix compilation warnings
      
      * coarsely controlled 2nd gemm padding
      
      * remove rocm-cmake's hard requirement for certain revision
      
      * clang-format
      
      * resolve merge conflict
      
      * fix compilation error on gfx10
      
      * adds acc0 elementwise op to interface
      
      * add gemm_gemm instances and tests
      
      * avoid LDS data hazard
      
      * fix build
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Layernorm welford (#346)
      
      * Add threadwise and blockwise welford
      
      * Rename gridwise op, prepare to add welford version
      
      * implement welford and integrate welford into layernorm
      
      * Take care of tail loop
      
      * Fix buf when ThreadSliceK > 1
      
      * Fix bug of merging of two empty set
      
      * Rename clip to clamp
      
      * 1. Fix type of count
      2. Remove useless static_assert
      
      * Do not inherit Reduction::Argument
      
      * [What] replace __syncthreads() with block_sync_lds()
      [Why] __syncthreads might wait both lgkmcnt(0) and vmcnt(0)
      
      * Add y stride
      
      * Rename.
      DeviceLayernorm -> DeviceLayernormImpl
      DeviceNormalization2 -> DeviceLayernorm
      
      * Move literal ""_uz & ""_zu into namespace 'literals'
      
      * Move namespace 'literals' as 'ck::literals'
      Co-authored-by: default avatarPo-Yen, Chen <PoYen.Chen@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Change all device operations to use add_instance_library  (#338)
      
      * Change all device operations to use add_instance_library to avoid duplicated cmake configuration.
      
      * update DeviceMem
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * fix build issue (#357)
      
      * fix build
      
      * excludeexample_gemm_max_xdl_fp16 from testing due to random failure on gfx908
      
      * Batchnorm-forward and Batchnorm-infer Implemented using generic kernels (#320)
      
      * Implement multiple-reduction in one kernel (kernels, device ops, examples)
      
      * Add generic elementwise kernel and device interface
      
      * Add generator for normal-distributed data initialization
      
      * Add host refer implementation of batchnorm-forward and batchnorm-infer
      
      * Add examples for implementing batchnorm-forward and batchnorm-infer using generic kernels
      
      * Remove un-needed including in batchnorm example
      
      * Renaming generic_elementwise to elementiwise in kernel and device classes/functions
      
      * Change in gemm_layernorm examples to use DeviceElementwise instead of Device5AryElementwise
      
      * Change in exampe 19_binary_elementwise to use DeviceElementwise instead of DeviceBinaryElementwise
      
      * Change in device_cgemm_4gemm_xdl_cshuffle.hpp to use kernel_elementwise instead of kernel_binary_elementwise
      
      * Add DeviceElementwiseBase and use it in device_normalize_instance.cpp
      
      * Removing and renaming files
      
      * Update to synchronize gemm_layernorm client example to the generic element-wise device op API
      
      * Update to synchronize with the latest headers directory and HostTensorDescriptor interface renaming
      
      * Merge two static member functions in device_elementwise.hpp
      
      * Remove unary_elementwise_1d kernel and device
      
      * Hotfix LDS data hazard in fused attention (#360)
      
      * avoid LDS data hazard in gemm_softmax_gemm pipeline
      
      * trivial refactors
      
      * comments
      
      * shrink blockwise gemm v2 thread buffer size
      
      * reclaim A block lds space when during 2nd gemm
      
      * amend
      
      * amend
      
      * use scale (#363)
      
      * int4 data type (#364)
      
      * Introduce int4 data type.
      
      * Add unit-tests for int4
      
      * Compile int4 UT only when int4 enabled.
      
      * clang-format
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * restart the stages on MI200 in case of failures (#366)
      
      * restart the stages on MI200
      
      * fix the docker image storage issue
      
      * [What] Fix bug of verification fail on E Matrix (#371)
      
      [Why] We need to sync lds even in first loop because Gemm also use the same LDS.
      
      * Implement padding and sanity checks for fused GEMM+GEMM  (#376)
      
      * GemmPadder and GemmGemmPadder
      
      * proper padding using GemmGemmPadder
      
      * test gemm_gemm padding
      
      * properly check size K in IsSupportedArgument()
      
      * properly check size requirement given SrcScalarPerVector in IsSupportedArgument()
      
      * comment
      
      * format
      
      * Add example of Gemm + AddAddFastGelu (data type: int4) (#369)
      
      * Add custom target to bundle examples together
      
      * Add int4 example conditionally (just copy from int8 example)
      
      * Extract common code into common.hpp
      
      * Move ref gemm type alias into data-type-specific sources
      
      * Add #error directive to prevent compile with wrong setting
      
      * Let AddAddFastGelu support int4 parameter type
      
      * Let check_err() support int4 parameter type
      
      * Add wrapper function to hide value conversion while copying memory
      
      * Finish int4 example for GEMM + AddAddFastGelu
      
      * Add new DeviceMem API to copy memory
      
      * Use new DeviceMem API to implement examples
      
      * Fix wrongly use of macro 'CK_EXPERIMENTAL_BIT_INT_EXTENSION_INT4'
      
      * Revert "Add new DeviceMem API to copy memory"
      
      This reverts commit e26e7af71e1f982a4ca7406401e2fc9b1f086b32.
      
      * Add conversion ctor for Tensor<>
      
      * Add 'const' specifier to Tensor<>::CopyAsType()
      
      * Convert Tensor<> values before/after transfer between host & device
      
      * Add examples of batched/grouped/SplitK Gemm for int8/bfp16/fp16/fp32 (#361)
      
      * add examples into grouped/batched_gemm
      
      * adding splitK examples
      
      * fixed splitK
      
      * add bfp16 int8 example into splitK
      
      * formatting
      
      * use static_cast
      
      * added common for batched_gemm
      
      * add commons for examples of splitK/batched/grouped_gemm
      
      * return true
      
      * adjust splitK check tol
      
      * update example
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      
      * Attention with output permutation (#370)
      
      * comment on specialization for TensorSpecialization::Packed
      
      * gemm_softmax_gemm with output permutation
      
      * scaling
      
      * refactor MatrixPadder; rename to GemmPadder
      
      * remove old sanity check
      
      * restore original gemm_softmax_gemm
      
      * revise comment in gemm_softmax_gemm example
      
      * use GetElementSpaceSize()
      
      * remove extra header
      
      * typo
      
      * remove archaic DeviceOpPtr
      
      * Add examples of Gemm (data type: int4) (#367)
      
      * Add GEMM examples for int4
      
      Currently the source files are just copied from int8 examples
      
      * Re-use pre-defined alias in int4 exmples
      
      * Distinguish user-side type from kernel-side type
      
      * Add int4_t support for check_err()
      
      * Allow conversion between Tensor<> specializations
      
      * Re-format source files
      
      * Use different type for host tensors
      
      * Re-use CopyAsType<>() to implement copy ctor
      
      * Re-use element-wise operation type alias
      
      * Fix typo in alias names
      
      * Complete the int4 examples
      
      * Add constraint to Tensor<> templated methods
      
      * Add type traits 'is_signed_integral<>'
      
      * Add type constraints for integer version check_err<>()
      
      * Allow comparing different-sized integral types in check_err()
      
      * Check converted Tensor<int4_t> with golden Tensor<int8_t>
      
      * Remove constraint of Tensor<>::CopyAsType()
      
      * Avoid compilation error while disabling ck::int4_t support
      
      * Remove debug messages
      
      * Add #error directive to prevent compile sources with wrong setting
      
      * Simplify tensor usages in examples
      
      * Add constraint to check_err() input reference type
      
      * Align design with other PR
      
      * Use ""_uz to simplify example code
      
      * Avoid too much generalizing check_err()
      
      * Re-format GEMM instance template arguments
      
      * Extract int4 example common codes
      
      * Sort include directives
      
      * Move #include directives into new header
      
      * Move common codes together
      
      * Re-format template argument in example code
      
      * Reuse same implementation code for most of GEMM examples
      
      * Re-format common.hpp
      
      * Unify structured comment in examples
      
      * Use reinterpret_cast<>() for cross-type pointer conversion
      
      * Revert "Add type traits 'is_signed_integral<>'"
      
      This reverts commit f2c148efaedf42c8ee66032dac6d13a1003b0f3a.
      
      * Allow unsigned integer arguments for check_err()
      
      * Fix compilation error in check_err()
      
      * Remove unnecessary copy ctor for Tensor<>
      
      * Mark Tensor<> special member functions as 'default'
      
      * Use more strict condition to add code in examples
      
      * Fix wrong program return value of GEMM examples
      
      * Handle the case while user specify all the strides
      
      * Fix never-ran examples
      
      * Exit successfully if GEMM instance does not support given problem
      
      * Add missing 'else' keyword
      
      * Re-format CMakeLists.txt
      
      * Add wrapper function to hide value conversion while copying memory
      
      * Add new DeviceMem API to copy memory
      
      * Use new DeviceMem API to implement examples
      
      * Revert "Add new DeviceMem API to copy memory"
      
      This reverts commit 3f190b0779ceedf7aaf0b380712fda0518de72c1.
      
      * Add conversion ctor for Tensor<>
      
      * Write Tensor<> conversion logics explicitly in example code
      
      * Convert Tensor<> values after transfer data to host
      
      * Refactor the design of DeviceGemmMultipleDMultipleR_Xdl_CShuffle (#378)
      
      * layernorm external api (#379)
      
      * Add layernorm client example
      
      * [What] Add default make install dir to gitignore
      [Why] client example need to make install
      
      * add scripts (#382)
      
      * Add int4 reduction examples (#372)
      
      * Add int4 reduction examples
      
      * Contain all using of int4_t inside the pre-compiling condition checking
      
      * Add int4 example for convnd_fwd_bias_relu_add (#375)
      
      * Add int4 example for convnd_fwd_bias_relu_add
      
      * Fix AddReluAdd for building without int4 support
      
      * Update CMakeLists.txt
      
      * Format
      
      * Convert int4 tensors for int8 kernel
      
      * Fix device memory allocation
      
      * Format
      
      * Format
      
      * GEMM batched/splitK/cgemm/grouped int4 examples (#383)
      
      * Grouped GEmm int4.
      
      * Formatting + fix K dimension for int8.
      
      * Batched Gemm int4 example.
      
      * CGEMM int4 example.
      
      * Include inc filese in clang-format.
      
      * SplitK int4 example
      
      * Refactoring of performance measurement.
      
      * Fix #ifdef statements.
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * More int4 tests. (#374)
      
      * More int4 UT.
      
      * Disable BitwiseRepresentation UT.
      
      * Add UT with static_cast
      
      * Surround cout statements with #if
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * Fixed splitk gemm fp32 (#384)
      
      * add scripts
      
      * fixed splitK_gemm_fp32
      
      * clean
      
      * clean
      
      * Add an option to build CK with clang directly (#387)
      
      * replace hipcc compiler with clang++
      
      * build client app with hipcc
      
      * build client app with clang
      
      * add an option to build with hipcc ro clang
      
      * fix the environment for client app
      
      * fix setting up compiler in cmake_build
      
      * change the way the compiler is set
      
      * Fix the slow cpu reference batched gemm kernels. (#388)
      
      * fix the performance of the batched gemm verification
      
      * fix tabs
      
      * Try to workaround flaky GemmSoftmaxGemm tests (#386)
      
      * avoid potential hazard; flaky test issue persists
      
      * pin down the random seed to avoid flakiness
      
      * Padding for attention: bmm+scale+softmax+bmm kernel (#385)
      
      * add padding algo for bmm+scale+softmax+bmm. Version for verification
      
      * remove verification code
      
      * remove comments
      
      * add padded bmm scale softmax bmm example
      
      * format
      
      * refactor
      
      * add comments for usages of padding bmm+scale+softmax+bmm
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      
      * Gemm reduce examples int4/int8/fp32/bf16 (#368)
      
      * GEMM + Reduce max fp16+fp32
      
      * GEmm + Max bf16 + int8
      
      * Refactor common definitions.
      
      * Refactor common func of mean meansquare example.
      
      * More examples for mean meansquare.
      
      * Update int8 examples and skip them cause of random errors.
      
      * Int4 examples.
      
      * Fix examples for max int4/8
      
      * Tensor conversion for int4 input data for mean meansquare example.
      
      * Remove int4 mean_meansquare example
      
      * Fix int8 mean_meansquare example.
      
      -All ReductionAccData and R<N>DataType have to be F32. The INT32 data
      type is giving wrong results.
      
      * Guard int4 with ifdef
      
      * Change int8 example to add_addsquare due to div rounding err.
      
      * Clang format
      
      * Change the return type of common function.
      
      * Get back int8 example with division.
      
      * Remove int8 mean meansquare.
      
      * Use proper cast for BF16 data type.
      
      * Use ck::literals.
      
      * Use proper data type for host tensors & reference.
      
      - Use ReduceAccDataType for reference gemm output data type.
      - Cast host reference output tensor to EDataType
      - Fix ifdefs for int4.
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * conv+conv (1x1 only) example using gemm+gemm  (#393)
      
      * refactor conv
      
      * add conv+conv example, 1x1 only
      
      * Add examples of Conv + reduction (data type: int4, int8, bf16, fp16, fp32)  (#380)
      
      * Refactor the design of DeviceGemmMultipleDMultipleR_Xdl_CShuffle
      
      * Add 'DeviceGroupedConvFwdMultipleDMultipleR' interface
      
      * Add DeviceGroupedConvFwdMultipleDMultipleR_Xdl_CShuffle
      
      * Remove 'GridwiseConvFwdMultipleDMultipleR_xdl_cshuffle'
      
      * Add 'TransformConvFwdToGemm<>' utility class (from Chao)
      
      * Use 'TransformConvFwdToGemm<>' to shorten code
      
      * Fix ill-formed method declaration
      
      * Re-implement MakeRGridDescriptor_M() function
      
      * Change problem description
      
      * Use macro to define layout types
      
      * Define K-reduced output tensor layout types
      
      * Let user to decide R output tensor layout
      
      * Rename variables
      
      * Add padding to the reduced output tensor if necessary
      
      * Extract common code as helper method
      
      * Remove debug message
      
      * Add missing include directive
      
      * Add partial fp16 Conv + Reduction example
      
      * Add example verification code for 2D Conv problem
      
      * Use type alias to simplify code
      
      * Share code across different-dimension Conv problems
      
      * Rename file/functions from run_conv_fwd* to run_convnd_fwd*
      
      * Make example code more verbose
      
      * Add code to support 1D & 3D Conv + Reduction on host
      
      * Add more examples for data type: bf16, fp32
      
      * Add example for int8
      
      * Add custom target to group examples
      
      * Use more general custom target name
      
      * Change the description in error message
      
      * Disable testing for example other than fp32
      
      * Add examplel for int4 (just copy from int8)
      
      * Fix wrong data type
      
      * Use larger data type for intermediate tensors
      
      * Finish int4 example
      
      * Undefine macro PP_DEFINE_LAYOUT_TYPE() after use
      
      * Use named variables to replace magic numbers
      
      * Remove debug messages
      
      * Use same A/B data type for host Conv in int4 example
      
      * Add check for the 'RLayout' type argument
      
      * Group same-dim-layouts together in 'LayoutSetting<>'
      
      * Add 'final' specifier to utility classes
      
      * Use different initialization method for examples
      
      * Remove macro PP_DEFINE_LAYOUT_TYPE()
      
      * Fix code-comment mismatch
      
      * Use more reasonable initialization value for all data types
      
      * Default use init_method=1 for all examples
      
      * Remove never-used code
      
      * Remove confusing out-of-date comments
      
      * clean
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      
      * add more datatype to gemm+gemm and conv+conv example (#397)
      
      * refactor
      
      * refactor
      
      * adding int4/int8/fp16/bf16 for conv+conv and gemm+gemm
      
      * adding int4/int8/fp16/bf16 for conv+conv and gemm+gemm
      
      * clean
      
      * [Hotfix] SplitK Gemm fp32 (#401)
      
      * add scripts
      
      * fixed splitK_gemm_fp32
      
      * clean
      
      * clean
      
      * use gemm_xdl_splitK_c_shuffle into profiler
      
      * remove device_gemm_xdl_splitk.hpp
      
      * Softmax client example (#396)
      
      * Update Softmax device operation interface.
      
      * Update ckProfiler.
      
      * Update Softmax UT.
      
      * Update example.
      
      * Client example.
      
      * Clang format
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * GemmGemm TNNT instances (#399)
      
      * add gemm_gemm TNNT instance
      
      * sanitize Gemm1KPack
      
      * disable instances that failed validation on mi100
      
      * Fused attention instances & padding tests (#395)
      
      * modify comment
      
      * trim unnecessary check
      
      * add gemm spec in kernel name
      
      * add TNTT gemm_gemm + atten kernel instances
      
      * refactor attention padding to better fit in unit tests
      
      This streamlines usage where "ResetNaNToMinusInf" is now hidden from user facing device op.
      Also added compile-time conditionals that load OOB value as NaN only after padding is enabled
      
      * add adhoc padding test for atten
      
      * shrink input value range for attention kernel validation to avoid occasional error by 1e-3
      
      Still unsure whether this kind of deterministic floating point accurary issue is expected
      or not. May want to try exact same approach as the GPU kernel in the host reference
      GEMM+Softmax+GEMM function to see if the accuracy discrepancy goes away. Until then,
      shrink the input value range as it is less likely to produce errors of around ~1e-3.
      
      * attention kernel proper granular padding for all 4 dims
      
      * IsSupportedArgument checks
      
      * test more padded cases
      
      * block PadK specialization in attention kernels
      
      * workaround clang crash for gfx908
      
      (gfx908 only) workaround for compiler crash in fused kernels on mainline #9110; #10738 seems ok
      error message was "fatal error: error in backend: Error while trying to spill VGPR0 from class
      VGPR_32: Cannot scavenge register without an emergency spill slot!"
      this fall back to less ideal way of handle NPadding in fused attention kernel
      
      * comment out kernels giving wrong results on MI100; MI200 doesn't seem affected
      
      * Add stderr to QA logfiles, process splitK and ONNX gemm kernels (#402)
      
      * add processing for the onng_gemm and splitK_gemm
      
      * add profile_onnx_gemm.sh
      
      * add stderr to logfiles, add splitK and onnx gemm parsing
      
      * enable splitK gemm wresults posting to db
      
      * Fix gemm-softmax-gemm-permute padding cases (#409)
      
      * fix example; make padding on by default in example; fix argument checks
      
      * fix Gemm1KPacK which has since regressed from PR #399
      
      * embedding fuse layernorm (#405)
      
      * add gridwise/device sparse embedding
      
      * update code
      
      * update code
      
      * remove useless makefile
      
      * code fix
      
      * workable
      
      * work properly
      
      * emb add
      
      * add more instance
      
      * format
      
      * remove useless code
      
      * fix format
      
      * fix clang-tidy
      
      * clean
      
      * fix a compile error
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      
      * Upgrade the OS and ROCM versions. (#411)
      
      * upgrade the OS and ROCM versions in CK docker
      
      * add cxx flags to link code with rocm5.2 and ck-9110 compiler
      
      * rename the docker image
      
      * run ONNX gemms using init=1
      
      * batched_gemm + multiple_d + gemm + multiple_d (#394)
      
      * refactor
      
      * start
      
      * add device gemm file
      
      * add BatchStrideD0
      
      * add stridd0
      
      * add gridwise file
      
      * add d0 parameters to gridwise gemm
      
      * add c layout transformer
      
      * add d0 threadwise copy
      
      * init kernel
      
      * init kernel
      
      * regular code
      
      * nm desc put to out
      
      * kernel parameter can not use reference
      
      * host add bias+gelu
      
      * run right for bias+gelu
      
      * change AddFastGelu into another file
      
      * interface add d1 bias parameters
      
      * add d1 parameter to argument
      
      * add d1 parameter to gridwise
      
      * first all code,not verify
      
      * gelu change to relu and GetElementSpaceSize bug
      
      * add instance
      
      * start add to ckprofiler
      
      * ckprofiler finish code
      
      * change input parameter for ckProfiler
      
      * fix host bias+gelu bug
      
      * show help for ckProfiler
      
      * fix bug for lunch kernel ignore parametes
      
      * add pad and fix about bug
      
      * mutiple d0
      
      * add dynamic d0_element_op
      
      * change profiler and  instance to mutiple d0
      
      * example have 2 d0
      
      * remove some comments not using
      
      * change 2 d0 have self  parameters
      
      * change d element_op name
      
      * change class name(multiple_d)
      
      * fix bug
      
      * fix bug that don't find file
      
      * update profiler
      
      * refactor
      
      * update profiler
      
      * clean
      
      * revert example change
      
      * add gon layout
      
      * optimize parameter for gno
      
      * add gon to gemm+gemm
      
      * change helping input parameters
      
      * change to GemmPadder_v2
      
      * using ForEach
      
      * fix gb_per_sec
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      Co-authored-by: default avatarltqin <letaoqin@amd.com>
      
      * disable print for group conv multiple D (#421)
      
      * Conv bwd data multiple d (#404)
      
      * init commit of convnd bwd data
      
      * begin compiling example
      
      * have a first version that produce a right result
      
      * refine device level launch kernel code
      
      * add more instances in example and get right results
      
      * clang-format
      
      * format example file
      
      * add more instances
      
      * fix instances
      
      * adding conv_bwd_data multile_d
      
      * adding conv_bwd_data multile_d
      
      * adding conv_bwd multiple d
      
      * adding conv_bwd multiple d
      
      * adding conv_bwd multiple d
      
      * refactor
      
      * refactor
      
      * adding conv bwd data multiple d
      
      * adding conv bwd data multiple d
      
      * adding conv bwd data multiple d
      
      * adding conv bwd data multiple d
      
      * adding conv bwd data multiple d
      
      * adding conv bwd data multiple d
      
      * adding conv bwd data multiple d
      
      * refactor
      
      * update conv fwd's bias impl
      
      * refactor
      
      * reorg file
      
      * clean up cmake
      
      * clean
      
      * clean
      
      * clean
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Grouped batched attention + permute (#412)
      
      * grouped attn without batch validates; now move toward grouped batched attn
      
      * grouped batched attention
      
      * working
      
      * remove debug logging
      
      clean up
      
      clean up
      
      * reintroduce g_ prefix back to host tensor variables
      
      * format
      
      * rename file
      
      * restore old file
      
      * rename
      
      * consolidate padded/non-padded attention example
      
      * harmonize padding specialization in attn examples
      
      * work around inline asm potential hazard using intrinsic (#416)
      
      * Add batched attention special kernel instances (#424)
      
      * sanity check
      
      * add attribution
      
      * add irrgular k tile size for batched attention
      
      * format
      
      * Add 'Permute' device op & example (#408)
      
      * Add example folder for 'DeviceElementwise'
      
      * Re-structure example files
      
      * Move common parts into common.hpp
      
      * Use more strict input
      
      * Add more helper methods in 'DeviceElementwise'
      
      * Use more specific method to write example
      
      * Allow specify problem through command line argument
      
      * Allow specify problem 'axes' through command line argument
      
      * Add check to template type argument
      
      * Add transpose_shape() to generalize shape permute
      
      * Generalize transpose utility functions
      
      * Use better name for tensor indices
      
      * Add checks in helper functions
      
      * Remove debug messages
      
      * Refine error message for check_err()
      
      * Generalize variable naming in example code
      
      * Add device op 'DevicePermute'
      
      This device op is clone of 'DeviceElementwise'
      
      * Use 'DevicePermute' device op in example
      
      * Remove 'elementwise' from identifiers
      
      * Remove 'elementwise' from file paths
      
      * Remove base class of 'DevicePermute'
      
      * Let 'DevicePermute' inherit from 'BaseOperator'
      
      * Add simple type traits to validate device op type
      
      * Add static_assert() to check type constraints
      
      * Create 'DevicePermuteBase' to generate methods
      
      * Use indirect base type to generate methods
      
      * Remove 'is_device_op<>' type traits
      
      * Only accept single-input-single-output for 'DervicePermute'
      
      * Simplify 'DevicePermute' interface
      
      * Re-format 'DeviceElementwise'
      
      * Use CRTP to generate overridden virtual method
      
      * Remove unnecessary include directives
      
      * Distinguish input & output shape in 'DevicePermute'
      
      * Passing 'axes' to 'DevicePermute'
      
      * Use more reasonable return value for Invoker::Run()
      
      * Add 'GridwisePermute' kernel
      
      This kernel is a clone of 'GridwiseElementwise_1D'
      
      * Remove no-longer used type argument
      
      * Check if input/output shape meet the requirement
      
      * Remove no-longer used method
      
      * Remove never-entered-if-clause
      
      * Change problem description for 'DevicePermute'
      
      * Transform descriptor into 3 dimensions
      
      * Add debug code the verify result
      
      * Add comment to indicate template argument location
      
      * Add N/H/WPerBlock template parameter to 'DevicePermute'
      
      * Rename 'GridwisePermute' to 'GridwiseCopy'
      
      * Check tensor descriptor dimensions in 'GridwiseElementwise_1D'
      
      * Add missing include directive
      
      * Add 'BlockSize' parameter to 'DevicePermute'
      
      * Remove no-longer used method
      
      * Add 'BlockToTileMap' for 'GridwiseCopy'
      
      * Use the normal Block2TileMap convention
      
      * Rename 'BlockToTileMap' as 'Block2TileMap'
      
      * Fix most of compilation errors
      
      * Let 'Block2TileMap' map block to 2d coordinate
      
      * Allow data transfer in 'GridwiseCopy'
      
      * Fix wrong output descriptor for 2nd blockwise copy
      
      * Rename 'GridwiseCopy' as 'GridwisePermute'
      
      * Remove '1d' in identifiers
      
      * Remove commented-out codes
      
      * Remove 'MPerThread' template parameter
      
      * Seperate template parameters
      
      * Unify variable namming convention
      
      * Use more verbose way to create expressions
      
      * Add template parameter 'InBlockLdsExtraW'
      
      * Release the constraint on In/OutGridDesc
      
      * Use date type directly as template argument
      
      * Re-arrange template arguments for blockwise copy
      
      * Remove no-longer used template parameters
      
      * Embed layout in the variable names
      
      * Add GridwisePermute::CheckValidity()
      
      * Extract local types as template parameters
      
      * Rename local type alias
      
      * Add more template parameters (vector width related)
      
      * Calculate new SrcVectorDim/DstVectorDim after merge descriptor dimensions
      
      * Fill tensor values start from 1
      
      * Re-formate example code
      
      * Avoid too-large block id
      
      * Add comment
      
      * Make sure 'SrcVectorDim' is not same as 'DstVectorDim'
      
      * Add check for the 'VectorDim' & 'ScalarPerVector' template params
      
      * Let 'DstVectorDim' equals 'SrcVectorDim' after transpose out grid desc
      
      * Remove no-longer used template parameter 'NPerBlock'
      
      * Fix wrong descriptor creation logics
      
      * Specify problem in each examples
      
      * Use better example name
      
      * Add new example 'example_permute_NxHxW_fp32'
      
      * Add example for demonstrating bundle multiple elems in tensor
      
      * Add support to permute multiple elements together
      
      * Change the default problem size
      
      * Add span<> class template
      
      * Use span<> to generalize check_err() interface
      
      * Fix ambiguous ctor call
      
      * Avoid create necessary objects
      
      * Use helper functions to simplify example code
      
      * Add example for 4xfp16 permute
      
      * Disable failed-to-compile example
      
      * Add check for the NUM_ELEMS_IN_BUNDLE
      
      * Remove redundant parameter in helper lambda function
      
      * Add check for the input tensor type's byte-size
      
      * Check scalar-per-vector with padded length
      
      * Use more verbose name to avoid name collision
      
      * Use fixed 'VectorDim' & 'ScalarPerVector' for LDS
      
      * Embed shape info in name of descriptor constructor
      
      * Rename example folder '36_permute' into '37_permute'
      
      * Avoid using too-large LDS in kernel code
      
      * Remove redundant example
      
      * Usw switch() to group similar codes
      
      * Add const to the span<> type arguement
      
      * Simply initialize tensor with floating point values
      
      * Use fp16 as data type in all examples
      
      * Enlarge tensor size in example
      
      * Enalrge N-dim in example
      
      * Add check for the bundled type in example
      
      * Use more stricter error threshold
      
      * Remove global load/store loop in kernel code
      
      * Measure execution time by default
      
      * Use faster device op config for example 'NxHxW_fp16'
      
      * Use faster device op config for example '1xHxW_fp16'
      
      * Use faster device op config for example 'HxWx4_fp16'
      
      * Remove cmd arg parsing logics
      
      * Rename functions
      
      * Extract bundle permutation logic out
      
      * Simplify permute bundle example
      
      * Add Tensor<>::GetElementSpaceSizeInBytes()
      
      * Add Tensor<>::data()
      
      * Use new methods to simplify code
      
      * Use type alias to replace duplicated code
      
      * Use existing method to shorten code
      
      * Allow FillUniformDistribution accept range arugment
      
      * Intialize random values in range
      
      * Add Tensor<>::size()
      
      * Use more meaningful names in permute bundle example
      
      * Use more meaningful names in permute element examples
      
      * Use rangified copy() to copy elements
      
      * Use function return value directly to eliminate variables
      
      * Add to_array() conversion tool to eliminate more variables
      
      * Add Tensor<>::AsSpan<>() to create view of tensor values
      
      * Use AsSpan() to shorten check_err() calls
      
      * Remove no-longer-used 'using' directives
      
      * Move 'using' directive to proper code position
      
      * Remove redudant variables
      
      * Remove useless static_assert()
      
      * Add check for range types
      
      * Declare variable right before first use
      
      * Move long return type as tailing return type
      
      * Add BaseInvokerCRTP<> class template to generate method
      
      * Create new base type for 'DervicePermute' implementations
      
      * Move 'NumDim' template param to the first
      
      * Rename 'DevicePermute' to 'DevicePermuteImpl'
      
      * Add 'noexcept' specifier to CRTP generated method
      
      * Move 'Block2TileMap' definition into 'GridwisePermute'
      
      * Use type alias to reduce code
      
      * Unify naming style in 'DevicePermute'
      
      * Add comments in 'GridwisePermute'
      
      * Rename permute example folder
      
      * Use std::cerr to report error
      
      * Use larger shape in examples
      
      * Rename '38_permute' to '39_permute'
      
      * Make sure we use unsigned type for shape & indices
      
      * Remove opt-ed out assertion
      
      * Remove template BaseInvokerCRTP<>
      
      * Group norm (#417)
      
      * Add groupnorm example by layernorm
      1.  Reference is not ready
      2. shape of gamma and beta need to be fix
      
      * Let shape of gamma and beta can be same as x
      
      * Modify test, instance and client example
      
      * [What] Fix bug of layernorm for greater than 2 dimension.
      [Why] We need to get upper length from merge transform instead of embed transform.
      
      * Add reference for groupnorm
      
      * Fuse sigmoid after groupnorm
      
      * [What] Rename original layernorm into layernorm2d
      [Why] Prepare to add groupnorm using layernorm5d
      
      * clang-format
      
      * Add groupnorm test
      
      * Refine error message
      
      * Add groupnorm ckProfiler
      
      * Test groupnorm kernel from device_instance
      
      * update example
      
      * upadte profiler
      
      * Fix test naming
      
      * Fix argc number
      
      * Move descriptor and sweeponce to argument for quick debugging
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * use rocm5.2 compiler as default, use same flags for amd-stg-open as for release (#426)
      
      * MNKO padding support on bmm+masking+scale+softmax+bmm+premute (#425)
      
      * add lower triangle bmm
      
      * init code for tile skipping
      
      * functionality right with lower triangle mask
      
      * add decoder lower triangular mask calculation
      
      * use 7*13 group
      
      * fix n2 compute error
      
      * attention with lower triangle mask with tile skipping
      
      * add template to distinguish masking kernel
      
      * rename template and remove default template value
      
      * remove lower triangle gemm reference struct
      
      * add some comments on example
      
      * add 10 instance for masking bmm + scale + softmax + bmm + permute kernels
      
      * add test
      
      * add test file
      
      * add gtest for bmm masking scale softmax bmm permute
      
      * clang-format
      
      * fix compile error
      
      * check lef bottom corner for tile skipping
      
      * fix error: check left bottom corner for tile skipping
      
      * add k padding
      
      * add test and instance for MNK padding
      
      * passing a mask struct
      
      * fix instances
      
      * delete used comments
      
      * format
      Co-authored-by: default avatardanyao12 <yaodan@dc-smc-13.amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * fix build (#427)
      
      * fix build
      
      * fix build
      
      * fixed G offset calc for long_index (#428)
      
      * Build the CK targets only once. (#433)
      
      * build CK only once, use deb package in all subsequent stages
      
      * update jenkins file
      
      * change prefix for build_CK stage
      
      * update writing deb metadata to control file
      
      * update ubuntu source for docker, script syntax for deb package metadata
      
      * try different way to create deb metadata
      
      * clean up DEBIAN before creating one
      
      * fix the CI folder names, fix splitK qa
      
      * use correct docker in all stages, separate tests for splitK verification and performance
      
      * clean old comments, change dir before packaging
      
      * use different package syntax
      
      * change packaging syntax
      
      * package with cmake
      
      * remove unnecessary build prefix
      
      * get rid of unnecessary paths
      
      * change paths during unpacking
      
      * change script syntax while unpacking
      
      * get rid of unneccesary steps
      
      * get rid of comments in the scripts
      
      * use double quotes for scripts
      
      * add ccache during build, try dpkg -x
      
      * pull and install each package separately
      
      * use full package names
      
      * try to use stashing for packages
      
      * change stash/unstash syntax
      
      * move unstash out of shell, run tests on any gpu node
      
      * unpack each package separately
      
      * try re-using existing workspace
      
      * merge the build and test stages, only stash ckProfiler
      
      * merge the build and test stages, only stash zipped ckProfiler
      
      * fix syntax
      
      * add GPU check before build and test, rename docker to usual name
      
      * Updated the supported components (#435)
      
      * Replace the obsolete offload-arch flags with GPU_TARGETS and fix a bug. (#437)
      
      * replace obsolete offload-arch flags with GPU_TARGETS
      
      * fix a build error for client app
      
      * replace commma with semicolon in GPU_TARGETS
      
      * fix build (#434)
      
      * fix
      
      * fix
      
      * add instance
      
      * Fix device instance libarary to include all instances (#418)
      
      * fix device instance library to add all instances
      
      * remove cppcheck from requirements.txt
      Co-authored-by: default avatarJun Liu <Liu.Jun@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Fix build issues, set new compiler default, etc. (#451)
      
      * add an option to select specific compiler commit
      
      * change the logic of forcing building a docker
      
      * add check for compiler commit in dockerfile
      
      * compiler check syntax fix
      
      * change compiler selection logic
      
      * fix the new compiler build issue
      
      * set new compiler as default, update dev-requirements
      
      * fix jenkins syntax
      
      * fix docker syntax
      
      * get rid of hipcc.pl editing in jenkinsfile
      
      * fix the hipcc.pl in both places
      
      * try to fix the 10738 compiler linking bug
      
      * fix syntax
      
      * use dockerhub to store images
      
      * use newer amd-stg-open commit as default
      
      * Allow setting ROCM version, activate cchache, etc. (#462)
      
      * enable ccache and decouple it from MIOpen ccache use
      
      * fix the ccache check script
      
      * use another method to get server name
      
      * fix syntax
      
      * add quotes around the server name variable
      
      * use check_host as function
      
      * change syntax
      
      * fix syntax
      
      * test if server name is parsed correctly
      
      * try different syntax
      
      * check the env var value
      
      * test new check node function
      
      * add ROCMVERSION parameter and fix script syntax
      
      * fix script syntax
      
      * add missing instances of rocm version
      
      * install ccache in the docker image
      
      * do not check GPU in clang format stage, clean up old code
      
      * update defaults and clean up
      
      * update document: Readme, contributors, citation, (#463)
      
      * update cmake script
      
      * update readme
      
      * Update README.md
      
      * add citation
      
      * add images
      
      * Update README.md
      
      * update
      
      * Update README.md
      
      * Update CONTRIBUTORS.md
      
      * Update README.md
      
      * Update CITATION.cff
      
      * Update README.md
      
      * Update CITATION.cff
      
      * Update doc (#464)
      
      * update cmake script
      
      * update readme
      
      * Update README.md
      
      * add citation
      
      * add images
      
      * Update README.md
      
      * update
      
      * Update README.md
      
      * Update CONTRIBUTORS.md
      
      * Update README.md
      
      * Update CITATION.cff
      
      * Update README.md
      
      * Update CITATION.cff
      
      * update doc
      
      * Update CONTRIBUTORS.md
      
      * Update LICENSE
      
      * Update readme (#465)
      
      * update cmake script
      
      * update readme
      
      * Update README.md
      
      * add citation
      
      * add images
      
      * Update README.md
      
      * update
      
      * Update README.md
      
      * Update CONTRIBUTORS.md
      
      * Update README.md
      
      * Update CITATION.cff
      
      * Update README.md
      
      * Update CITATION.cff
      
      * update doc
      
      * Update CONTRIBUTORS.md
      
      * Update LICENSE
      
      * update
      
      * Optimization for gridwise group norm (#453)
      
      * use another instance to check the efficiency
      
      * optimize group layer norm
      
      * 1. coalesce load/store data for gridwise layer norm welford. 2. move a sqrt and divison into a outer static loop
      
      * add more instances to layernorm
      
      * add 2 more test cases
      
      * remove ignore in generating tuple of vector
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Fix build issue and schedule daily tests with latest staging compiler version. (#470)
      
      * run branch once a day, with release and staging compilers
      
      * add GetDockerImage in Clang stage
      
      * apply the new triggers to the develop branch
      
      * Example contraction splitk (#430)
      
      * start split k
      
      * add base device class
      
      * add example after merge develop
      
      * add gridwise gemm
      
      * add b matrix split k
      
      * split=1
      
      * change name for kb
      
      * not bias result right
      
      * bias only add once
      
      * fix register spill
      
      * regular code
      
      * add fp32 example
      
      * fix for 64bit index
      
      * fix CheckValidity of gridwise
      
      * Conv2dFwd example. (#467)
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * Fix bug of layernorm ckProfiler and refine code (#448)
      
      * Fix bug of profiler for layernorm
      
      * 1. Rename layernorm into normalization
      2. Decouple softmax from normalization
      
      * clang-format
      
      * Refactor device op implementations into `impl` subdirectory. (#420)
      
      * Move kernel implementation files under impl directory.
      
      * Update examples paths.
      
      * Update device kernel impl include paths.
      
      * Update tensor operation instances include paths.
      
      * Update profiler and tests include paths.
      
      * Clang-format
      
      * Update include paths for batched gemm reduce
      
      * Refactor UnitTest ConvNDBwdWeight.
      
      * Refactor fwd and bwd data convND UT.
      
      * Fix used test macro.
      
      * Fix include path.
      
      * Fix include paths.
      
      * Fix include paths in profiler and tests.
      
      * Fix include paths.
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * adding tensor_permutation example folder (#389)
      
      * adding tensor_permutation example folder
      
      * fixed formatting
      
      * adding tensor_permutation example folder
      
      * fixed formatting
      
      * changed deviceelementwise parameters for outscalar
      
      * removed .swo file
      
      * updated folder/file name
      
      * changed function call in verification for better consistency with hostelementwist parameters
      
      * formatted again
      
      * fixed shape in verification function call
      
      * changed verification function call, added definition for nhwc
      
      * added elementwise permute example
      
      * updated CMakeLists file in folder
      
      * Delete CmakeLists.txt
      
      * Delete tensor_permute.cpp
      
      * first version of 2d gridwise_elementwise kernel
      
      * temporary fix for stride problem
      
      * formatting
      
      * format
      
      * changed directory name
      
      * Delete gridwise_elementwise_2d.hpp
      
      * Delete CMakeLists.txt
      
      * Delete extra file
      
      * delete extra file
      
      * got rid of extraneous code
      
      * added 2d device elementwise file
      
      * deleted accidently added file
      
      * update
      
      * stride values generalized with equations
      
      * updated stride for output matrix
      
      * Update CMakeLists.txt
      
      * removed extraneous commented code
      
      * removed shape_nchw vector, replaced with GetLength for each dimension
      
      * changed vector load in kernel call
      
      * removed extra space in CMake
      
      * Tensor permutation (#479)
      
      * Fused elementwise layernorm (#468)
      
      * add fused addition lyernorm
      
      * add fused addition lyernorm
      
      * changed CMakelist
      
      * removed annotates
      
      * modified descriptor of C
      
      * fixed bug in gridwise add layernorm
      
      * format the files
      
      * modified name from add&layernorm into elementwise&layernorm
      
      * created fused elementwise layernorm branch
      
      * change input into tuple type
      
      * add sweep once to reduce load & read of C from global memory
      
      * modified Argument api
      
      * modified way to malloc c in global memory
      
      * changed gamma and beta to m_k_desc
      
      * fixed bug when sweep once and move CDataType when define device level struct
      
      * add src dim for gamma and beta
      
      * implement optimization for coalesced
      
      * delete a annotation line
      
      * fixed some bug to meet the requirements of ck
      
      * add bandwidth computing in example, and fixed the time unit
      
      * move device_elementwise_layernorm_impl.hpp into device/impl
      
      * fixed bug in device_elementwise_layernorm_impl.hpp
      
      * changed name from layernorm into normalization
      
      * clang-format the changed files
      
      * changed the names
      
      * moved immidiate results into lds, it become faster in non-sweeponce cases
      
      * changed naming of C into X to make the defination more clear
      
      * changed naming in example
      
      * add tests for elementwise normalization
      
      * move example_elementwise_layernorm_blockwise into folder 44_elementwise_normalization
      
      * move test_elementwise_layernorm_fp16 into new folder
      
      * move elementwise_normalization_instances into a new folder
      
      * add more tests in test_elementwise_layernorm_fp16.cpp
      
      * added some corner cases in test
      
      * fixed method to compute lds size for matrix X
      
      * changed name of 44_elementwise_normalization into 45_elementwise_normalization
      
      * modified some comments
      
      * modified some other confused comments
      
      * reduce redundant tests in test_elementwise_layernorm_fp16.cpp
      
      * Revert "Fused elementwise layernorm (#468)" (#491)
      
      This reverts commit efbcc6ed
      
      .
      
      * Update to the Reduction API and instances  (#476)
      
      * Simplify the macros for declaring and defining the add_device_reduce_instance_xxxx() instances
      
      * Change the types of lengths and strides from std::vector to std::array for the reduction device interfaces
      
      * Remove DeviceSoftmaxImpl's depending on DeviceReduceMultiblock
      
      * Split the cpp and hpp files for reduction instances to enable more parallel compiling
      
      * Remove the using of macros for declaring reduction instances and instance references
      
      * Update to add_device_reduce_instance_xxxx templated functions
      
      * Use ReduceOperation+InElementwiseOp+AccElementwiseOp to repace the ReduceOpId in defining add_reduce_instance_xxxx() templates
      
      * Change return format
      
      * fix the script parsing the QA results (#495)
      
      * Gemm standalone bench executable (#480)
      
      * prototype
      
      4 layouts
      
      fix default stride
      
      all problem sizes
      
      tidy
      
      move file
      
      update build script
      
      restore old file
      
      fix build
      
      * refactor standalone test to use gemm test harness
      
      * simplify gemm test
      
      * update build script
      
      * remove redundant
      
      * early return when cmd arg doesn't match
      
      * tidy
      
      * report failure when result not validated
      
      * tidy
      
      * Apply suggestions from code review
      Co-authored-by: default avatarAdam Osewski <19374865+aosewski@users.noreply.github.com>
      Co-authored-by: default avatarAdam Osewski <19374865+aosewski@users.noreply.github.com>
      
      * Fix Batched Gemm op for int8 data (#482)
      
      * Fix for lwpck-425, update BlockTransferSrcVectorDim
      
      * Revert "Fix for lwpck-425, update BlockTransferSrcVectorDim"
      
      This reverts commit fd24e280e28ff238b452cfdde58a988affd46461.
      
      * Add Batched Gemm int8 test, expect it to fail
      
      * Format
      
      * Re-add the fix
      
      * Input/output permutation for fused attention (#460)
      
      * reopen masking att instance due to CI is upgraded
      
      * re-enable instances previously failed on 9110
      
      * enable ksize-kpadding pair validity test
      
      * add non-masked attention+permute test; expose masking boolean to attention kernel handles
      
      * disable bench
      
      * fix test
      
      * move files
      
      * bulk rename batched_gemm_masking_scale_softmax_gemm_permute to batched_gemm_softmax_gemm_permute
      
      * format
      
      * amend rename
      
      * disable bench in test
      
      * add mask/no-mask test for non-permute attention kernels
      
      * disable broken kernel instance
      
      * example working
      
      add non-permuted problem statement
      
      evaluating whether overhead comes from permutation or the extra kernel arg
      
      * interface for bias addition without implementing it
      
      * test and profiler running
      
      * tidy
      
      * mask type determined by enum class
      
      * unify example code
      
      * move masking specialization to its own header
      
      * align formats
      
      * extract helper functions
      
      * experiment merging dims for attn w/ permute; shows perf parity with attn wo/ permute
      
      * add tensor specialization to template args
      
      since tensor spec packed shows perf parity when permutation isn't needed
      
      remove redundant template args
      
      comment on 'packed' tensor specialization
      
      * grouped attention with input/output permute example
      
      * format
      
      * clean up
      
      * refactor acc0 tile visitor
      Co-authored-by: wangshaojie6's avatarshaojiewang <wsjmessi@163.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Fused attention client example (#494)
      
      * reopen masking att instance due to CI is upgraded
      
      * re-enable instances previously failed on 9110
      
      * enable ksize-kpadding pair validity test
      
      * add non-masked attention+permute test; expose masking boolean to attention kernel handles
      
      * disable bench
      
      * fix test
      
      * move files
      
      * bulk rename batched_gemm_masking_scale_softmax_gemm_permute to batched_gemm_softmax_gemm_permute
      
      * format
      
      * amend rename
      
      * disable bench in test
      
      * add mask/no-mask test for non-permute attention kernels
      
      * disable broken kernel instance
      
      * example working
      
      add non-permuted problem statement
      
      evaluating whether overhead comes from permutation or the extra kernel arg
      
      * interface for bias addition without implementing it
      
      * test and profiler running
      
      * tidy
      
      * mask type determined by enum class
      
      * unify example code
      
      * move masking specialization to its own header
      
      * align formats
      
      * extract helper functions
      
      * experiment merging dims for attn w/ permute; shows perf parity with attn wo/ permute
      
      * add tensor specialization to template args
      
      since tensor spec packed shows perf parity when permutation isn't needed
      
      remove redundant template args
      
      comment on 'packed' tensor specialization
      
      * grouped attention with input/output permute example
      
      * format
      
      * clean up
      
      * refactor acc0 tile visitor
      
      * fused attention client example
      
      * format
      Co-authored-by: wangshaojie6's avatarshaojiewang <wsjmessi@163.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * reduce the number of default targets (#489)
      
      * reduce the number of default targets
      
      * re-write the setting of target flags
      
      * move all options to one place
      
      * add new custom target instances for installing CK
      
      * fix missing -fPIC flag for conv3d_fwd instance lib (#473)
      
      * Add quotes for string option values (#472)
      
      * Batchnorm-forward implemented using welford method to calculate variance (#403)
      
      * Update to the batchnorm-forward API and base class
      
      * Fix leeked header including in gridwise_set_buffer_value.hpp
      
      * Add kernels and device file for batchnorm-forward welford supporting both blockwise and multi-block reduction
      
      * Update to the batchnorm-forward example to use the new batchnorm-forward device interface
      
      * Change the batchnorm-forward reference to use sequential welford method
      
      * Change to assign the workspace into four buffers in the host layer
      
      * Use GetReduceCountPerThread functor to replace the initial count for Blockwise and Multiblock welford
      
      * Tiny correction and remove un-used file under example/34_batchnorm
      
      * Renaming in the kernel arguments
      
      * Explicitly use ck::math::sqrt in batchnorm-forward kernels
      
      * Add some comments to some kernels
      
      * Tiny fix
      
      * Generalize the data types in reference_batchnorm_forward_nhwc_c
      
      * Use ck::ignore to mark un-used parameters
      
      * Move GetReduceCountPerThread functor codes from kernel to device
      
      * Remove some un-used codes in device_batchnorm_forward_impl.hpp
      
      * Tiny fix in batchnorm_forward example
      
      * Move GetReduceCountPerThread() to welford_helper.hpp
      
      * Use seperate data type for Scale and Bias
      
      * Renaming in device Op
      
      * Tiny fix in forward example
      
      * Updata to batchnorm-infer (type spliting, renaming)
      
      * Add time and bandwidth measurement to the batchnorm-forward example
      
      * Add support of elementwise operation for batchnorm forward output
      
      * Reduce object copying by passing object as reference type
      
      * Tiny change for performance
      
      * Updates for performance again
      
      * Some Renamings
      
      * Add GetActualVariance template parameter for ThreadwiseWelfordMerge
      
      * Tiny update in reference batchnorm forward nhwc/c
      
      * Move batchnorm multiblock kernel files to grid/batchnorm_multiblock sub-directory
      
      * Fuse mean and bias in the normalization calculation
      Co-authored-by: default avatarroot <root@dc-smc-18.amd.com>
      Co-authored-by: default avatarrocking5566 <ChunYu.Lai@amd.com>
      
      * Add fp32 and bf16 tests (#487)
      
      * Only need one test case here (#483)
      
      * Add Conv Forward on Navi21 for ResNet50 (#490)
      
      * add device of dl
      
      * fix k1 of GridwiseGemmDl_km_kn_mn_v1r3
      
      * init version for dl conv
      
      * add example(init)
      
      * result right
      
      * disable elementwise operation
      
      * check parameters
      
      * add fp32,int8 example and change check code
      
      * change deive file and class name
      
      * add check vector access of C
      
      * add instance
      
      * add to ckProfiler
      
      * add Filter1x1Pad0 instances
      
      * fix ignore error
      
      * fix for CI
      Co-authored-by: default avatarletaoqin <letaoqin@amd.com>
      
      * Conv perlayer int8 quantization (#471)
      
      * Add conv2d requant example
      
      * Fix bash error
      
      * Rename example
      
      * 1. Rename gemm quantization
      2. shares the requantization lambda function with conv
      
      * Refine declare type
      
      * Add conv bias relu quantization exmaple
      
      * clang format
      
      * Fix compile error due to merge develop
      
      * Fix CI error
      
      * Extract quantization post operation into another file
      
      * Support quantization for non piecewise linear function
      
      * Add instance for conv quantization
      
      * Add convolution quantization factory
      
      * Add convolution quantization client example
      
      * Add more instances with different template parameters
      
      * clang format
      
      * Sync the naming with the develop
      
      * Softmax unit-test reduction across all and non innermost dims cases. (#406)
      
      * Add reduction across all dims cases.
      
      * host softmax: handle all reduce
      
      * Test cases when reduced dim is not innermost axis.
      
      * Fix syntax.
      
      * Test non innermost dim for fp32 and int8
      
      * Group test suites wrt NumReduceDim.
      
      * Additionally test failing cases.
      
      * Throw error when Rank or NumReduceDims doesn't match arguments.
      
      * Check reducedDims has correct values
      
      * Move don't reuse DeviceReduceMultiblock IsSupportedArgument method.
      Instead implement own. (in fact just get rid of one check to enable
      reduction across inner dimensions).
      
      * Reorganize unit tests to better cover use scenarios.
      
      * Test input validation
      * Test reduction of inner dimensions with custom op instances.
      
      * Refactor fp32 and int8 unit tests.
      
      * Fix FP32 instance template parameters.
      
      * Add more instances.
      
      * Instances with InSrcVectorDim=0.
      
      * Do not initialize and copy data when arg not supported.
      
      * ckProfiler Softmax use instance factory.
      
      * Refactor device softmax IsSupported.
      
      * Additionally add non-polymorphic api functions
      
      * Split softmax instances into multiple files.
      
      * Fix profiler.
      
      * Reorganize tests to reuse profiler and cover edge cases.
      
      * Clang-format
      
      * I8 Softmax instances along with UT.
      
      * Reuse type alias definitions from instance factory header.
      
      * Clean included headers
      
      * Fix variable names.
      
      * Add missing checks in Argument constructor.
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      
      * Add pipeline v1/v2 selector, add more instances (#381)
      
      * Add gridwise gemm pipeline v1/v2 selector
      
      * Pipeline selector working, test-wise add pipeline options to one instance
      
      * Add gemm instances
      
      * Add debug info to DeviceGemmXdl
      
      * Add debug info to DeviceGemmXdl_CShuffle
      
      * Add debug info to DeviceGemmXdl_CShuffle and instances to gemm_add_add_fastgelu
      
      * Minor fix
      
      * Add debug info to DeviceBatchedGemmXdl and instances to batched_gemm
      
      * set up inter-wave configuration
      
      * use defualt loop scheduling for supported gemm ops
      
      for blanket-applying interwave scheduling for all supported gemm ops, define macro CK_EXPERIMENTAL_DEFAULT_TO_INTER_WAVE_SCHEDULING=1. this should be discouraged though as it is not covered by CI
      
      * Add enum PipelineVersion
      
      * Update instances
      
      * Format
      
      * Fix the merge conflict
      
      * Add flags to disable added instances
      
      * Test disable flag check
      
      * Disable flag check
      
      * Enable the instances
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      
      * Add client example of grouped conv2d backward data (data type: fp16) (#481)
      
      * Improve example reusability
      
      * Remove no-longer used file
      
      * Rename folder of grouped_conv_bwd_data example
      
      * Add normal grouped conv bwd example
      
      * Add interface 'DeviceGroupedConvBwdData'
      
      * Prettify comment of device op type arguments
      
      * Add grouped conv2d/conv3d backward data fp16 instances
      
      * Fix wrong template argument
      
      * Add grouped_conv2d_bwd_data client example
      
      * Use simpler expression to calculate memory size
      
      * Fix formating
      
      * Remove grouped_conv3d_bw_data instances
      
      Underlying device operator is not ready to handle 3D input
      
      * Remove no-longer necessary include directive
      
      * Add missing include directive
      
      * Use more realistic conv param in example
      
      * remove atten kernel workarounds as we move over to rocm 5.3 (#496)
      
      * Refine layernorm naming and test code (#497)
      
      * Sync the naming
      
      * Sync the test of layernorm with groupnorm
      
      * Sync the naming
      
      * Minor change for comment and log
      
      * [What] Add saveMean and SaveInvVariance in the interface.
      [Why] These can optimize the backward
      
      * Disable gtest discovery to run tests per-program not per-case (#432)
      
      * disable gtest discovery to run tests per-program not per-case
      
      * register cmake target to ctest
      
      * Fused elementwise normalization (#492)
      
      * add fused addition lyernorm
      
      * add fused addition lyernorm
      
      * changed CMakelist
      
      * removed annotates
      
      * modified descriptor of C
      
      * fixed bug in gridwise add layernorm
      
      * format the files
      
      * modified name from add&layernorm into elementwise&layernorm
      
      * created fused elementwise layernorm branch
      
      * change input into tuple type
      
      * add sweep once to reduce load & read of C from global memory
      
      * modified Argument api
      
      * modified way to malloc c in global memory
      
      * changed gamma and beta to m_k_desc
      
      * fixed bug when sweep once and move CDataType when define device level struct
      
      * add src dim for gamma and beta
      
      * implement optimization for coalesced
      
      * delete a annotation line
      
      * fixed some bug to meet the requirements of ck
      
      * add bandwidth computing in example, and fixed the time unit
      
      * move device_elementwise_layernorm_impl.hpp into device/impl
      
      * fixed bug in device_elementwise_layernorm_impl.hpp
      
      * changed name from layernorm into normalization
      
      * clang-format the changed files
      
      * changed the names
      
      * moved immidiate results into lds, it become faster in non-sweeponce cases
      
      * changed naming of C into X to make the defination more clear
      
      * changed naming in example
      
      * add tests for elementwise normalization
      
      * move example_elementwise_layernorm_blockwise into folder 44_elementwise_normalization
      
      * move test_elementwise_layernorm_fp16 into new folder
      
      * move elementwise_normalization_instances into a new folder
      
      * add more tests in test_elementwise_layernorm_fp16.cpp
      
      * added some corner cases in test
      
      * fixed method to compute lds size for matrix X
      
      * changed name of 44_elementwise_normalization into 45_elementwise_normalization
      
      * modified some comments
      
      * modified some other confused comments
      
      * reduce redundant tests in test_elementwise_layernorm_fp16.cpp
      
      * Remove interface 'DeviceGroupedConvBwdData' (#500)
      
      * Remove interface 'DeviceGroupedConvBwdData'
      
      * Remove no-longer needed include directive
      
      * Rename client example folder
      
      * Add client example of grouped conv2d backward weight (data type: fp16)  (#498)
      
      * Remove redundant CMake setting
      
      * Extract common code from files
      
      * Rename folder 'convnd' to 'conv'
      
      * Use std::array<> to accept compile-time kwnown # of arguments
      
      * Fix compilation error of tuning parameter
      
      * In example, use same setting as unit-test
      
      * Remove no-longer used include directive
      
      * Add interface for grouped conv bwd weight
      
      * Add group support for conv bwd weight
      
      * Add grouped conv bwd weight example
      
      * Use group parameter in example
      
      * Rename example folder
      
      * Remove non-grouped version example source files
      
      * Rename device op template
      
      * Add group support to convolution backward weight
      
      * Remove debug messages
      
      * Use smaller group size in example
      
      * Use named variable as loop terminate condition
      
      * Prettify example output message
      
      * Enlarge used grid size
      
      * Allow real grid size exceeds expected grid size
      
      * Rename interface file
      
      * Add client example for grouped conv2d bwd weight
      
      * Fix wrong include directive
      
      * Rename client example folder
      
      * Add client example of grouped conv2d forward (data type: fp16) (#488)
      
      * Rename example folder for GroupedConvFwdMultipleD
      
      * Unify example codes
      
      * Change target names
      
      * Add fp16 example for multiple d instance
      
      * Re-format common.hpp
      
      * Add interface 'DeviceGroupedConvFwd'
      
      * Use simpler interface
      
      * Move common conv params out
      
      * Rename conv fwd client example folder
      
      * Add missing include directive
      
      * Update grouped conv instance implementations
      
      * Simplify ckProfiler (grouped conv forward)
      
      * Use GroupedConvFwd to implement client example
      
      * Use greater groupe count in example
      
      * Add custom target to group examples
      
      * Add extra tag param to instance factory function
      
      * Use tag to differentiate factory functions
      
      * Add missing tag argument for factory function
      
      * Remove inheritance relationship
      
      * Remove no-longer used include directive
      
      * Add license in front of file
      
      * add client example for elementwise_normalization (#501)
      
      * add client example for elementwise_normalization
      
      * clang format elementwise_layernorm2d.cpp
      
      * changed some naming to make it more understandable
      
      * changed naming of input into ab_input
      
      * fixed bug for threadwise_x_store
      
      * add elementwise operation to reference
      
      * Rangify FillUniformDistributionIntegerValue<> (#443)
      
      Allow passing forward range to its call operator
      
      * Add packages for examples and profiler (#502)
      
      * Add packages for example and profiler
      
      * correct TEST_NAME -> EXAMPLE_NAME
      
      * Rangify constructor of HostTensorDescriptor & Tensor<> (#445)
      
      * Rangify STL algorithms
      
      This commit adapts rangified std::copy(), std::fill() & std::transform()
      
      * Rangify check_err()
      
      By rangifying check_err(), we can not only compare values between
      std::vector<>s, but also compare any ranges which have same value
      type.
      
      * Allow constructing Tensor<> like a HostTensorDescriptor
      
      * Simplify Tensor<> object construction logics
      
      * Remove more unnecessary 'HostTensorDescriptor' objects
      
      * Re-format example code
      
      * Re-write more HostTensorDescriptor ctor call
      
      * Fix build errors on CI server (#506)
      
      * Add missing ignore expression
      
      * Add missing include directive
      
      * Rangify check_err() (#444)
      
      * Rangify check_err()
      
      By rangifying check_err(), we can not only compare values between
      std::vector<>s, but also compare any ranges which have same value
      type.
      
      * Re-format example code
      
      * Rangify STL algorithms (#438)
      
      * Rangify STL algorithms
      
      This commit adapts rangified std::copy(), std::fill() & std::transform()
      
      * Re-write more std::copy() calls
      
      * Re-write std::copy() calls in profiler
      
      * Introduce ck::accumulate_n() (#439)
      
      We can use this template to eliminate duplicated iterator computing
      logics. By providing return type to ck::accumulate_n(), we can avoid
      type conversion operations.
      
      * Avoid reporting unused member function error (#507)
      
      * Add Conv Backward Data on Navi21 for ResNet50 (#499)
      
      * start add example
      
      * add device dl
      
      * change launch kernel
      
      * change init data method
      
      * change example config
      
      * add config valid check
      
      * add instance for dl bwd
      
      * add instance to ckProfiler
      
      * reserver to profiler and cmakelist
      
      * add instance to ckProfiler2
      
      * change instance f32 config
      
      * fix example return value
      Co-authored-by: default avatarletaoqin <letaoqin@amd.com>
      Co-authored-by: default avatarPo Yen Chen <PoYen.Chen@amd.com>
      
      * Add BF16 tests for batched_gemm_softmax_gemm_permute (#504)
      
      * fixed bug in softmax reference & add bf16 examples for batched_gemm_scale_softmax_gemm
      
      * added bf16 tests for batched_gemm_softmax_gemm_permute
      
      * changed format of device_batched_gemm_softmax_gemm_permute_xdl_cshuffle_bf16_bf16_bf16_bf16_gmk_gnk_gno_gmo_instance.cpp
      
      * changed format device_batched_gemm_softmax_gemm_permute_xdl_cshuffle_bf16_bf16_bf16_bf16_gmk_gnk_gno_gmo_instance.cpp
      
      * aligned annotations
      
      * modified CMakeLists for examples
      
      * add common example code of fp16/bf16 version for batched_gemm_scale_softmax_gemm_xdl
      
      * use macro to control the instances
      
      * added macro control into instances
      
      * clang-format some files
      
      * changed error tolerance for bf16
      
      * changed index for 10_elementwise_normalization
      
      * fixed xdlops code bug in amd_xdlops.hpp
      Co-authored-by: default avatarPo Yen Chen <PoYen.Chen@amd.com>
      
      * Work around develop validation failure (#513)
      
      * workaround bf16 atten fwd issue on gfx908
      
      * typo
      
      * Client examples AddFastGelu and FastGelu + instances. (#509)
      
      * FastGelu support for more data types.
      
      * AddFastGelu & FastGelu instances.
      
      * Client example.
      
      * clang-format
      
      * Remove unused stride variable.
      
      * Add new line at EOF.
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * BatchNorm forward instance/external api/profiler/tests/client example (#511)
      
      * Update to device_batchnorm_forward base class to include all template parameters for problem description
      
      * Add batchnorm forward instances and external api
      
      * Add batchnorm forward profiler module which uses the external api
      
      * Add some comments in batchnorm_forward example to explain the dimensions in lengths[]
      
      * Replace the reference_batchnorm_forward_nhwc_c by generic reference_batchnorm_forward
      
      * Improvement to the batchnorm infer base API
      
      * Add batchnorm forward client example which shows using the batchnorm forward external API
      
      * Add test for batchnorm forward
      
      * Tuning the batchnorm profiler initialized values and error threshold
      
      * Add support for bhalf_t in instances/external api/tests
      
      * Add support for int8_t in instances/external api/tests
      
      * Add support for double in instances/external api/tests
      
      * Let ScaleDataType and BiasDataType be same as XDataType and YDataType when creating instances
      
      * Checking before running best instance in batchnorm_fwd_nhwc client example
      
      * Add checking for YElementwiseOp in batchnorm_forward external API
      
      * Add more types in batchnorm forward profiler
      
      * Add more test lengths
      Co-authored-by: default avatarrocking5566 <ChunYu.Lai@amd.com>
      
      * Remove int8 from batchnorm-forward instances since it is not needed for forward training and could fail test (#516)
      
      * BatchNorm backward implementation (#461)
      
      * Implemented batchnorm-backward Blockwise and Multiblock kernels
      
      * Add batchnorm-backward device op
      
      * Add batchnorm-backward host-reference op
      
      * Add batchnorm-backward example
      
      * Parameters renaming in batchnorm backward kernels and device op
      
      * Change in the example to loose the threshold for ScaleDiff checking
      
      * Add comments to explain the implementation of batchnorm-backward
      
      * Parameters renaming again in batchnorm backward kernels
      
      * Improve the expression calculation for performance
      
      * Add batchnorm backward to README
      
      * Add comments to explain inv-variance in batchnorm forward and backward
      
      * Renaming the batchnorm forward training and inferring examples
      
      * Add/update the comments for batchnorm-backward kernels
      
      * Renaming again
      
      * Add block_sync_lds between two consecutive blockwise reductions
      
      * Move common expression 1/N out of the static_for loops
      
      * Add dy_elementwise_op
      
      * Renaming in backward example again
      
      * Add checking for reduceDims in reference_batchnorm_backward
      
      * Update to comments and codes format
      
      * Rename in the comments
      
      * Remove common expression out of the loop in reference_batchnorm_backward_nhwc_c
      
      * Add block_sync_lds() between blockwise reduction again
      
      * Fix comments again
      
      * Remove int8 from batchnorm-forward instances since it is not needed for forward training and could fail test
      
      * fix GetTypeString
      
      * Fix split-k gemm test (#231)
      
      * properly return error flag; reveals bug in split-k gemm
      
      * fix bug in split k
      
      * update split-k test case
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * BatchNorm backward instance/external API/profiler/tests (#519)
      
      * Refine the device batchnorm-backward base API templates and data type assignments
      
      * Remove duplicated kernel file
      
      * Add batchnorm backward instances and external API
      
      * Add batchnorm-backward profiler and tests
      
      * Add client example which uses batchnorm backward external API
      
      * Merge test/batchnorm_fwd and test/batchnorm_bwd into one directory
      
      * Loose the threshold for batchnorm-backward check_err()
      
      * gemm, conv perchannel quantization (#503)
      
      * Use gemm_multiple_D instead
      
      * Add gemm bias relu quantization example
      
      * Add pure gemm quantization example
      
      * Add quantization of perchannel conv + bias + relu example
      
      * Refine the code
      
      * Rename multiplier to requant_scale
      
      * Rename the folder
      
      * Remove redundant comment
      
      * Rename the file. Prepare to add perchannel
      
      * Add conv perchannel instance
      
      * Move to quantization folder
      
      * Add conv perchannel client example
      
      * Apply Rangify constructor of HostTensorDescriptor & Tensor<>
      
      * Fix merge error
      
      * Modularize ckProfiler operations (#514)
      
      * Re-structure ckProfiler source files
      
      * Rename profiler.cpp to main.cpp
      
      * Modularize ckProfiler operations
      
      * Add description for profiler operations
      
      * Use longer name to avoid name collision
      
      * Use macro to delay expansion
      
      * Use std::move() to avoid object copying
      
      * Prohibit users from calling dtor
      
      * Use macro to eliminate redundant code
      
      * Make friend function hidden
      
      * Add missing include directive <iostream>
      
      * Fix wrong include directives
      
      * Remove int8 from batchnorm-forward instances since it is not needed for forward training and could fail test
      Co-authored-by: default avatarQianfeng Zhang <Qianfeng.Zhang@amd.com>
      
      * [Navi3x-LWPCK-449] wmma_op + unit test (#484)
      
      * wmma_op + unit test
      
      * add arch limitation to wmma test
      
      * change arch limitation
      
      * Refactor + Add all type unit test(int4 compile failed)
      
      * Add f32_16x16x16_bf16 unit test
      
      * Remote int4 related
      
      * delete deprecated test
      Co-authored-by: default avatarPo Yen Chen <PoYen.Chen@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Add multiple d gridwise gemm on Navi21 for ResNet50 (#517)
      
      * start add example
      
      * add multiple d fp16 example
      
      * device transfer elementwiseop to gridwise
      
      * gridwise add multiple d
      
      * change example for multiple d
      
      * fix spill registers
      
      * fix for passthrough element op
      
      * fix int8 overflow
      
      * change example file name
      
      * add instance for dl multiple d
      
      * example add DsDataType
      
      * remove grouped_convolution_forward_dl.hpp
      
      * add head file(was deleted before)
      
      * fix not support device issue
      
      * format
      
      * remove passthrough check
      Co-authored-by: default avatarletaoqin <letaoqin@amd.com>
      
      * Fix bug where scaling may not be applied in some code path (#526)
      
      * fix bug where scaling may not be applied in some code path
      
      * more test
      
      * revert accidental example code changes
      
      * Fix CI error. (#530)
      
      * ignore .git folder when doing clang-format
      
      * fix syntax
      
      * add backslashes before quotes
      
      * add path filter for several extensions
      
      * modified half function in math_v2.hpp (#528)
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Add padding device_gemm_xdl instances (#529)
      Co-authored-by: default avatarRosty Geyyer <rosty.geyyer@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Fix Grouped ConvBwdWeight test case failure (#524)
      
      * Use smaller tensor size in test
      
      * Use even more smaller tensor size
      
      * Touch only failing test case inputs
      
      * Make sure that GEMM sizes in K dimension are supported. (#527)
      
      * apply new K-dimension check in gemm_xdl_cshuffle
      
      * add K-dim check to gemm_xdl and batched_gemm_xdl
      
      * fix syntax
      
      * fix syntax
      
      * clean-up the debug output
      
      * Gridwise elementwise 2d (#466)
      
      * added 2d gridwise elementwise
      
      * added 2d version of device elementwise
      
      * added example file with updated device elementwise call
      
      * added Cmake file
      
      * changed NumDim into 2D
      
      * fixed compiler issues
      
      * fixed indexing for loop step
      
      * fixed NumDim dimension error
      
      * changed blockID to 2D
      
      * updated Grid Desc
      
      * updated kernel call
      
      * fixed 2d thread indexing
      
      * added dimensions for example file
      
      * commented out unused code
      
      * changed vector load
      
      * removed extra code
      
      * temporarily removing vector load on 2nd dim
      
      * changed vector load back, still causing errors
      
      * altered indexing
      
      * changed isSupportedArgument for 2D
      
      * changed indexing + do/while
      
      * fixed isSupportedArgument
      
      * changed dimension for debugging
      
      * fixed
      
      * added testing printouts
      
      * testing change
      
      * added variables to distribute threads through both dimensions
      
      * testing changes
      
      * integrated variable for thread distribution into device elementwise and added as parameter for gridwise elementwise
      
      * removed most of the extraneous code, testing with different dimensions
      
      * testing
      
      * removed debugging print statements
      
      * moved 2d elementwise permute into elementwise permute directory
      
      * fixed formatting
      
      * removed debugging comments from threadwise transfer
      Co-authored-by: default avatarJing Zhang <jizhan@amd.com>
      Co-authored-by: default avatarPo Yen Chen <PoYen.Chen@amd.com>
      
      * Add a docker hub doc file (#538)
      
      * Add padding device_gemm_add_add_fastgelu_xdl_c_shuffle instances to enable arbitrary problem size (#535)
      
      * Add padding device_gemm_add_add_fastgelu_xdl_c_shuffle instances
      
      * Add padding device_gemm_add_fastgelu_xdl_c_shuffle instances
      
      * Add gemm_add_fastgelu profiler impl
      
      * Add padding device_gemm_fastgelu_xdl_c_shuffle instances
      
      * Add gemm_fastgelu profiler impl
      
      * Add interface GetTypeIdName() and GetTypeIdHashCode() for Device Op (#533)
      
      * disable the attention test that fails on MI100 (#540)
      
      * Add MNK padding, M = 0 support into grouped_gemm (#539)
      
      * add mnk padding, support m=0
      
      * clean code
      
      * clean code
      Co-authored-by: default avatarRostyslav Geyyer <46627076+geyyer@users.noreply.github.com>
      
      * Remove including of cmath (#551)
      
      * Let cmath included when compiling host codes in math_v2.hpp
      
      * Remove including of cmath in device_base.hpp and device_permute.hpp
      
      * Add a flag to enable/disable debug output in many kernels. (#549)
      
      * add DEBUG_LOG macro to enable/disable debug output
      
      * fix syntax
      
      * fix syntax again
      
      * fix syntax one more time
      
      * remove balnk spaces
      
      * use ifdefs
      
      * add the Print argument
      
      * move the definition of DEBUG_LOG to ck.hpp
      
      * add the missign argument to Print()
      
      * [Navi3x-LWPCK-545] Block-wise GEMM + Real GEMM_WMMA_FP16 (#541)
      
      * wmma_op + unit test
      
      * add arch limitation to wmma test
      
      * change arch limitation
      
      * Refactor + Add all type unit test(int4 compile failed)
      
      * Add f32_16x16x16_bf16 unit test
      
      * tempsave
      
      * tempsave
      
      * tempsave
      
      * runtime bug, cannot find symbol
      
      * workaround for incorrect HIP warpSize return value
      
      * debugging
      
      * tempsave
      
      * Correctness OK, waiting for optimization
      
      * Tidy up + format
      
      * temp save
      
      * temp save, reproduce the v_bfi_b32 issue
      
      * add inline asm for wmmaop test
      
      * tidy up
      
      * clean some debug purpose code
      
      * discard some codes
      
      * clang format
      
      * clang format
      
      * compiler issue fixed + increase tile size
      
      * Gemm layernorm welford (#413)
      
      * Add device op of gemm layernorm
      
      * [What] Rename F to H
      [Why] F and G prepare for welford tensor
      
      * Add gridwise gemm + welford
      
      * Extract template parameter
      
      * Rename kernel. Prepare to add second half kernel
      
      * Extract var
      
      * Add second kernel for gemm+layernorm
      
      * Move to the gemm_layernorm folder
      
      * Rename F and G to mean and var
      
      * Do not use snakeCurved, it makes determination of padding  for welford difficult
      
      * Rewrite the device interface and rename some var
      
      * Add welford count
      
      * Update interface
      
      * Sync code, prepare to test on MI200
      
      * Clean the code
      
      * Implement layernorm
      
      * Add comment to mension hipFree
      
      * Wrtie out the e for debug.
      This could be remove and use h for instead
      
      * 1. Allocate mean, var and count into by SetWorkSpacePointer.
      2. Add GetWorkSpaceSize to calculate the space size
      
      * Add gemm layernorm host code
      
      * use reference layernorm
      
      * Fix bug of blockwise welford for first kernel
      
      * Fix bug of mean var padding for layernorm
      
      * Use sgpr for shuffleM_index
      
      * padding for GemmMeanVarCountGridDescriptor_M_NBlock
      
      * Add layout parameter
      
      * Check argument for gemm
      
      * calculate max count for tail block
      
      * Share E and H memory in device op
      
      * Hard code the vector dim
      
      * Refine the MakeDescriptor
      
      * 1. Remove E parameter, because E is inside of device op
      2. Check vector size
      
      * [What] Rename MakeMeanVarDescriptor_M_N
      [Why] Prepare to add count version of make descriptor
      
      * Use 1D global memory for count
      
      * Prevent redundant IO
      
      * Update parameter
      
      * Add pipeline v1/v2 selector
      
      * Rename the example name
      
      * Add base class for gemm layernorm
      
      * Refine naming to distinguish naive and welford
      
      * Add comment to explan in detail
      
      * We don't need to pad in N dimension in gemm for mean/var/count. Set NPerTile 1
      
      * Rewrite the 2st kernel, use multiple block along N dimension in layernorm kernel
      
      * Share the vector size
      
      * Refine var name
      
      * [What] Force LayernormThreadSliceSize_N = vector size.
      [Why] Memory coalesce
      
      * Add comment
      
      * Extract divisor out of the loop in reference layernorm
      
      * Pad different size for E and H in layernorm kernel according to different block tile
      
      * Refine naming
      
      * Refine naming
      
      * Prevent implicit cast
      
      * [What] use ck::math::sqrt instead of __builtin_amdgcn_sqrtf
      [Why] __builtin_amdgcn_sqrtf is only support float, double will cause casting
      
      * Cast only constant
      
      * Change of post shuffle thread descriptor
      
      * Add EMeanVarDataType parameter.
      
      * Merge the mean and var threadwise copy
      
      * Add missing index
      
      * Fix Typo
      
      * Sync the variable with previous if
      
      * 1. Declare e inside the host_gemm_layernorm()
      2. Prevent implicit cast in reference code
      Co-authored-by: default avatarPo Yen Chen <PoYen.Chen@amd.com>
      
      * Reduction external API and client examples (#493)
      
      * Change to the DeviceReduce base class template to include all problem description information
      
      * Add external api for reduction
      
      * Add client example to test the reduction external api
      
      * Spelling correction
      
      * Re-implement the host_reduction to follow the DeviceReduce base API format
      
      * Change the reduce profiler to call the external API for collecting device instances
      
      * Rename reduce client example directory from 08_reduce to 12_reduce
      
      * Remove (void) before the functional call
      
      * Tiny update in reduce client example
      
      * Tiny update in profile_reduce_impl.hpp
      
      * Rename the reduce client example directory
      Co-authored-by: default avatarPo Yen Chen <PoYen.Chen@amd.com>
      
      * Add client API/examples for 3xGemm+Bias+Add+Permute{0, 2, 3, 1} (#550)
      
      * add example
      
      * fix example
      
      * add instance for gemm permute
      
      * add to client example
      
      * change configs
      
      * change instance file name
      
      * formate
      
      * change client example file name and remove example
      
      * add multi embeddings support (#542)
      
      * add multi embeddings support
      
      * fix format
      
      * optimize sqrt
      
      * add reduce operation
      
      * change to elementwise op
      
      * fix name
      
      * rename
      
      * run ci cd
      
      * format example
      
      * format code
      
      * format code
      
      * fix a bug for 6-dim kernels (#555)
      
      * Add multiD Gemm client APIs (#534)
      
      * start add example
      
      * fix config
      
      * fix showinfo bug
      
      * add an elementop
      
      * change to padding
      
      * add xdl example
      
      * change elementwiseop
      
      * add instance
      
      * add instance to profiler
      
      * change file name
      
      * fix deive not support issue
      
      * add client example
      
      * fix client gemm_add_multiply name
      
      * change AddMultiply elementwiseop
      
      * fix elementwiseop
      
      * fix client example
      
      * fix addmultiply op
      
      * fix comments and fun name
      Co-authored-by: default avatarletaoqin <letaoqin@amd.com>
      
      * Wavelet (inter-wave consumer-producer) GEMM (#310)
      
      * wavelet gemm programming model support for CK
      
      * GEMM pipeline update for wavelet progrmmaing model
      
      * Updated wavelet programming pipeline
      
      * fixes for global-write for math-wave
      
      * fixed bug in global writes
      
      * Updated comments for better readability
      
      * fixed clang format errors
      
      * added block_lds without barrier sync
      
      * clean
      
      * clean
      
      * clean
      
      * clean
      
      * refactor
      
      * prototype
      
      4 layouts
      
      fix default stride
      
      all problem sizes
      
      tidy
      
      move file
      
      update build script
      
      restore old file
      
      fix build
      
      * refactor standalone test to use gemm test harness
      
      * simplify gemm test
      
      * update build script
      
      * remove redundant
      
      * early return when cmd arg doesn't match
      
      * tidy
      
      * report failure when result not validated
      
      * tidy
      
      * Add comment depicting B2C mapping pattern.
      
      * Formatting & comments.
      
      * Comparison with custom B2C mapping pattern.
      
      * Example for wavelet gemm.
      
      * Add wavelet to Gemm standalone test.
      
      * Remove debug code.
      
      * Remove dangling #endif directive.
      
      Co-authored-by: root <Raman Jana>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      Co-authored-by: default avatarAdam Osewski <19374865+aosewski@users.noreply.github.com>
      
      * Use double for all scaling values and float-point constant values at the Device Op API (#557)
      
      * Use double as alpha/beta values type in reduce device op api
      
      * Use double as alpha/beta values type in softmax device op api
      
      * Use double as alpha/beta values type in multiple-reduce device op api
      
      * Use double as epsilon value type in normalization/elementwise-normalization device op api
      
      * Batchnorm inference instances, external API, client examples and gtests (#531)
      
      * File renaming and class renaming for device element-wise operation
      
      * Add batchnorm-infer instances, external API and client example
      
      * Add batchnorm-infer profiler module and gtests
      
      * Remove file device_elementwise_extension.hpp and move NormalizeInInfer operation to element_wise_operation.hpp
      
      * Remove the using of class aliasing for DeviceElementwiseForBatchNormInfer
      
      * Rename class and file due to conflict from device_elementwise_2d.hpp
      
      * Fix namespace in batcnnorm_infer_nhwc client example
      
      * Add more instances for irregular GEMM sizes. (#560)
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * Use defined seed for deterministic test runs. (#562)
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * remove unused variable (#564)
      
      * remove unused variable
      
      * format code
      
      * Add the markdown tutorial hello world (#563)
      
      * Add the markdown tutorial
      
      * Clean up
      
      ---------
      Co-authored-by: default avatarRosty Geyyer <rosty.geyyer@amd.com>
      
      * Fix CI issues. (#572)
      
      * switch to recent staging compiler as default for CI
      
      * fix the baseline query
      
      * roll back sqlalchemy to version 1.4.46
      
      * Fix a couple more CI issues. (#578)
      
      * test the QA cron parameter for compiler commit
      
      * create separate dockers for latest and fixed amd-stg-open compiler versions
      
      * change groovy syntax
      
      * apply cron timers back to develop branch
      
      * Add GemmAddSoftmaxGemm support for MSFT ORT (instances and client API) (#576)
      
      * add instance for gemm bias softmax gemm
      
      * add client example
      
      * change CGridDesc_G_M_N to CGridDesc_G_M_O
      
      * add gridwise
      
      * change c grid name
      
      * device add d0s data
      
      * fix 08 client_example
      
      * add example 47_fused_attention
      
      * example output correct
      
      * add d0 to example
      
      * add d0 element op
      
      * rechange instance code
      
      * change Acc0ElementwiseOperation to C0DEElementwiseOperation
      
      * change example name
      
      * update instance for cdeelementwiseop
      
      * add bhalf_t ScaleAdd
      
      * add test
      
      * not surport geem1 bias
      
      * remove some ignore
      
      * fix test bug
      
      * adding the first draft of changelog (#571)
      
      * adding the first draft of changelog
      
      * second draft of changelog
      
      * Add instance for elementwise normlization (#573)
      
      * added instances for large N
      
      * add instance for elementwise normlization
      
      * added supported restrict in device_elementwise_normalization_impl.hpp
      
      * Gemm+layernorm instance, ckProfiler, client example (#568)
      
      * Add gemm + layernorm instance
      
      * Add ckProfiler
      
      * Add test
      
      * Add client example
      
      * Detect if user forger to set the workrspace
      
      * Use literal in the example
      
      * [What] use builtin function for sqrt
      [Why] compiler will not use v_sqrt_f64_e64 if we use ::sqrt()
      
      * check gemm vaildity in IsSupportedArgument
      
      * Add more testcases
      
      * Merge duplicated folder in client example
      
      * Print more infomation
      
      * Use better kernel parameter for MS problem size
      
      * clang format
      
      * Add constexpr for if condition and remove redundant include
      
      * Remove cstdlib and add constexpr
      
      * enable batched_gemm_softmax_bf16 tests (#582)
      
      * GroupedGEMM more bigger tiles. (#577)
      
      * Adding more bigger tiles.
      
      * Remove failing instance.
      
      * Remove instances which that don't improve perf.
      
      ---------
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      
      * Remove the workaround for bf16 attention tests. (#586)
      
      * remove workanround in bf16 attention test
      
      * clean up another workaround
      
      * Conv3D FWD BWD WRW fp16 fp32 client examples (#559)
      
      * Conv3d bwd weight client example.
      
      * Update year in license
      
      * Convolution bwd data 3D fp16/fp32 client example.
      
      * Client example for convnd fwd fp16 fp32
      
      * clang-format
      
      * Review remarks.
      
      * Fix compiler err.
      
      * Update data layout to standard one.
      
      * Add conv 3d fwd NDHWGC instances
      
      * clang-format
      
      * Conv3d fwd NDHWGC instances.
      
      ---------
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      
      * [Navi3x]  Add Device Operations (#567)
      
      * wmma_op + unit test
      
      * add arch limitation to wmma test
      
      * change arch limitation
      
      * Refactor + Add all type unit test(int4 compile failed)
      
      * Add f32_16x16x16_bf16 unit test
      
      * tempsave
      
      * tempsave
      
      * tempsave
      
      * runtime bug, cannot find symbol
      
      * workaround for incorrect HIP warpSize return value
      
      * debugging
      
      * tempsave
      
      * Correctness OK, waiting for optimization
      
      * Tidy up + format
      
      * temp save
      
      * temp save, reproduce the v_bfi_b32 issue
      
      * add inline asm for wmmaop test
      
      * tidy up
      
      * clean some debug purpose code
      
      * discard some codes
      
      * clang format
      
      * clang format
      
      * compiler issue fixed + increase tile size
      
      * navi3x_multipleD+example
      
      * temp save
      
      * workable
      
      * batchedgemm[OK], groupconv[debug]
      
      * groupconv: Sanity check[OK], Performance[Bad]
      
      * navi3x_groupconv_need_optimization
      
      * format
      
      * Add arch limitation to all wmma examples
      
      * fix bug: example30 input conv args
      
      * Improve normalization (#580)
      
      * Sync the order of type string with template parameter
      
      * Add more instances
      
      * Check the vector size and remove redundant var
      
      * Extract var to static, prepare to separate sweep once kernel
      
      * Separate sweeponce flow and optimize the flow
      
      * 1. Rename AccDatatype in normalization to computeData
      2. Rename AccElementwiseOperation to YElementwiseOperation in normalization
      
      * Remove useless code
      
      * Update naive variance kernel
      
      * Refine string
      
      * Fix typo
      
      * Support naive variance for device_normalization
      
      * Check the blocksize
      
      * Share the VGPR of x and y
      
      * Share the VGPR of gamma and beta
      
      * Add more instances
      
      * Support fp16 sqrt for experiment
      
      * Add CHANGELOG
      
      * Fix typo
      
      * clang-format
      
      * Add contraction_fp64 example  (#570)
      
      * add contraction_bilinear
      
      * add contraction_scale_xdl_fp64
      
      * reduce tile size to avoid register spill
      
      ---------
      Co-authored-by: default avatarroot <root@ctr-ubbsmc16.amd.com>
      
      * Clean up kernel launch output (#569)
      
      * clean up output from kernel_launch
      
      * set RUN_WARMUP to 0 by default
      
      * split the warm-up into a separate issue
      
      ---------
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      
      * Sphinx doc (#581)
      
      * New docs directory with minimal config
      
      * Based on docs directory of rocBLAS
      
      * Config for running Doxygen then Sphinx to generate HTML
      
      * Add minimal content - intro to doc
      
      * Add some boilerplate sections to doc
      
      * content still needs to be done,
      * e.g., need to generate API documentation using Doxygen
      * need to write contributor guide
      
      * Start Softmax section of Support Primitives doc
      
      * Written as a test bed for typesetting math content
      
      * Need to decide how much detail to go into
      
      * add doc directories to git ignore file.
      
      * Minor edits - new line at EOF, change year in copyright notices
      
      * Port Markdown files to ReStructuredText
      
      * Copy Markdown files from pre-existing doc directory to docs directory
      
      * Convert to reStructured Text (rst) - section headings, links, tables
        have a different syntax in rst
      
      * New rst files added to index - can generate HTML with same style as
        HTML generated from rst files in previous commits
      
      * Intention is to make all the content in doc redundant and use rst
        throughout rather than mix of md and rst
      
      * Extend Softmax section of Primitives Guide
      
      * rename l to z
      
      * add material on applying softmax row-wise to matrix
      
      * define macro for diag operator (represents diagonal matrix)
      
      ---------
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      
      * Build and archive deb packages. (#590)
      
      * build and archive deb packages
      
      * fix syntax
      
      * run QA to test building packages
      
      * apply cron to develop branch again
      
      * fix a bug when building for gfx1030 target. (#591)
      
      * fix a bug while building for gfx1030 and add gfx1030 to targets
      
      * fix syntax
      
      * Grouped conv1d client example (#589)
      
      * add conv1d fwd client example
      
      * change 07_grouped_conv2d_fwd to 07_grouped_convnd_fwd
      
      * add conv1d bwd weight
      
      ---------
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      
      * Add Grouped Conv Backward Weight on Navi21 for ResNet50. (#505)
      
      * Add DeviceOp and examples
      
      * Format DeviceOp template arguments
      
      * Remove bf16 example
      
      * Format
      
      * Format
      
      * Update MakeABCGridDescriptor_A_K0_M_K1_B_K0_N_K1_C_M_N
      
      * Refactor argument preparation
      
      * Update conv_bwd_weight_dl to grouped_conv_bwd_weight_dl
      
      * Rename device op file
      
      * Update include directive in the example file
      
      * Update descriptor preparation for grouped op
      
      * Update the argument
      
      * Update batch handling
      
      * Add gridwise gemm supporting batched input
      
      * Update blockwise indexing, working version
      
      * Update copyright year
      
      * Update check if argument is supported
      
      * Refactor and make consistent with xdl examples
      
      * Update check if argument is supported
      
      * Add changelog entry
      
      * Added comments on Dl op split_k>1 support
      
      ---------
      Co-authored-by: default avatarRosty Geyyer <rosty.geyyer@amd.com>
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      
      * disable tensor contraction f64 on MI100 (#602)
      
      * Fast GeLU using built-in function (#587)
      
      * clean up
      
      * fast gelu using builtin function
      
      * clean
      
      * clean
      
      * clean
      
      * clean:
      
      * clean
      
      * fix compilation
      
      * clean
      
      * clean
      
      ---------
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      
      * [Navi3x Bug Fix] fix typo to accept MNKPadding flag correctly. (#597)
      
      * fix a bug blocking wmma_gemm_multipleD
      
      * Utilize matrix padder in device_wmma_op
      
      * cosmetic change for gemmpadding format
      
      * clang format
      
      * Change gridwise gemm from FIFO to KMN loop fashion
      
      * Suppress reserved-identifier warning and catch all warnings. (#608)
      
      * suppress the reserved-identifier warnings
      
      * keep BUILD_DEV=On and use -Werror by default
      
      ---------
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: default avatarShaojie WANG <shaojie.wang@amd.com>
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      Co-authored-by: default avatarQianfeng <qianfeng.zhang@amd.com>
      Co-authored-by: default avatarJianfeng Yan <jfyan008@gmail.com>
      Co-authored-by: wangshaojie6's avatarshaojiewang <wsjmessi@163.com>
      Co-authored-by: default avatarrocking5566 <ChunYu.Lai@amd.com>
      Co-authored-by: default avatarrocking <chunylai@amd.com>
      Co-authored-by: default avatarltqin <letao.qin@amd.com>
      Co-authored-by: default avatarqinletao <letaoqin@amd.com>
      Co-authored-by: default avatarmyamlak <Marcin.Makowski@amd.com>
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      Co-authored-by: default avatarAdam Osewski <19374865+aosewski@users.noreply.github.com>
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      Co-authored-by: default avatarLiam Wrubleski <Liam.Wrubleski@amd.com>
      Co-authored-by: default avatarguangzlu <87220526+guangzlu@users.noreply.github.com>
      Co-authored-by: default avatarroot <root@dc-smc-13.amd.com>
      Co-authored-by: default avatarPo Yen Chen <PoYen.Chen@amd.com>
      Co-authored-by: default avatarDaming Feng <dmfeng8898@gmail.com>
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      Co-authored-by: default avatarRostyslav Geyyer <46627076+geyyer@users.noreply.github.com>
      Co-authored-by: default avatarRosty Geyyer <rosty.geyyer@amd.com>
      Co-authored-by: default avatarcloudhan <cloudhan@outlook.com>
      Co-authored-by: default avatarcarlushuang <carlus.huang@amd.com>
      Co-authored-by: default avatardanyao12 <yaodan@dc-smc-13.amd.com>
      Co-authored-by: default avatarLixun Zhang <Lixun.Zhang@amd.com>
      Co-authored-by: default avatarJD <Jehandad.Khan@amd.com>
      Co-authored-by: default avatarJun Liu <Liu.Jun@amd.com>
      Co-authored-by: default avatararai713 <67439843+arai713@users.noreply.github.com>
      Co-authored-by: default avatarroot <root@dc-smc-18.amd.com>
      Co-authored-by: default avatarfsx950223 <fsx950223@outlook.com>
      Co-authored-by: default avatarHaocong WANG <haocwang@amd.com>
      Co-authored-by: default avatarJing Zhang <jizhan@amd.com>
      Co-authored-by: default avatarRaman R jana <raman.jana@amd.com>
      Co-authored-by: default avatarroot <root@ctr-ubbsmc16.amd.com>
      Co-authored-by: default avatarpmaybank <113125070+pmaybank@users.noreply.github.com>
      4aefd6e1
  2. 16 Mar, 2023 1 commit
    • Illia Silin's avatar
      Merging staging branch into master. (#610) · b79c7afb
      Illia Silin authored
      
      
      * Refactor block to C tile map  (#235)
      
      * refactor block-to-ctile-map
      
      * gridwise gemm block2ctile generic validity check
      
      * format
      
      * amend split-k gemm block2ctile map refactor
      
      * add test
      
      * format
      
      * amend
      
      * revert to calculating batch index in kernel instead of passing as block_id_z
      
      * move file
      
      * add valid ctile index check to gridwise v2r4
      
      * remove options.hpp.in (#240)
      
      * example of conv bwd weight 1d/2d/3d fp32/fp16/bf16 xdl (#244)
      
      * enable example of conv 1d/3d for bwd weight
      
      * make bf16 kernel do not use atomic add
      
      * using new gridwise gemm for bwd weight on convnd bwd weight
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * fix build (#246)
      
      * fix build
      
      * Revert "fix build"
      
      This reverts commit d7310238
      
      .
      
      * post PR #235 merge fix
      
      * amend
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      
      * add GetWorkSpaceSize to base arg (#253)
      
      * add GetWorkSpaceSize to base arg and make an example on convnd_bwd_weight
      
      * remove redundant compute
      
      * use datatype and split k to check whether a workspace is used
      
      * remove unused computation for work space size
      
      * Add performance tests as a stage of CI. (#247)
      
      * modify ckProfiler_gemm output
      
      * fix syntax
      
      * change ckProfiler output and return 0
      
      * fix syntax
      
      * output datatype
      
      * fix syntax
      
      * output datatype in another way
      
      * fix syntax
      
      * fix syntax
      
      * test return values of ckProfiler
      
      * add layout info and tests, make sure ckprofiler returns 0
      
      * fix syntax
      
      * change layout output
      
      * fix syntax
      
      * fix syntax again
      
      * update script to process perf results
      
      * rearrange jenkins stages
      
      * fix typo
      
      * add python packages to Docker file
      
      * adding setuptools-rust package
      
      * modify parsing for new test parameters
      
      * test db credentials on jenkins
      
      * fix syntax
      
      * update python script to handle incomplete lines
      
      * ungrade python to 3.8 and write the gemm_params table
      
      * add sqlalchemy package to docker
      
      * move perf data processing to master node
      
      * move the master node inside a steps region
      
      * add new stage for result processing
      
      * move results processing to separate stage
      
      * reduce number of tests to speedup debugging
      
      * pass config to processPerfResults stage
      
      * run script on master in a docker container
      
      * replace show_node_info
      
      * try loading docker on master node again
      
      * use ansible node instead of master
      
      * get rid of pymysql package
      
      * try ssh connection using paramiko
      
      * put back pymysql
      
      * put the perf data processing back on the gpu node
      
      * put back artifact definition
      
      * archive the perf_log before parsing
      
      * clean up jenkinsfile, fix parsing
      
      * fix typo
      
      * enable all perf tests
      
      * put all stages in original order, finalize script
      
      * fix gpu_arch version
      
      * update parsing script
      
      * remove obsolete file causing merge conflict
      
      * Overhaul to Reducton and its dependants  (#237)
      
      * Tiny fix in dynamic_buffer.hpp to support vectorized AtomicAdd for double type
      
      * Update to host layer and host reduction
      
      * Merge and remove reduction kernels
      
      * Merge and remove reduction device interfaces and update pooling device interface
      
      * Merge and remove useless reduction device instances
      
      * Update to reduction profiler and reduction ctests
      
      * Update to reduction and pooling examples and add one reduction example
      
      * Change to reduction examples to let them testable by ctest
      
      * Add explicit pass checking for reduction and pooling examples
      
      * Explicit assignment of tensor shapes in example reduce_blockwise_two_call
      
      * Use atomic_add to repace atomicAdd and add atomic_add for double type
      
      * Add reduce ctest support for double data type
      
      * Replace to_int_vector() by using c++ std::vector::assign()
      
      * Keep DeviceReduceThreadWise separated from DeviceReduceBlockWise
      
      * Merge DeviceReduceBlockWise and DeviceReduceMultiBlockAtomicAdd into DeviceReduceMultiBlock
      
      * Add GetAtomicOperationZeroValue() support for AtomicMax
      
      * Tiny change to reduce example README.md
      
      * Fix some tiny issues due to branch merging
      
      * Revoke previous change in dynamic_buffer.hpp and add atomic_add for double2_t
      
      * Add reduce multiblock_atomic_add instances for fp64 to verify vectorized atomic_add on fp64
      
      * Renaming
      
      * Clean the header includings in device_reduce instances header files
      
      * Navi21 gemm (#197)
      
      * start adding navi21 GEMM
      
      * navi_gemm_km_kn_mn_fp32 compiles and passes one test.
      
      * rename variables and functions in gridwise_gemm_dlops_v1r3
      
      * add other 3 layouts; format instance
      
      * adding more tuning parameters
      
      add tuning parameters for other 3 layouts
      
      * add gemm_dlops_f16
      
      * tmp
      
      * add dependence of DeviceGemm::IsSupportedArg() on arch
      
      * minor changes
      
      * minor changes
      
      * minor changes
      
      * minor changes
      
      * minor changes
      
      * minor changes
      
      * minor changes
      
      * push gemm_dlops into profiler
      
      * minor changes
      
      * if using xdl or dlops is moved into profiler_gemm_impl
      
      * minor changes
      
      * minor changes
      
      * remove is_xdl from profile_gemm_impl
      
      * make IsSupportedArg dependent on arch for other device_gemm
      
      * minor changes
      
      * minor changes
      
      * fix a bug in f_generate_tensor_value
      
      * add 64x64x64 for gemm_dlops_int8
      
      * add 64x64x64 for gemm_dlops_int8
      
      * comment out 3 layouts in gemm_dlops_int8; add 32x32x32 for gemm_dlops_int8; init A values to 1
      
      * fix
      
      * start fixing tuning parameters
      
      * monir
      
      * minor changes
      
      * minor changes
      
      * minor changes
      
      * fixing
      
      * adding example
      
      * adding example
      
      * adding example
      
      * add gemm fp32 example
      
      * clean up
      
      * use 128x128x16 as MNK tile in navi21 gemm example
      
      * bug fix
      
      * fix test
      
      * use new block c tile
      
      * clean
      
      * fix build
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: wangshaojie6's avatarshaojiewang <wsjmessi@163.com>
      
      * minor fix for recent PR (#255)
      
      * minor fix
      
      * clean
      
      * Tensile-style block to C tile map (#239)
      
      * fix build
      
      * Revert "fix build"
      
      This reverts commit d7310238
      
      .
      
      * post PR #235 merge fix
      
      * amend
      
      * adds tensile-stype c-tile map
      
      * make it dynamic version
      
      * add k-split flavor tile map
      
      * apply tensile-style tile map to all xdl gridwise gemms
      
      * remove dead code
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Hotfix binary elementwise (for broadcast on fastest axis) (#254)
      
      * Support different length of ScalarPerVector
      
      * Add example of broadcast on fastest axis
      
      * Typo
      
      * Refine fastest example
      
      * Add dimension check
      
      * Modify fastest broadcast example to 3d
      
      * Enforce users give scalarPerVector explicitely
      
      * 1. Add CscalarPerVedctor
      2. Not only broadcast on fastest need to set scalarPerVector to 1
      
      * Rename var
      
      * Move IsScalarPerVectorValid() inside IsSupportedArgument()
      
      * Separate GridDesc_M0 into A, B and C
      
      * rename var
      
      * Rename var of length
      Co-authored-by: default avatarrocking <chunylai@amd.com>
      
      * Add pooling example (#257)
      
      * Add example for computing LayerNorm mean and meansquare
      
      * Refactor the pool2d_fwd example and add example for float type testing
      
      * Revert "Add example for computing LayerNorm mean and meansquare"
      
      This reverts commit df52e6f9d897b00c981baa48f291450bcd60925d.
      
      * Tiny fix in pool2d_fwd_common.hpp
      
      * Add FP64 XDL GEMM built-in function (#199)
      
      * add intrin_mfma_f64_16x16x4f64
      
      * add example
      
      * gemm reference add double data type
      
      * chang init data
      
      * fix M N PerXdlops
      
      * fix ifdef
      
      * add comparsion config
      
      * add conv fwd example
      
      * format log out
      
      * change rc matrix egister layout
      
      * reorganize example
      
      * reorganize example 2
      
      * format,because merge develop
      
      * fix call impl adding acc data type
      
      * lost ;
      
      * add compiler warning
      
      * change example tunning parameters
      
      * add test for fp64
      
      * add instance
      
      * add test/gemm/gemm_fp64.cpp
      
      * fix get name issue
      
      * remove some tunning parameter
      
      * fix conflict
      
      * format
      
      * use integer value for GEMM test
      
      * add acc data type
      
      * remove typeid because fp16
      
      * fix streamconfig etc bug from merging develop
      
      * format
      
      * remove test_gemm_xdl_fp64
      
      * add AccDataType
      
      * AccDataType problem
      Co-authored-by: default avatarqinletao <letaoqin@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Fixing conv bug  (#258)
      
      * debugging conv
      
      * fix oversight where ctile map is constructed before initializing c desc
      
      * example program should returns error code
      
      * clean up
      
      * changed Block2CTileMap in conv2d and convnd
      
      * clean up
      
      * clean up
      
      * cleanup
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      
      * gemm + layernorm (#261)
      
      * Implement reduction meand and reduction square mean
      
      * Refine file name
      
      * Add reduce mean and square mean
      
      * Fix parameter name
      
      * Add normalize device op (not implement invoker::run())
      
      * Remove epislon
      
      * Refine deviceop
      
      * Add 5ary elementwise for normalization
      
      * Add layernorm example
      
      * layerNorm verication
      
      * Fix compiler error due to merge from develop
      
      * Fix typo
      
      * Fix compile error
      
      * Refine naming
      
      * [What] Suport non pointer for invoker and argument
      [Why] Snyc coding style with gemm
      
      * Refine folder name
      
      * Refine class name
      
      * Evaluate perf of the kernel
      
      * Fix compile error
      
      * [What] Refine perf evaluation in example of gemm + reduction
      [Why] evaluation of gemm + reduction may cause verification fail. Because evaluation will not initial global memory
      
      * clang-format
      
      * Minor fix for recent PR (#260)
      
      * fix example
      
      * update IsSupportedArgument
      
      * fix
      
      * disable fp64 conv example as test
      
      * Multi-kernel CGEMM (#230)
      
      * Reference CGEMM + test stub
      
      * Format.
      
      * Incomplete simple implementation
      
      * Library instances
      
      * Sketch of tests
      
      * Test fixes.
      
      * Example added
      
      * Cosmetics
      
      * Add elementwise operation kernel and example
      
      * Add comment
      
      * Add template argument of dim . Prepare to support multiple dimension
      
      * Rename example
      
      * Support 1 dimension
      
      * Add static assert
      
      * Add comment
      
      * Second auxiliary buffer added
      
      * Extract pad
      
      * Remove redundant argument
      
      * Support any dimension for elementwise operation
      
      * Remove line
      
      * Let it be the multiple number of CU
      
      * Move thread per block to the parameter of constructor
      
      * Consuming binary ops to do A+B / A-B
      
      * Fix + cosmetics + bf16 test commented out temporarily
      
      * Format
      
      * Enabling bf16 test
      
      * Revert "Enabling bf16 test"
      
      This reverts commit f497e2ba.
      
      * Fix + test reenabled
      
      * fix build
      
      * Revert "fix build"
      
      This reverts commit d7310238
      
      .
      
      * post PR #235 merge fix
      
      * amend
      
      * Single workspace for cgemm + helper
      
      * Perf calc fix
      
      * Review remarks: static_cast
      
      * Review remarks: binary ops templated
      
      * Cleaning
      
      * Removal of instances and their tests
      
      * Review remarks from aosew addressed
      
      * Review remark: unnecessary attribute
      
      * Post-merge fixes
      
      * Restrict 4gemm to PassThrough + bug fix
      
      * Review remarks
      
      * update licence
      
      * change cgemm example to fp16
      Co-authored-by: default avatarrocking <chunylai@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      
      * Pass gemm_descs for grouped gemm via __constant__ buff (#232)
      
      * moved gemm_descs_args into const buff
      
      * use CK_CONSTANT_ADDRESS_SPACE instead of global constant
      
      * clean
      
      * moved hipMemAlloc outside of deviceOp
      
      * add SetWorkSpacePointer
      
      * fix ignore
      
      * Unify the naming of the math functions used by the host and kernel (#262)
      
      * Use the unified naming for math functions on host and HIP kernel
      
      * Corresponding change/simplification in reduction host/profiler/examples due to unified math functions renaming
      
      * Renaming GetReductionZeroVal() to GetIdentityValue()
      
      * Tiny renaming in profile_reduce_impl.hpp
      
      * More renaming in profile_reduce_impl.hpp
      
      * Replace zeroVal by identiyVal
      
      * Remove ck_ prefix in the naming of ck::math provided functions
      
      * use old ctile to avoid conv2d fwd bias relu add compute error (#271)
      
      * Adding Resnet50 test to Performance tests (#268)
      
      * add resnet50 test to performance tests
      
      * add blanks before gpu_arch in log files
      
      * add resnet50 test with N=4 and process its results
      
      * add ROCM and HIP versions to test tables
      
      * uncomment the sql queries
      
      * fix script syntax in jenkinsfile
      
      * Add performance tests on MI200 in CI, reporting number of CUs, add stand-alone perf test. (#277)
      
      * use pre-built docker instead of building a new one
      
      * try docker.image.pull
      
      * change syntax in docker.image()
      
      * add 30 min timeout
      
      * increase timeout to 3 hours
      
      * move performance tests to first stage for testing
      
      * set image variable to the new container name
      
      * update image name
      
      * check available images
      
      * check available images in both places
      
      * try different image name
      
      * use image ID to refer to image
      
      * run performance on gfx90a
      
      * fix the gpu_arch labeling, add parameter
      
      * move env vars out of stages
      
      * add stand-alone performance script, MI200 tests, CU numbers
      
      * Use new github credentials (#278)
      
      * use pre-built docker instead of building a new one
      
      * try docker.image.pull
      
      * change syntax in docker.image()
      
      * add 30 min timeout
      
      * increase timeout to 3 hours
      
      * move performance tests to first stage for testing
      
      * set image variable to the new container name
      
      * update image name
      
      * check available images
      
      * check available images in both places
      
      * try different image name
      
      * use image ID to refer to image
      
      * run performance on gfx90a
      
      * fix the gpu_arch labeling, add parameter
      
      * move env vars out of stages
      
      * add stand-alone performance script, MI200 tests, CU numbers
      
      * dos2unix for run_perf_tests.sh
      
      * try the new git credentials
      
      * use env var for git credentials
      
      * example for convnd bwd weight bf16 splitk (#265)
      
      * add GetWorkSpaceSize to base arg and make an example on convnd_bwd_weight
      
      * add bwd weight for bf16: init
      
      * remove redundant compute
      
      * use datatype and split k to check whether a workspace is used
      
      * remove unused computation for work space size
      
      * add some code for bfp16
      
      * add device/grid unary op
      
      * add unary type convert to bwd-weight example
      
      * support bf16 splitk kernel for convnd bwd weight
      
      * 1. remove comments. 2. add checkvalidity. 3. add gridsize computation
      
      * add workspace size check
      
      * fix format
      
      * change function name
      
      * Gemm + bias + relu + add + layernorm (#272)
      
      * Copy "gemm reduce" to "gemm bias add reduce"
      
      * Implement gemm bias add reduction
      
      * Fix compiler error due to merge from develop
      
      * Add tensor operation for gemm + bias + add + reduce
      
      * Add gemm_bais_add_reduce to ckProfiler
      
      * Add c1 functor
      
      * Refine type
      
      * Use reduceAccDataType instead of explicitly float
      
      * Change to use check_err()
      
      * Do relu in float32 instead of bhalf_t. Because bhalf_t is unsigned
      
      * Refactor relu. using type_trait instead of overloading
      
      * Rename DxsReduceAccElementwiseOperation to DxsReduceAccElementwiseOperation
      
      * Fix denominator
      
      * Refine nameing
      
      * Fix denominator  in host
      
      * Remove useless include header
      
      * Use AccDataType
      
      * Fix static_cast order
      
      * Refine type
      
      * [What] Remove tuple type in the base class
      [Why] External api depend on base class. if base class has relationship with type, we will need many class for different type
      
      * add p_workspace to baseargument (#275)
      
      * use universal workspace pointer in bwd-weight (#286)
      
      * Regulate reduction accumulator operations and Element-wise operations (#274)
      
      * Remove template from Reducton operation classes and add template to their operator() and GetIdentityValue() interfaces
      
      * Change to unary elementwise operators and the reduce_unary_operator (class for mapping) and dependent variations in all host layers
      
      * Remove the data type template parameter from reduce_binary_operator (class for mapping) and dependent variations in host layers
      
      * Add InMemoryDataOperatonSupportedOnDataType to check the matching between data type and InMemoryDataOperation
      
      * Use struct-scope operator template instantiation for binary and unary element-wise operations
      
      * Change a few more elementwise operations to use template for operator()
      
      * Tiny correction in Normalize operator
      
      * Add static_assert to check the data type appliability for some reduction accumulator and element-wise operatons
      
      * Correction in some examples with regard to using ReduceAccDataType
      
      * Use static_assert for UnaryDivide
      
      * Update to merged codes to use Element-wise operations and Reduction Accumulator operations correctly
      
      * Tiny fix with regard to SetWorkSpacePointer()
      
      * Don't look up the /sys/module/amdgpu/version file. (#287)
      
      * use pre-built docker instead of building a new one
      
      * try docker.image.pull
      
      * change syntax in docker.image()
      
      * add 30 min timeout
      
      * increase timeout to 3 hours
      
      * move performance tests to first stage for testing
      
      * set image variable to the new container name
      
      * update image name
      
      * check available images
      
      * check available images in both places
      
      * try different image name
      
      * use image ID to refer to image
      
      * run performance on gfx90a
      
      * fix the gpu_arch labeling, add parameter
      
      * move env vars out of stages
      
      * add stand-alone performance script, MI200 tests, CU numbers
      
      * dos2unix for run_perf_tests.sh
      
      * try the new git credentials
      
      * use env var for git credentials
      
      * don't look up /sys/module/amdgpu/version
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * GEMM with Multiple Source, GEMM+Bias+Add+FastGeLU example and ckProfiler (#241)
      
      * ad gelu and fast_gelu
      
      * added GeLU and fast GeLU
      
      * clean up
      
      * add gemm+fastgelu example
      
      * add gemm+gelu instances
      
      * update profiler
      
      * clean up
      
      * clean up
      
      * adding gemm+bias+activation
      
      * clean
      
      * adding bias
      
      * clean
      
      * adding gemm multiple d
      
      * debugging
      
      * add gemm bias add fastgelu
      
      * rename, clean
      
      * refactoring; add readme
      
      * refactor
      
      * refactor
      
      * refactor
      
      * refactor
      
      * refactor
      
      * refactor
      
      * fix
      
      * fix
      
      * update example
      
      * update example
      
      * rename
      
      * update example
      
      * add ckProfiler
      
      * clean
      
      * clean
      
      * clean
      
      * clean
      
      * add comment
      
      * use type_convert
      
      * clean
      
      * clean element wise op
      
      * update readme and script (#290)
      
      * bring up to date with the usage of __builtin_amdgcn_sched_barrier (#293)
      
      * Create MIT LICENSE (#229)
      
      * Create LICENSE
      
      * add contributors, add license into config.hpp
      
      * update
      
      * Standalone softmax kernel (#284)
      
      * initial stub for standalone softmax
      
      * start device_softmax_mk_to_mk as a wrapper to device_reduce_mk_to_m
      
      * host softmax validates
      
      * compiles; to implement beta scaling
      
      * use NaN trick to efficiently ignore OOB values during sum of exponentials
      
      * freeload device_reduce's utility functions
      
      * clean up interface
      
      * adding prior value (beta scaling)
      
      * remove restriction related to perf considerations
      
      * apply clang-format
      
      * clean; disable diagnostics
      
      * resolve conflicts
      
      * add exp wrapper
      
      * honor HostTensorDesc interface; allow implicit cast from different vector<T> type
      
      * test softmax for fp16/fp32
      
      * update readme
      
      * amend commit NaN trick
      
      * remove redundant param added during development
      
      * format
      
      * replace ScalarDataType with AccDataType
      
      * separate out test programs by precision type
      
      * move softmax sample code to its own folder
      
      * format
      
      * keep up with recent changes in reduction API
      
      * remove extra header
      
      * fix Issue 291 (#294)
      
      * rename for typeconvert functor
      
      * refine code
      
      * Testing all fwd convolution specializations. (#259)
      
      * UniforFill with integer values.
      
      * Log tested instance type string.
      
      * Add UT for all convolution specializations.
      
      * debugging conv
      
      * Fix dangling reference bug.
      
      * Small refinements.
      
      * Fix call to error checking function.
      
      * Small refinements to tests.
      
      * Configure error tolerance
      * Change problem size.
      * Remove OddC case from types that do not support it.
      
      * Add helper traits for AccumulatorDataType.
      
      * Print first 5 errs in check_err for integral types.
      
      * Rename FillUniform to FillUniformDistribution
      
      * Refactor
      
      * Do not use typed tests.
      * Instead use plain fixture class with templatized member functions.
      * Initialize tensors with integer values.
      
      * Refine test instances.
      
      * Properly set accumulator data type.
      * Add another "big" instance.
      
      * Refactor convolution tests.
      
      * Revert "debugging conv"
      
      This reverts commit b109516455631ff8fd6dce99cf7c14bf8e323ebb.
      
      * Add pragma once + format + small refinement.
      
      * Fix some unwanted changes.
      
      * Clang-format
      
      * Fix profile_convnd to use renamed tensor initializer.
      
      * Add instances for ConvFWDND kernel case 2D
      
      * Helpers to get ConvNDFwd 2D instances.
      
      * Refactoring.
      
      * Remove "small block" instance as it was generating compiler errors.
      * Remove default template parameters values.
      
      * Refine and fix test.
      
      * Fix problem with default template parameter types.
      * Adjust error thresholds for floating point values test.
      * Use integer values initialization for instances test.
      * Add tests for ConvNDFwd 2D case.
      
      * Remove AccumulatorDataType type trait.
      
      * Update unit-tests.
      
      * Remove operator<< overload.
      
      * Unlock conv1d/3d nd fwd instances.
      
      * Enable skipping calculating reference using flag.
      
      * Fix number of channels for first ResNet50 layer.
      
      * Clang-format.
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * update license (#297)
      
      * update license
      
      * update license
      
      * update license
      
      * update license
      
      * Absolute include path (#281)
      
      * ad gelu and fast_gelu
      
      * added GeLU and fast GeLU
      
      * clean up
      
      * add gemm+fastgelu example
      
      * add gemm+gelu instances
      
      * update profiler
      
      * clean up
      
      * clean up
      
      * adding gemm+bias+activation
      
      * clean
      
      * adding bias
      
      * clean
      
      * adding gemm multiple d
      
      * debugging
      
      * add gemm bias add fastgelu
      
      * rename, clean
      
      * refactoring; add readme
      
      * refactor
      
      * refactor
      
      * refactor
      
      * refactor
      
      * refactor
      
      * refactor
      
      * fix
      
      * fix
      
      * update example
      
      * update example
      
      * rename
      
      * update example
      
      * add ckProfiler
      
      * clean
      
      * clean
      
      * clean
      
      * clean
      
      * add client app example
      
      * update readme
      
      * delete obselete files
      
      * remove old client app
      
      * delete old file
      
      * cleaning
      
      * clean
      
      * remove half
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path for all examples
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * fix header path
      
      * revert client app example
      
      * clean build
      
      * fix build
      
      * temporary disable client test on Jenkins
      
      * clean
      
      * clean
      
      * clean
      
      * add license in file (#303)
      
      * Switch to standard ROCm packaging (#301)
      
      * Switch to standard ROCm packaging
      
      * Revert .gitignore changes
      
      * install new rocm-cmake version
      
      * update readme
      Co-authored-by: default avatarillsilin <Illia.Silin@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * External Interface (#304)
      
      * add client example
      
      * clean
      
      * clean
      
      * reorg
      
      * clean up profiler
      
      * reorg
      
      * clea
      
      * fix profiler
      
      * function for getinstances
      
      * update client example
      
      * update client example
      
      * update client example
      
      * update
      
      * update example
      
      * update Jenkins file
      
      * update cmake
      
      * update Jenkins
      
      * external api for gemm + layernorm (#285)
      
      * Extract base class for elementwise
      
      * Refactor interface of DeviceGemmReduce. Do not use tuple in interface
      
      * [What] Rename d into reduce in gemm + reduction related code
      [Why] Prepare to add d term for add
      
      * Unify base class of gemm + reduce and gemm + bias + add + reduce
      
      * 1. Rename gemm_bias_add_reduce for external api
       2. Refine cmake
      
      * Add normalize device operation
      
      * [What] Reorder the argument
      [Why] Because d0 is also the input of c.
      
      * Add type string
      
      * Add example of gemm_bias_add_layernorm  via external api
      
      * Refactor example code
      
      * clang-format
      
      * Fix compile error
      
      * clang-format
      
      * Add external api for gemm_add_add_layernorm and normalize
      
      * Add client example
      
      * clang-format
      
      * Remove incorrect old packaging statement (#308)
      
      * Standalone sweep once softmax kernel w/ ckProfiler (#295)
      
      * use 'sweep once' softmax kernel where applicable
      
      * threadwise copy's dst buffer can specify invalid element value
      
      * add int8 in/out float compute softmax support
      
      give a bit of leeway for int absolute tolerance as there's a single data point of all test cases showing off-by-1 error
      
      * format
      
      * softmax inherits DeviceNormalization
      
      * softmax profiler stub
      
      * tighten up reference softmax interface
      
      * example prints tensor dimension
      
      * add fp32 to softmax profiler
      
      * rename header
      
      * hook with ckProfiler
      
      * format
      
      * resolve merge conflict
      
      * resolve merge conflicts
      
      * update normalization profiler help string
      
      * resolve conflict
      
      * typo
      
      * remove residual
      
      * softmax profiler: address feedback
      
      * test for mixed precision input/output
      
      * fully qualify ck::math::isnan
      
      * add comment for device normalization interface
      
      * revise wording
      
      * constness for alpha/beta scaler pointer
      
      * Grouped Gemm ckProfiler hotfix (#313)
      
      * add setWorkspace in profiler
      
      * fix
      
      * Gemm + bias + c_permute (#312)
      
      * init commit
      
      * add desc
      
      * finished c permute
      
      * fixed vector lens
      
      * Improve external interface for GEMM and GEMM+add+add+fastgelu (#311)
      
      * interface for GEMM and GEMM+add+add+fastgelu
      
      * rename namespace
      
      * instance factory
      
      * fix build
      
      * fix build; add GEMM client example
      
      * clean
      
      * add batch_stride into batched gemm (#314)
      
      * add batch_stride
      
      * fixed test
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Single-kernel GEMM + layernorm (#263)
      
      * dump lds content in appropriate precision type
      
      * add squared add reduction op; allows sq sum
      
      * initial stub from regular gemm impl
      
      * layernorm example code & host verification
      
      * initial layernorm implementation
      
      * tidy up
      
      * make C0 precision type consistent with C
      
      * clang-tidy and additional comments
      
      * tighten up example code
      
      * account for extra flops/bytes from normalization
      
      * clang-format
      
      * c0 bias/beta/gamma now have its own precision type
      
      * AccElemOp for gemm outputs prior to feeding to layernorm
      
      * update workgroup mapping
      
      * rename kernel template param to reflect its dual use
      
      * use LDS mem pool for reduction workspace
      
      * change cshuffle precision type to f16; clean up
      
      * clang-format
      
      * correct naming
      
      * explicit cast
      
      * fully implemented gemm + bias + activation + add + norm
      
      * activation in correct order
      
      * reflect reduction API's recent change
      
      * amend
      
      * clean up; add comment
      
      * keep up with recent changes in reduction API
      
      * format
      
      * resolve merge conflicts
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * modified grouped gemm addressing method (#307)
      
      * modified grouped gemm addressing method
      
      * modified addressing method in device_grouped_gemm_xdl.hpp
      Co-authored-by: default avatarroot <root@dc-smc-13.amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Gemm+Bilinear (#316)
      
      * refactor
      
      * update example
      
      * update example
      
      * gemm bilinear
      
      * clean
      
      * update
      
      * Batched Gemm with C Permute (#305)
      
      * init commit
      
      * add c_permute
      
      * add mnk padding
      
      * fixed comments
      
      * Fixed comments
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * N-D Tensor Contraction example, instance, and client example (#270)
      
      * adding contraction
      
      * add contraction example
      
      * update examle
      
      * update example
      
      * format
      
      * update readme
      
      * clean header
      
      * clean header
      
      * contraction with multiple D
      
      * rename
      
      * fix naming issue; add instances for contraction+bilinear
      
      * change assumed virtual layout of contraction; add client example
      
      * update example
      
      * update
      
      * contraction+scale
      
      * use type_convert
      
      * rename
      
      * add conv1d/3d bwd weight instances (#318)
      
      * add conv1d/3d bwd weight instances
      
      * add profiler code
      
      * GEMM pipeline v2 (#317)
      
      * format
      
      * improving pipeline
      
      * fix typo
      
      * format
      
      * adding thread group
      
      * adding thread group
      
      * adding thread group
      
      * adding gemm pipeline
      
      * tweak
      
      * refactor
      
      * refactor
      
      * add missing type convert
      
      * refactor
      
      * refactor
      
      * refactor
      
      * clean
      
      * fix build
      
      * refactor
      
      * format
      
      * clean up
      
      * use remove_cvref_t
      
      * clean
      
      * use pipeline_v2 for gemm kernel
      
      * Remove inconsistent indent
      
      * Fix compilation errors due to incomplete merge process
      
      * Add missing include directives
      
      * Fix compilation errors in currently unused files
      
      * Add license in newly added files
      
      * Re-format touched files by clang-format-10
      
      * Fix wrong template argument count of DeviceGemm<>
      
      * Use language construct to choose between types
      
      * Use language construct to choose GEMM example instance
      
      * Fix compilation error due to interface change
      
      * Re-use type alias to avoid duplication
      
      * Unify type alias usage in source file
      
      * Only use v2 pipeline in one gridwise GEMM type
      
      * Remove no-longer used include directives
      
      * Add static_assert() to check pipeline type requirements
      
      * Revert "Add static_assert() to check pipeline type requirements"
      
      This reverts commit f0985f0a132671a1caaea92810c9f30dcf062bde.
      
      * clean
      
      * clean
      
      * clean
      
      * clean
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: wangshaojie6's avatarshaojiewang <wsjmessi@163.com>
      
      * Add switch between compilers, make 9110 compiler default, add full QA scripts. (#322)
      
      * adding scripts for full perf test suite
      
      * uncomment the sql queries
      
      * fix typo and chmod a+x for scripts
      
      * dos2unix for all new scripts
      
      * disable verification in full performance test
      
      * fix reduction scripts, add gfrouped_gemm hotfix
      
      * fix the grouped_gemm hotfix and only run reduction for fp16
      
      * change compiler flag syntax
      
      * fix syntax
      
      * add predefinition of dockerArgs
      
      * avoid redefinitions of dockerArgs
      
      * add blank space at the end of dockerArgs
      
      * try to build with release compiler
      
      * adding spaces inside if condition
      
      * limit the number of threads for building 9110 compiler
      
      * change the way HIP_CLANG_PATH is set
      
      * remove the export command
      
      * change the conditional ENV syntax
      
      * set HIP_CLANG_PATH at docker run time
      
      * update scripts for full qa
      
      * enable the sql write query
      
      * fix typo
      
      * remove a comment from a script
      
      * minor fix in gemm client example (#328)
      
      * Standalone layernorm (#315)
      
      * Implement layernorm kernel and deviceOp
      
      * verify gpu kernel with host code
      
      * 1. Separate gamma aand beta from affine
      2. Check if argument is valid
      
      * clean
      
      * Sync the naming
      
      * Support sweep once mode if we can put k dimension data inside one block
      
      * [What] Get length from upper length.
      [Why] if we get length directly, we may get length after padding.
      
      * We only use one block in K dimension.
      Hence, we can simplify the indexing of global R/W.
      
      * Use 1d descriptor for gamma and beta
      
      * Add accElementwiseOp
      
      * Extract layernorm host code
      
      * Support different YVectorDim in GridwiseLayernorm
      
      * Rename XSrcVectorDim to XYSrcVectorDim. Because we use same parameter in deviceOp
      
      * Gamma and beta can share the VGPR.
      
      * Add test for fp32 and fp16
      
      * Fix bug of concurrency and add test case which may fail orignally
      
      * Propagate NaN for layernorm
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * fix standalone softmax race condition around blockwise reduction (#323)
      
      * Grouped Gemm device with multiD grid (#319)
      
      * replace gridwise_v2r3 with multiD
      
      * adjust parameters
      
      * add instances
      
      * fixed test_grouped_gemm
      
      * fix standalone softmax race condition around blockwise reduction
      
      * fixed ci
      
      * fixed comment: remove redundant workspace
      
      * use instanceFactory
      
      * add test layout
      
      * add empty Ds
      
      * add bias example
      
      * use array
      
      * sperate examples
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      
      * Add full QA with verification option, few other changes. (#331)
      
      * add verify flag and update scripts
      
      * replace old check_error function with the new check_err
      
      * fix syntax
      
      * remove blank spaces
      
      * remove empty line
      
      * add check_err for tensors
      
      * fix syntax
      
      * replace tensors with vectors in check_err calls
      
      * fix syntax
      
      * remove blank spaces
      
      * fix syntax
      
      * add new line at end of file
      
      * disable conv2d_bwd_weight test, add gpu check
      
      * set check_gpu using export
      
      * check GPU using runShell
      
      * add definition of runShell
      
      * fix script syntax
      
      * reduce the number of threads, add full qa option
      
      * run processing scripts in bash
      
      * fix the branch and host names in performance scripts, add chronos
      
      * replace parameterizedCron with cron
      
      * archive the perf log files
      
      * try to fix git call
      
      * pass branch and host names as arguments into scripts
      
      * fix script arguments
      
      * fix script arguments
      
      * process results on master
      
      * fix pipeline
      
      * add definition of gpu_arch
      
      * run processing scripts in docker
      
      * fix the brackets
      
      * add agent master for the processing stage
      
      * get rid of show_node_info call on master
      
      * try using mici label instead of master, disable MI100 tests for now
      
      * fix syntax
      
      * simplify container for results processing
      
      * remove node(master) from the process_results stage
      
      * put all stages in original order
      
      * change the agent label from master to mici for gfx908
      
      * Batched Gemm with multiD (#329)
      
      * add batched_gemm_multiD
      
      * add ds
      
      * rename file
      
      * add batched_gemm_bias example
      
      * add batch_strides into bmm_c_permute
      
      * clean
      
      * rename example_28 to example_29
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * comment out cron trigger (#334)
      
      * Clean up conv example, Instances, profiler and test (#324)
      
      * convnd_fwd fp16 example
      
      * update example
      
      * update example
      
      * update instance
      
      * updating refernce conv
      
      * update reference conv
      
      * update conv fwd profiler
      
      * update conv 1d and 3d instance
      
      * update include path
      
      * clean
      
      * update profiler for conv bwd data and weight
      
      * update conv bwd weight
      
      * clean
      
      * update conv example
      
      * update profiler for conv bwd weight
      
      * update ckprofiler for conv bwd data
      
      * fix reference conv bwd data bug; update conv bwd data test
      
      * update examples
      
      * fix initialization issue
      
      * update test for conv fwd
      
      * clean
      
      * clean
      
      * remove test case too sensitive to error threshhold
      
      * fix test
      
      * clean
      
      * fix build
      
      * adding conv multiple d
      
      * adding conv multiple D
      
      * add matrix padder
      
      * add gemm padding to convnd
      
      * adding group conv
      
      * update gemm multi-d
      
      * refactor
      
      * refactor
      
      * refactor
      
      * clean
      
      * clean
      
      * refactor
      
      * refactor
      
      * reorg
      
      * add ds
      
      * add bias
      
      * clean
      
      * add G
      
      * adding group
      
      * adding group
      
      * adding group
      
      * update Tensor
      
      * clean
      
      * update example
      
      * update DeviceGemmMultipleD_Xdl_CShuffle
      
      * update conv bwd-data and bwd-weight
      
      * upate contraction example
      
      * update gemm and batch gemm with e permute
      
      * fix example build
      
      * instance for grouped conv1d
      
      * update example
      
      * adding group conv instance
      
      * update gemm bilinear instance
      
      * update gemm+add+add+fastgelu instance
      
      * update profiler
      
      * update profiler
      
      * update test
      
      * update test and client example
      
      * clean
      
      * add grouped conv into profiler
      
      * update profiler
      
      * clean
      
      * add test grouped conv, update all conv test to gtest
      
      * update test
      
      * Run CI on MI100 nodes only, run daily QA on MI200 nodes. (#339)
      
      * turn on full qa only on gfx90a, use int initialization
      
      * change script syntax
      
      * update script parsing clinfo, throw exception if 0 devices
      
      * fix syntax
      
      * try using toBoolean for the QA conditions
      
      * run regular CI on MI100 only, use MI200 only for daily QA
      
      * evaluate when conditions before agent
      
      * launch QA on develop branch and update profile_reduce script
      
      * update test script
      
      * update script
      
      * remove false dependency from dockerfile
      
      * try removing rbuild completely
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      
      * CGEMM examples bf16, fp32, int8 (#332)
      
      * Add int8 specialization for elementwise Add and Subtract.
      
      * CGEMM examples bf16, fp32, int8
      
      * Add convert reference output to CDataType.
      
      * Skip BF16 data type during testing.
      
      * Lower K value to get rid of accumulation error.
      
      * Fix merge artifact.
      
      * Fix changed function name: GetElementSpaceSize()
      
      * Fix merge artifact.
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * Update Group convolution (#341)
      
      * add conv oddC
      
      * update example
      
      * update example
      
      * fix bug in example
      
      * fix bug in group conv example
      
      * fix bug in gemm profiler (#344)
      
      * Fix QA, allow switching compiler versions, fix google test compilation error. (#348)
      
      * allow selecting compiler version
      
      * fix typo
      
      * add Wno-deprecated flag for google tests
      
      * change git repo, fix qa log files names
      
      * change the git clone syntax
      
      * use Omkar's git credentials
      
      * try to use jenkins as git user
      
      * try using illsilin username for gerrit repo with ssh key
      
      * try new gerrit authorization
      
      * change ssh key syntax
      
      * try another way of passing ssh key to docker
      
      * add mount ssh in dockerfile
      
      * create .ssh folder
      
      * move ssh-keyscan to later
      
      * get rid of npm call
      
      * build first docker image on master
      
      * check the contents of the .ssh folder
      
      * try replacing omkars creds with gerrit creds
      
      * use open repo, clean up changes
      
      * get rid of ssh default argument
      
      * Add batched/grouped_gemm contraction deviceOps (#349)
      
      * convnd_fwd fp16 example
      
      * update example
      
      * update example
      
      * update instance
      
      * updating refernce conv
      
      * update reference conv
      
      * update conv fwd profiler
      
      * update conv 1d and 3d instance
      
      * update include path
      
      * clean
      
      * update profiler for conv bwd data and weight
      
      * update conv bwd weight
      
      * clean
      
      * update conv example
      
      * update profiler for conv bwd weight
      
      * update ckprofiler for conv bwd data
      
      * fix reference conv bwd data bug; update conv bwd data test
      
      * update examples
      
      * fix initialization issue
      
      * update test for conv fwd
      
      * clean
      
      * clean
      
      * remove test case too sensitive to error threshhold
      
      * fix test
      
      * clean
      
      * fix build
      
      * adding conv multiple d
      
      * adding conv multiple D
      
      * add matrix padder
      
      * add gemm padding to convnd
      
      * adding group conv
      
      * update gemm multi-d
      
      * refactor
      
      * refactor
      
      * refactor
      
      * clean
      
      * clean
      
      * refactor
      
      * refactor
      
      * reorg
      
      * add ds
      
      * add bias
      
      * clean
      
      * add G
      
      * adding group
      
      * adding group
      
      * adding group
      
      * update Tensor
      
      * clean
      
      * update example
      
      * update DeviceGemmMultipleD_Xdl_CShuffle
      
      * update conv bwd-data and bwd-weight
      
      * upate contraction example
      
      * update gemm and batch gemm with e permute
      
      * fix example build
      
      * instance for grouped conv1d
      
      * update example
      
      * adding group conv instance
      
      * update gemm bilinear instance
      
      * update gemm+add+add+fastgelu instance
      
      * update profiler
      
      * update profiler
      
      * update test
      
      * update test and client example
      
      * clean
      
      * add grouped conv into profiler
      
      * update profiler
      
      * clean
      
      * add test grouped conv, update all conv test to gtest
      
      * update test
      
      * change gemm_c_permute with contraction
      
      * add grouped_contraction
      
      * add contraction in group_gemm
      
      * add example of grouped_gemm with contraction
      
      * add example of grouped_contraction_bias_e_permute
      
      * clean
      
      * fixed ds
      
      * add m3n2 m2n3 examples into gemm_bias_e_permute
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * ckProfiler for layernorm (#330)
      
      * Refine parameter
      
      * Add base class for layernorm
      
      * Add layernorm instance
      
      * Add layernorm to ckProfiler
      
      * Remove redundant
      
      * Add verification
      
      * Fix compile error due to merge
      
      * Add examples for GEMM + AddAddFastGelu (data type: int8, bf16, fp32) (#340)
      
      * Add always_false<> util to delay symbol resolution
      
      * Use always_false<> to prevent trying instantiate unwanted method
      
      * Add new specializations of AddAddFastGelu::operator() method
      
      * Add GEMM + AddAddFastGelu examples for data types: int8, bf16, fp32
      
      * Use floating point literal to simplify code
      
      * Remove unnecessary capture in lambda expressions
      
      * Extract fast GeLU calculation as standalone method
      
      * Mark methods as 'constexpr'
      
      * Add constraint for HostTensorDescriptor templated ctors
      
      * Simplify HostTensorDescriptor ctor calls
      
      * Add C++23 std::size_t literal suffix
      
      * Use _uz suffix to shorten example code
      
      * Remove unnecessary conversion to std::array<>
      
      * Re-order include directives
      
      * Remove C-style casting by literal suffix
      
      * Remove unnecessary statements in main()
      
      * Remove unused type parameter of always_false<>
      
      * Remove unused include directive
      
      * Exit main() by returning meaningful value
      
      * Use 'if constexpr' to switch example flow
      
      * Use std::is_same_v<> to shorten example code
      
      * Add 'inline' specifier to literal functions
      
      * Unify output methods in example
      
      * Move common codes into .inc file
      
      * Add type check in type_convert<>()
      
      * Add type_convert<float>() before computation
      
      * Merge AddAddFastGelu method specializations
      
      * Remove always_false<>
      
      * Add constraint to AddAddFastGelu::operator() parameter types
      
      * Build docker only once in CI, fix conv_bwd logfile names. (#353)
      
      * build docker in separate stage
      
      * build docker with only one prefix
      
      * add parallel statement
      
      * add docker repo url
      
      * fix the name of perf_conv_bwd_data log file
      
      * add g; fixed strides (#355)
      
      * Add example of conv_fwd_bias_relu_add for int4, int8, bfp16, fp16, and fp32 (#343)
      
      * [LWPCK-359] Initial commit
      
      * Working version for fp16, add results to readme
      
      * Update according to PR #341
      
      * Update results in readme
      
      * Add fp32 example
      
      * Add bf16 example
      
      * Update fp16 and fp32 examples
      
      * Add int8 example
      
      * Add separate lengths and strides tensors for D tensors
      Co-authored-by: default avatarRosty Geyyer <rosty.geyyer@amd.com>
      
      * Move literal ""_uz & ""_zu into namespace 'ck::literals' (#354)
      
      * Move literal ""_uz & ""_zu into namespace 'literals'
      
      * Move namespace 'literals' as 'ck::literals'
      
      * Fused attention (#345)
      
      * initial stub for gemm_gemm_xdl_cshuffle
      
      * set up example code
      
      * compiles
      
      * prevent integer overflow
      
      * harmonize interface between ref_gemm and ref_batched_gemm
      
      * batched_gemm_gemm
      
      * fix example
      
      * host tensor gen: diagonal pattern in lowest two-dimensions only
      
      * make c descriptors containing only integral constants
      
      * clean up
      
      * add BlockwiseGemmXdlops_v2 while exploring an unified approach
      
      * implement proper interface
      
      * tidy up example
      
      * fix compilation warnings
      
      * coarsely controlled 2nd gemm padding
      
      * remove rocm-cmake's hard requirement for certain revision
      
      * clang-format
      
      * resolve merge conflict
      
      * fix compilation error on gfx10
      
      * adds acc0 elementwise op to interface
      
      * attention host validation
      
      * add blockwsie softmax v1
      
      * iteratively update softmax+gemm
      
      * transpose both gemm0 and gemm1 xdl output so as to avoid broadcasting softmax max/sum
      
      * add init method for easier debugging
      
      * do away with manual thread cluster calculation
      
      * generalize blockwise softmax interface
      
      * row-wise softmax sum & max
      
      * format
      
      * rename to DeviceBatchedGemmSoftmaxGemm
      
      * add gemm_softmax_gemm instances and tests
      
      * comment
      Co-authored-by: default avatarltqin <letao.qin@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Gemm multiple d multiple r (#335)
      
      * Imitate XXX_gemm_multiple_d, add XXX_gemm_multiple_d_multiple_r for gemm + reduction
      
      * Implement run of kernel
      
      * Add example
      
      * Fix parameter of typo
      
      * Rewrite the reduceMax example
      
      * Rewrite the reduceMean + reduceMeanSquare example
      
      * Refine naming
      
      * Refine folder name
      
      * refine naming
      
      * Rewrite the gemm + bias + relu + add + layernorm example
      
      * Rewrite the gemm + layernorm example
      
      * clang-format
      
      * Fix bug if sync lds
      
      * Fix compile error
      
      * Add examples  for reduction fp16/fp32/bp16/int8/fp64   for  3d/4d/5d  (#342)
      
      * Update the reduce_blockwise example to support user specified data type and input+reducing dimensions
      
      * Add examples for using reduce_multiblock_atomic_add
      
      * Add more running examples to the default command-line
      
      * Remove un-necessary header including
      
      * Update to the example README.md
      
      * Skip  lds of b matrix (#326)
      
      * start
      
      * read for gridwise gemm
      
      * add MakeBGridDescriptor_K0_N0_N1_N2_N3_K1
      
      * add thread  copy desc and register buffer
      
      * add K0PerBlock dim
      
      * add read global data
      
      * finish gridwise gemm
      
      * finish blockwise gemm
      
      * add print data
      
      * add smallest config
      
      * add compare code for gridwis gemm
      
      * fix NXdlPerWave
      
      * fix k0perthread and gridewis gemm main loop
      
      * remove b matrix lds alloc
      
      * fix name
      
      * add test code
      
      * create b_grid_desc_k0_k1_k2_n0_n1_n2_n3_k3 from parameter
      
      * add double register
      
      * modify b_thread_desc_
      
      * add float
      
      * fp16 tag
      
      * add tail for pipeline
      
      * finish main loop
      
      * optimize main loop
      
      * start clear gridwise gemm
      
      * clear code
      
      * clear redundant code
      
      * change file name
      
      * change file name
      
      * fix bug after merge develop
      
      * fix input parameters
      
      * using MultiK0 control b load data loop
      
      * fix some config
      
      * 4 buffer
      
      * fix bug
      
      * one can use
      
      * change read order
      
      * change buffer array to tuple
      
      * change to 8 buffer
      
      * interleave buffer load
      
      * change to 16
      
      * read 8 buffer
      
      * add data buffer to template
      
      * fix after merge develop(head file)
      
      * format
      
      * change to 4 buffer
      
      * remove unnecessary lambda fun
      
      * Fused GEMM+GEMM (#351)
      
      * initial stub for gemm_gemm_xdl_cshuffle
      
      * set up example code
      
      * compiles
      
      * prevent integer overflow
      
      * harmonize interface between ref_gemm and ref_batched_gemm
      
      * batched_gemm_gemm
      
      * fix example
      
      * host tensor gen: diagonal pattern in lowest two-dimensions only
      
      * make c descriptors containing only integral constants
      
      * clean up
      
      * add BlockwiseGemmXdlops_v2 while exploring an unified approach
      
      * implement proper interface
      
      * tidy up example
      
      * fix compilation warnings
      
      * coarsely controlled 2nd gemm padding
      
      * remove rocm-cmake's hard requirement for certain revision
      
      * clang-format
      
      * resolve merge conflict
      
      * fix compilation error on gfx10
      
      * adds acc0 elementwise op to interface
      
      * add gemm_gemm instances and tests
      
      * avoid LDS data hazard
      
      * fix build
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Layernorm welford (#346)
      
      * Add threadwise and blockwise welford
      
      * Rename gridwise op, prepare to add welford version
      
      * implement welford and integrate welford into layernorm
      
      * Take care of tail loop
      
      * Fix buf when ThreadSliceK > 1
      
      * Fix bug of merging of two empty set
      
      * Rename clip to clamp
      
      * 1. Fix type of count
      2. Remove useless static_assert
      
      * Do not inherit Reduction::Argument
      
      * [What] replace __syncthreads() with block_sync_lds()
      [Why] __syncthreads might wait both lgkmcnt(0) and vmcnt(0)
      
      * Add y stride
      
      * Rename.
      DeviceLayernorm -> DeviceLayernormImpl
      DeviceNormalization2 -> DeviceLayernorm
      
      * Move literal ""_uz & ""_zu into namespace 'literals'
      
      * Move namespace 'literals' as 'ck::literals'
      Co-authored-by: default avatarPo-Yen, Chen <PoYen.Chen@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Change all device operations to use add_instance_library  (#338)
      
      * Change all device operations to use add_instance_library to avoid duplicated cmake configuration.
      
      * update DeviceMem
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * fix build issue (#357)
      
      * fix build
      
      * excludeexample_gemm_max_xdl_fp16 from testing due to random failure on gfx908
      
      * Batchnorm-forward and Batchnorm-infer Implemented using generic kernels (#320)
      
      * Implement multiple-reduction in one kernel (kernels, device ops, examples)
      
      * Add generic elementwise kernel and device interface
      
      * Add generator for normal-distributed data initialization
      
      * Add host refer implementation of batchnorm-forward and batchnorm-infer
      
      * Add examples for implementing batchnorm-forward and batchnorm-infer using generic kernels
      
      * Remove un-needed including in batchnorm example
      
      * Renaming generic_elementwise to elementiwise in kernel and device classes/functions
      
      * Change in gemm_layernorm examples to use DeviceElementwise instead of Device5AryElementwise
      
      * Change in exampe 19_binary_elementwise to use DeviceElementwise instead of DeviceBinaryElementwise
      
      * Change in device_cgemm_4gemm_xdl_cshuffle.hpp to use kernel_elementwise instead of kernel_binary_elementwise
      
      * Add DeviceElementwiseBase and use it in device_normalize_instance.cpp
      
      * Removing and renaming files
      
      * Update to synchronize gemm_layernorm client example to the generic element-wise device op API
      
      * Update to synchronize with the latest headers directory and HostTensorDescriptor interface renaming
      
      * Merge two static member functions in device_elementwise.hpp
      
      * Remove unary_elementwise_1d kernel and device
      
      * Hotfix LDS data hazard in fused attention (#360)
      
      * avoid LDS data hazard in gemm_softmax_gemm pipeline
      
      * trivial refactors
      
      * comments
      
      * shrink blockwise gemm v2 thread buffer size
      
      * reclaim A block lds space when during 2nd gemm
      
      * amend
      
      * amend
      
      * use scale (#363)
      
      * int4 data type (#364)
      
      * Introduce int4 data type.
      
      * Add unit-tests for int4
      
      * Compile int4 UT only when int4 enabled.
      
      * clang-format
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * restart the stages on MI200 in case of failures (#366)
      
      * restart the stages on MI200
      
      * fix the docker image storage issue
      
      * [What] Fix bug of verification fail on E Matrix (#371)
      
      [Why] We need to sync lds even in first loop because Gemm also use the same LDS.
      
      * Implement padding and sanity checks for fused GEMM+GEMM  (#376)
      
      * GemmPadder and GemmGemmPadder
      
      * proper padding using GemmGemmPadder
      
      * test gemm_gemm padding
      
      * properly check size K in IsSupportedArgument()
      
      * properly check size requirement given SrcScalarPerVector in IsSupportedArgument()
      
      * comment
      
      * format
      
      * Add example of Gemm + AddAddFastGelu (data type: int4) (#369)
      
      * Add custom target to bundle examples together
      
      * Add int4 example conditionally (just copy from int8 example)
      
      * Extract common code into common.hpp
      
      * Move ref gemm type alias into data-type-specific sources
      
      * Add #error directive to prevent compile with wrong setting
      
      * Let AddAddFastGelu support int4 parameter type
      
      * Let check_err() support int4 parameter type
      
      * Add wrapper function to hide value conversion while copying memory
      
      * Finish int4 example for GEMM + AddAddFastGelu
      
      * Add new DeviceMem API to copy memory
      
      * Use new DeviceMem API to implement examples
      
      * Fix wrongly use of macro 'CK_EXPERIMENTAL_BIT_INT_EXTENSION_INT4'
      
      * Revert "Add new DeviceMem API to copy memory"
      
      This reverts commit e26e7af71e1f982a4ca7406401e2fc9b1f086b32.
      
      * Add conversion ctor for Tensor<>
      
      * Add 'const' specifier to Tensor<>::CopyAsType()
      
      * Convert Tensor<> values before/after transfer between host & device
      
      * Add examples of batched/grouped/SplitK Gemm for int8/bfp16/fp16/fp32 (#361)
      
      * add examples into grouped/batched_gemm
      
      * adding splitK examples
      
      * fixed splitK
      
      * add bfp16 int8 example into splitK
      
      * formatting
      
      * use static_cast
      
      * added common for batched_gemm
      
      * add commons for examples of splitK/batched/grouped_gemm
      
      * return true
      
      * adjust splitK check tol
      
      * update example
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      
      * Attention with output permutation (#370)
      
      * comment on specialization for TensorSpecialization::Packed
      
      * gemm_softmax_gemm with output permutation
      
      * scaling
      
      * refactor MatrixPadder; rename to GemmPadder
      
      * remove old sanity check
      
      * restore original gemm_softmax_gemm
      
      * revise comment in gemm_softmax_gemm example
      
      * use GetElementSpaceSize()
      
      * remove extra header
      
      * typo
      
      * remove archaic DeviceOpPtr
      
      * Add examples of Gemm (data type: int4) (#367)
      
      * Add GEMM examples for int4
      
      Currently the source files are just copied from int8 examples
      
      * Re-use pre-defined alias in int4 exmples
      
      * Distinguish user-side type from kernel-side type
      
      * Add int4_t support for check_err()
      
      * Allow conversion between Tensor<> specializations
      
      * Re-format source files
      
      * Use different type for host tensors
      
      * Re-use CopyAsType<>() to implement copy ctor
      
      * Re-use element-wise operation type alias
      
      * Fix typo in alias names
      
      * Complete the int4 examples
      
      * Add constraint to Tensor<> templated methods
      
      * Add type traits 'is_signed_integral<>'
      
      * Add type constraints for integer version check_err<>()
      
      * Allow comparing different-sized integral types in check_err()
      
      * Check converted Tensor<int4_t> with golden Tensor<int8_t>
      
      * Remove constraint of Tensor<>::CopyAsType()
      
      * Avoid compilation error while disabling ck::int4_t support
      
      * Remove debug messages
      
      * Add #error directive to prevent compile sources with wrong setting
      
      * Simplify tensor usages in examples
      
      * Add constraint to check_err() input reference type
      
      * Align design with other PR
      
      * Use ""_uz to simplify example code
      
      * Avoid too much generalizing check_err()
      
      * Re-format GEMM instance template arguments
      
      * Extract int4 example common codes
      
      * Sort include directives
      
      * Move #include directives into new header
      
      * Move common codes together
      
      * Re-format template argument in example code
      
      * Reuse same implementation code for most of GEMM examples
      
      * Re-format common.hpp
      
      * Unify structured comment in examples
      
      * Use reinterpret_cast<>() for cross-type pointer conversion
      
      * Revert "Add type traits 'is_signed_integral<>'"
      
      This reverts commit f2c148efaedf42c8ee66032dac6d13a1003b0f3a.
      
      * Allow unsigned integer arguments for check_err()
      
      * Fix compilation error in check_err()
      
      * Remove unnecessary copy ctor for Tensor<>
      
      * Mark Tensor<> special member functions as 'default'
      
      * Use more strict condition to add code in examples
      
      * Fix wrong program return value of GEMM examples
      
      * Handle the case while user specify all the strides
      
      * Fix never-ran examples
      
      * Exit successfully if GEMM instance does not support given problem
      
      * Add missing 'else' keyword
      
      * Re-format CMakeLists.txt
      
      * Add wrapper function to hide value conversion while copying memory
      
      * Add new DeviceMem API to copy memory
      
      * Use new DeviceMem API to implement examples
      
      * Revert "Add new DeviceMem API to copy memory"
      
      This reverts commit 3f190b0779ceedf7aaf0b380712fda0518de72c1.
      
      * Add conversion ctor for Tensor<>
      
      * Write Tensor<> conversion logics explicitly in example code
      
      * Convert Tensor<> values after transfer data to host
      
      * Refactor the design of DeviceGemmMultipleDMultipleR_Xdl_CShuffle (#378)
      
      * layernorm external api (#379)
      
      * Add layernorm client example
      
      * [What] Add default make install dir to gitignore
      [Why] client example need to make install
      
      * add scripts (#382)
      
      * Add int4 reduction examples (#372)
      
      * Add int4 reduction examples
      
      * Contain all using of int4_t inside the pre-compiling condition checking
      
      * Add int4 example for convnd_fwd_bias_relu_add (#375)
      
      * Add int4 example for convnd_fwd_bias_relu_add
      
      * Fix AddReluAdd for building without int4 support
      
      * Update CMakeLists.txt
      
      * Format
      
      * Convert int4 tensors for int8 kernel
      
      * Fix device memory allocation
      
      * Format
      
      * Format
      
      * GEMM batched/splitK/cgemm/grouped int4 examples (#383)
      
      * Grouped GEmm int4.
      
      * Formatting + fix K dimension for int8.
      
      * Batched Gemm int4 example.
      
      * CGEMM int4 example.
      
      * Include inc filese in clang-format.
      
      * SplitK int4 example
      
      * Refactoring of performance measurement.
      
      * Fix #ifdef statements.
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * More int4 tests. (#374)
      
      * More int4 UT.
      
      * Disable BitwiseRepresentation UT.
      
      * Add UT with static_cast
      
      * Surround cout statements with #if
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * Fixed splitk gemm fp32 (#384)
      
      * add scripts
      
      * fixed splitK_gemm_fp32
      
      * clean
      
      * clean
      
      * Add an option to build CK with clang directly (#387)
      
      * replace hipcc compiler with clang++
      
      * build client app with hipcc
      
      * build client app with clang
      
      * add an option to build with hipcc ro clang
      
      * fix the environment for client app
      
      * fix setting up compiler in cmake_build
      
      * change the way the compiler is set
      
      * Fix the slow cpu reference batched gemm kernels. (#388)
      
      * fix the performance of the batched gemm verification
      
      * fix tabs
      
      * Try to workaround flaky GemmSoftmaxGemm tests (#386)
      
      * avoid potential hazard; flaky test issue persists
      
      * pin down the random seed to avoid flakiness
      
      * Padding for attention: bmm+scale+softmax+bmm kernel (#385)
      
      * add padding algo for bmm+scale+softmax+bmm. Version for verification
      
      * remove verification code
      
      * remove comments
      
      * add padded bmm scale softmax bmm example
      
      * format
      
      * refactor
      
      * add comments for usages of padding bmm+scale+softmax+bmm
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      
      * Gemm reduce examples int4/int8/fp32/bf16 (#368)
      
      * GEMM + Reduce max fp16+fp32
      
      * GEmm + Max bf16 + int8
      
      * Refactor common definitions.
      
      * Refactor common func of mean meansquare example.
      
      * More examples for mean meansquare.
      
      * Update int8 examples and skip them cause of random errors.
      
      * Int4 examples.
      
      * Fix examples for max int4/8
      
      * Tensor conversion for int4 input data for mean meansquare example.
      
      * Remove int4 mean_meansquare example
      
      * Fix int8 mean_meansquare example.
      
      -All ReductionAccData and R<N>DataType have to be F32. The INT32 data
      type is giving wrong results.
      
      * Guard int4 with ifdef
      
      * Change int8 example to add_addsquare due to div rounding err.
      
      * Clang format
      
      * Change the return type of common function.
      
      * Get back int8 example with division.
      
      * Remove int8 mean meansquare.
      
      * Use proper cast for BF16 data type.
      
      * Use ck::literals.
      
      * Use proper data type for host tensors & reference.
      
      - Use ReduceAccDataType for reference gemm output data type.
      - Cast host reference output tensor to EDataType
      - Fix ifdefs for int4.
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * conv+conv (1x1 only) example using gemm+gemm  (#393)
      
      * refactor conv
      
      * add conv+conv example, 1x1 only
      
      * Add examples of Conv + reduction (data type: int4, int8, bf16, fp16, fp32)  (#380)
      
      * Refactor the design of DeviceGemmMultipleDMultipleR_Xdl_CShuffle
      
      * Add 'DeviceGroupedConvFwdMultipleDMultipleR' interface
      
      * Add DeviceGroupedConvFwdMultipleDMultipleR_Xdl_CShuffle
      
      * Remove 'GridwiseConvFwdMultipleDMultipleR_xdl_cshuffle'
      
      * Add 'TransformConvFwdToGemm<>' utility class (from Chao)
      
      * Use 'TransformConvFwdToGemm<>' to shorten code
      
      * Fix ill-formed method declaration
      
      * Re-implement MakeRGridDescriptor_M() function
      
      * Change problem description
      
      * Use macro to define layout types
      
      * Define K-reduced output tensor layout types
      
      * Let user to decide R output tensor layout
      
      * Rename variables
      
      * Add padding to the reduced output tensor if necessary
      
      * Extract common code as helper method
      
      * Remove debug message
      
      * Add missing include directive
      
      * Add partial fp16 Conv + Reduction example
      
      * Add example verification code for 2D Conv problem
      
      * Use type alias to simplify code
      
      * Share code across different-dimension Conv problems
      
      * Rename file/functions from run_conv_fwd* to run_convnd_fwd*
      
      * Make example code more verbose
      
      * Add code to support 1D & 3D Conv + Reduction on host
      
      * Add more examples for data type: bf16, fp32
      
      * Add example for int8
      
      * Add custom target to group examples
      
      * Use more general custom target name
      
      * Change the description in error message
      
      * Disable testing for example other than fp32
      
      * Add examplel for int4 (just copy from int8)
      
      * Fix wrong data type
      
      * Use larger data type for intermediate tensors
      
      * Finish int4 example
      
      * Undefine macro PP_DEFINE_LAYOUT_TYPE() after use
      
      * Use named variables to replace magic numbers
      
      * Remove debug messages
      
      * Use same A/B data type for host Conv in int4 example
      
      * Add check for the 'RLayout' type argument
      
      * Group same-dim-layouts together in 'LayoutSetting<>'
      
      * Add 'final' specifier to utility classes
      
      * Use different initialization method for examples
      
      * Remove macro PP_DEFINE_LAYOUT_TYPE()
      
      * Fix code-comment mismatch
      
      * Use more reasonable initialization value for all data types
      
      * Default use init_method=1 for all examples
      
      * Remove never-used code
      
      * Remove confusing out-of-date comments
      
      * clean
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      
      * add more datatype to gemm+gemm and conv+conv example (#397)
      
      * refactor
      
      * refactor
      
      * adding int4/int8/fp16/bf16 for conv+conv and gemm+gemm
      
      * adding int4/int8/fp16/bf16 for conv+conv and gemm+gemm
      
      * clean
      
      * [Hotfix] SplitK Gemm fp32 (#401)
      
      * add scripts
      
      * fixed splitK_gemm_fp32
      
      * clean
      
      * clean
      
      * use gemm_xdl_splitK_c_shuffle into profiler
      
      * remove device_gemm_xdl_splitk.hpp
      
      * Softmax client example (#396)
      
      * Update Softmax device operation interface.
      
      * Update ckProfiler.
      
      * Update Softmax UT.
      
      * Update example.
      
      * Client example.
      
      * Clang format
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * GemmGemm TNNT instances (#399)
      
      * add gemm_gemm TNNT instance
      
      * sanitize Gemm1KPack
      
      * disable instances that failed validation on mi100
      
      * Fused attention instances & padding tests (#395)
      
      * modify comment
      
      * trim unnecessary check
      
      * add gemm spec in kernel name
      
      * add TNTT gemm_gemm + atten kernel instances
      
      * refactor attention padding to better fit in unit tests
      
      This streamlines usage where "ResetNaNToMinusInf" is now hidden from user facing device op.
      Also added compile-time conditionals that load OOB value as NaN only after padding is enabled
      
      * add adhoc padding test for atten
      
      * shrink input value range for attention kernel validation to avoid occasional error by 1e-3
      
      Still unsure whether this kind of deterministic floating point accurary issue is expected
      or not. May want to try exact same approach as the GPU kernel in the host reference
      GEMM+Softmax+GEMM function to see if the accuracy discrepancy goes away. Until then,
      shrink the input value range as it is less likely to produce errors of around ~1e-3.
      
      * attention kernel proper granular padding for all 4 dims
      
      * IsSupportedArgument checks
      
      * test more padded cases
      
      * block PadK specialization in attention kernels
      
      * workaround clang crash for gfx908
      
      (gfx908 only) workaround for compiler crash in fused kernels on mainline #9110; #10738 seems ok
      error message was "fatal error: error in backend: Error while trying to spill VGPR0 from class
      VGPR_32: Cannot scavenge register without an emergency spill slot!"
      this fall back to less ideal way of handle NPadding in fused attention kernel
      
      * comment out kernels giving wrong results on MI100; MI200 doesn't seem affected
      
      * Add stderr to QA logfiles, process splitK and ONNX gemm kernels (#402)
      
      * add processing for the onng_gemm and splitK_gemm
      
      * add profile_onnx_gemm.sh
      
      * add stderr to logfiles, add splitK and onnx gemm parsing
      
      * enable splitK gemm wresults posting to db
      
      * Fix gemm-softmax-gemm-permute padding cases (#409)
      
      * fix example; make padding on by default in example; fix argument checks
      
      * fix Gemm1KPacK which has since regressed from PR #399
      
      * embedding fuse layernorm (#405)
      
      * add gridwise/device sparse embedding
      
      * update code
      
      * update code
      
      * remove useless makefile
      
      * code fix
      
      * workable
      
      * work properly
      
      * emb add
      
      * add more instance
      
      * format
      
      * remove useless code
      
      * fix format
      
      * fix clang-tidy
      
      * clean
      
      * fix a compile error
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      
      * Upgrade the OS and ROCM versions. (#411)
      
      * upgrade the OS and ROCM versions in CK docker
      
      * add cxx flags to link code with rocm5.2 and ck-9110 compiler
      
      * rename the docker image
      
      * run ONNX gemms using init=1
      
      * batched_gemm + multiple_d + gemm + multiple_d (#394)
      
      * refactor
      
      * start
      
      * add device gemm file
      
      * add BatchStrideD0
      
      * add stridd0
      
      * add gridwise file
      
      * add d0 parameters to gridwise gemm
      
      * add c layout transformer
      
      * add d0 threadwise copy
      
      * init kernel
      
      * init kernel
      
      * regular code
      
      * nm desc put to out
      
      * kernel parameter can not use reference
      
      * host add bias+gelu
      
      * run right for bias+gelu
      
      * change AddFastGelu into another file
      
      * interface add d1 bias parameters
      
      * add d1 parameter to argument
      
      * add d1 parameter to gridwise
      
      * first all code,not verify
      
      * gelu change to relu and GetElementSpaceSize bug
      
      * add instance
      
      * start add to ckprofiler
      
      * ckprofiler finish code
      
      * change input parameter for ckProfiler
      
      * fix host bias+gelu bug
      
      * show help for ckProfiler
      
      * fix bug for lunch kernel ignore parametes
      
      * add pad and fix about bug
      
      * mutiple d0
      
      * add dynamic d0_element_op
      
      * change profiler and  instance to mutiple d0
      
      * example have 2 d0
      
      * remove some comments not using
      
      * change 2 d0 have self  parameters
      
      * change d element_op name
      
      * change class name(multiple_d)
      
      * fix bug
      
      * fix bug that don't find file
      
      * update profiler
      
      * refactor
      
      * update profiler
      
      * clean
      
      * revert example change
      
      * add gon layout
      
      * optimize parameter for gno
      
      * add gon to gemm+gemm
      
      * change helping input parameters
      
      * change to GemmPadder_v2
      
      * using ForEach
      
      * fix gb_per_sec
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      Co-authored-by: default avatarltqin <letaoqin@amd.com>
      
      * disable print for group conv multiple D (#421)
      
      * Conv bwd data multiple d (#404)
      
      * init commit of convnd bwd data
      
      * begin compiling example
      
      * have a first version that produce a right result
      
      * refine device level launch kernel code
      
      * add more instances in example and get right results
      
      * clang-format
      
      * format example file
      
      * add more instances
      
      * fix instances
      
      * adding conv_bwd_data multile_d
      
      * adding conv_bwd_data multile_d
      
      * adding conv_bwd multiple d
      
      * adding conv_bwd multiple d
      
      * adding conv_bwd multiple d
      
      * refactor
      
      * refactor
      
      * adding conv bwd data multiple d
      
      * adding conv bwd data multiple d
      
      * adding conv bwd data multiple d
      
      * adding conv bwd data multiple d
      
      * adding conv bwd data multiple d
      
      * adding conv bwd data multiple d
      
      * adding conv bwd data multiple d
      
      * refactor
      
      * update conv fwd's bias impl
      
      * refactor
      
      * reorg file
      
      * clean up cmake
      
      * clean
      
      * clean
      
      * clean
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Grouped batched attention + permute (#412)
      
      * grouped attn without batch validates; now move toward grouped batched attn
      
      * grouped batched attention
      
      * working
      
      * remove debug logging
      
      clean up
      
      clean up
      
      * reintroduce g_ prefix back to host tensor variables
      
      * format
      
      * rename file
      
      * restore old file
      
      * rename
      
      * consolidate padded/non-padded attention example
      
      * harmonize padding specialization in attn examples
      
      * work around inline asm potential hazard using intrinsic (#416)
      
      * Add batched attention special kernel instances (#424)
      
      * sanity check
      
      * add attribution
      
      * add irrgular k tile size for batched attention
      
      * format
      
      * Add 'Permute' device op & example (#408)
      
      * Add example folder for 'DeviceElementwise'
      
      * Re-structure example files
      
      * Move common parts into common.hpp
      
      * Use more strict input
      
      * Add more helper methods in 'DeviceElementwise'
      
      * Use more specific method to write example
      
      * Allow specify problem through command line argument
      
      * Allow specify problem 'axes' through command line argument
      
      * Add check to template type argument
      
      * Add transpose_shape() to generalize shape permute
      
      * Generalize transpose utility functions
      
      * Use better name for tensor indices
      
      * Add checks in helper functions
      
      * Remove debug messages
      
      * Refine error message for check_err()
      
      * Generalize variable naming in example code
      
      * Add device op 'DevicePermute'
      
      This device op is clone of 'DeviceElementwise'
      
      * Use 'DevicePermute' device op in example
      
      * Remove 'elementwise' from identifiers
      
      * Remove 'elementwise' from file paths
      
      * Remove base class of 'DevicePermute'
      
      * Let 'DevicePermute' inherit from 'BaseOperator'
      
      * Add simple type traits to validate device op type
      
      * Add static_assert() to check type constraints
      
      * Create 'DevicePermuteBase' to generate methods
      
      * Use indirect base type to generate methods
      
      * Remove 'is_device_op<>' type traits
      
      * Only accept single-input-single-output for 'DervicePermute'
      
      * Simplify 'DevicePermute' interface
      
      * Re-format 'DeviceElementwise'
      
      * Use CRTP to generate overridden virtual method
      
      * Remove unnecessary include directives
      
      * Distinguish input & output shape in 'DevicePermute'
      
      * Passing 'axes' to 'DevicePermute'
      
      * Use more reasonable return value for Invoker::Run()
      
      * Add 'GridwisePermute' kernel
      
      This kernel is a clone of 'GridwiseElementwise_1D'
      
      * Remove no-longer used type argument
      
      * Check if input/output shape meet the requirement
      
      * Remove no-longer used method
      
      * Remove never-entered-if-clause
      
      * Change problem description for 'DevicePermute'
      
      * Transform descriptor into 3 dimensions
      
      * Add debug code the verify result
      
      * Add comment to indicate template argument location
      
      * Add N/H/WPerBlock template parameter to 'DevicePermute'
      
      * Rename 'GridwisePermute' to 'GridwiseCopy'
      
      * Check tensor descriptor dimensions in 'GridwiseElementwise_1D'
      
      * Add missing include directive
      
      * Add 'BlockSize' parameter to 'DevicePermute'
      
      * Remove no-longer used method
      
      * Add 'BlockToTileMap' for 'GridwiseCopy'
      
      * Use the normal Block2TileMap convention
      
      * Rename 'BlockToTileMap' as 'Block2TileMap'
      
      * Fix most of compilation errors
      
      * Let 'Block2TileMap' map block to 2d coordinate
      
      * Allow data transfer in 'GridwiseCopy'
      
      * Fix wrong output descriptor for 2nd blockwise copy
      
      * Rename 'GridwiseCopy' as 'GridwisePermute'
      
      * Remove '1d' in identifiers
      
      * Remove commented-out codes
      
      * Remove 'MPerThread' template parameter
      
      * Seperate template parameters
      
      * Unify variable namming convention
      
      * Use more verbose way to create expressions
      
      * Add template parameter 'InBlockLdsExtraW'
      
      * Release the constraint on In/OutGridDesc
      
      * Use date type directly as template argument
      
      * Re-arrange template arguments for blockwise copy
      
      * Remove no-longer used template parameters
      
      * Embed layout in the variable names
      
      * Add GridwisePermute::CheckValidity()
      
      * Extract local types as template parameters
      
      * Rename local type alias
      
      * Add more template parameters (vector width related)
      
      * Calculate new SrcVectorDim/DstVectorDim after merge descriptor dimensions
      
      * Fill tensor values start from 1
      
      * Re-formate example code
      
      * Avoid too-large block id
      
      * Add comment
      
      * Make sure 'SrcVectorDim' is not same as 'DstVectorDim'
      
      * Add check for the 'VectorDim' & 'ScalarPerVector' template params
      
      * Let 'DstVectorDim' equals 'SrcVectorDim' after transpose out grid desc
      
      * Remove no-longer used template parameter 'NPerBlock'
      
      * Fix wrong descriptor creation logics
      
      * Specify problem in each examples
      
      * Use better example name
      
      * Add new example 'example_permute_NxHxW_fp32'
      
      * Add example for demonstrating bundle multiple elems in tensor
      
      * Add support to permute multiple elements together
      
      * Change the default problem size
      
      * Add span<> class template
      
      * Use span<> to generalize check_err() interface
      
      * Fix ambiguous ctor call
      
      * Avoid create necessary objects
      
      * Use helper functions to simplify example code
      
      * Add example for 4xfp16 permute
      
      * Disable failed-to-compile example
      
      * Add check for the NUM_ELEMS_IN_BUNDLE
      
      * Remove redundant parameter in helper lambda function
      
      * Add check for the input tensor type's byte-size
      
      * Check scalar-per-vector with padded length
      
      * Use more verbose name to avoid name collision
      
      * Use fixed 'VectorDim' & 'ScalarPerVector' for LDS
      
      * Embed shape info in name of descriptor constructor
      
      * Rename example folder '36_permute' into '37_permute'
      
      * Avoid using too-large LDS in kernel code
      
      * Remove redundant example
      
      * Usw switch() to group similar codes
      
      * Add const to the span<> type arguement
      
      * Simply initialize tensor with floating point values
      
      * Use fp16 as data type in all examples
      
      * Enlarge tensor size in example
      
      * Enalrge N-dim in example
      
      * Add check for the bundled type in example
      
      * Use more stricter error threshold
      
      * Remove global load/store loop in kernel code
      
      * Measure execution time by default
      
      * Use faster device op config for example 'NxHxW_fp16'
      
      * Use faster device op config for example '1xHxW_fp16'
      
      * Use faster device op config for example 'HxWx4_fp16'
      
      * Remove cmd arg parsing logics
      
      * Rename functions
      
      * Extract bundle permutation logic out
      
      * Simplify permute bundle example
      
      * Add Tensor<>::GetElementSpaceSizeInBytes()
      
      * Add Tensor<>::data()
      
      * Use new methods to simplify code
      
      * Use type alias to replace duplicated code
      
      * Use existing method to shorten code
      
      * Allow FillUniformDistribution accept range arugment
      
      * Intialize random values in range
      
      * Add Tensor<>::size()
      
      * Use more meaningful names in permute bundle example
      
      * Use more meaningful names in permute element examples
      
      * Use rangified copy() to copy elements
      
      * Use function return value directly to eliminate variables
      
      * Add to_array() conversion tool to eliminate more variables
      
      * Add Tensor<>::AsSpan<>() to create view of tensor values
      
      * Use AsSpan() to shorten check_err() calls
      
      * Remove no-longer-used 'using' directives
      
      * Move 'using' directive to proper code position
      
      * Remove redudant variables
      
      * Remove useless static_assert()
      
      * Add check for range types
      
      * Declare variable right before first use
      
      * Move long return type as tailing return type
      
      * Add BaseInvokerCRTP<> class template to generate method
      
      * Create new base type for 'DervicePermute' implementations
      
      * Move 'NumDim' template param to the first
      
      * Rename 'DevicePermute' to 'DevicePermuteImpl'
      
      * Add 'noexcept' specifier to CRTP generated method
      
      * Move 'Block2TileMap' definition into 'GridwisePermute'
      
      * Use type alias to reduce code
      
      * Unify naming style in 'DevicePermute'
      
      * Add comments in 'GridwisePermute'
      
      * Rename permute example folder
      
      * Use std::cerr to report error
      
      * Use larger shape in examples
      
      * Rename '38_permute' to '39_permute'
      
      * Make sure we use unsigned type for shape & indices
      
      * Remove opt-ed out assertion
      
      * Remove template BaseInvokerCRTP<>
      
      * Group norm (#417)
      
      * Add groupnorm example by layernorm
      1.  Reference is not ready
      2. shape of gamma and beta need to be fix
      
      * Let shape of gamma and beta can be same as x
      
      * Modify test, instance and client example
      
      * [What] Fix bug of layernorm for greater than 2 dimension.
      [Why] We need to get upper length from merge transform instead of embed transform.
      
      * Add reference for groupnorm
      
      * Fuse sigmoid after groupnorm
      
      * [What] Rename original layernorm into layernorm2d
      [Why] Prepare to add groupnorm using layernorm5d
      
      * clang-format
      
      * Add groupnorm test
      
      * Refine error message
      
      * Add groupnorm ckProfiler
      
      * Test groupnorm kernel from device_instance
      
      * update example
      
      * upadte profiler
      
      * Fix test naming
      
      * Fix argc number
      
      * Move descriptor and sweeponce to argument for quick debugging
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * use rocm5.2 compiler as default, use same flags for amd-stg-open as for release (#426)
      
      * MNKO padding support on bmm+masking+scale+softmax+bmm+premute (#425)
      
      * add lower triangle bmm
      
      * init code for tile skipping
      
      * functionality right with lower triangle mask
      
      * add decoder lower triangular mask calculation
      
      * use 7*13 group
      
      * fix n2 compute error
      
      * attention with lower triangle mask with tile skipping
      
      * add template to distinguish masking kernel
      
      * rename template and remove default template value
      
      * remove lower triangle gemm reference struct
      
      * add some comments on example
      
      * add 10 instance for masking bmm + scale + softmax + bmm + permute kernels
      
      * add test
      
      * add test file
      
      * add gtest for bmm masking scale softmax bmm permute
      
      * clang-format
      
      * fix compile error
      
      * check lef bottom corner for tile skipping
      
      * fix error: check left bottom corner for tile skipping
      
      * add k padding
      
      * add test and instance for MNK padding
      
      * passing a mask struct
      
      * fix instances
      
      * delete used comments
      
      * format
      Co-authored-by: default avatardanyao12 <yaodan@dc-smc-13.amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * fix build (#427)
      
      * fix build
      
      * fix build
      
      * fixed G offset calc for long_index (#428)
      
      * Build the CK targets only once. (#433)
      
      * build CK only once, use deb package in all subsequent stages
      
      * update jenkins file
      
      * change prefix for build_CK stage
      
      * update writing deb metadata to control file
      
      * update ubuntu source for docker, script syntax for deb package metadata
      
      * try different way to create deb metadata
      
      * clean up DEBIAN before creating one
      
      * fix the CI folder names, fix splitK qa
      
      * use correct docker in all stages, separate tests for splitK verification and performance
      
      * clean old comments, change dir before packaging
      
      * use different package syntax
      
      * change packaging syntax
      
      * package with cmake
      
      * remove unnecessary build prefix
      
      * get rid of unnecessary paths
      
      * change paths during unpacking
      
      * change script syntax while unpacking
      
      * get rid of unneccesary steps
      
      * get rid of comments in the scripts
      
      * use double quotes for scripts
      
      * add ccache during build, try dpkg -x
      
      * pull and install each package separately
      
      * use full package names
      
      * try to use stashing for packages
      
      * change stash/unstash syntax
      
      * move unstash out of shell, run tests on any gpu node
      
      * unpack each package separately
      
      * try re-using existing workspace
      
      * merge the build and test stages, only stash ckProfiler
      
      * merge the build and test stages, only stash zipped ckProfiler
      
      * fix syntax
      
      * add GPU check before build and test, rename docker to usual name
      
      * Updated the supported components (#435)
      
      * Replace the obsolete offload-arch flags with GPU_TARGETS and fix a bug. (#437)
      
      * replace obsolete offload-arch flags with GPU_TARGETS
      
      * fix a build error for client app
      
      * replace commma with semicolon in GPU_TARGETS
      
      * fix build (#434)
      
      * fix
      
      * fix
      
      * add instance
      
      * Fix device instance libarary to include all instances (#418)
      
      * fix device instance library to add all instances
      
      * remove cppcheck from requirements.txt
      Co-authored-by: default avatarJun Liu <Liu.Jun@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Fix build issues, set new compiler default, etc. (#451)
      
      * add an option to select specific compiler commit
      
      * change the logic of forcing building a docker
      
      * add check for compiler commit in dockerfile
      
      * compiler check syntax fix
      
      * change compiler selection logic
      
      * fix the new compiler build issue
      
      * set new compiler as default, update dev-requirements
      
      * fix jenkins syntax
      
      * fix docker syntax
      
      * get rid of hipcc.pl editing in jenkinsfile
      
      * fix the hipcc.pl in both places
      
      * try to fix the 10738 compiler linking bug
      
      * fix syntax
      
      * use dockerhub to store images
      
      * use newer amd-stg-open commit as default
      
      * Allow setting ROCM version, activate cchache, etc. (#462)
      
      * enable ccache and decouple it from MIOpen ccache use
      
      * fix the ccache check script
      
      * use another method to get server name
      
      * fix syntax
      
      * add quotes around the server name variable
      
      * use check_host as function
      
      * change syntax
      
      * fix syntax
      
      * test if server name is parsed correctly
      
      * try different syntax
      
      * check the env var value
      
      * test new check node function
      
      * add ROCMVERSION parameter and fix script syntax
      
      * fix script syntax
      
      * add missing instances of rocm version
      
      * install ccache in the docker image
      
      * do not check GPU in clang format stage, clean up old code
      
      * update defaults and clean up
      
      * update document: Readme, contributors, citation, (#463)
      
      * update cmake script
      
      * update readme
      
      * Update README.md
      
      * add citation
      
      * add images
      
      * Update README.md
      
      * update
      
      * Update README.md
      
      * Update CONTRIBUTORS.md
      
      * Update README.md
      
      * Update CITATION.cff
      
      * Update README.md
      
      * Update CITATION.cff
      
      * Update doc (#464)
      
      * update cmake script
      
      * update readme
      
      * Update README.md
      
      * add citation
      
      * add images
      
      * Update README.md
      
      * update
      
      * Update README.md
      
      * Update CONTRIBUTORS.md
      
      * Update README.md
      
      * Update CITATION.cff
      
      * Update README.md
      
      * Update CITATION.cff
      
      * update doc
      
      * Update CONTRIBUTORS.md
      
      * Update LICENSE
      
      * Update readme (#465)
      
      * update cmake script
      
      * update readme
      
      * Update README.md
      
      * add citation
      
      * add images
      
      * Update README.md
      
      * update
      
      * Update README.md
      
      * Update CONTRIBUTORS.md
      
      * Update README.md
      
      * Update CITATION.cff
      
      * Update README.md
      
      * Update CITATION.cff
      
      * update doc
      
      * Update CONTRIBUTORS.md
      
      * Update LICENSE
      
      * update
      
      * Optimization for gridwise group norm (#453)
      
      * use another instance to check the efficiency
      
      * optimize group layer norm
      
      * 1. coalesce load/store data for gridwise layer norm welford. 2. move a sqrt and divison into a outer static loop
      
      * add more instances to layernorm
      
      * add 2 more test cases
      
      * remove ignore in generating tuple of vector
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Fix build issue and schedule daily tests with latest staging compiler version. (#470)
      
      * run branch once a day, with release and staging compilers
      
      * add GetDockerImage in Clang stage
      
      * apply the new triggers to the develop branch
      
      * Example contraction splitk (#430)
      
      * start split k
      
      * add base device class
      
      * add example after merge develop
      
      * add gridwise gemm
      
      * add b matrix split k
      
      * split=1
      
      * change name for kb
      
      * not bias result right
      
      * bias only add once
      
      * fix register spill
      
      * regular code
      
      * add fp32 example
      
      * fix for 64bit index
      
      * fix CheckValidity of gridwise
      
      * Conv2dFwd example. (#467)
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * Fix bug of layernorm ckProfiler and refine code (#448)
      
      * Fix bug of profiler for layernorm
      
      * 1. Rename layernorm into normalization
      2. Decouple softmax from normalization
      
      * clang-format
      
      * Refactor device op implementations into `impl` subdirectory. (#420)
      
      * Move kernel implementation files under impl directory.
      
      * Update examples paths.
      
      * Update device kernel impl include paths.
      
      * Update tensor operation instances include paths.
      
      * Update profiler and tests include paths.
      
      * Clang-format
      
      * Update include paths for batched gemm reduce
      
      * Refactor UnitTest ConvNDBwdWeight.
      
      * Refactor fwd and bwd data convND UT.
      
      * Fix used test macro.
      
      * Fix include path.
      
      * Fix include paths.
      
      * Fix include paths in profiler and tests.
      
      * Fix include paths.
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * adding tensor_permutation example folder (#389)
      
      * adding tensor_permutation example folder
      
      * fixed formatting
      
      * adding tensor_permutation example folder
      
      * fixed formatting
      
      * changed deviceelementwise parameters for outscalar
      
      * removed .swo file
      
      * updated folder/file name
      
      * changed function call in verification for better consistency with hostelementwist parameters
      
      * formatted again
      
      * fixed shape in verification function call
      
      * changed verification function call, added definition for nhwc
      
      * added elementwise permute example
      
      * updated CMakeLists file in folder
      
      * Delete CmakeLists.txt
      
      * Delete tensor_permute.cpp
      
      * first version of 2d gridwise_elementwise kernel
      
      * temporary fix for stride problem
      
      * formatting
      
      * format
      
      * changed directory name
      
      * Delete gridwise_elementwise_2d.hpp
      
      * Delete CMakeLists.txt
      
      * Delete extra file
      
      * delete extra file
      
      * got rid of extraneous code
      
      * added 2d device elementwise file
      
      * deleted accidently added file
      
      * update
      
      * stride values generalized with equations
      
      * updated stride for output matrix
      
      * Update CMakeLists.txt
      
      * removed extraneous commented code
      
      * removed shape_nchw vector, replaced with GetLength for each dimension
      
      * changed vector load in kernel call
      
      * removed extra space in CMake
      
      * Tensor permutation (#479)
      
      * Fused elementwise layernorm (#468)
      
      * add fused addition lyernorm
      
      * add fused addition lyernorm
      
      * changed CMakelist
      
      * removed annotates
      
      * modified descriptor of C
      
      * fixed bug in gridwise add layernorm
      
      * format the files
      
      * modified name from add&layernorm into elementwise&layernorm
      
      * created fused elementwise layernorm branch
      
      * change input into tuple type
      
      * add sweep once to reduce load & read of C from global memory
      
      * modified Argument api
      
      * modified way to malloc c in global memory
      
      * changed gamma and beta to m_k_desc
      
      * fixed bug when sweep once and move CDataType when define device level struct
      
      * add src dim for gamma and beta
      
      * implement optimization for coalesced
      
      * delete a annotation line
      
      * fixed some bug to meet the requirements of ck
      
      * add bandwidth computing in example, and fixed the time unit
      
      * move device_elementwise_layernorm_impl.hpp into device/impl
      
      * fixed bug in device_elementwise_layernorm_impl.hpp
      
      * changed name from layernorm into normalization
      
      * clang-format the changed files
      
      * changed the names
      
      * moved immidiate results into lds, it become faster in non-sweeponce cases
      
      * changed naming of C into X to make the defination more clear
      
      * changed naming in example
      
      * add tests for elementwise normalization
      
      * move example_elementwise_layernorm_blockwise into folder 44_elementwise_normalization
      
      * move test_elementwise_layernorm_fp16 into new folder
      
      * move elementwise_normalization_instances into a new folder
      
      * add more tests in test_elementwise_layernorm_fp16.cpp
      
      * added some corner cases in test
      
      * fixed method to compute lds size for matrix X
      
      * changed name of 44_elementwise_normalization into 45_elementwise_normalization
      
      * modified some comments
      
      * modified some other confused comments
      
      * reduce redundant tests in test_elementwise_layernorm_fp16.cpp
      
      * Revert "Fused elementwise layernorm (#468)" (#491)
      
      This reverts commit efbcc6ed
      
      .
      
      * Update to the Reduction API and instances  (#476)
      
      * Simplify the macros for declaring and defining the add_device_reduce_instance_xxxx() instances
      
      * Change the types of lengths and strides from std::vector to std::array for the reduction device interfaces
      
      * Remove DeviceSoftmaxImpl's depending on DeviceReduceMultiblock
      
      * Split the cpp and hpp files for reduction instances to enable more parallel compiling
      
      * Remove the using of macros for declaring reduction instances and instance references
      
      * Update to add_device_reduce_instance_xxxx templated functions
      
      * Use ReduceOperation+InElementwiseOp+AccElementwiseOp to repace the ReduceOpId in defining add_reduce_instance_xxxx() templates
      
      * Change return format
      
      * fix the script parsing the QA results (#495)
      
      * Gemm standalone bench executable (#480)
      
      * prototype
      
      4 layouts
      
      fix default stride
      
      all problem sizes
      
      tidy
      
      move file
      
      update build script
      
      restore old file
      
      fix build
      
      * refactor standalone test to use gemm test harness
      
      * simplify gemm test
      
      * update build script
      
      * remove redundant
      
      * early return when cmd arg doesn't match
      
      * tidy
      
      * report failure when result not validated
      
      * tidy
      
      * Apply suggestions from code review
      Co-authored-by: default avatarAdam Osewski <19374865+aosewski@users.noreply.github.com>
      Co-authored-by: default avatarAdam Osewski <19374865+aosewski@users.noreply.github.com>
      
      * Fix Batched Gemm op for int8 data (#482)
      
      * Fix for lwpck-425, update BlockTransferSrcVectorDim
      
      * Revert "Fix for lwpck-425, update BlockTransferSrcVectorDim"
      
      This reverts commit fd24e280e28ff238b452cfdde58a988affd46461.
      
      * Add Batched Gemm int8 test, expect it to fail
      
      * Format
      
      * Re-add the fix
      
      * Input/output permutation for fused attention (#460)
      
      * reopen masking att instance due to CI is upgraded
      
      * re-enable instances previously failed on 9110
      
      * enable ksize-kpadding pair validity test
      
      * add non-masked attention+permute test; expose masking boolean to attention kernel handles
      
      * disable bench
      
      * fix test
      
      * move files
      
      * bulk rename batched_gemm_masking_scale_softmax_gemm_permute to batched_gemm_softmax_gemm_permute
      
      * format
      
      * amend rename
      
      * disable bench in test
      
      * add mask/no-mask test for non-permute attention kernels
      
      * disable broken kernel instance
      
      * example working
      
      add non-permuted problem statement
      
      evaluating whether overhead comes from permutation or the extra kernel arg
      
      * interface for bias addition without implementing it
      
      * test and profiler running
      
      * tidy
      
      * mask type determined by enum class
      
      * unify example code
      
      * move masking specialization to its own header
      
      * align formats
      
      * extract helper functions
      
      * experiment merging dims for attn w/ permute; shows perf parity with attn wo/ permute
      
      * add tensor specialization to template args
      
      since tensor spec packed shows perf parity when permutation isn't needed
      
      remove redundant template args
      
      comment on 'packed' tensor specialization
      
      * grouped attention with input/output permute example
      
      * format
      
      * clean up
      
      * refactor acc0 tile visitor
      Co-authored-by: wangshaojie6's avatarshaojiewang <wsjmessi@163.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Fused attention client example (#494)
      
      * reopen masking att instance due to CI is upgraded
      
      * re-enable instances previously failed on 9110
      
      * enable ksize-kpadding pair validity test
      
      * add non-masked attention+permute test; expose masking boolean to attention kernel handles
      
      * disable bench
      
      * fix test
      
      * move files
      
      * bulk rename batched_gemm_masking_scale_softmax_gemm_permute to batched_gemm_softmax_gemm_permute
      
      * format
      
      * amend rename
      
      * disable bench in test
      
      * add mask/no-mask test for non-permute attention kernels
      
      * disable broken kernel instance
      
      * example working
      
      add non-permuted problem statement
      
      evaluating whether overhead comes from permutation or the extra kernel arg
      
      * interface for bias addition without implementing it
      
      * test and profiler running
      
      * tidy
      
      * mask type determined by enum class
      
      * unify example code
      
      * move masking specialization to its own header
      
      * align formats
      
      * extract helper functions
      
      * experiment merging dims for attn w/ permute; shows perf parity with attn wo/ permute
      
      * add tensor specialization to template args
      
      since tensor spec packed shows perf parity when permutation isn't needed
      
      remove redundant template args
      
      comment on 'packed' tensor specialization
      
      * grouped attention with input/output permute example
      
      * format
      
      * clean up
      
      * refactor acc0 tile visitor
      
      * fused attention client example
      
      * format
      Co-authored-by: wangshaojie6's avatarshaojiewang <wsjmessi@163.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * reduce the number of default targets (#489)
      
      * reduce the number of default targets
      
      * re-write the setting of target flags
      
      * move all options to one place
      
      * add new custom target instances for installing CK
      
      * fix missing -fPIC flag for conv3d_fwd instance lib (#473)
      
      * Add quotes for string option values (#472)
      
      * Batchnorm-forward implemented using welford method to calculate variance (#403)
      
      * Update to the batchnorm-forward API and base class
      
      * Fix leeked header including in gridwise_set_buffer_value.hpp
      
      * Add kernels and device file for batchnorm-forward welford supporting both blockwise and multi-block reduction
      
      * Update to the batchnorm-forward example to use the new batchnorm-forward device interface
      
      * Change the batchnorm-forward reference to use sequential welford method
      
      * Change to assign the workspace into four buffers in the host layer
      
      * Use GetReduceCountPerThread functor to replace the initial count for Blockwise and Multiblock welford
      
      * Tiny correction and remove un-used file under example/34_batchnorm
      
      * Renaming in the kernel arguments
      
      * Explicitly use ck::math::sqrt in batchnorm-forward kernels
      
      * Add some comments to some kernels
      
      * Tiny fix
      
      * Generalize the data types in reference_batchnorm_forward_nhwc_c
      
      * Use ck::ignore to mark un-used parameters
      
      * Move GetReduceCountPerThread functor codes from kernel to device
      
      * Remove some un-used codes in device_batchnorm_forward_impl.hpp
      
      * Tiny fix in batchnorm_forward example
      
      * Move GetReduceCountPerThread() to welford_helper.hpp
      
      * Use seperate data type for Scale and Bias
      
      * Renaming in device Op
      
      * Tiny fix in forward example
      
      * Updata to batchnorm-infer (type spliting, renaming)
      
      * Add time and bandwidth measurement to the batchnorm-forward example
      
      * Add support of elementwise operation for batchnorm forward output
      
      * Reduce object copying by passing object as reference type
      
      * Tiny change for performance
      
      * Updates for performance again
      
      * Some Renamings
      
      * Add GetActualVariance template parameter for ThreadwiseWelfordMerge
      
      * Tiny update in reference batchnorm forward nhwc/c
      
      * Move batchnorm multiblock kernel files to grid/batchnorm_multiblock sub-directory
      
      * Fuse mean and bias in the normalization calculation
      Co-authored-by: default avatarroot <root@dc-smc-18.amd.com>
      Co-authored-by: default avatarrocking5566 <ChunYu.Lai@amd.com>
      
      * Add fp32 and bf16 tests (#487)
      
      * Only need one test case here (#483)
      
      * Add Conv Forward on Navi21 for ResNet50 (#490)
      
      * add device of dl
      
      * fix k1 of GridwiseGemmDl_km_kn_mn_v1r3
      
      * init version for dl conv
      
      * add example(init)
      
      * result right
      
      * disable elementwise operation
      
      * check parameters
      
      * add fp32,int8 example and change check code
      
      * change deive file and class name
      
      * add check vector access of C
      
      * add instance
      
      * add to ckProfiler
      
      * add Filter1x1Pad0 instances
      
      * fix ignore error
      
      * fix for CI
      Co-authored-by: default avatarletaoqin <letaoqin@amd.com>
      
      * Conv perlayer int8 quantization (#471)
      
      * Add conv2d requant example
      
      * Fix bash error
      
      * Rename example
      
      * 1. Rename gemm quantization
      2. shares the requantization lambda function with conv
      
      * Refine declare type
      
      * Add conv bias relu quantization exmaple
      
      * clang format
      
      * Fix compile error due to merge develop
      
      * Fix CI error
      
      * Extract quantization post operation into another file
      
      * Support quantization for non piecewise linear function
      
      * Add instance for conv quantization
      
      * Add convolution quantization factory
      
      * Add convolution quantization client example
      
      * Add more instances with different template parameters
      
      * clang format
      
      * Sync the naming with the develop
      
      * Softmax unit-test reduction across all and non innermost dims cases. (#406)
      
      * Add reduction across all dims cases.
      
      * host softmax: handle all reduce
      
      * Test cases when reduced dim is not innermost axis.
      
      * Fix syntax.
      
      * Test non innermost dim for fp32 and int8
      
      * Group test suites wrt NumReduceDim.
      
      * Additionally test failing cases.
      
      * Throw error when Rank or NumReduceDims doesn't match arguments.
      
      * Check reducedDims has correct values
      
      * Move don't reuse DeviceReduceMultiblock IsSupportedArgument method.
      Instead implement own. (in fact just get rid of one check to enable
      reduction across inner dimensions).
      
      * Reorganize unit tests to better cover use scenarios.
      
      * Test input validation
      * Test reduction of inner dimensions with custom op instances.
      
      * Refactor fp32 and int8 unit tests.
      
      * Fix FP32 instance template parameters.
      
      * Add more instances.
      
      * Instances with InSrcVectorDim=0.
      
      * Do not initialize and copy data when arg not supported.
      
      * ckProfiler Softmax use instance factory.
      
      * Refactor device softmax IsSupported.
      
      * Additionally add non-polymorphic api functions
      
      * Split softmax instances into multiple files.
      
      * Fix profiler.
      
      * Reorganize tests to reuse profiler and cover edge cases.
      
      * Clang-format
      
      * I8 Softmax instances along with UT.
      
      * Reuse type alias definitions from instance factory header.
      
      * Clean included headers
      
      * Fix variable names.
      
      * Add missing checks in Argument constructor.
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      
      * Add pipeline v1/v2 selector, add more instances (#381)
      
      * Add gridwise gemm pipeline v1/v2 selector
      
      * Pipeline selector working, test-wise add pipeline options to one instance
      
      * Add gemm instances
      
      * Add debug info to DeviceGemmXdl
      
      * Add debug info to DeviceGemmXdl_CShuffle
      
      * Add debug info to DeviceGemmXdl_CShuffle and instances to gemm_add_add_fastgelu
      
      * Minor fix
      
      * Add debug info to DeviceBatchedGemmXdl and instances to batched_gemm
      
      * set up inter-wave configuration
      
      * use defualt loop scheduling for supported gemm ops
      
      for blanket-applying interwave scheduling for all supported gemm ops, define macro CK_EXPERIMENTAL_DEFAULT_TO_INTER_WAVE_SCHEDULING=1. this should be discouraged though as it is not covered by CI
      
      * Add enum PipelineVersion
      
      * Update instances
      
      * Format
      
      * Fix the merge conflict
      
      * Add flags to disable added instances
      
      * Test disable flag check
      
      * Disable flag check
      
      * Enable the instances
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      
      * Add client example of grouped conv2d backward data (data type: fp16) (#481)
      
      * Improve example reusability
      
      * Remove no-longer used file
      
      * Rename folder of grouped_conv_bwd_data example
      
      * Add normal grouped conv bwd example
      
      * Add interface 'DeviceGroupedConvBwdData'
      
      * Prettify comment of device op type arguments
      
      * Add grouped conv2d/conv3d backward data fp16 instances
      
      * Fix wrong template argument
      
      * Add grouped_conv2d_bwd_data client example
      
      * Use simpler expression to calculate memory size
      
      * Fix formating
      
      * Remove grouped_conv3d_bw_data instances
      
      Underlying device operator is not ready to handle 3D input
      
      * Remove no-longer necessary include directive
      
      * Add missing include directive
      
      * Use more realistic conv param in example
      
      * remove atten kernel workarounds as we move over to rocm 5.3 (#496)
      
      * Refine layernorm naming and test code (#497)
      
      * Sync the naming
      
      * Sync the test of layernorm with groupnorm
      
      * Sync the naming
      
      * Minor change for comment and log
      
      * [What] Add saveMean and SaveInvVariance in the interface.
      [Why] These can optimize the backward
      
      * Disable gtest discovery to run tests per-program not per-case (#432)
      
      * disable gtest discovery to run tests per-program not per-case
      
      * register cmake target to ctest
      
      * Fused elementwise normalization (#492)
      
      * add fused addition lyernorm
      
      * add fused addition lyernorm
      
      * changed CMakelist
      
      * removed annotates
      
      * modified descriptor of C
      
      * fixed bug in gridwise add layernorm
      
      * format the files
      
      * modified name from add&layernorm into elementwise&layernorm
      
      * created fused elementwise layernorm branch
      
      * change input into tuple type
      
      * add sweep once to reduce load & read of C from global memory
      
      * modified Argument api
      
      * modified way to malloc c in global memory
      
      * changed gamma and beta to m_k_desc
      
      * fixed bug when sweep once and move CDataType when define device level struct
      
      * add src dim for gamma and beta
      
      * implement optimization for coalesced
      
      * delete a annotation line
      
      * fixed some bug to meet the requirements of ck
      
      * add bandwidth computing in example, and fixed the time unit
      
      * move device_elementwise_layernorm_impl.hpp into device/impl
      
      * fixed bug in device_elementwise_layernorm_impl.hpp
      
      * changed name from layernorm into normalization
      
      * clang-format the changed files
      
      * changed the names
      
      * moved immidiate results into lds, it become faster in non-sweeponce cases
      
      * changed naming of C into X to make the defination more clear
      
      * changed naming in example
      
      * add tests for elementwise normalization
      
      * move example_elementwise_layernorm_blockwise into folder 44_elementwise_normalization
      
      * move test_elementwise_layernorm_fp16 into new folder
      
      * move elementwise_normalization_instances into a new folder
      
      * add more tests in test_elementwise_layernorm_fp16.cpp
      
      * added some corner cases in test
      
      * fixed method to compute lds size for matrix X
      
      * changed name of 44_elementwise_normalization into 45_elementwise_normalization
      
      * modified some comments
      
      * modified some other confused comments
      
      * reduce redundant tests in test_elementwise_layernorm_fp16.cpp
      
      * Remove interface 'DeviceGroupedConvBwdData' (#500)
      
      * Remove interface 'DeviceGroupedConvBwdData'
      
      * Remove no-longer needed include directive
      
      * Rename client example folder
      
      * Add client example of grouped conv2d backward weight (data type: fp16)  (#498)
      
      * Remove redundant CMake setting
      
      * Extract common code from files
      
      * Rename folder 'convnd' to 'conv'
      
      * Use std::array<> to accept compile-time kwnown # of arguments
      
      * Fix compilation error of tuning parameter
      
      * In example, use same setting as unit-test
      
      * Remove no-longer used include directive
      
      * Add interface for grouped conv bwd weight
      
      * Add group support for conv bwd weight
      
      * Add grouped conv bwd weight example
      
      * Use group parameter in example
      
      * Rename example folder
      
      * Remove non-grouped version example source files
      
      * Rename device op template
      
      * Add group support to convolution backward weight
      
      * Remove debug messages
      
      * Use smaller group size in example
      
      * Use named variable as loop terminate condition
      
      * Prettify example output message
      
      * Enlarge used grid size
      
      * Allow real grid size exceeds expected grid size
      
      * Rename interface file
      
      * Add client example for grouped conv2d bwd weight
      
      * Fix wrong include directive
      
      * Rename client example folder
      
      * Add client example of grouped conv2d forward (data type: fp16) (#488)
      
      * Rename example folder for GroupedConvFwdMultipleD
      
      * Unify example codes
      
      * Change target names
      
      * Add fp16 example for multiple d instance
      
      * Re-format common.hpp
      
      * Add interface 'DeviceGroupedConvFwd'
      
      * Use simpler interface
      
      * Move common conv params out
      
      * Rename conv fwd client example folder
      
      * Add missing include directive
      
      * Update grouped conv instance implementations
      
      * Simplify ckProfiler (grouped conv forward)
      
      * Use GroupedConvFwd to implement client example
      
      * Use greater groupe count in example
      
      * Add custom target to group examples
      
      * Add extra tag param to instance factory function
      
      * Use tag to differentiate factory functions
      
      * Add missing tag argument for factory function
      
      * Remove inheritance relationship
      
      * Remove no-longer used include directive
      
      * Add license in front of file
      
      * add client example for elementwise_normalization (#501)
      
      * add client example for elementwise_normalization
      
      * clang format elementwise_layernorm2d.cpp
      
      * changed some naming to make it more understandable
      
      * changed naming of input into ab_input
      
      * fixed bug for threadwise_x_store
      
      * add elementwise operation to reference
      
      * Rangify FillUniformDistributionIntegerValue<> (#443)
      
      Allow passing forward range to its call operator
      
      * Add packages for examples and profiler (#502)
      
      * Add packages for example and profiler
      
      * correct TEST_NAME -> EXAMPLE_NAME
      
      * Rangify constructor of HostTensorDescriptor & Tensor<> (#445)
      
      * Rangify STL algorithms
      
      This commit adapts rangified std::copy(), std::fill() & std::transform()
      
      * Rangify check_err()
      
      By rangifying check_err(), we can not only compare values between
      std::vector<>s, but also compare any ranges which have same value
      type.
      
      * Allow constructing Tensor<> like a HostTensorDescriptor
      
      * Simplify Tensor<> object construction logics
      
      * Remove more unnecessary 'HostTensorDescriptor' objects
      
      * Re-format example code
      
      * Re-write more HostTensorDescriptor ctor call
      
      * Fix build errors on CI server (#506)
      
      * Add missing ignore expression
      
      * Add missing include directive
      
      * Rangify check_err() (#444)
      
      * Rangify check_err()
      
      By rangifying check_err(), we can not only compare values between
      std::vector<>s, but also compare any ranges which have same value
      type.
      
      * Re-format example code
      
      * Rangify STL algorithms (#438)
      
      * Rangify STL algorithms
      
      This commit adapts rangified std::copy(), std::fill() & std::transform()
      
      * Re-write more std::copy() calls
      
      * Re-write std::copy() calls in profiler
      
      * Introduce ck::accumulate_n() (#439)
      
      We can use this template to eliminate duplicated iterator computing
      logics. By providing return type to ck::accumulate_n(), we can avoid
      type conversion operations.
      
      * Avoid reporting unused member function error (#507)
      
      * Add Conv Backward Data on Navi21 for ResNet50 (#499)
      
      * start add example
      
      * add device dl
      
      * change launch kernel
      
      * change init data method
      
      * change example config
      
      * add config valid check
      
      * add instance for dl bwd
      
      * add instance to ckProfiler
      
      * reserver to profiler and cmakelist
      
      * add instance to ckProfiler2
      
      * change instance f32 config
      
      * fix example return value
      Co-authored-by: default avatarletaoqin <letaoqin@amd.com>
      Co-authored-by: default avatarPo Yen Chen <PoYen.Chen@amd.com>
      
      * Add BF16 tests for batched_gemm_softmax_gemm_permute (#504)
      
      * fixed bug in softmax reference & add bf16 examples for batched_gemm_scale_softmax_gemm
      
      * added bf16 tests for batched_gemm_softmax_gemm_permute
      
      * changed format of device_batched_gemm_softmax_gemm_permute_xdl_cshuffle_bf16_bf16_bf16_bf16_gmk_gnk_gno_gmo_instance.cpp
      
      * changed format device_batched_gemm_softmax_gemm_permute_xdl_cshuffle_bf16_bf16_bf16_bf16_gmk_gnk_gno_gmo_instance.cpp
      
      * aligned annotations
      
      * modified CMakeLists for examples
      
      * add common example code of fp16/bf16 version for batched_gemm_scale_softmax_gemm_xdl
      
      * use macro to control the instances
      
      * added macro control into instances
      
      * clang-format some files
      
      * changed error tolerance for bf16
      
      * changed index for 10_elementwise_normalization
      
      * fixed xdlops code bug in amd_xdlops.hpp
      Co-authored-by: default avatarPo Yen Chen <PoYen.Chen@amd.com>
      
      * Work around develop validation failure (#513)
      
      * workaround bf16 atten fwd issue on gfx908
      
      * typo
      
      * Client examples AddFastGelu and FastGelu + instances. (#509)
      
      * FastGelu support for more data types.
      
      * AddFastGelu & FastGelu instances.
      
      * Client example.
      
      * clang-format
      
      * Remove unused stride variable.
      
      * Add new line at EOF.
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * BatchNorm forward instance/external api/profiler/tests/client example (#511)
      
      * Update to device_batchnorm_forward base class to include all template parameters for problem description
      
      * Add batchnorm forward instances and external api
      
      * Add batchnorm forward profiler module which uses the external api
      
      * Add some comments in batchnorm_forward example to explain the dimensions in lengths[]
      
      * Replace the reference_batchnorm_forward_nhwc_c by generic reference_batchnorm_forward
      
      * Improvement to the batchnorm infer base API
      
      * Add batchnorm forward client example which shows using the batchnorm forward external API
      
      * Add test for batchnorm forward
      
      * Tuning the batchnorm profiler initialized values and error threshold
      
      * Add support for bhalf_t in instances/external api/tests
      
      * Add support for int8_t in instances/external api/tests
      
      * Add support for double in instances/external api/tests
      
      * Let ScaleDataType and BiasDataType be same as XDataType and YDataType when creating instances
      
      * Checking before running best instance in batchnorm_fwd_nhwc client example
      
      * Add checking for YElementwiseOp in batchnorm_forward external API
      
      * Add more types in batchnorm forward profiler
      
      * Add more test lengths
      Co-authored-by: default avatarrocking5566 <ChunYu.Lai@amd.com>
      
      * Remove int8 from batchnorm-forward instances since it is not needed for forward training and could fail test (#516)
      
      * BatchNorm backward implementation (#461)
      
      * Implemented batchnorm-backward Blockwise and Multiblock kernels
      
      * Add batchnorm-backward device op
      
      * Add batchnorm-backward host-reference op
      
      * Add batchnorm-backward example
      
      * Parameters renaming in batchnorm backward kernels and device op
      
      * Change in the example to loose the threshold for ScaleDiff checking
      
      * Add comments to explain the implementation of batchnorm-backward
      
      * Parameters renaming again in batchnorm backward kernels
      
      * Improve the expression calculation for performance
      
      * Add batchnorm backward to README
      
      * Add comments to explain inv-variance in batchnorm forward and backward
      
      * Renaming the batchnorm forward training and inferring examples
      
      * Add/update the comments for batchnorm-backward kernels
      
      * Renaming again
      
      * Add block_sync_lds between two consecutive blockwise reductions
      
      * Move common expression 1/N out of the static_for loops
      
      * Add dy_elementwise_op
      
      * Renaming in backward example again
      
      * Add checking for reduceDims in reference_batchnorm_backward
      
      * Update to comments and codes format
      
      * Rename in the comments
      
      * Remove common expression out of the loop in reference_batchnorm_backward_nhwc_c
      
      * Add block_sync_lds() between blockwise reduction again
      
      * Fix comments again
      
      * Remove int8 from batchnorm-forward instances since it is not needed for forward training and could fail test
      
      * fix GetTypeString
      
      * Fix split-k gemm test (#231)
      
      * properly return error flag; reveals bug in split-k gemm
      
      * fix bug in split k
      
      * update split-k test case
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * BatchNorm backward instance/external API/profiler/tests (#519)
      
      * Refine the device batchnorm-backward base API templates and data type assignments
      
      * Remove duplicated kernel file
      
      * Add batchnorm backward instances and external API
      
      * Add batchnorm-backward profiler and tests
      
      * Add client example which uses batchnorm backward external API
      
      * Merge test/batchnorm_fwd and test/batchnorm_bwd into one directory
      
      * Loose the threshold for batchnorm-backward check_err()
      
      * gemm, conv perchannel quantization (#503)
      
      * Use gemm_multiple_D instead
      
      * Add gemm bias relu quantization example
      
      * Add pure gemm quantization example
      
      * Add quantization of perchannel conv + bias + relu example
      
      * Refine the code
      
      * Rename multiplier to requant_scale
      
      * Rename the folder
      
      * Remove redundant comment
      
      * Rename the file. Prepare to add perchannel
      
      * Add conv perchannel instance
      
      * Move to quantization folder
      
      * Add conv perchannel client example
      
      * Apply Rangify constructor of HostTensorDescriptor & Tensor<>
      
      * Fix merge error
      
      * Modularize ckProfiler operations (#514)
      
      * Re-structure ckProfiler source files
      
      * Rename profiler.cpp to main.cpp
      
      * Modularize ckProfiler operations
      
      * Add description for profiler operations
      
      * Use longer name to avoid name collision
      
      * Use macro to delay expansion
      
      * Use std::move() to avoid object copying
      
      * Prohibit users from calling dtor
      
      * Use macro to eliminate redundant code
      
      * Make friend function hidden
      
      * Add missing include directive <iostream>
      
      * Fix wrong include directives
      
      * Remove int8 from batchnorm-forward instances since it is not needed for forward training and could fail test
      Co-authored-by: default avatarQianfeng Zhang <Qianfeng.Zhang@amd.com>
      
      * [Navi3x-LWPCK-449] wmma_op + unit test (#484)
      
      * wmma_op + unit test
      
      * add arch limitation to wmma test
      
      * change arch limitation
      
      * Refactor + Add all type unit test(int4 compile failed)
      
      * Add f32_16x16x16_bf16 unit test
      
      * Remote int4 related
      
      * delete deprecated test
      Co-authored-by: default avatarPo Yen Chen <PoYen.Chen@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Add multiple d gridwise gemm on Navi21 for ResNet50 (#517)
      
      * start add example
      
      * add multiple d fp16 example
      
      * device transfer elementwiseop to gridwise
      
      * gridwise add multiple d
      
      * change example for multiple d
      
      * fix spill registers
      
      * fix for passthrough element op
      
      * fix int8 overflow
      
      * change example file name
      
      * add instance for dl multiple d
      
      * example add DsDataType
      
      * remove grouped_convolution_forward_dl.hpp
      
      * add head file(was deleted before)
      
      * fix not support device issue
      
      * format
      
      * remove passthrough check
      Co-authored-by: default avatarletaoqin <letaoqin@amd.com>
      
      * Fix bug where scaling may not be applied in some code path (#526)
      
      * fix bug where scaling may not be applied in some code path
      
      * more test
      
      * revert accidental example code changes
      
      * Fix CI error. (#530)
      
      * ignore .git folder when doing clang-format
      
      * fix syntax
      
      * add backslashes before quotes
      
      * add path filter for several extensions
      
      * modified half function in math_v2.hpp (#528)
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Add padding device_gemm_xdl instances (#529)
      Co-authored-by: default avatarRosty Geyyer <rosty.geyyer@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      
      * Fix Grouped ConvBwdWeight test case failure (#524)
      
      * Use smaller tensor size in test
      
      * Use even more smaller tensor size
      
      * Touch only failing test case inputs
      
      * Make sure that GEMM sizes in K dimension are supported. (#527)
      
      * apply new K-dimension check in gemm_xdl_cshuffle
      
      * add K-dim check to gemm_xdl and batched_gemm_xdl
      
      * fix syntax
      
      * fix syntax
      
      * clean-up the debug output
      
      * Gridwise elementwise 2d (#466)
      
      * added 2d gridwise elementwise
      
      * added 2d version of device elementwise
      
      * added example file with updated device elementwise call
      
      * added Cmake file
      
      * changed NumDim into 2D
      
      * fixed compiler issues
      
      * fixed indexing for loop step
      
      * fixed NumDim dimension error
      
      * changed blockID to 2D
      
      * updated Grid Desc
      
      * updated kernel call
      
      * fixed 2d thread indexing
      
      * added dimensions for example file
      
      * commented out unused code
      
      * changed vector load
      
      * removed extra code
      
      * temporarily removing vector load on 2nd dim
      
      * changed vector load back, still causing errors
      
      * altered indexing
      
      * changed isSupportedArgument for 2D
      
      * changed indexing + do/while
      
      * fixed isSupportedArgument
      
      * changed dimension for debugging
      
      * fixed
      
      * added testing printouts
      
      * testing change
      
      * added variables to distribute threads through both dimensions
      
      * testing changes
      
      * integrated variable for thread distribution into device elementwise and added as parameter for gridwise elementwise
      
      * removed most of the extraneous code, testing with different dimensions
      
      * testing
      
      * removed debugging print statements
      
      * moved 2d elementwise permute into elementwise permute directory
      
      * fixed formatting
      
      * removed debugging comments from threadwise transfer
      Co-authored-by: default avatarJing Zhang <jizhan@amd.com>
      Co-authored-by: default avatarPo Yen Chen <PoYen.Chen@amd.com>
      
      * Add a docker hub doc file (#538)
      
      * Add padding device_gemm_add_add_fastgelu_xdl_c_shuffle instances to enable arbitrary problem size (#535)
      
      * Add padding device_gemm_add_add_fastgelu_xdl_c_shuffle instances
      
      * Add padding device_gemm_add_fastgelu_xdl_c_shuffle instances
      
      * Add gemm_add_fastgelu profiler impl
      
      * Add padding device_gemm_fastgelu_xdl_c_shuffle instances
      
      * Add gemm_fastgelu profiler impl
      
      * Add interface GetTypeIdName() and GetTypeIdHashCode() for Device Op (#533)
      
      * disable the attention test that fails on MI100 (#540)
      
      * Add MNK padding, M = 0 support into grouped_gemm (#539)
      
      * add mnk padding, support m=0
      
      * clean code
      
      * clean code
      Co-authored-by: default avatarRostyslav Geyyer <46627076+geyyer@users.noreply.github.com>
      
      * Remove including of cmath (#551)
      
      * Let cmath included when compiling host codes in math_v2.hpp
      
      * Remove including of cmath in device_base.hpp and device_permute.hpp
      
      * Add a flag to enable/disable debug output in many kernels. (#549)
      
      * add DEBUG_LOG macro to enable/disable debug output
      
      * fix syntax
      
      * fix syntax again
      
      * fix syntax one more time
      
      * remove balnk spaces
      
      * use ifdefs
      
      * add the Print argument
      
      * move the definition of DEBUG_LOG to ck.hpp
      
      * add the missign argument to Print()
      
      * [Navi3x-LWPCK-545] Block-wise GEMM + Real GEMM_WMMA_FP16 (#541)
      
      * wmma_op + unit test
      
      * add arch limitation to wmma test
      
      * change arch limitation
      
      * Refactor + Add all type unit test(int4 compile failed)
      
      * Add f32_16x16x16_bf16 unit test
      
      * tempsave
      
      * tempsave
      
      * tempsave
      
      * runtime bug, cannot find symbol
      
      * workaround for incorrect HIP warpSize return value
      
      * debugging
      
      * tempsave
      
      * Correctness OK, waiting for optimization
      
      * Tidy up + format
      
      * temp save
      
      * temp save, reproduce the v_bfi_b32 issue
      
      * add inline asm for wmmaop test
      
      * tidy up
      
      * clean some debug purpose code
      
      * discard some codes
      
      * clang format
      
      * clang format
      
      * compiler issue fixed + increase tile size
      
      * Gemm layernorm welford (#413)
      
      * Add device op of gemm layernorm
      
      * [What] Rename F to H
      [Why] F and G prepare for welford tensor
      
      * Add gridwise gemm + welford
      
      * Extract template parameter
      
      * Rename kernel. Prepare to add second half kernel
      
      * Extract var
      
      * Add second kernel for gemm+layernorm
      
      * Move to the gemm_layernorm folder
      
      * Rename F and G to mean and var
      
      * Do not use snakeCurved, it makes determination of padding  for welford difficult
      
      * Rewrite the device interface and rename some var
      
      * Add welford count
      
      * Update interface
      
      * Sync code, prepare to test on MI200
      
      * Clean the code
      
      * Implement layernorm
      
      * Add comment to mension hipFree
      
      * Wrtie out the e for debug.
      This could be remove and use h for instead
      
      * 1. Allocate mean, var and count into by SetWorkSpacePointer.
      2. Add GetWorkSpaceSize to calculate the space size
      
      * Add gemm layernorm host code
      
      * use reference layernorm
      
      * Fix bug of blockwise welford for first kernel
      
      * Fix bug of mean var padding for layernorm
      
      * Use sgpr for shuffleM_index
      
      * padding for GemmMeanVarCountGridDescriptor_M_NBlock
      
      * Add layout parameter
      
      * Check argument for gemm
      
      * calculate max count for tail block
      
      * Share E and H memory in device op
      
      * Hard code the vector dim
      
      * Refine the MakeDescriptor
      
      * 1. Remove E parameter, because E is inside of device op
      2. Check vector size
      
      * [What] Rename MakeMeanVarDescriptor_M_N
      [Why] Prepare to add count version of make descriptor
      
      * Use 1D global memory for count
      
      * Prevent redundant IO
      
      * Update parameter
      
      * Add pipeline v1/v2 selector
      
      * Rename the example name
      
      * Add base class for gemm layernorm
      
      * Refine naming to distinguish naive and welford
      
      * Add comment to explan in detail
      
      * We don't need to pad in N dimension in gemm for mean/var/count. Set NPerTile 1
      
      * Rewrite the 2st kernel, use multiple block along N dimension in layernorm kernel
      
      * Share the vector size
      
      * Refine var name
      
      * [What] Force LayernormThreadSliceSize_N = vector size.
      [Why] Memory coalesce
      
      * Add comment
      
      * Extract divisor out of the loop in reference layernorm
      
      * Pad different size for E and H in layernorm kernel according to different block tile
      
      * Refine naming
      
      * Refine naming
      
      * Prevent implicit cast
      
      * [What] use ck::math::sqrt instead of __builtin_amdgcn_sqrtf
      [Why] __builtin_amdgcn_sqrtf is only support float, double will cause casting
      
      * Cast only constant
      
      * Change of post shuffle thread descriptor
      
      * Add EMeanVarDataType parameter.
      
      * Merge the mean and var threadwise copy
      
      * Add missing index
      
      * Fix Typo
      
      * Sync the variable with previous if
      
      * 1. Declare e inside the host_gemm_layernorm()
      2. Prevent implicit cast in reference code
      Co-authored-by: default avatarPo Yen Chen <PoYen.Chen@amd.com>
      
      * Reduction external API and client examples (#493)
      
      * Change to the DeviceReduce base class template to include all problem description information
      
      * Add external api for reduction
      
      * Add client example to test the reduction external api
      
      * Spelling correction
      
      * Re-implement the host_reduction to follow the DeviceReduce base API format
      
      * Change the reduce profiler to call the external API for collecting device instances
      
      * Rename reduce client example directory from 08_reduce to 12_reduce
      
      * Remove (void) before the functional call
      
      * Tiny update in reduce client example
      
      * Tiny update in profile_reduce_impl.hpp
      
      * Rename the reduce client example directory
      Co-authored-by: default avatarPo Yen Chen <PoYen.Chen@amd.com>
      
      * Add client API/examples for 3xGemm+Bias+Add+Permute{0, 2, 3, 1} (#550)
      
      * add example
      
      * fix example
      
      * add instance for gemm permute
      
      * add to client example
      
      * change configs
      
      * change instance file name
      
      * formate
      
      * change client example file name and remove example
      
      * add multi embeddings support (#542)
      
      * add multi embeddings support
      
      * fix format
      
      * optimize sqrt
      
      * add reduce operation
      
      * change to elementwise op
      
      * fix name
      
      * rename
      
      * run ci cd
      
      * format example
      
      * format code
      
      * format code
      
      * fix a bug for 6-dim kernels (#555)
      
      * Add multiD Gemm client APIs (#534)
      
      * start add example
      
      * fix config
      
      * fix showinfo bug
      
      * add an elementop
      
      * change to padding
      
      * add xdl example
      
      * change elementwiseop
      
      * add instance
      
      * add instance to profiler
      
      * change file name
      
      * fix deive not support issue
      
      * add client example
      
      * fix client gemm_add_multiply name
      
      * change AddMultiply elementwiseop
      
      * fix elementwiseop
      
      * fix client example
      
      * fix addmultiply op
      
      * fix comments and fun name
      Co-authored-by: default avatarletaoqin <letaoqin@amd.com>
      
      * Wavelet (inter-wave consumer-producer) GEMM (#310)
      
      * wavelet gemm programming model support for CK
      
      * GEMM pipeline update for wavelet progrmmaing model
      
      * Updated wavelet programming pipeline
      
      * fixes for global-write for math-wave
      
      * fixed bug in global writes
      
      * Updated comments for better readability
      
      * fixed clang format errors
      
      * added block_lds without barrier sync
      
      * clean
      
      * clean
      
      * clean
      
      * clean
      
      * refactor
      
      * prototype
      
      4 layouts
      
      fix default stride
      
      all problem sizes
      
      tidy
      
      move file
      
      update build script
      
      restore old file
      
      fix build
      
      * refactor standalone test to use gemm test harness
      
      * simplify gemm test
      
      * update build script
      
      * remove redundant
      
      * early return when cmd arg doesn't match
      
      * tidy
      
      * report failure when result not validated
      
      * tidy
      
      * Add comment depicting B2C mapping pattern.
      
      * Formatting & comments.
      
      * Comparison with custom B2C mapping pattern.
      
      * Example for wavelet gemm.
      
      * Add wavelet to Gemm standalone test.
      
      * Remove debug code.
      
      * Remove dangling #endif directive.
      
      Co-authored-by: root <Raman Jana>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      Co-authored-by: default avatarAdam Osewski <19374865+aosewski@users.noreply.github.com>
      
      * Use double for all scaling values and float-point constant values at the Device Op API (#557)
      
      * Use double as alpha/beta values type in reduce device op api
      
      * Use double as alpha/beta values type in softmax device op api
      
      * Use double as alpha/beta values type in multiple-reduce device op api
      
      * Use double as epsilon value type in normalization/elementwise-normalization device op api
      
      * Batchnorm inference instances, external API, client examples and gtests (#531)
      
      * File renaming and class renaming for device element-wise operation
      
      * Add batchnorm-infer instances, external API and client example
      
      * Add batchnorm-infer profiler module and gtests
      
      * Remove file device_elementwise_extension.hpp and move NormalizeInInfer operation to element_wise_operation.hpp
      
      * Remove the using of class aliasing for DeviceElementwiseForBatchNormInfer
      
      * Rename class and file due to conflict from device_elementwise_2d.hpp
      
      * Fix namespace in batcnnorm_infer_nhwc client example
      
      * Add more instances for irregular GEMM sizes. (#560)
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * Use defined seed for deterministic test runs. (#562)
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      
      * remove unused variable (#564)
      
      * remove unused variable
      
      * format code
      
      * Add the markdown tutorial hello world (#563)
      
      * Add the markdown tutorial
      
      * Clean up
      
      ---------
      Co-authored-by: default avatarRosty Geyyer <rosty.geyyer@amd.com>
      
      * Fix CI issues. (#572)
      
      * switch to recent staging compiler as default for CI
      
      * fix the baseline query
      
      * roll back sqlalchemy to version 1.4.46
      
      * Fix a couple more CI issues. (#578)
      
      * test the QA cron parameter for compiler commit
      
      * create separate dockers for latest and fixed amd-stg-open compiler versions
      
      * change groovy syntax
      
      * apply cron timers back to develop branch
      
      * Add GemmAddSoftmaxGemm support for MSFT ORT (instances and client API) (#576)
      
      * add instance for gemm bias softmax gemm
      
      * add client example
      
      * change CGridDesc_G_M_N to CGridDesc_G_M_O
      
      * add gridwise
      
      * change c grid name
      
      * device add d0s data
      
      * fix 08 client_example
      
      * add example 47_fused_attention
      
      * example output correct
      
      * add d0 to example
      
      * add d0 element op
      
      * rechange instance code
      
      * change Acc0ElementwiseOperation to C0DEElementwiseOperation
      
      * change example name
      
      * update instance for cdeelementwiseop
      
      * add bhalf_t ScaleAdd
      
      * add test
      
      * not surport geem1 bias
      
      * remove some ignore
      
      * fix test bug
      
      * adding the first draft of changelog (#571)
      
      * adding the first draft of changelog
      
      * second draft of changelog
      
      * Add instance for elementwise normlization (#573)
      
      * added instances for large N
      
      * add instance for elementwise normlization
      
      * added supported restrict in device_elementwise_normalization_impl.hpp
      
      * Gemm+layernorm instance, ckProfiler, client example (#568)
      
      * Add gemm + layernorm instance
      
      * Add ckProfiler
      
      * Add test
      
      * Add client example
      
      * Detect if user forger to set the workrspace
      
      * Use literal in the example
      
      * [What] use builtin function for sqrt
      [Why] compiler will not use v_sqrt_f64_e64 if we use ::sqrt()
      
      * check gemm vaildity in IsSupportedArgument
      
      * Add more testcases
      
      * Merge duplicated folder in client example
      
      * Print more infomation
      
      * Use better kernel parameter for MS problem size
      
      * clang format
      
      * Add constexpr for if condition and remove redundant include
      
      * Remove cstdlib and add constexpr
      
      * enable batched_gemm_softmax_bf16 tests (#582)
      
      * GroupedGEMM more bigger tiles. (#577)
      
      * Adding more bigger tiles.
      
      * Remove failing instance.
      
      * Remove instances which that don't improve perf.
      
      ---------
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      
      * Remove the workaround for bf16 attention tests. (#586)
      
      * remove workanround in bf16 attention test
      
      * clean up another workaround
      
      * Conv3D FWD BWD WRW fp16 fp32 client examples (#559)
      
      * Conv3d bwd weight client example.
      
      * Update year in license
      
      * Convolution bwd data 3D fp16/fp32 client example.
      
      * Client example for convnd fwd fp16 fp32
      
      * clang-format
      
      * Review remarks.
      
      * Fix compiler err.
      
      * Update data layout to standard one.
      
      * Add conv 3d fwd NDHWGC instances
      
      * clang-format
      
      * Conv3d fwd NDHWGC instances.
      
      ---------
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      
      * [Navi3x]  Add Device Operations (#567)
      
      * wmma_op + unit test
      
      * add arch limitation to wmma test
      
      * change arch limitation
      
      * Refactor + Add all type unit test(int4 compile failed)
      
      * Add f32_16x16x16_bf16 unit test
      
      * tempsave
      
      * tempsave
      
      * tempsave
      
      * runtime bug, cannot find symbol
      
      * workaround for incorrect HIP warpSize return value
      
      * debugging
      
      * tempsave
      
      * Correctness OK, waiting for optimization
      
      * Tidy up + format
      
      * temp save
      
      * temp save, reproduce the v_bfi_b32 issue
      
      * add inline asm for wmmaop test
      
      * tidy up
      
      * clean some debug purpose code
      
      * discard some codes
      
      * clang format
      
      * clang format
      
      * compiler issue fixed + increase tile size
      
      * navi3x_multipleD+example
      
      * temp save
      
      * workable
      
      * batchedgemm[OK], groupconv[debug]
      
      * groupconv: Sanity check[OK], Performance[Bad]
      
      * navi3x_groupconv_need_optimization
      
      * format
      
      * Add arch limitation to all wmma examples
      
      * fix bug: example30 input conv args
      
      * Improve normalization (#580)
      
      * Sync the order of type string with template parameter
      
      * Add more instances
      
      * Check the vector size and remove redundant var
      
      * Extract var to static, prepare to separate sweep once kernel
      
      * Separate sweeponce flow and optimize the flow
      
      * 1. Rename AccDatatype in normalization to computeData
      2. Rename AccElementwiseOperation to YElementwiseOperation in normalization
      
      * Remove useless code
      
      * Update naive variance kernel
      
      * Refine string
      
      * Fix typo
      
      * Support naive variance for device_normalization
      
      * Check the blocksize
      
      * Share the VGPR of x and y
      
      * Share the VGPR of gamma and beta
      
      * Add more instances
      
      * Support fp16 sqrt for experiment
      
      * Add CHANGELOG
      
      * Fix typo
      
      * clang-format
      
      * Add contraction_fp64 example  (#570)
      
      * add contraction_bilinear
      
      * add contraction_scale_xdl_fp64
      
      * reduce tile size to avoid register spill
      
      ---------
      Co-authored-by: default avatarroot <root@ctr-ubbsmc16.amd.com>
      
      * Clean up kernel launch output (#569)
      
      * clean up output from kernel_launch
      
      * set RUN_WARMUP to 0 by default
      
      * split the warm-up into a separate issue
      
      ---------
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      
      * Sphinx doc (#581)
      
      * New docs directory with minimal config
      
      * Based on docs directory of rocBLAS
      
      * Config for running Doxygen then Sphinx to generate HTML
      
      * Add minimal content - intro to doc
      
      * Add some boilerplate sections to doc
      
      * content still needs to be done,
      * e.g., need to generate API documentation using Doxygen
      * need to write contributor guide
      
      * Start Softmax section of Support Primitives doc
      
      * Written as a test bed for typesetting math content
      
      * Need to decide how much detail to go into
      
      * add doc directories to git ignore file.
      
      * Minor edits - new line at EOF, change year in copyright notices
      
      * Port Markdown files to ReStructuredText
      
      * Copy Markdown files from pre-existing doc directory to docs directory
      
      * Convert to reStructured Text (rst) - section headings, links, tables
        have a different syntax in rst
      
      * New rst files added to index - can generate HTML with same style as
        HTML generated from rst files in previous commits
      
      * Intention is to make all the content in doc redundant and use rst
        throughout rather than mix of md and rst
      
      * Extend Softmax section of Primitives Guide
      
      * rename l to z
      
      * add material on applying softmax row-wise to matrix
      
      * define macro for diag operator (represents diagonal matrix)
      
      ---------
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      
      * Build and archive deb packages. (#590)
      
      * build and archive deb packages
      
      * fix syntax
      
      * run QA to test building packages
      
      * apply cron to develop branch again
      
      * fix a bug when building for gfx1030 target. (#591)
      
      * fix a bug while building for gfx1030 and add gfx1030 to targets
      
      * fix syntax
      
      * Grouped conv1d client example (#589)
      
      * add conv1d fwd client example
      
      * change 07_grouped_conv2d_fwd to 07_grouped_convnd_fwd
      
      * add conv1d bwd weight
      
      ---------
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      
      * Add Grouped Conv Backward Weight on Navi21 for ResNet50. (#505)
      
      * Add DeviceOp and examples
      
      * Format DeviceOp template arguments
      
      * Remove bf16 example
      
      * Format
      
      * Format
      
      * Update MakeABCGridDescriptor_A_K0_M_K1_B_K0_N_K1_C_M_N
      
      * Refactor argument preparation
      
      * Update conv_bwd_weight_dl to grouped_conv_bwd_weight_dl
      
      * Rename device op file
      
      * Update include directive in the example file
      
      * Update descriptor preparation for grouped op
      
      * Update the argument
      
      * Update batch handling
      
      * Add gridwise gemm supporting batched input
      
      * Update blockwise indexing, working version
      
      * Update copyright year
      
      * Update check if argument is supported
      
      * Refactor and make consistent with xdl examples
      
      * Update check if argument is supported
      
      * Add changelog entry
      
      * Added comments on Dl op split_k>1 support
      
      ---------
      Co-authored-by: default avatarRosty Geyyer <rosty.geyyer@amd.com>
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      
      * disable tensor contraction f64 on MI100 (#602)
      
      * Fast GeLU using built-in function (#587)
      
      * clean up
      
      * fast gelu using builtin function
      
      * clean
      
      * clean
      
      * clean
      
      * clean:
      
      * clean
      
      * fix compilation
      
      * clean
      
      * clean
      
      ---------
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      
      * [Navi3x Bug Fix] fix typo to accept MNKPadding flag correctly. (#597)
      
      * fix a bug blocking wmma_gemm_multipleD
      
      * Utilize matrix padder in device_wmma_op
      
      * cosmetic change for gemmpadding format
      
      * clang format
      
      * Change gridwise gemm from FIFO to KMN loop fashion
      
      * Suppress reserved-identifier warning and catch all warnings. (#608)
      
      * suppress the reserved-identifier warnings
      
      * keep BUILD_DEV=On and use -Werror by default
      
      ---------
      Co-authored-by: default avatarAnthony Chang <ac.chang@outlook.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: default avatarShaojie WANG <shaojie.wang@amd.com>
      Co-authored-by: default avatarQianfeng <qianfeng.zhang@amd.com>
      Co-authored-by: default avatarJianfeng Yan <jfyan008@gmail.com>
      Co-authored-by: wangshaojie6's avatarshaojiewang <wsjmessi@163.com>
      Co-authored-by: default avatarrocking5566 <ChunYu.Lai@amd.com>
      Co-authored-by: default avatarrocking <chunylai@amd.com>
      Co-authored-by: default avatarltqin <letao.qin@amd.com>
      Co-authored-by: default avatarqinletao <letaoqin@amd.com>
      Co-authored-by: default avatarmyamlak <Marcin.Makowski@amd.com>
      Co-authored-by: default avatarzjing14 <zhangjing14@gmail.com>
      Co-authored-by: default avatarAdam Osewski <19374865+aosewski@users.noreply.github.com>
      Co-authored-by: default avatarAdam Osewski <aosewski@amd.com>
      Co-authored-by: default avatarLiam Wrubleski <Liam.Wrubleski@amd.com>
      Co-authored-by: default avatarguangzlu <87220526+guangzlu@users.noreply.github.com>
      Co-authored-by: default avatarroot <root@dc-smc-13.amd.com>
      Co-authored-by: default avatarPo Yen Chen <PoYen.Chen@amd.com>
      Co-authored-by: default avatarDaming Feng <dmfeng8898@gmail.com>
      Co-authored-by: default avatarChao Liu <lc.roy86@gmail.com>
      Co-authored-by: default avatarRostyslav Geyyer <46627076+geyyer@users.noreply.github.com>
      Co-authored-by: default avatarRosty Geyyer <rosty.geyyer@amd.com>
      Co-authored-by: default avatarcloudhan <cloudhan@outlook.com>
      Co-authored-by: default avatarcarlushuang <carlus.huang@amd.com>
      Co-authored-by: default avatardanyao12 <yaodan@dc-smc-13.amd.com>
      Co-authored-by: default avatarLixun Zhang <Lixun.Zhang@amd.com>
      Co-authored-by: default avatarJD <Jehandad.Khan@amd.com>
      Co-authored-by: default avatarJun Liu <Liu.Jun@amd.com>
      Co-authored-by: default avatararai713 <67439843+arai713@users.noreply.github.com>
      Co-authored-by: default avatarroot <root@dc-smc-18.amd.com>
      Co-authored-by: default avatarfsx950223 <fsx950223@outlook.com>
      Co-authored-by: default avatarHaocong WANG <haocwang@amd.com>
      Co-authored-by: default avatarJing Zhang <jizhan@amd.com>
      Co-authored-by: default avatarRaman R jana <raman.jana@amd.com>
      Co-authored-by: default avatarroot <root@ctr-ubbsmc16.amd.com>
      Co-authored-by: default avatarpmaybank <113125070+pmaybank@users.noreply.github.com>
      b79c7afb
  3. 27 Oct, 2021 4 commits
  4. 26 Oct, 2021 1 commit
  5. 21 Oct, 2021 2 commits
  6. 19 Oct, 2021 2 commits
    • Chao Liu's avatar
      bug fix (#39) · c3018794
      Chao Liu authored
      c3018794
    • ltqin's avatar
      add nchw atomic , nhwc and nhwc atomic method for backward weight (#30) · fd49ff80
      ltqin authored
      
      
      * add add new algorithm from v4r4r2
      
      * program once issue
      
      * add split k functiion
      
      * redefine code
      
      * add a matrix unmerge
      
      * add b matrix unmerge k0
      
      * trans a and b to gridegemm
      
      * nhwc init
      
      * no hacks and vector load
      
      * add hacks
      
      * modify some parameter
      
      * fix tuning prometer for fp32
      
      * fix tuning prometer for fp16
      
      * start change gridwise k split
      
      * init ok
      
      * revome a b matrix k0mk1 desc in grid
      
      * carewrite lculate gridsize
      
      * add kbatch to CalculateBottomIndex
      
      * remove some unused funtion
      
      * add clear data function before call kernel
      
      * out hacks
      
      * in hacks
      
      * rename device convolution file and function name
      
      * modify kBatch value
      
      * fix some tuning code
      
      * start from v4r4 nhwc
      
      * nhwc atomic is able to run
      
      * just for fp32
      
      * enable nchw atomic
      
      * tweak
      
      * tweak
      
      * re-arrange gridwise gemm hot loop for wrw
      
      * add wrw v4r5
      
      * v4r4r5 fp16
      
      * v4r4r4 fp16
      
      * v4r4r2 fp16
      
      * V4R4R4XDLNHWC fp16
      
      * V4R4R2XDLATOMICNCHW fp16
      
      * adjust for fp16
      
      * input gridsize
      
      * change kbatch to gridsize
      
      * testing wrw
      
      * clean up
      
      * k_batch to gridsize
      
      * fix bug
      
      * wrw v4r4r4 kbatch change to gride size
      
      * wrw v4r4r2 kbatch change to gride size
      
      * after merge , change gridwise gemm v2r4
      
      * change MakeCBlockClusterAdaptor
      
      * other method use new gridwise gemm
      
      * clean up
      
      * chapad method nge to make_right_pad_transform
      
      * kbatch out from transform function
      
      * clean up and fix bug
      
      * fix bug
      
      * using function type reduce template parameters
      
      * using auto replace define fuction type
      
      * clean up
      Co-authored-by: default avatarltqin <letaoqin@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: default avatarJing Zhang <jizhan@amd.com>
      fd49ff80
  7. 06 Oct, 2021 3 commits
    • Qianfeng's avatar
      [MIOpen Downstream] Fix Reduction Kernel (#34) · b2dc55f8
      Qianfeng authored
      
      
      * Tiny fix in using data type template parameters in blockwise and direct_threadwise kernel
      
      * Fix with regard to implementing GetZeroVal() in both kernel and host
      
      * Avoid convert to compType from dstDataType before writting the output value
      
      * Add half_t support to NumericLimits and make constexpr GetZeroVal() of binary operator
      
      * Add CONSTANT decorator for descriptor read buffer
      
      * Use get_thread_local_1d_id() for thread local Id
      
      * Rename GetZeroVal() to GetReductionZeroVal() in the kernels
      
      * Remove constexpr from initialized zeroVal and tiny fix in reduction_operator.hpp
      
      * Occasional tiny simplification and update in the kernel files
      
      * Update to re-order tensor dimensions on the host, split second_call kernel wrapper files and simplify reduce_all kernel wrappers
      
      * Update to remove OpenCL tidy checking failures
      
      * Update for better readability
      
      * Remove unused codes and not-needed template parameters in the kernel wrappers
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      b2dc55f8
    • Chao Liu's avatar
      Tweak GEMM kernel (#38) · b3e8d57d
      Chao Liu authored
      * add parameters
      
      * tweak gemm
      
      * tweak
      
      * update conv
      
      * update script
      
      * adding bwd 1x1
      
      * update script
      
      * adding 1x1 bwd
      
      * debugging bwd 1x1 failure
      
      * update script
      
      * update script
      
      * test
      
      * test v100
      
      * clean up
      b3e8d57d
    • zjing14's avatar
      Add VectorType support into StaticBuffer (#27) · 846f462b
      zjing14 authored
      
      
      * init StaticBufferV2
      
      * clean
      
      * adopt old output stage for staticBufferV2
      
      * clean
      
      * remove hack
      
      * clean
      
      * clean
      
      * clean code
      
      * move c_buffer alloc into blockwise gemm
      
      * add adaptors for m/n_thread_data_on_grid
      
      * adjust blockwise_gemm_xdlops
      
      * reorder ops in GEMM hot loop
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      846f462b
  8. 29 Sep, 2021 1 commit
    • Qianfeng's avatar
      [Enhancements] Several bugfixes and refactoring of dynamic generic reduction (#1156) · dfb80c4e
      Qianfeng authored
      * Squashed 'src/composable_kernel/' content from commit f6edda61
      
      git-subtree-dir: src/composable_kernel
      git-subtree-split: f6edda61
      
      * add solver ConvIgemmFwdV6r1DlopsNchwKcyxNkhw; rename static ck source files
      
      * Squashed 'src/composable_kernel/' changes from f6edda61..5781adf5
      
      5781adf5 Update develop (#5) (#6)
      97e6d514 Merge pull request #4 from ROCmSoftwarePlatform/separate_online_compile
      7b1ec41e refactor
      49c33aae refactor
      54b3e73d rename
      
      git-subtree-dir: src/composable_kernel
      git-subtree-split: 5781adf5
      
      
      
      * fix
      
      * refactor
      
      * remove online compilation from CK
      
      * refactor
      
      * fix
      
      * add ctest
      
      * tidy
      
      * add tidy
      
      * tidy
      
      * tidy
      
      * tidy
      
      * tidy
      
      * tidy
      
      * tidy
      
      * tidy
      
      * tidy
      
      * tidy
      
      * add c-style pointer cast
      
      * vector/scalar pointer cast use c-style pointer cast instead of reinterpret_cast
      
      * fix clang warning suppression
      
      * tidy
      
      * suppress cppcheck
      
      * fix enum issue
      
      * revert chagnes to hip build
      
      * fix kernel filename
      
      * update CK build script
      
      * rename
      
      * rename
      
      * make innner product compatiable on gfx900
      
      * Update src/include/miopen/solver/ck_utility_common.hpp
      Co-authored-by: default avatarJD <Jehandad.Khan@amd.com>
      
      * compiler parameter use stream
      
      * use int instead of index_t in kernel wrapper
      
      * DynamicBuffer, StaticBuffer, amd_buffer_load support customized value for invalid element
      
      * refactor
      
      * refactor
      
      * change cmakelist
      
      * change ck common utility
      
      * fix
      
      * Squashed 'src/composable_kernel/' changes from 5781adf5..31b40352
      
      31b40352 Merge pull request #16 from ROCmSoftwarePlatform/develop
      b62bf8c3 Merge pull request #14 from ROCmSoftwarePlatform/miopen_downstream_init_integration
      ccc4a1d3 Merge pull request #8 from ROCmSoftwarePlatform/miopen_downstream_init_integration
      67ad47e7 refactor
      16effa76 refactor
      a91b68df DynamicBuffer, StaticBuffer, amd_buffer_load support customized value for invalid element
      2cbabbba use int instead of index_t in kernel wrapper
      0834bc76 compiler parameter use stream
      f2ac7832 make innner product compatiable on gfx900
      4e57b30a rename
      c03045ce rename
      b2589957 update CK build script
      2c48039d fix kernel filename
      d626dccc fix enum issue
      643ebd4f tidy
      ddd49ec9 fix clang warning suppression
      4f566c62 vector/scalar pointer cast use c-style pointer cast instead of reinterpret_cast
      172036d7 add c-style pointer cast
      76f31319 tidy
      d1842890 tidy
      f885c131 tidy
      80120f0a tidy
      c3efeb5e tidy
      56fc0842 tidy
      54fba515 tidy
      e62bae7a tidy
      24c87289 add tidy
      61487e0a fix
      ae98b52a remove online compilation from CK
      cb954213 refactor
      73ca9701 Merge commit '437cc595c6e206dfebb118985b5171bbc1e29eab' into composable_kernel_init_integration_v3
      3b866461 Merge pull request #7 from ROCmSoftwarePlatform/master
      d09ea4f4 Update develop (#5)
      3d32ae94 add solver ConvIgemmFwdV6r1DlopsNchwKcyxNkhw; rename static ck source files
      
      git-subtree-dir: src/composable_kernel
      git-subtree-split: 31b40352
      
      
      
      * Tiny fix in using data type template parameters in blockwise and direct_threadwise kernel
      
      * Fix with regard to implementing GetZeroVal() in both kernel and host
      
      * Avoid convert to compType from dstDataType before writting the output value
      
      * Add half_t support to NumericLimits and make constexpr GetZeroVal() of binary operator
      
      * Add CONSTANT decorator for descriptor read buffer
      
      * Use get_thread_local_1d_id() for thread local Id
      
      * Rename GetZeroVal() to GetReductionZeroVal() in the kernels
      
      * Remove constexpr from initialized zeroVal and tiny fix in reduction_operator.hpp
      
      * Occasional tiny simplification and update in the kernel files
      
      * Update in src/reducetensor.cpp for consistent IDs passing to the kernel
      
      * Update to re-order tensor dimensions on the host, split second_call kernel wrapper files and simplify reduce_all kernel wrappers
      
      * Update to remove OpenCL tidy checking failures
      
      * Small updates in src/reducetensor.cpp
      
      * Update for better readability
      
      * Remove unused codes and not-needed template parameters in the kernel wrappers
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: default avatarJD <Jehandad.Khan@amd.com>
      dfb80c4e
  9. 21 Sep, 2021 5 commits
  10. 05 Sep, 2021 2 commits
  11. 31 Aug, 2021 1 commit
    • ltqin's avatar
      Backward weight v4r4r2 with xdlops (#18) · 627d8ef3
      ltqin authored
      
      
      * start
      
      * modify transformat
      
      * modify device convolutiion
      
      * modify host
      
      * added host conv bwd and wrw
      
      * remove bwd, seperate wrw
      
      * clean
      
      * hacall k to zero
      
      * out log
      
      * fixed
      
      * fixed
      
      * change to (out in wei)
      
      * input hack
      
      * hack to out
      
      * format
      
      * fix by comments
      
      * change wei hacks(wei transform has not merge)
      
      * fix program once issue
      
      * fix review comment
      
      * fix vector load issue
      
      * tweak
      Co-authored-by: default avatarltqin <letaoqin@amd.com>
      Co-authored-by: default avatarJing Zhang <jizhan@amd.com>
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      627d8ef3
  12. 27 Aug, 2021 2 commits
    • Chao Liu's avatar
      Misc fixes (#24) · 10bb8110
      Chao Liu authored
      * use cast_pointer_to_generic_address_space() in v6r1 kernel wrapper, DynamcBuffer and buffer_load take customized invalid-element-value, add buffer_load/store for fp64
      
      * use remove_cvref_t
      10bb8110
    • Qianfeng's avatar
      [SWDEV-281541][MSRCHA-100] Implementation of Dynamic Generic Reduction (#1108) · 9e80cdce
      Qianfeng authored
      
      
      * add solver ConvIgemmFwdV6r1DlopsNchwKcyxNkhw; rename static ck source files
      
      * make inner product compatible on gfx900
      
      * Update src/include/miopen/solver/ck_utility_common.hpp
      
      * compiler parameter use stream
      
      * use int instead of index_t in kernel wrapper
      
      * DynamicBuffer, StaticBuffer, amd_buffer_load support customized value for invalid element
      
      * Add dynamic generic reduction kernel layer (kernel wrappers, kernel implementations and utilities)
      
      * Some updates to dynamic composable kernel facility for the need of dynamic generic reduction
      
      * Update to generic reduction C++ host interface layer to support dynamic generic reduction
      
      * Update to remove tidy complaints in host interface layer
      
      * Change the unary operator form from void op(T &x) to T op(T x)
      
      * Update to pass single workspace pointer for all kernels (fix for OpenCL backend)
      
      * Use cppcheck-suppress to prevent some strange warnings
      
      * Re-use operator [] and () for DynamicBuffer and update to depending codes
      
      * Remove useless codes in first call threadwise/warpwise/blockwise kernel wrappers
      
      * [performance] Remove un-needed local buffer initialization
      Co-authored-by: default avatarChao Liu <chao.liu2@amd.com>
      Co-authored-by: default avatarJD <Jehandad.Khan@amd.com>
      9e80cdce
  13. 25 Aug, 2021 1 commit
  14. 23 Aug, 2021 2 commits
  15. 19 Aug, 2021 3 commits
    • Chao Liu's avatar
      Composable kernel init integration v3 (#1097) · 6fe3627a
      Chao Liu authored
      * Squashed 'src/composable_kernel/' content from commit f6edda61
      
      git-subtree-dir: src/composable_kernel
      git-subtree-split: f6edda61
      
      * add solver ConvIgemmFwdV6r1DlopsNchwKcyxNkhw; rename static ck source files
      
      * Squashed 'src/composable_kernel/' changes from f6edda61..5781adf5
      
      5781adf5 Update develop (#5) (#6)
      97e6d514 Merge pull request #4 from ROCmSoftwarePlatform/separate_online_compile
      7b1ec41e refactor
      49c33aae refactor
      54b3e73d rename
      
      git-subtree-dir: src/composable_kernel
      git-subtree-split: 5781adf5
      
      
      
      * fix
      
      * refactor
      
      * remove online compilation from CK
      
      * refactor
      
      * fix
      
      * add ctest
      
      * add c-style pointer cast
      
      * vector/scalar pointer cast use c-style pointer cast instead of reinterpret_cast
      
      * fix clang warning suppression
      
      * tidy
      
      * suppress cppcheck
      
      * fix enum issue
      
      * revert chagnes to hip build
      
      * fix kernel filename
      
      * update CK build script
      
      * rename
      
      * rename
      
      * make innner product compatiable on gfx900
      
      * Update src/include/miopen/solver/ck_utility_common.hpp
      Co-authored-by: default avatarJD <Jehandad.Khan@amd.com>
      
      * compiler parameter use stream
      
      * use int instead of index_t in kernel wrapper
      
      * DynamicBuffer, StaticBuffer, amd_buffer_load support customized value for invalid element
      
      * refactor
      
      * refactor
      
      * change cmakelist
      
      * change ck common utility
      
      * fix
      Co-authored-by: default avatarJD <Jehandad.Khan@amd.com>
      6fe3627a
    • zjing14's avatar
      refactor dynamic xdlops iGemm (#13) · a2ad6d35
      zjing14 authored
      * xdlops refactor
      
      * fixed commnt
      
      * clean xdlops_gemm
      
      * add make c into xldops-gemm
      
      * change mfma_info
      
      * refactor xdlops, hide c desc
      
      * clean
      
      * clean
      
      * clean
      
      * apply hacks changes to v4r4r4_nhwc
      
      * rename hacks and use single stage adapter
      
      * enable fp16 mfma
      a2ad6d35
    • zjing14's avatar
      Added host_conv_wrw for verification (#15) · ba6f79a7
      zjing14 authored
      * added host conv wrw
      ba6f79a7
  16. 18 Aug, 2021 1 commit
  17. 16 Aug, 2021 4 commits
  18. 13 Aug, 2021 3 commits
  19. 11 Aug, 2021 1 commit