-
Notifications
You must be signed in to change notification settings - Fork 292
Open
tenstorrent/tt-llk
#524Description
Overview
Convert the existing boolean template parameter is_dest_accum_en to a more type-safe and self-documenting enum class solution.
A list of files that contain this parameter (might not be complete):
WH:
- ./tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_math_binary_api.h
- ./tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_math_common_api.h
- ./tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_math_reduce_api.h
- ./tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_math_unary_datacopy_api.h
- ./tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_pack_api.h
- ./tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_sfpu/ckernel_sfpu_recip.h
- ./tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_sfpu/llk_math_eltwise_unary_sfpu_recip.h
- ./tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_unpack_AB_api.h
- ./tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_unpack_AB_matmul_api.h
- ./tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_unpack_A_api.h
- ./tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_unpack_common_api.h
- ./tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_unpack_reduce_api.h
- ./tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_unpack_tilize_api.h
- ./tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_unpack_untilize_api.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/common/inc/cpack_common.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/common/inc/cunpack_common.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/common/inc/sfpu/ckernel_sfpu_recip.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/llk_lib/llk_math_common.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/llk_lib/llk_math_eltwise_binary.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/llk_lib/llk_math_eltwise_unary_datacopy.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/llk_lib/llk_math_reduce.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/llk_lib/llk_pack.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/llk_lib/llk_pack_common.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/llk_lib/llk_unpack_A.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/llk_lib/llk_unpack_AB.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/llk_lib/llk_unpack_AB_matmul.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/llk_lib/llk_unpack_common.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/llk_lib/llk_unpack_reduce.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/llk_lib/llk_unpack_tilize.h
- ./tt_metal/third_party/tt_llk_wormhole_b0/llk_lib/llk_unpack_untilize.h
BH:
- ./tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_math_binary_api.h
- ./tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_math_common_api.h
- ./tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_math_reduce_api.h
- ./tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_math_unary_datacopy_api.h
- ./tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_pack_api.h
- ./tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_sfpu/llk_math_eltwise_unary_sfpu_recip.h
- ./tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_unpack_AB_api.h
- ./tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_unpack_AB_matmul_api.h
- ./tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_unpack_A_api.h
- ./tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_unpack_common_api.h
- ./tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_unpack_reduce_api.h
- ./tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_unpack_tilize_api.h
- ./tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_unpack_untilize_api.h
- ./tt_metal/third_party/tt_llk_blackhole/common/inc/cpack_common.h
- ./tt_metal/third_party/tt_llk_blackhole/common/inc/cunpack_common.h
- ./tt_metal/third_party/tt_llk_blackhole/llk_lib/llk_math_common.h
- ./tt_metal/third_party/tt_llk_blackhole/llk_lib/llk_math_eltwise_binary.h
- ./tt_metal/third_party/tt_llk_blackhole/llk_lib/llk_math_eltwise_unary_datacopy.h
- ./tt_metal/third_party/tt_llk_blackhole/llk_lib/llk_math_reduce.h
- ./tt_metal/third_party/tt_llk_blackhole/llk_lib/llk_pack.h
- ./tt_metal/third_party/tt_llk_blackhole/llk_lib/llk_pack_common.h
- ./tt_metal/third_party/tt_llk_blackhole/llk_lib/llk_unpack_A.h
- ./tt_metal/third_party/tt_llk_blackhole/llk_lib/llk_unpack_AB.h
- ./tt_metal/third_party/tt_llk_blackhole/llk_lib/llk_unpack_AB_matmul.h
- ./tt_metal/third_party/tt_llk_blackhole/llk_lib/llk_unpack_common.h
- ./tt_metal/third_party/tt_llk_blackhole/llk_lib/llk_unpack_reduce.h
- ./tt_metal/third_party/tt_llk_blackhole/llk_lib/llk_unpack_tilize.h
- ./tt_metal/third_party/tt_llk_blackhole/llk_lib/llk_unpack_untilize.h
Current Implementation
Currently, the code uses a boolean template parameter is_dest_accum_en to control destination accumulation behavior.
Requested Change
Replace the boolean template parameter with an enum class:
enum class DestAccumulation { Disable, Enable };Example:
template <PoolType type, ReduceDim dim, bool is_fp32_dest_acc_en, int MATH_FIDELITY_DESC = 0, bool is_int_fpu_en = false>
inline void _llk_math_reduce_(const uint dst_index, bool narrow_tile = false, const uint num_faces = 4)is converted to:
template <PoolType type, ReduceDim dim, DestAccumulation fp32_dest_accumulation, int MATH_FIDELITY_DESC = 0, bool is_int_fpu_en = false>
inline void _llk_math_reduce_(const uint dst_index, bool narrow_tile = false, const uint num_faces = 4)Requirements
- Replace all occurrences of
is_dest_accum_enboolean template parameter with the new enum - Update all template instantiations to use
DestAccumulation::EnableorDestAccumulation::Disable - Modify implementation to use the enum class instead of boolean checks
- Update any documentation or comments to reflect the new enum parameter
- Ensure all existing functionality works identically after conversion
Definition of Done
- All boolean template parameter usage of
is_dest_accum_enconverted to enum class and parameter is renamed tofp32_dest_accumulation - All code compiles without errors or warnings
- All existing tests pass
Metadata
Metadata
Assignees
Type
Projects
Status
PR Submitted 🕒