From a1997ff248ef6de68d9c6a3c308ee157409b0090 Mon Sep 17 00:00:00 2001 From: Diego Gomez Date: Tue, 11 Feb 2025 19:38:34 +0000 Subject: [PATCH 1/8] Splitting python bindings and cpp in ttnn library, we will have ttnncpp and ttnn, where ttnncpp will work as c++ backend while the ttnn library is the wrapper for python --- CMakeLists.txt | 12 +- build_metal.sh | 18 + ttnn/CMakeLists.txt | 481 +++++++++--------- ttnn/cpp/ttnn/operations/ccl/CMakeLists.txt | 15 +- .../experimental/ccl/CMakeLists.txt | 19 +- 5 files changed, 300 insertions(+), 245 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 57cf47858c0..a570ab4ce08 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -282,7 +282,7 @@ install( ) install( TARGETS - ttnn + ttnncpp ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY @@ -291,6 +291,16 @@ install( ) if(WITH_PYTHON_BINDINGS) # Install .so into src files for pybinds implementation + install( + TARGETS + ttnn + ARCHIVE + DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY + DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT dev + ) + install( TARGETS ttnn diff --git a/build_metal.sh b/build_metal.sh index c6338d9a11e..14bbaa81b2b 100755 --- a/build_metal.sh +++ b/build_metal.sh @@ -39,6 +39,7 @@ show_help() { echo " --toolchain-path Set path to CMake toolchain file." echo " --configure-only Only configure the project, do not build." echo " --enable-coverage Instrument the binaries for code coverage." + echo " --without-python-bindings Disable Python bindings, Enabled by default" } clean() { @@ -75,6 +76,7 @@ ttnn_shared_sub_libs="OFF" toolchain_path="cmake/x86_64-linux-clang-17-libcpp-toolchain.cmake" configure_only="OFF" enable_coverage="OFF" +with_python_bindings="ON" declare -a cmake_args @@ -114,6 +116,7 @@ ttnn-shared-sub-libs toolchain-path: configure-only enable-coverage +without-python-bindings " # Flatten LONGOPTIONS into a comma-separated string for getopt @@ -177,6 +180,8 @@ while true; do ttnn_shared_sub_libs="ON";; --configure-only) configure_only="ON";; + --without-python-bindings) + with_python_bindings="OFF";; --disable-unity-builds) unity_builds="OFF";; --disable-light-metal-trace) @@ -256,6 +261,7 @@ echo "INFO: Build tests: $build_tests" echo "INFO: Enable Unity builds: $unity_builds" echo "INFO: TTNN Shared sub libs : $ttnn_shared_sub_libs" echo "INFO: Enable Light Metal Trace: $light_metal_trace" +echo "INFO: With python bindings: $with_python_bindings" # Prepare cmake arguments cmake_args+=("-B" "$build_dir") @@ -373,6 +379,18 @@ if [ "$build_all" = "ON" ]; then cmake_args+=("-DBUILD_TT_TRAIN=ON") fi +if [ "$light_metal_trace" = "ON" ]; then + cmake_args+=("-DTT_ENABLE_LIGHT_METAL_TRACE=ON") +else + cmake_args+=("-DTT_ENABLE_LIGHT_METAL_TRACE=OFF") +fi + +if [ "$with_python_bindings" = "ON" ]; then + cmake_args+=("-DWITH_PYTHON_BINDINGS=ON") +else + cmake_args+=("-DWITH_PYTHON_BINDINGS=OFF") +fi + # toolchain and cxx_compiler settings would conflict with eachother # only use toolchain if not setting cxx compiler directly if [ "$cxx_compiler_path" == "" ]; then diff --git a/ttnn/CMakeLists.txt b/ttnn/CMakeLists.txt index ca0f842f91e..08237ae7ea0 100644 --- a/ttnn/CMakeLists.txt +++ b/ttnn/CMakeLists.txt @@ -15,33 +15,29 @@ set(TTNN_BASE_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/run_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/distributed/api.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/distributed/distributed_tensor_config.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/distributed/distributed_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/distributed/distributed_tensor.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/distributed/distributed_tensor_config.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/graph/graph_processor.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/graph/graph_trace_utils.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/graph/graph_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/creation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/sharding_utilities.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/trace.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/sharding_addrgen_helper.cpp ) + set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/core/compute_kernel/compute_kernel_config.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/conv/conv2d/conv2d.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/conv/conv2d/conv2d_utils.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/conv/conv2d/conv2d_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/conv/conv2d/device/conv2d_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/conv/conv2d/device/conv2d_op_sharded_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/conv/conv2d/device/conv2d_op_width_sharded_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/conv/conv_transpose2d/conv_transpose2d.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/conv/conv_transpose2d/conv_transpose2d_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/conv/conv2d/prepare_conv2d_weights.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/core/core.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/core/to_layout/to_layout_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/kv_cache/device/update_cache_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/kv_cache/kv_cache.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/kv_cache/kv_cache_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/kv_cache/device/update_cache_op_multi_core.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/common/common.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/concat/concat.cpp @@ -50,65 +46,48 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/copy/device/copy_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/copy/device/copy_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/copy/copy.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/copy/copy_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/copy/typecast/typecast.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/copy/typecast/typecast_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/fill_pad/device/fill_pad_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/fill_pad/fill_pad.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/fill_pad/fill_pad_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/fill_pad/device/fill_pad_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/fill_rm/device/fill_rm_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/fill_rm/fill_rm.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/fill_rm/fill_rm_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/fold/fold.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/fold/fold_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/fold/device/fold_device_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/fold/device/fold_multi_core_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/fold/device/fold_single_core_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/indexed_fill/device/indexed_fill_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/indexed_fill/device/indexed_fill_op_multi_core_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/indexed_fill/indexed_fill.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/indexed_fill/indexed_fill_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/move/device/move_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/move/device/move_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/move/move.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/move/move_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/non_zero_indices/device/non_zero_indices_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/non_zero_indices/device/non_zero_indices_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/non_zero_indices/non_zero_indices.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/non_zero_indices/non_zero_indices_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/pad/device/pad_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/pad/device/pad_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/pad/pad.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/permute/permute.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/permute/permute_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/permute/device/permute_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/permute/device/permute_rm_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/permute/device/permute_tiled_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/repeat/device/repeat_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/repeat/device/host/repeat_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/repeat/repeat.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/repeat/repeat_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/repeat_interleave/repeat_interleave.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/reshape_on_device/reshape.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/reshape_on_device/reshape_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/reshape_on_device/device/reshape_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/reshape_on_device/device/reshape_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/view/view.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/view/view_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/reshape_view/reshape.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/reshape_view/reshape_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/reshape_view/device/reshape_rm_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/reshape_view/device/host/reshape_rm_host_prep.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/unsqueeze/unsqueeze.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/unsqueeze/unsqueeze_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/squeeze/squeeze.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/squeeze/squeeze_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded_partial/interleaved_to_sharded_partial/interleaved_to_sharded_partial.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded_partial/interleaved_to_sharded_partial/interleaved_to_sharded_partial_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded_partial/interleaved_to_sharded_partial/device/interleaved_to_sharded_partial_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded_partial/sharded_to_interleaved_partial/sharded_to_interleaved_partial.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded_partial/sharded_to_interleaved_partial/sharded_to_interleaved_partial_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded_partial/sharded_to_interleaved_partial/device/sharded_to_interleaved_partial_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/slice/device/slice_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/slice/device/slice_program_factory.cpp @@ -125,7 +104,6 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/transpose/device/transpose_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/transpose/device/transpose_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/transpose/transpose.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/transpose/transpose_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/untilize/device/untilize_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/untilize/device/untilize_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/untilize/untilize.cpp @@ -136,7 +114,6 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/untilize_with_unpadding/device/untilize_with_unpadding_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/untilize_with_unpadding/untilize_with_unpadding.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/eltwise/binary_ng/binary_ng.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/eltwise/binary_ng/binary_ng_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/eltwise/binary_ng/device/binary_ng_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/eltwise/binary_ng/device/binary_ng_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/eltwise/binary_ng/device/binary_ng_utils.cpp @@ -169,7 +146,6 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/embedding/device/embedding_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/embedding/embedding.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/embedding_backward/embedding_backward.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/embedding_backward/embedding_backward_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/embedding_backward/device/embedding_backward_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/embedding_backward/device/embedding_backward_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/examples/example/device/example_device_operation.cpp @@ -178,11 +154,8 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/examples/example_multiple_return/device/example_multiple_return_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/examples/example_multiple_return/device/single_core_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/examples/example_multiple_return/example_multiple_return.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/examples/example_multiple_return/example_multiple_return_pybind.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/examples/examples_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/bcast/bcast.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/bcast/bcast_types.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/bcast/bcast_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/bcast/device/bcast_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/bcast/device/multi_core_h/bcast_op_multi_core_h.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/bcast/device/multi_core_h/bcast_op_sharded_h.cpp @@ -190,15 +163,11 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/bcast/device/multi_core_w/bcast_op_multi_core_w.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/bcast/device/multi_core_hw/bcast_op_multi_core_hw.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/cnn/convert_to_chw/convert_to_chw.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/cnn/convert_to_chw/convert_to_chw_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/cnn/convert_to_chw/device/convert_to_chw_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/cnn/convert_to_chw/device/convert_to_chw_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/experimental_pybind.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/matmul/attn_matmul/attn_matmul_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/matmul/attn_matmul/attn_matmul.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/matmul/attn_matmul/device/attn_matmul_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/matmul/attn_matmul/device/attn_matmul_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/matmul/group_attn_matmul/group_attn_matmul_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/matmul/group_attn_matmul/group_attn_matmul.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/matmul/group_attn_matmul/device/group_attn_matmul_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/matmul/group_attn_matmul/device/group_attn_matmul_program_factory.cpp @@ -206,98 +175,75 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/reduction/fast_reduce_nc/device/fast_reduce_nc_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/reduction/fast_reduce_nc/device/fast_reduce_nc_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/reduction/fast_reduce_nc/fast_reduce_nc.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/reduction/fast_reduce_nc/fast_reduce_nc_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/concatenate_heads/device/concatenate_heads_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/split_query_key_value_and_split_heads/device/split_query_key_value_and_split_heads_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_falcon7b/device/nlp_create_qkv_heads_falcon7b_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_falcon7b/device/nlp_create_qkv_heads_falcon7b_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_falcon7b/nlp_create_qkv_heads_falcon7b.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_falcon7b/nlp_create_qkv_heads_falcon7b_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_vit/device/nlp_create_qkv_heads_vit_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_vit/device/nlp_create_qkv_heads_vit_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_vit/nlp_create_qkv_heads_vit.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_vit/nlp_create_qkv_heads_vit_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_segformer/device/nlp_create_qkv_heads_segformer_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_segformer/device/nlp_create_qkv_heads_segformer_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_segformer/nlp_create_qkv_heads_segformer.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_segformer/nlp_create_qkv_heads_segformer_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/create_qkv_heads/device/create_qkv_heads_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/create_qkv_heads/device/create_qkv_heads_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/create_qkv_heads/create_qkv_heads.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/create_qkv_heads/create_qkv_heads_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/create_qkv_heads_from_separate_tensors/device/create_qkv_heads_from_separate_tensors_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/create_qkv_heads_from_separate_tensors/device/create_qkv_heads_from_separate_tensors_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/create_qkv_heads_from_separate_tensors/create_qkv_heads_from_separate_tensors.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/create_qkv_heads_from_separate_tensors/create_qkv_heads_from_separate_tensors_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_concat_heads/device/nlp_concat_heads_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_concat_heads/device/nlp_concat_heads_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_concat_heads/nlp_concat_heads.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_concat_heads/nlp_concat_heads_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_concat_heads_decode/device/nlp_concat_heads_decode_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_concat_heads_decode/device/nlp_concat_heads_decode_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_concat_heads_decode/nlp_concat_heads_decode.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_concat_heads_decode/nlp_concat_heads_decode_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_decode/device/nlp_create_qkv_heads_decode_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_decode/device/nlp_create_qkv_heads_decode_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_decode/nlp_create_qkv_heads_decode.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_decode/nlp_create_qkv_heads_decode_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_kv_cache_load_slice/device/nlp_kv_cache_load_slice_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_kv_cache_load_slice/device/nlp_kv_cache_load_slice_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_kv_cache_load_slice/nlp_kv_cache_load_slice.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_kv_cache_load_slice/nlp_kv_cache_load_slice_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ssm/prefix_scan/device/prefix_scan_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ssm/prefix_scan/device/prefix_scan_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ssm/prefix_scan/prefix_scan.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ssm/prefix_scan/prefix_scan_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ssm/repeat_and_interleave_eltwise_mul/device/repeat_and_interleave_eltwise_mul_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ssm/repeat_and_interleave_eltwise_mul/device/repeat_and_interleave_eltwise_mul_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ssm/repeat_and_interleave_eltwise_mul/repeat_and_interleave_eltwise_mul.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ssm/repeat_and_interleave_eltwise_mul/repeat_and_interleave_eltwise_mul_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ssm/hc_sum_reduce/device/hc_sum_reduce_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ssm/hc_sum_reduce/device/hc_sum_reduce_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ssm/hc_sum_reduce/hc_sum_reduce.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ssm/hc_sum_reduce/hc_sum_reduce_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads/device/nlp_create_qkv_heads_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads/device/nlp_create_qkv_heads_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads/nlp_create_qkv_heads.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads/nlp_create_qkv_heads_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding/device/rotary_embedding_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding/device/rotary_embedding_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding/rotary_embedding.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding/rotary_embedding_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding_llama/device/rotary_embedding_llama_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding_llama/device/rotary_embedding_llama_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding_llama/rotary_embedding_llama.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding_llama/rotary_embedding_llama_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding_llama_fused_qk/device/rotary_embedding_llama_fused_qk_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding_llama_fused_qk/device/rotary_embedding_llama_fused_qk_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding_llama_fused_qk/rotary_embedding_llama_fused_qk.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding_llama_fused_qk/rotary_embedding_llama_fused_qk_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotate_half/device/rotate_half_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotate_half/device/single_core/rotate_half_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotate_half/rotate_half.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotate_half/rotate_half_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/paged_cache/paged_cache.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/paged_cache/device/paged_cache_operation.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/paged_cache/paged_cache_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/paged_cache/device/paged_update_cache_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/paged_cache/device/paged_fused_update_cache_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/paged_cache/device/paged_fill_cache_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/plusone/device/plusone_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/plusone/plusone.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/plusone/plusone_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/plusone/device/plusone_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/auto_format/auto_format.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/full/device/full_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/full/device/full_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/full/full_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/full/full.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/full_like/full_like.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/full_like/full_like_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/full_like/device/full_like_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/full_like/device/full_like_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/loss/loss.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/loss/loss_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/matmul/device/matmul_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/matmul/device/matmul_op_multi_core_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/matmul/device/matmul_op_multi_core_reuse_mcast_1d_program_factory.cpp @@ -306,25 +252,19 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/matmul/device/matmul_op_multi_core_reuse_optimized_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/matmul/device/matmul_op_multi_core_reuse_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/matmul/matmul.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/matmul/matmul_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/batch_norm/batch_norm.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/batch_norm/batch_norm_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/batch_norm/device/batch_norm_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/batch_norm/device/batch_norm_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/batch_norm/device/running_statistics_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/batch_norm/device/running_statistics_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/groupnorm/groupnorm.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/groupnorm/groupnorm_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/groupnorm/device/groupnorm_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/groupnorm/device/multi_core/groupnorm_op_multi_core.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/layernorm/layernorm.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/layernorm/layernorm_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/layernorm/device/layernorm_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/layernorm/device/multi_core/layernorm_op_multi_core.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/rmsnorm/rmsnorm.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/rmsnorm/rmsnorm_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/layernorm_distributed/layernorm_pre_all_gather.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/layernorm_distributed/layernorm_distributed_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/layernorm_distributed/device/layernorm_pre_all_gather_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/layernorm_distributed/device/multi_core/layernorm_pre_all_gather_op_multi_core.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/layernorm_distributed/layernorm_post_all_gather.cpp @@ -332,32 +272,26 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/layernorm_distributed/device/multi_core/layernorm_post_all_gather_op_multi_core.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/rmsnorm_distributed/rmsnorm_pre_all_gather.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/rmsnorm_distributed/rmsnorm_post_all_gather.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/rmsnorm_distributed/rmsnorm_distributed_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/softmax/softmax.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/softmax/softmax_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/softmax/device/multi_core/softmax_op_multi_core.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/softmax/device/softmax_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/downsample/device/downsample_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/downsample/device/downsample_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/downsample/downsample.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/downsample/downsample_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/generic/device/pool_multi_core_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/generic/device/pool_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/generic/generic_pools.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/generic/generic_pools_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/global_avg_pool/global_avg_pool.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/upsample/device/upsample_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/upsample/device/upsample_program_factory_multicore.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/upsample/device//upsample_bilinear_program_factory_multicore.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/upsample/device/upsample_program_factory_singlecore.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/upsample/upsample.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/upsample/upsample_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/argmax/device/argmax_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/argmax/device/argmax_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/argmax/argmax.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/sampling/device/sampling_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/sampling/device/sampling_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/sampling/sampling_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/sampling/sampling.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/moe/device/moe_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/moe/device/moe_program_factory.cpp @@ -368,7 +302,6 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/generic/device/multi_core_w/reduce_op_multi_core_w.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/generic/device/reduce_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/generic/generic_reductions.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/reduction_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/prod/device/prod_nc_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/prod/device/prod_nc_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/prod/device/prod_op_all.cpp @@ -377,148 +310,109 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/sliding_window/halo/halo.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/sliding_window/halo/device/halo_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/sliding_window/sliding_window.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/sliding_window/sliding_window_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/sliding_window/reference_sliding_window.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/transformer_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/attention_softmax/attention_softmax.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/attention_softmax/attention_softmax_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/concatenate_heads/concatenate_heads.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/concatenate_heads/concatenate_heads_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/split_query_key_value_and_split_heads/split_query_key_value_and_split_heads.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/split_query_key_value_and_split_heads/split_query_key_value_and_split_heads_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/sdpa/sdpa.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/sdpa/sdpa_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/sdpa/device/sdpa_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/sdpa/device/sdpa_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/sdpa/device/joint_sdpa_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/sdpa/device/joint_sdpa_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/sdpa_decode/sdpa_decode.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/sdpa_decode/sdpa_decode_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/sdpa_decode/device/sdpa_decode_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/sdpa_decode/device/sdpa_decode_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/prefetcher/prefetcher_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/prefetcher/prefetcher/dram_prefetcher.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/prefetcher/prefetcher/dram_prefetcher_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/prefetcher/prefetcher/device/dram_prefetcher_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/prefetcher/prefetcher/device/dram_prefetcher_op_multi_core.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/interleaved_to_sharded/interleaved_to_sharded.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/interleaved_to_sharded/interleaved_to_sharded_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/interleaved_to_sharded/device/interleaved_to_sharded_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/interleaved_to_sharded/device/interleaved_to_sharded_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/sharded_to_interleaved/sharded_to_interleaved.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/sharded_to_interleaved/sharded_to_interleaved_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/sharded_to_interleaved/device/sharded_to_interleaved_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/sharded_to_interleaved/device/sharded_to_interleaved_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/sharded_common.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/reshard/reshard.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/reshard/reshard_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/reshard/device/reshard_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/reshard/device/reshard_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/clone/clone.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/clone/clone_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/clone/device/clone_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/clone/device/clone_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/uniform/uniform.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/uniform/uniform_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/uniform/device/uniform_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/uniform/device/uniform_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/bernoulli/bernoulli.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/bernoulli/bernoulli_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/bernoulli/device/bernoulli_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/bernoulli/device/bernoulli_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_abs_pow/device/moreh_abs_pow_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_abs_pow/device/moreh_abs_pow_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_abs_pow/moreh_abs_pow_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_abs_pow/moreh_abs_pow.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_adam/device/moreh_adam_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_adam/device/moreh_adam_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_adam/moreh_adam_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_adam/moreh_adam.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_adamw/device/moreh_adamw_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_adamw/device/multi_core_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_adamw/moreh_adamw_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_adamw/moreh_adamw.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_arange/device/moreh_arange_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_arange/device/moreh_arange_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_arange/moreh_arange_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_arange/moreh_arange.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_bmm_backward/moreh_bmm_backward_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_bmm_backward/moreh_bmm_backward.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_bmm/moreh_bmm_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_bmm/moreh_bmm.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_cumsum/device/moreh_cumsum_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_cumsum/device/moreh_cumsum_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_cumsum/moreh_cumsum_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_cumsum/moreh_cumsum.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_dot_backward/device/moreh_dot_backward_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_dot_backward/device/moreh_dot_backward_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_dot_backward/moreh_dot_backward_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_dot_backward/moreh_dot_backward.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_dot/device/moreh_dot_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_dot/device/moreh_dot_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_dot/device/moreh_dot_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_dot/device/moreh_dot_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_dot/moreh_dot_pybind.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_dot/moreh_dot_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_dot/moreh_dot.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_dot/moreh_dot.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_getitem/device/moreh_getitem_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_getitem/device/moreh_getitem_rm_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_getitem/device/moreh_getitem_tilized_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_getitem/moreh_getitem_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_getitem/moreh_getitem.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_group_norm_backward/device/gamma_beta_grad/moreh_group_norm_backward_gamma_beta_grad_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_group_norm_backward/device/gamma_beta_grad/moreh_group_norm_backward_gamma_beta_grad_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_group_norm_backward/device/input_grad/moreh_group_norm_backward_input_grad_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_group_norm_backward/device/input_grad/moreh_group_norm_backward_input_grad_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_group_norm_backward/moreh_group_norm_backward_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_group_norm_backward/moreh_group_norm_backward.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_group_norm/device/moreh_group_norm_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_group_norm/device/moreh_group_norm_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_group_norm/moreh_group_norm_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_group_norm/moreh_group_norm.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_layer_norm_backward/device/moreh_layer_norm_backward_gamma_beta_grad_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_layer_norm_backward/device/moreh_layer_norm_backward_gamma_beta_grad_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_layer_norm_backward/device/moreh_layer_norm_backward_input_grad_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_layer_norm_backward/device/moreh_layer_norm_backward_input_grad_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_layer_norm_backward/moreh_layer_norm_backward_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_layer_norm_backward/moreh_layer_norm_backward.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_layer_norm/device/moreh_layer_norm_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_layer_norm/device/moreh_layer_norm_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_layer_norm/moreh_layer_norm_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_layer_norm/moreh_layer_norm.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_linear_backward/device/moreh_linear_backward_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_linear_backward/device/moreh_linear_backward_multi_core_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_linear_backward/device/moreh_linear_backward_single_core_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_linear_backward/moreh_linear_backward_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_linear_backward/moreh_linear_backward.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_linear/moreh_linear_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_linear/moreh_linear.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_matmul_backward/moreh_matmul_backward_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_matmul_backward/moreh_matmul_backward.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_matmul/device/moreh_matmul_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_matmul/device/moreh_matmul_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_matmul/moreh_matmul_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_matmul/moreh_matmul.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_mean_backward/device/moreh_mean_backward_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_mean_backward/device/moreh_mean_backward_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_mean_backward/moreh_mean_backward_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_mean_backward/moreh_mean_backward.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_mean/device/moreh_mean_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_mean/device/moreh_mean_h_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_mean/device/moreh_mean_nc_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_mean/device/moreh_mean_w_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_mean/moreh_mean_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_mean/moreh_mean.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss_backward/device/moreh_nll_loss_backward_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss_backward/device/moreh_nll_loss_backward_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss_backward/moreh_nll_loss_backward_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss_backward/moreh_nll_loss_backward.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss_unreduced_backward/device/moreh_nll_loss_unreduced_backward_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss_unreduced_backward/device/moreh_nll_loss_unreduced_backward_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss_unreduced_backward/moreh_nll_loss_unreduced_backward_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss_unreduced_backward/moreh_nll_loss_unreduced_backward.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss/moreh_nll_loss_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss/moreh_nll_loss_step1/device/moreh_nll_loss_step1_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss/moreh_nll_loss_step1/device/moreh_nll_loss_step1_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss/moreh_nll_loss_step2/device/moreh_nll_loss_step2_device_operation.cpp @@ -526,18 +420,14 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss/moreh_nll_loss.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_norm_backward/device/moreh_norm_backward_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_norm_backward/device/moreh_norm_backward_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_norm_backward/moreh_norm_backward_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_norm_backward/moreh_norm_backward.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_norm/device/moreh_norm_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_norm/device/ord_other/moreh_norm_program_factory_h_other.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_norm/device/ord_other/moreh_norm_program_factory_nc_other.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_norm/device/ord_other/moreh_norm_program_factory_w_other.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_norm/moreh_norm_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_norm/moreh_norm.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sgd/device/moreh_sgd_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sgd/device/moreh_sgd_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sgd/moreh_sgd_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sgd/moreh_sgd.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax_backward/device/moreh_softmax_backward_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax_backward/device/softmax_backward_c_large/softmax_backward_c_large.cpp @@ -545,7 +435,6 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax_backward/device/softmax_backward_h_small/softmax_backward_h_small.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax_backward/device/softmax_backward_w_large/softmax_backward_w_large.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax_backward/device/softmax_backward_w_small/softmax_backward_w_small.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax_backward/moreh_softmax_backward_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax_backward/moreh_softmax_backward.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax/device/moreh_softmax_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax/device/moreh_softmax_device_operation.cpp @@ -559,13 +448,10 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax/device/softmax_w_large/softmax_w_large.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax/device/softmax_w_small/softmax_w_small.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax/device/softmax_w_small/softmax_w_small.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax/moreh_softmax_pybind.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax/moreh_softmax_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax/moreh_softmax.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax/moreh_softmax.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sum_backward/device/moreh_sum_backward_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sum_backward/device/moreh_sum_backward_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sum_backward/moreh_sum_backward_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sum_backward/moreh_sum_backward.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sum/device/moreh_int_sum_h_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sum/device/moreh_int_sum_nc_program_factory.cpp @@ -574,15 +460,12 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sum/device/moreh_sum_h_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sum/device/moreh_sum_nc_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sum/device/moreh_sum_w_program_factory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sum/moreh_sum_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sum/moreh_sum.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_fold/fold_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_fold/fold.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_fold/device/fold_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_fold/device/fold_program_factory_rm.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_helper_functions.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/index_fill/index_fill.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/index_fill/index_fill_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/index_fill/device/index_fill_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/index_fill/device/index_fill_multi_core_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_clip_grad_norm/moreh_clip_grad_norm_step1/device/moreh_clip_grad_norm_step1_device_operation.cpp @@ -592,15 +475,139 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_clip_grad_norm/moreh_clip_grad_norm_step3/device/moreh_clip_grad_norm_step3_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_clip_grad_norm/moreh_clip_grad_norm_step3/device/moreh_clip_grad_norm_step3_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_clip_grad_norm/moreh_clip_grad_norm.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_clip_grad_norm/moreh_clip_grad_norm_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/expand/expand.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/expand/expand_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/dropout/device/dropout_device_operation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/dropout/device/dropout_program_factory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/dropout/dropout.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/dropout/dropout_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/reshape/view.cpp +) + +set(TTNN_SRC_PYBIND + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/distributed/distributed_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/graph/graph_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/bernoulli/bernoulli_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/conv/conv2d/conv2d_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/conv/conv_transpose2d/conv_transpose2d_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/bcast/bcast_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/clone/clone_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/copy/copy_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/expand/expand_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/fill_pad/fill_pad_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/fill_rm/fill_rm_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/fold/fold_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/indexed_fill/indexed_fill_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/move/move_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/non_zero_indices/non_zero_indices_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/permute/permute_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/repeat/repeat_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/reshape_on_device/reshape_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/reshape_view/reshape_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/interleaved_to_sharded/interleaved_to_sharded_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/reshard/reshard_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded/sharded_to_interleaved/sharded_to_interleaved_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded_partial/interleaved_to_sharded_partial/interleaved_to_sharded_partial_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/sharded_partial/sharded_to_interleaved_partial/sharded_to_interleaved_partial_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/squeeze/squeeze_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/transpose/transpose_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/unsqueeze/unsqueeze_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/data_movement/view/view_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/eltwise/binary_ng/binary_ng_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/embedding_backward/embedding_backward_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/examples/example_multiple_return/example_multiple_return_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/examples/examples_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/cnn/convert_to_chw/convert_to_chw_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/copy/typecast/typecast_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/dropout/dropout_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/experimental_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/matmul/attn_matmul/attn_matmul_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/matmul/group_attn_matmul/group_attn_matmul_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/paged_cache/paged_cache_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/plusone/plusone_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/reduction/fast_reduce_nc/fast_reduce_nc_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/reduction/fast_reduce_nc/fast_reduce_nc_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/reshape/view_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ssm/hc_sum_reduce/hc_sum_reduce_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ssm/prefix_scan/prefix_scan_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ssm/repeat_and_interleave_eltwise_mul/repeat_and_interleave_eltwise_mul_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/create_qkv_heads/create_qkv_heads_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/create_qkv_heads_from_separate_tensors/create_qkv_heads_from_separate_tensors_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_concat_heads/nlp_concat_heads_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_concat_heads_decode/nlp_concat_heads_decode_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads/nlp_create_qkv_heads_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_decode/nlp_create_qkv_heads_decode_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_falcon7b/nlp_create_qkv_heads_falcon7b_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_segformer/nlp_create_qkv_heads_segformer_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_create_qkv_heads_vit/nlp_create_qkv_heads_vit_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/nlp_kv_cache_load_slice/nlp_kv_cache_load_slice_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding/rotary_embedding_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding_llama/rotary_embedding_llama_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding_llama/rotary_embedding_llama_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotary_embedding_llama_fused_qk/rotary_embedding_llama_fused_qk_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/transformer/rotate_half/rotate_half_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/full/full_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/full_like/full_like_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/index_fill/index_fill_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/kv_cache/kv_cache_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/loss/loss_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/matmul/matmul_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_abs_pow/moreh_abs_pow_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_adam/moreh_adam_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_adamw/moreh_adamw_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_arange/moreh_arange_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_bmm/moreh_bmm_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_bmm_backward/moreh_bmm_backward_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_clip_grad_norm/moreh_clip_grad_norm_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_cumsum/moreh_cumsum_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_dot/moreh_dot_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_dot/moreh_dot_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_dot_backward/moreh_dot_backward_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_fold/fold_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_getitem/moreh_getitem_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_group_norm/moreh_group_norm_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_group_norm_backward/moreh_group_norm_backward_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_layer_norm/moreh_layer_norm_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_layer_norm_backward/moreh_layer_norm_backward_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_linear/moreh_linear_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_linear_backward/moreh_linear_backward_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_matmul/moreh_matmul_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_matmul_backward/moreh_matmul_backward_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_mean/moreh_mean_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_mean_backward/moreh_mean_backward_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss/moreh_nll_loss_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss_backward/moreh_nll_loss_backward_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_nll_loss_unreduced_backward/moreh_nll_loss_unreduced_backward_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_norm/moreh_norm_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_norm_backward/moreh_norm_backward_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sgd/moreh_sgd_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax/moreh_softmax_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax/moreh_softmax_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_softmax_backward/moreh_softmax_backward_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sum/moreh_sum_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/moreh/moreh_sum_backward/moreh_sum_backward_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/batch_norm/batch_norm_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/groupnorm/groupnorm_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/layernorm/layernorm_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/layernorm_distributed/layernorm_distributed_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/rmsnorm/rmsnorm_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/rmsnorm/rmsnorm_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/rmsnorm_distributed/rmsnorm_distributed_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/normalization/softmax/softmax_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/downsample/downsample_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/generic/generic_pools_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/pool/upsample/upsample_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/prefetcher/prefetcher/dram_prefetcher_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/prefetcher/prefetcher_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/reduction_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/reduction/sampling/sampling_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/sliding_window/sliding_window_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/attention_softmax/attention_softmax_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/concatenate_heads/concatenate_heads_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/sdpa/sdpa_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/sdpa_decode/sdpa_decode_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/split_query_key_value_and_split_heads/split_query_key_value_and_split_heads_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/transformer/transformer_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/uniform/uniform_pybind.cpp ) set(TTNN_SUBLIBRARIES @@ -651,31 +658,8 @@ set(TTNN_SUBLIBRARIES ttnn/operations/uniform ) -#Split src and python bindings -#We only build python bindings optionally set(TTNN_SRC) - -set(PYBIND_SRC - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/__init__.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/types.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/events.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/global_circular_buffer.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/global_semaphore.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/device.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/profiler.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/tensor.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/pytensor.cpp -) - -foreach(FILE ${TTNN_OP_SRCS}) - if(FILE MATCHES "_pybind.cpp$") - if(WITH_PYTHON_BINDINGS) - list(APPEND TTNN_SRC ${FILE}) - endif() - else() - list(APPEND TTNN_SRC ${FILE}) - endif() -endforeach() +list(APPEND TTNN_SRC ${TTNN_OP_SRCS}) ### Setup TTNN as a shared library with optional Python bindings add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor) @@ -688,7 +672,9 @@ set(TTNN_PUBLIC_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/deprecated # symlink to tt_eager; should become native folder once merge complete ${CMAKE_CURRENT_SOURCE_DIR}/cpp ${CMAKE_CURRENT_BINARY_DIR}/flatbuffers + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/experimental/tt_lib ) + set(TTNN_PUBLIC_LINK_LIBRARIES metal_common_libs Metalium::Metal @@ -698,7 +684,6 @@ set(TTNN_PUBLIC_LINK_LIBRARIES xtl FlatBuffers::FlatBuffers ) -set(TTNN_PUBLIC_LINK_DIRS "") set(TTNN_PRECOMPILED_HEADERS ${PROJECT_SOURCE_DIR}/tt_metal/api/tt-metalium/reflection.hpp @@ -713,32 +698,27 @@ set(TTNN_PRECOMPILED_HEADERS ) -if(WITH_PYTHON_BINDINGS) - #TODO : should be using pybind11_add_module, but right now it introduces many build problems - #pybinds will always be built as a shared library - list( - APPEND - TTNN_BASE_SRCS - ${TT_LIB_SRCS} - ${PYBIND_SRC} - ) # TT_LIB_SRCS from tt_eager/tt_lib/CMakeLists.txt for python bindigns +set(TTNN_PUBLIC_INCLUDE_DIRS_PYBIND) - list( - APPEND - TTNN_PUBLIC_INCLUDE_DIRS - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/experimental/tt_lib - ${Python3_INCLUDE_DIRS} - ) +#TODO : should be using pybind11_add_module, but right now it introduces many build problems +#pybinds will always be built as a shared library - list(APPEND TTNN_PUBLIC_LINK_DIRS ${Python3_LIBRARY_DIRS}) +list( + APPEND + TTNN_SRC_PYBIND + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/__init__.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/types.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/events.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/global_circular_buffer.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/global_semaphore.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/device.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/profiler.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/tensor.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/pybind11/pytensor.cpp + ${TT_LIB_SRCS} +) # TT_LIB_SRCS from tt_eager/tt_lib/CMakeLists.txt for python bindings - list( - APPEND - TTNN_PUBLIC_LINK_LIBRARIES - pybind11::module - ${Python3_LIBRARIES} - ) -endif() +list(APPEND TTNN_PUBLIC_INCLUDE_DIRS_PYBIND ${Python3_INCLUDE_DIRS}) function(use_precompiled_header TARGET) if("${PRECOMPILED_HEADER_TARGET}" STREQUAL "") @@ -817,71 +797,108 @@ add_ttnn_sublibrary(ttnn_tensor ${TENSOR_SRCS}) add_ttnn_sublibrary(ttnn_ccl ${CCL_TTNN_SRCS}) add_ttnn_sublibrary(ttnn_ccl_exp ${CCL_EXPERIMENTAL_TTNN_SRCS}) -add_library( - ttnn - SHARED - ${TTNN_BASE_SRCS} - ${QUEUE_SRCS} -) -add_library(Metalium::TTNN ALIAS ttnn) -target_compile_options( - ttnn - PUBLIC - -MP - -Wno-int-to-pointer-cast - -fno-var-tracking -) +function(build_library LIBRARY_NAME BUILD_PYBIND) + if(BUILD_PYBIND) + set(SUFFIX "_PYBIND") + add_library( + ${LIBRARY_NAME} + SHARED + ${SRC_PYBIND} + ${TTNN_SRC_PYBIND} + ${CCL_TTNN_SRCS_PYBIND} + ${CCL_EXPERIMENTAL_TTNN_SRCS_PYBIND} + ${Python3_LIBRARY_DIRS} + ) + target_link_directories(${LIBRARY_NAME} PUBLIC ${TTNN_PUBLIC_LINK_DIRS_PYBIND}) + else() + add_library( + ${LIBRARY_NAME} + SHARED + ${TTNN_BASE_SRCS} + ${QUEUE_SRCS} + ) + endif() -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - target_compile_definitions(ttnn PUBLIC DISABLE_NAMESPACE_STATIC_ASSERT) -endif() + string(TOUPPER "${LIBRARY_NAME}" LIBRARY_NAME_ALIAS) + add_library(Metalium::${LIBRARY_NAME_ALIAS} ALIAS ${LIBRARY_NAME}) -target_include_directories(ttnn PUBLIC ${TTNN_PUBLIC_INCLUDE_DIRS}) -target_link_libraries( - ttnn - PUBLIC - ${TTNN_PUBLIC_LINK_LIBRARIES} - ${ALL_TTNN_SUBLIBRARIES} - ttnn_tensor - ttnn_ccl - ttnn_ccl_exp -) -target_link_directories(ttnn PUBLIC ${TTNN_PUBLIC_LINK_DIRS}) -target_precompile_headers(ttnn REUSE_FROM ${PRECOMPILED_HEADER_TARGET}) -set_target_properties( - ttnn - PROPERTIES - DEFINE_SYMBOL - "" -) + target_compile_options( + ${LIBRARY_NAME} + PUBLIC + -MP + -Wno-int-to-pointer-cast + -fno-var-tracking + ) -TT_ENABLE_UNITY_BUILD(ttnn) + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + target_compile_definitions(${LIBRARY_NAME} PUBLIC DISABLE_NAMESPACE_STATIC_ASSERT) + endif() -#We move the library binaries to a different path rather than PROJECT_BINARY_DIR -#in the Python wheel -set(TTNN_INSTALL_RPATH - "${PROJECT_BINARY_DIR}/lib" - "$ORIGIN/build/lib" - "$ORIGIN" -) + target_include_directories(${LIBRARY_NAME} PUBLIC "${TTNN_PUBLIC_INCLUDE_DIRS}${SUFFIX}") -#Make sure library built is _ttnn.so and that it can find all it's linked libraries -#ttnn breaks if - fvisibility = hidden, so CXX_VISIBILITY_PRESET set to default -set_target_properties( - ttnn - PROPERTIES - OUTPUT_NAME - "_ttnn" - PREFIX - "" - SUFFIX - ".so" - BUILD_RPATH - "${PROJECT_BINARY_DIR}/tt_metal;${PROJECT_BINARY_DIR}/ttnn" - INSTALL_RPATH - "${TTNN_INSTALL_RPATH}" - CXX_VISIBILITY_PRESET - "default" - ADDITIONAL_CLEAN_FILES - "${PROJECT_SOURCE_DIR}/ttnn/ttnn/_ttnn.so;${PROJECT_SOURCE_DIR}/ttnn/ttnn.egg-info" -) + if(BUILD_PYBIND) + target_link_libraries( + ${LIBRARY_NAME} + PUBLIC + ttnncpp + ${Python3_LIBRARIES} + pybind11::module + ) + else() + target_link_libraries( + ${LIBRARY_NAME} + PUBLIC + ${TTNN_PUBLIC_LINK_LIBRARIES} + ${ALL_TTNN_SUBLIBRARIES} + ttnn_tensor + ttnn_ccl + ttnn_ccl_exp + ) + + target_link_directories(${LIBRARY_NAME} PUBLIC ${TTNN_PUBLIC_LINK_DIRS}) + target_precompile_headers(${LIBRARY_NAME} REUSE_FROM ${PRECOMPILED_HEADER_TARGET}) + endif() + + set_target_properties( + ${LIBRARY_NAME} + PROPERTIES + DEFINE_SYMBOL + "" + ) + + TT_ENABLE_UNITY_BUILD(${LIBRARY_NAME}) + + #We move the library binaries to a different path rather than PROJECT_BINARY_DIR + #in the Python wheel + set(TTNN_INSTALL_RPATH + "${PROJECT_BINARY_DIR}/lib" + "$ORIGIN/build/lib" + ) + + #Make sure library built is _ttnn.so / _ttnnpycpp.so and that it can find all it's linked libraries + #ttnn breaks if - fvisibility = hidden, so CXX_VISIBILITY_PRESET set to default + set_target_properties( + ${LIBRARY_NAME} + PROPERTIES + OUTPUT_NAME + "_${LIBRARY_NAME}" + PREFIX + "" + SUFFIX + ".so" + BUILD_RPATH + "${PROJECT_BINARY_DIR}/tt_metal;${PROJECT_BINARY_DIR}/ttnn" + INSTALL_RPATH + "${TTNN_INSTALL_RPATH}" + CXX_VISIBILITY_PRESET + "default" + ADDITIONAL_CLEAN_FILES + "${PROJECT_SOURCE_DIR}/ttnn/ttnn/_'${LIBRARY_NAME}'.so;${PROJECT_SOURCE_DIR}/ttnn/'${LIBRARY_NAME}'.egg-info" + ) +endfunction() + +build_library("ttnncpp" OFF) + +if(WITH_PYTHON_BINDINGS) + build_library("ttnn" ON) +endif() diff --git a/ttnn/cpp/ttnn/operations/ccl/CMakeLists.txt b/ttnn/cpp/ttnn/operations/ccl/CMakeLists.txt index 4b1ecea7020..0eec1bd1fd3 100644 --- a/ttnn/cpp/ttnn/operations/ccl/CMakeLists.txt +++ b/ttnn/cpp/ttnn/operations/ccl/CMakeLists.txt @@ -1,3 +1,12 @@ +set(CCL_TTNN_SRCS_PYBIND + ${CMAKE_CURRENT_SOURCE_DIR}/ccl_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/all_gather/all_gather_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter/reduce_scatter_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/barrier/barrier_pybind.cpp + CACHE INTERNAL + "CCL sources to reuse in ttnn build" +) + set(CCL_TTNN_SRCS # Common ${CMAKE_CURRENT_SOURCE_DIR}/erisc_datamover_builder.cpp @@ -12,21 +21,17 @@ set(CCL_TTNN_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/common/host/ccl_worker_builder.cpp ${CMAKE_CURRENT_SOURCE_DIR}/common/host/ccl_command_stream_builders.cpp # CCL Ops - ${CMAKE_CURRENT_SOURCE_DIR}/ccl_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/all_gather/all_gather.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather/all_gather_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/all_gather/device/all_gather_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/all_gather/device/multi_core/all_gather_op_multi_core.cpp ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter/device/host/reduce_scatter_full_worker_grid.cpp ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter/device/reduce_scatter_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter/reduce_scatter.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter/reduce_scatter_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter/host/reduce_scatter_worker_builder.cpp ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter/host/reduce_scatter_common.cpp ${CMAKE_CURRENT_SOURCE_DIR}/barrier/device/host/barrier_full_worker_grid.cpp ${CMAKE_CURRENT_SOURCE_DIR}/barrier/device/barrier_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/barrier/barrier.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/barrier/barrier_pybind.cpp CACHE INTERNAL - "CCL sources to reuse in ttnn build" + "CCL sources to reuse in ttnncpp build" ) diff --git a/ttnn/cpp/ttnn/operations/experimental/ccl/CMakeLists.txt b/ttnn/cpp/ttnn/operations/experimental/ccl/CMakeLists.txt index e80883ac5f7..e7bd8bec8cc 100644 --- a/ttnn/cpp/ttnn/operations/experimental/ccl/CMakeLists.txt +++ b/ttnn/cpp/ttnn/operations/experimental/ccl/CMakeLists.txt @@ -1,24 +1,29 @@ +set(CCL_EXPERIMENTAL_TTNN_SRCS_PYBIND + ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_async/all_gather_async_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_matmul/all_gather_matmul_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/all_reduce/all_reduce_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/all_reduce_async/all_reduce_async_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/ccl_experimental_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter_async/reduce_scatter_pybind.cpp + CACHE INTERNAL + "CCL Experimental sources to reuse in ttnn build" +) + set(CCL_EXPERIMENTAL_TTNN_SRCS #Experimental Ops - ${CMAKE_CURRENT_SOURCE_DIR}/ccl_experimental_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_matmul/all_gather_matmul.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_matmul/all_gather_matmul_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_matmul/device/all_gather_matmul_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_matmul/device/multi_core/all_gather_matmul_op_multi_core.cpp ${CMAKE_CURRENT_SOURCE_DIR}/all_reduce/all_reduce.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_reduce/all_reduce_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/all_reduce/device/all_reduce_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter_async/device/reduce_scatter_async_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter_async/device/reduce_scatter_async_program.cpp ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter_async/reduce_scatter.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter_async/reduce_scatter_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_async/all_gather_async.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_async/all_gather_async_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_async/device/all_gather_async_op.cpp ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_async/device/all_gather_async_program.cpp ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_async/device/all_gather_async_program_minimal_variants.cpp ${CMAKE_CURRENT_SOURCE_DIR}/all_reduce_async/all_reduce_async.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_reduce_async/all_reduce_async_pybind.cpp CACHE INTERNAL - "CCL Experimental sources to reuse in ttnn build" + "CCL Experimental sources to reuse in ttnncpp build" ) From a5ea0137d4f2f55e852f399cfbd90d586af66543 Mon Sep 17 00:00:00 2001 From: Diego Gomez Date: Tue, 18 Feb 2025 17:59:28 +0000 Subject: [PATCH 2/8] Improved ttnn CMakeList structure and got rid of sublibraries using cached variables. Now those sublibraries are built in the same way than all the other sublibraries that are part of ttnncpp --- ttnn/CMakeLists.txt | 626 +++++++++++------- ttnn/cpp/ttnn/operations/ccl/CMakeLists.txt | 37 -- .../experimental/ccl/CMakeLists.txt | 29 - ttnn/cpp/ttnn/tensor/CMakeLists.txt | 19 - 4 files changed, 379 insertions(+), 332 deletions(-) delete mode 100644 ttnn/cpp/ttnn/operations/ccl/CMakeLists.txt delete mode 100644 ttnn/cpp/ttnn/operations/experimental/ccl/CMakeLists.txt delete mode 100644 ttnn/cpp/ttnn/tensor/CMakeLists.txt diff --git a/ttnn/CMakeLists.txt b/ttnn/CMakeLists.txt index 08237ae7ea0..71288c6772d 100644 --- a/ttnn/CMakeLists.txt +++ b/ttnn/CMakeLists.txt @@ -1,9 +1,166 @@ +#################################################################################################### +# Build TTNN and TTNNCPP +#################################################################################################### + +################################################## +# Set options +################################################## if(ENABLE_COVERAGE AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") message(STATUS "Enabling code coverage flags for all ttnn targets") add_compile_options(--coverage) add_link_options(--coverage) endif() +################################################## +# Define a method build_library to define all the options and properties for a library +################################################## +function( + build_library + LIBRARY_NAME + SOURCES + LINK_DIRECTORIES + INCLUDE_DIRS + TARGET_LINK_LIBRARIES +) + ################################################## + # Declare and define the library + ################################################## + + #todo: Ideally declaring the library should be the first thing to do, sadly making it shared requires to add sources + string(TOUPPER "${LIBRARY_NAME}" LIBRARY_NAME_ALIAS) + add_library(${LIBRARY_NAME} SHARED ${SOURCES}) + add_library(Metalium::${LIBRARY_NAME_ALIAS} ALIAS ${LIBRARY_NAME}) + target_include_directories(${LIBRARY_NAME} PUBLIC "${INCLUDE_DIRS}") + target_link_directories(${LIBRARY_NAME} PUBLIC ${LINK_DIRECTORIES}) + + if("${build_library}" STREQUAL "ttnncpp") + target_precompile_headers(${LIBRARY_NAME} REUSE_FROM ${PRECOMPILED_HEADER_TARGET}) + endif() + + target_link_libraries(${LIBRARY_NAME} PUBLIC ${TARGET_LINK_LIBRARIES}) + + # Set compile options for the library + target_compile_options( + ${LIBRARY_NAME} + PUBLIC + -MP + -Wno-int-to-pointer-cast + -fno-var-tracking + ) + + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + target_compile_definitions(${LIBRARY_NAME} PUBLIC DISABLE_NAMESPACE_STATIC_ASSERT) + endif() + + set_target_properties( + ${LIBRARY_NAME} + PROPERTIES + DEFINE_SYMBOL + "" + ) + + TT_ENABLE_UNITY_BUILD(${LIBRARY_NAME}) + + #We move the library binaries to a different path rather than PROJECT_BINARY_DIR + #in the Python wheel + set(TTNN_INSTALL_RPATH + "${PROJECT_BINARY_DIR}/lib" + "$ORIGIN/build/lib" + "$ORIGIN" + ) + + #Make sure library built is _ttnn.so / _ttnnpycpp.so and that it can find all it's linked libraries + #ttnn breaks if - fvisibility = hidden, so CXX_VISIBILITY_PRESET set to default + set_target_properties( + ${LIBRARY_NAME} + PROPERTIES + OUTPUT_NAME + "_${LIBRARY_NAME}" + PREFIX + "" + SUFFIX + ".so" + BUILD_RPATH + "${PROJECT_BINARY_DIR}/tt_metal;${PROJECT_BINARY_DIR}/ttnn" + INSTALL_RPATH + "${TTNN_INSTALL_RPATH}" + CXX_VISIBILITY_PRESET + "default" + ADDITIONAL_CLEAN_FILES + "${PROJECT_SOURCE_DIR}/ttnn/ttnn/_'${LIBRARY_NAME}'.so;${PROJECT_SOURCE_DIR}/ttnn/'${LIBRARY_NAME}'.egg-info" + ) +endfunction() + +################################################## +# Define auxiliar functions +################################################## +function(use_precompiled_header TARGET) + if("${PRECOMPILED_HEADER_TARGET}" STREQUAL "") + set(PRECOMPILED_HEADER_TARGET "${TARGET}" PARENT_SCOPE) + target_precompile_headers(${TARGET} PUBLIC ${TTNN_PRECOMPILED_HEADERS}) + else() + target_precompile_headers(${TARGET} REUSE_FROM ${PRECOMPILED_HEADER_TARGET}) + endif() +endfunction() + +function(add_ttnn_sublibrary SUBLIBRARY_NAME) + if(ENABLE_TTNN_SHARED_SUBLIBS) + add_library(${SUBLIBRARY_NAME} SHARED ${ARGN}) + install( + TARGETS + ${SUBLIBRARY_NAME} + LIBRARY + DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE + DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT tt_build_artifacts + ) + else() + add_library(${SUBLIBRARY_NAME} OBJECT ${ARGN}) + endif() + + TT_ENABLE_UNITY_BUILD(${SUBLIBRARY_NAME}) + target_include_directories(${SUBLIBRARY_NAME} PUBLIC ${TTNN_PUBLIC_INCLUDE_DIRS}) + target_link_libraries(${SUBLIBRARY_NAME} PUBLIC ${TTNN_PUBLIC_LINK_LIBRARIES}) + target_link_directories(${SUBLIBRARY_NAME} PUBLIC ${TTNN_PUBLIC_LINK_DIRS}) + use_precompiled_header(${SUBLIBRARY_NAME}) + set(PRECOMPILED_HEADER_TARGET "${PRECOMPILED_HEADER_TARGET}" PARENT_SCOPE) + target_compile_options( + ${SUBLIBRARY_NAME} + PRIVATE + -MP + -Wno-int-to-pointer-cast + -fno-var-tracking + -ffunction-sections + ) + set_target_properties( + ${SUBLIBRARY_NAME} + PROPERTIES + DEFINE_SYMBOL + "" + ) + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + target_compile_definitions(${SUBLIBRARY_NAME} PRIVATE DISABLE_NAMESPACE_STATIC_ASSERT) + target_link_options( + ${SUBLIBRARY_NAME} + PRIVATE + "-Wl,--gc-sections" + "-Wl,--no-as-needed" + ) + endif() +endfunction() + +################################################## +# Collect all the files and folders that TTNNCPP will use +################################################## +set(TTNN_PUBLIC_INCLUDE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR} # ${PROJECT_SOURCE_DIR}/ttnn + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/deprecated # symlink to tt_eager; should become native folder once merge complete + ${CMAKE_CURRENT_SOURCE_DIR}/cpp + ${CMAKE_CURRENT_BINARY_DIR}/flatbuffers + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/experimental/tt_lib +) + set(TTNN_BASE_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/async_runtime.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/config.cpp @@ -25,6 +182,68 @@ set(TTNN_BASE_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/sharding_addrgen_helper.cpp ) +set(TENSOR_SRC + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/tensor_impl.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/tensor.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/tensor_ops.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/types.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/storage.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/tensor_spec.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/tensor_utils.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/serialization.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/shape/shape.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/layout/alignment.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/layout/page_config.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/layout/tensor_layout.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/xtensor/partition.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/flatbuffer/tensor_types_to_flatbuffer.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/flatbuffer/tensor_types_from_flatbuffer.cpp +) + +set(CCL_SRC + # Common + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/erisc_datamover_builder.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/ccl_op_fusion.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/ccl_common.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/ccl_host_datastructures.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/common/types/ccl_types_args_emitters.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/common/host/command_backend_runtime_args_overrider.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/common/uops/ccl_command.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/common/uops/command_lowering.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/common/uops/ccl_host_commands.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/common/host/ccl_worker_builder.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/common/host/ccl_command_stream_builders.cpp + # CCL Ops + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/all_gather/all_gather.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/all_gather/device/all_gather_op.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/all_gather/device/multi_core/all_gather_op_multi_core.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/reduce_scatter/device/host/reduce_scatter_full_worker_grid.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/reduce_scatter/device/reduce_scatter_op.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/reduce_scatter/reduce_scatter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/reduce_scatter/host/reduce_scatter_worker_builder.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/reduce_scatter/host/reduce_scatter_common.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/barrier/device/host/barrier_full_worker_grid.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/barrier/device/barrier_op.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/barrier/barrier.cpp +) + +set(CCL_SRC_EXPERIMENTAL + #Experimental Ops + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/all_gather_matmul/all_gather_matmul.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/all_gather_matmul/device/all_gather_matmul_op.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/all_gather_matmul/device/multi_core/all_gather_matmul_op_multi_core.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/all_reduce/all_reduce.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/all_reduce/device/all_reduce_op.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/reduce_scatter_async/device/reduce_scatter_async_op.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/reduce_scatter_async/device/reduce_scatter_async_program.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/reduce_scatter_async/reduce_scatter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/all_gather_async/all_gather_async.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/all_gather_async/device/all_gather_async_op.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/all_gather_async/device/all_gather_async_program.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/all_gather_async/device/all_gather_async_program_minimal_variants.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/all_reduce_async/all_reduce_async.cpp +) + set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/core/compute_kernel/compute_kernel_config.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/conv/conv2d/conv2d.cpp @@ -482,6 +701,97 @@ set(TTNN_OP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/reshape/view.cpp ) +set(TTNN_SRC) +list( + APPEND + TTNN_SRC + ${TTNN_BASE_SRCS} + ${TTNN_OP_SRCS} + ${TENSOR_SRC} + ${CCL_SRC} + ${CCL_SRC_EXPERIMENTAL} +) + +GENERATE_FBS_HEADER(${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/flatbuffer/tensor_types.fbs) +list(APPEND TTNN_SRC ${FBS_GENERATED_HEADER_FILE}) + +set(TTNN_SUBLIBRARIES + ttnn/operations/ccl/ + ttnn/operations/conv + ttnn/operations/core + ttnn/operations/data_movement + ttnn/operations/eltwise/binary + ttnn/operations/eltwise/binary_backward + ttnn/operations/bernoulli + ttnn/operations/eltwise/complex + ttnn/operations/eltwise/complex_binary + ttnn/operations/eltwise/complex_unary + ttnn/operations/eltwise/complex_unary_backward + ttnn/operations/eltwise/ternary + ttnn/operations/eltwise/ternary_backward + ttnn/operations/eltwise/unary + ttnn/operations/eltwise/unary_backward + ttnn/operations/embedding_backward + ttnn/operations/embedding + ttnn/operations/examples + ttnn/operations/experimental/auto_format + ttnn/operations/experimental/ccl + ttnn/operations/experimental/cnn + ttnn/operations/experimental/copy + ttnn/operations/experimental/experimental_pybind + ttnn/operations/experimental/matmul + ttnn/operations/experimental/paged_cache + ttnn/operations/experimental/plusone + ttnn/operations/experimental/reduction + ttnn/operations/experimental/ssm + ttnn/operations/experimental/transformer + ttnn/operations/experimental/dropout + ttnn/operations/experimental/reshape + ttnn/operations/full_like + ttnn/operations/full + ttnn/operations/index_fill + ttnn/operations/kv_cache + ttnn/operations/loss + ttnn/operations/matmul + ttnn/operations/prefetcher + ttnn/operations/moreh + ttnn/operations/normalization + ttnn/operations/pool + ttnn/operations/reduction + ttnn/operations/sliding_window + ttnn/operations/transformer + ttnn/operations/uniform + ttnn/tensor +) + +set(TTNN_PUBLIC_LINK_LIBRARIES + metal_common_libs + Metalium::Metal + Metalium::Metal::STL + xtensor + xtensor-blas + xtl + FlatBuffers::FlatBuffers +) + +set(TTNN_PRECOMPILED_HEADERS + ${PROJECT_SOURCE_DIR}/tt_metal/api/tt-metalium/reflection.hpp + cpp/ttnn/operation.hpp + cpp/ttnn/any_device.hpp + ${PROJECT_SOURCE_DIR}/tt_metal/third_party/tracy/public/tracy/Tracy.hpp + + + + + + +) + +set(PRECOMPILED_HEADER_TARGET "") + +################################################## +# Collect all the files and folders that TTNN will use +################################################## set(TTNN_SRC_PYBIND ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/distributed/distributed_pybind.cpp ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/graph/graph_pybind.cpp @@ -610,99 +920,24 @@ set(TTNN_SRC_PYBIND ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/uniform/uniform_pybind.cpp ) -set(TTNN_SUBLIBRARIES - ttnn/operations/ccl/ - ttnn/operations/conv - ttnn/operations/core - ttnn/operations/data_movement - ttnn/operations/eltwise/binary - ttnn/operations/eltwise/binary_backward - ttnn/operations/bernoulli - ttnn/operations/eltwise/complex - ttnn/operations/eltwise/complex_binary - ttnn/operations/eltwise/complex_unary - ttnn/operations/eltwise/complex_unary_backward - ttnn/operations/eltwise/ternary - ttnn/operations/eltwise/ternary_backward - ttnn/operations/eltwise/unary - ttnn/operations/eltwise/unary_backward - ttnn/operations/embedding_backward - ttnn/operations/embedding - ttnn/operations/examples - ttnn/operations/experimental/auto_format - ttnn/operations/experimental/ccl - ttnn/operations/experimental/cnn - ttnn/operations/experimental/copy - ttnn/operations/experimental/experimental_pybind - ttnn/operations/experimental/matmul - ttnn/operations/experimental/paged_cache - ttnn/operations/experimental/plusone - ttnn/operations/experimental/reduction - ttnn/operations/experimental/ssm - ttnn/operations/experimental/transformer - ttnn/operations/experimental/dropout - ttnn/operations/experimental/reshape - ttnn/operations/full_like - ttnn/operations/full - ttnn/operations/index_fill - ttnn/operations/kv_cache - ttnn/operations/loss - ttnn/operations/matmul - ttnn/operations/prefetcher - ttnn/operations/moreh - ttnn/operations/normalization - ttnn/operations/pool - ttnn/operations/reduction - ttnn/operations/sliding_window - ttnn/operations/transformer - ttnn/operations/uniform +set(CCL_EXPERIMENTAL_TTNN_SRCS_PYBIND + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/all_gather_async/all_gather_async_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/all_gather_matmul/all_gather_matmul_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/all_reduce/all_reduce_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/all_reduce_async/all_reduce_async_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/ccl_experimental_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl/reduce_scatter_async/reduce_scatter_pybind.cpp ) -set(TTNN_SRC) -list(APPEND TTNN_SRC ${TTNN_OP_SRCS}) - -### Setup TTNN as a shared library with optional Python bindings -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/experimental/ccl) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/deprecated) - -set(TTNN_PUBLIC_INCLUDE_DIRS - ${CMAKE_CURRENT_SOURCE_DIR} # ${PROJECT_SOURCE_DIR}/ttnn - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/deprecated # symlink to tt_eager; should become native folder once merge complete - ${CMAKE_CURRENT_SOURCE_DIR}/cpp - ${CMAKE_CURRENT_BINARY_DIR}/flatbuffers - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/experimental/tt_lib -) - -set(TTNN_PUBLIC_LINK_LIBRARIES - metal_common_libs - Metalium::Metal - Metalium::Metal::STL - xtensor - xtensor-blas - xtl - FlatBuffers::FlatBuffers -) - -set(TTNN_PRECOMPILED_HEADERS - ${PROJECT_SOURCE_DIR}/tt_metal/api/tt-metalium/reflection.hpp - cpp/ttnn/operation.hpp - cpp/ttnn/any_device.hpp - ${PROJECT_SOURCE_DIR}/tt_metal/third_party/tracy/public/tracy/Tracy.hpp - - - - - - +set(CCL_TTNN_SRCS_PYBIND + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/ccl_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/all_gather/all_gather_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/reduce_scatter/reduce_scatter_pybind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/operations/ccl/barrier/barrier_pybind.cpp ) -set(TTNN_PUBLIC_INCLUDE_DIRS_PYBIND) - #TODO : should be using pybind11_add_module, but right now it introduces many build problems #pybinds will always be built as a shared library - list( APPEND TTNN_SRC_PYBIND @@ -718,69 +953,28 @@ list( ${TT_LIB_SRCS} ) # TT_LIB_SRCS from tt_eager/tt_lib/CMakeLists.txt for python bindings -list(APPEND TTNN_PUBLIC_INCLUDE_DIRS_PYBIND ${Python3_INCLUDE_DIRS}) - -function(use_precompiled_header TARGET) - if("${PRECOMPILED_HEADER_TARGET}" STREQUAL "") - set(PRECOMPILED_HEADER_TARGET "${TARGET}" PARENT_SCOPE) - target_precompile_headers(${TARGET} PUBLIC ${TTNN_PRECOMPILED_HEADERS}) - else() - target_precompile_headers(${TARGET} REUSE_FROM ${PRECOMPILED_HEADER_TARGET}) - endif() -endfunction() - -set(PRECOMPILED_HEADER_TARGET "") +set(TTNN_PUBLIC_INCLUDE_DIRS_PYBIND ${Python3_INCLUDE_DIRS}) -function(add_ttnn_sublibrary SUBLIBRARY_NAME) - if(ENABLE_TTNN_SHARED_SUBLIBS) - add_library(${SUBLIBRARY_NAME} SHARED ${ARGN}) - install( - TARGETS - ${SUBLIBRARY_NAME} - LIBRARY - DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE - DESTINATION ${CMAKE_INSTALL_LIBDIR} - COMPONENT tt_build_artifacts - ) - else() - add_library(${SUBLIBRARY_NAME} OBJECT ${ARGN}) - endif() - TT_ENABLE_UNITY_BUILD(${SUBLIBRARY_NAME}) - target_include_directories(${SUBLIBRARY_NAME} PUBLIC ${TTNN_PUBLIC_INCLUDE_DIRS}) - target_link_libraries(${SUBLIBRARY_NAME} PUBLIC ${TTNN_PUBLIC_LINK_LIBRARIES}) - target_link_directories(${SUBLIBRARY_NAME} PUBLIC ${TTNN_PUBLIC_LINK_DIRS}) - use_precompiled_header(${SUBLIBRARY_NAME}) - set(PRECOMPILED_HEADER_TARGET "${PRECOMPILED_HEADER_TARGET}" PARENT_SCOPE) - target_compile_options( - ${SUBLIBRARY_NAME} - PRIVATE - -MP - -Wno-int-to-pointer-cast - -fno-var-tracking - -ffunction-sections - ) - set_target_properties( - ${SUBLIBRARY_NAME} - PROPERTIES - DEFINE_SYMBOL - "" - ) - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - target_compile_definitions(${SUBLIBRARY_NAME} PRIVATE DISABLE_NAMESPACE_STATIC_ASSERT) - target_link_options( - ${SUBLIBRARY_NAME} - PRIVATE - "-Wl,--gc-sections" - "-Wl,--no-as-needed" - ) - endif() -endfunction() +################################################## +# Add all subdirectories +################################################## +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/deprecated) +################################################## +# Handle sublibraries +################################################## foreach(SUBLIBRARY_PATH ${TTNN_SUBLIBRARIES}) set(SUBLIBRARY_SRCS ${TTNN_SRC}) list(FILTER SUBLIBRARY_SRCS INCLUDE REGEX "${SUBLIBRARY_PATH}") list(FILTER TTNN_SRC EXCLUDE REGEX "${SUBLIBRARY_PATH}") + # Remove files that contain 'pybind' in their name + list(FILTER SUBLIBRARY_SRCS EXCLUDE REGEX ".*[Pp]ybind.*") + # Ensure FBS_GENERATED_HEADER_FILE is not excluded + # since that path would be detected on previous regex + if(FBS_GENERATED_HEADER_FILE) + list(APPEND SUBLIBRARY_SRCS ${FBS_GENERATED_HEADER_FILE}) + endif() + if(SUBLIBRARY_SRCS) string(REPLACE "/" "_" SUBLIBRARY_NAME ${SUBLIBRARY_PATH}) add_ttnn_sublibrary(${SUBLIBRARY_NAME} ${SUBLIBRARY_SRCS}) @@ -791,114 +985,52 @@ endforeach( ${TTNN_SUBLIBRARIES} ) -GENERATE_FBS_HEADER(${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/tensor/flatbuffer/tensor_types.fbs) -list(APPEND TENSOR_SRCS ${FBS_GENERATED_HEADER_FILE}) -add_ttnn_sublibrary(ttnn_tensor ${TENSOR_SRCS}) -add_ttnn_sublibrary(ttnn_ccl ${CCL_TTNN_SRCS}) -add_ttnn_sublibrary(ttnn_ccl_exp ${CCL_EXPERIMENTAL_TTNN_SRCS}) - -function(build_library LIBRARY_NAME BUILD_PYBIND) - if(BUILD_PYBIND) - set(SUFFIX "_PYBIND") - add_library( - ${LIBRARY_NAME} - SHARED - ${SRC_PYBIND} - ${TTNN_SRC_PYBIND} - ${CCL_TTNN_SRCS_PYBIND} - ${CCL_EXPERIMENTAL_TTNN_SRCS_PYBIND} - ${Python3_LIBRARY_DIRS} - ) - target_link_directories(${LIBRARY_NAME} PUBLIC ${TTNN_PUBLIC_LINK_DIRS_PYBIND}) - else() - add_library( - ${LIBRARY_NAME} - SHARED - ${TTNN_BASE_SRCS} - ${QUEUE_SRCS} - ) - endif() - - string(TOUPPER "${LIBRARY_NAME}" LIBRARY_NAME_ALIAS) - add_library(Metalium::${LIBRARY_NAME_ALIAS} ALIAS ${LIBRARY_NAME}) - - target_compile_options( - ${LIBRARY_NAME} - PUBLIC - -MP - -Wno-int-to-pointer-cast - -fno-var-tracking - ) - - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - target_compile_definitions(${LIBRARY_NAME} PUBLIC DISABLE_NAMESPACE_STATIC_ASSERT) - endif() - - target_include_directories(${LIBRARY_NAME} PUBLIC "${TTNN_PUBLIC_INCLUDE_DIRS}${SUFFIX}") - - if(BUILD_PYBIND) - target_link_libraries( - ${LIBRARY_NAME} - PUBLIC - ttnncpp - ${Python3_LIBRARIES} - pybind11::module - ) - else() - target_link_libraries( - ${LIBRARY_NAME} - PUBLIC - ${TTNN_PUBLIC_LINK_LIBRARIES} - ${ALL_TTNN_SUBLIBRARIES} - ttnn_tensor - ttnn_ccl - ttnn_ccl_exp - ) - - target_link_directories(${LIBRARY_NAME} PUBLIC ${TTNN_PUBLIC_LINK_DIRS}) - target_precompile_headers(${LIBRARY_NAME} REUSE_FROM ${PRECOMPILED_HEADER_TARGET}) - endif() +################################################## +# Prepare the variables to define the library to be built +################################################## +set(SOURCES_PYBIND + ${SRC_PYBIND} + ${TTNN_SRC_PYBIND} + ${CCL_TTNN_SRCS_PYBIND} + ${CCL_EXPERIMENTAL_TTNN_SRCS_PYBIND} + ${Python3_LIBRARY_DIRS} +) - set_target_properties( - ${LIBRARY_NAME} - PROPERTIES - DEFINE_SYMBOL - "" - ) +set(SOURCES_CPP + ${TTNN_SRC} + ${QUEUE_SRCS} +) - TT_ENABLE_UNITY_BUILD(${LIBRARY_NAME}) +set(TARGET_LINK_LIBRARIES_PYBIND + ttnncpp + ${Python3_LIBRARIES} + pybind11::module +) - #We move the library binaries to a different path rather than PROJECT_BINARY_DIR - #in the Python wheel - set(TTNN_INSTALL_RPATH - "${PROJECT_BINARY_DIR}/lib" - "$ORIGIN/build/lib" - ) +set(TARGET_LINK_LIBRARIES_CPP + ${TTNN_PUBLIC_LINK_LIBRARIES} + ${ALL_TTNN_SUBLIBRARIES} +) - #Make sure library built is _ttnn.so / _ttnnpycpp.so and that it can find all it's linked libraries - #ttnn breaks if - fvisibility = hidden, so CXX_VISIBILITY_PRESET set to default - set_target_properties( - ${LIBRARY_NAME} - PROPERTIES - OUTPUT_NAME - "_${LIBRARY_NAME}" - PREFIX - "" - SUFFIX - ".so" - BUILD_RPATH - "${PROJECT_BINARY_DIR}/tt_metal;${PROJECT_BINARY_DIR}/ttnn" - INSTALL_RPATH - "${TTNN_INSTALL_RPATH}" - CXX_VISIBILITY_PRESET - "default" - ADDITIONAL_CLEAN_FILES - "${PROJECT_SOURCE_DIR}/ttnn/ttnn/_'${LIBRARY_NAME}'.so;${PROJECT_SOURCE_DIR}/ttnn/'${LIBRARY_NAME}'.egg-info" - ) -endfunction() +list(APPEND TTNN_PUBLIC_INCLUDE_DIRS_PYBIND ${TTNN_PUBLIC_INCLUDE_DIRS}) -build_library("ttnncpp" OFF) +################################################## +# Build the libraries! +################################################## +build_library( + "ttnncpp" + "${SOURCES_CPP}" + "${TTNN_PUBLIC_LINK_DIRS}" + "${TTNN_PUBLIC_INCLUDE_DIRS}" + "${TARGET_LINK_LIBRARIES_CPP}" +) if(WITH_PYTHON_BINDINGS) - build_library("ttnn" ON) + build_library( + "ttnn" + "${SOURCES_PYBIND}" + "${TTNN_PUBLIC_LINK_DIRS_PYBIND}" + "${TTNN_PUBLIC_INCLUDE_DIRS_PYBIND}" + "${TARGET_LINK_LIBRARIES_PYBIND}" + ) endif() diff --git a/ttnn/cpp/ttnn/operations/ccl/CMakeLists.txt b/ttnn/cpp/ttnn/operations/ccl/CMakeLists.txt deleted file mode 100644 index 0eec1bd1fd3..00000000000 --- a/ttnn/cpp/ttnn/operations/ccl/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -set(CCL_TTNN_SRCS_PYBIND - ${CMAKE_CURRENT_SOURCE_DIR}/ccl_pybind.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather/all_gather_pybind.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter/reduce_scatter_pybind.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/barrier/barrier_pybind.cpp - CACHE INTERNAL - "CCL sources to reuse in ttnn build" -) - -set(CCL_TTNN_SRCS - # Common - ${CMAKE_CURRENT_SOURCE_DIR}/erisc_datamover_builder.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/ccl_op_fusion.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/ccl_common.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/ccl_host_datastructures.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/common/types/ccl_types_args_emitters.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/common/host/command_backend_runtime_args_overrider.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/common/uops/ccl_command.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/common/uops/command_lowering.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/common/uops/ccl_host_commands.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/common/host/ccl_worker_builder.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/common/host/ccl_command_stream_builders.cpp - # CCL Ops - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather/all_gather.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather/device/all_gather_op.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather/device/multi_core/all_gather_op_multi_core.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter/device/host/reduce_scatter_full_worker_grid.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter/device/reduce_scatter_op.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter/reduce_scatter.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter/host/reduce_scatter_worker_builder.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter/host/reduce_scatter_common.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/barrier/device/host/barrier_full_worker_grid.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/barrier/device/barrier_op.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/barrier/barrier.cpp - CACHE INTERNAL - "CCL sources to reuse in ttnncpp build" -) diff --git a/ttnn/cpp/ttnn/operations/experimental/ccl/CMakeLists.txt b/ttnn/cpp/ttnn/operations/experimental/ccl/CMakeLists.txt deleted file mode 100644 index e7bd8bec8cc..00000000000 --- a/ttnn/cpp/ttnn/operations/experimental/ccl/CMakeLists.txt +++ /dev/null @@ -1,29 +0,0 @@ -set(CCL_EXPERIMENTAL_TTNN_SRCS_PYBIND - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_async/all_gather_async_pybind.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_matmul/all_gather_matmul_pybind.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_reduce/all_reduce_pybind.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_reduce_async/all_reduce_async_pybind.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/ccl_experimental_pybind.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter_async/reduce_scatter_pybind.cpp - CACHE INTERNAL - "CCL Experimental sources to reuse in ttnn build" -) - -set(CCL_EXPERIMENTAL_TTNN_SRCS - #Experimental Ops - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_matmul/all_gather_matmul.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_matmul/device/all_gather_matmul_op.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_matmul/device/multi_core/all_gather_matmul_op_multi_core.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_reduce/all_reduce.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_reduce/device/all_reduce_op.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter_async/device/reduce_scatter_async_op.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter_async/device/reduce_scatter_async_program.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter_async/reduce_scatter.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_async/all_gather_async.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_async/device/all_gather_async_op.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_async/device/all_gather_async_program.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_gather_async/device/all_gather_async_program_minimal_variants.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/all_reduce_async/all_reduce_async.cpp - CACHE INTERNAL - "CCL Experimental sources to reuse in ttnncpp build" -) diff --git a/ttnn/cpp/ttnn/tensor/CMakeLists.txt b/ttnn/cpp/ttnn/tensor/CMakeLists.txt deleted file mode 100644 index 6d9371fa738..00000000000 --- a/ttnn/cpp/ttnn/tensor/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -set(TENSOR_SRCS - ${CMAKE_CURRENT_SOURCE_DIR}/tensor_impl.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/tensor.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/tensor_ops.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/types.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/storage.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/tensor_spec.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/tensor_utils.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/serialization.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/shape/shape.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/layout/alignment.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/layout/page_config.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/layout/tensor_layout.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/xtensor/partition.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/flatbuffer/tensor_types_to_flatbuffer.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/flatbuffer/tensor_types_from_flatbuffer.cpp - CACHE INTERNAL - "Tensor sources to reuse in ttnn build" -) From d77e78e31eef8e84e5db9ded896ad304a6f7bd18 Mon Sep 17 00:00:00 2001 From: Diego Gomez Date: Wed, 19 Feb 2025 19:13:37 +0000 Subject: [PATCH 3/8] Changed Metalium::TTNN to TT::NN::TTNN as suggested, also fixed the build --- tt-train/sources/ttml/CMakeLists.txt | 6 +++--- ttnn/CMakeLists.txt | 15 +++++++-------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/tt-train/sources/ttml/CMakeLists.txt b/tt-train/sources/ttml/CMakeLists.txt index 666196e7a18..bbb1a23f321 100644 --- a/tt-train/sources/ttml/CMakeLists.txt +++ b/tt-train/sources/ttml/CMakeLists.txt @@ -66,9 +66,9 @@ if(NOT TARGET Metalium::Metal) message(FATAL_ERROR "libtt_metal.so not found in ${METALIUM_LIB_PATH}") endif() if(TTNN_LIBRARY) - add_library(Metalium::TTNN SHARED IMPORTED) + add_library(TT::NN SHARED IMPORTED) set_target_properties( - Metalium::TTNN + TT::NN::TTNN PROPERTIES IMPORTED_LOCATION "${TTNN_LIBRARY}" @@ -101,7 +101,7 @@ target_link_libraries( pthread atomic Metalium::Metal - Metalium::TTNN + TT::NN::TTNN Python::Python fmt::fmt-header-only magic_enum::magic_enum diff --git a/ttnn/CMakeLists.txt b/ttnn/CMakeLists.txt index 71288c6772d..76c9b152301 100644 --- a/ttnn/CMakeLists.txt +++ b/ttnn/CMakeLists.txt @@ -29,7 +29,7 @@ function( #todo: Ideally declaring the library should be the first thing to do, sadly making it shared requires to add sources string(TOUPPER "${LIBRARY_NAME}" LIBRARY_NAME_ALIAS) add_library(${LIBRARY_NAME} SHARED ${SOURCES}) - add_library(Metalium::${LIBRARY_NAME_ALIAS} ALIAS ${LIBRARY_NAME}) + add_library(TT::NN::${LIBRARY_NAME_ALIAS} ALIAS ${LIBRARY_NAME}) target_include_directories(${LIBRARY_NAME} PUBLIC "${INCLUDE_DIRS}") target_link_directories(${LIBRARY_NAME} PUBLIC ${LINK_DIRECTORIES}) @@ -967,16 +967,15 @@ foreach(SUBLIBRARY_PATH ${TTNN_SUBLIBRARIES}) set(SUBLIBRARY_SRCS ${TTNN_SRC}) list(FILTER SUBLIBRARY_SRCS INCLUDE REGEX "${SUBLIBRARY_PATH}") list(FILTER TTNN_SRC EXCLUDE REGEX "${SUBLIBRARY_PATH}") - # Remove files that contain 'pybind' in their name - list(FILTER SUBLIBRARY_SRCS EXCLUDE REGEX ".*[Pp]ybind.*") - # Ensure FBS_GENERATED_HEADER_FILE is not excluded - # since that path would be detected on previous regex - if(FBS_GENERATED_HEADER_FILE) - list(APPEND SUBLIBRARY_SRCS ${FBS_GENERATED_HEADER_FILE}) - endif() if(SUBLIBRARY_SRCS) string(REPLACE "/" "_" SUBLIBRARY_NAME ${SUBLIBRARY_PATH}) + + # Append FBS_GENERATED_HEADER_FILE only if the sublibrary is "tt_tensor" + if(${SUBLIBRARY_NAME} STREQUAL "ttnn_tensor") + list(APPEND SUBLIBRARY_SRCS ${FBS_GENERATED_HEADER_FILE}) + endif() + add_ttnn_sublibrary(${SUBLIBRARY_NAME} ${SUBLIBRARY_SRCS}) list(APPEND ALL_TTNN_SUBLIBRARIES ${SUBLIBRARY_NAME}) endif() From bc48ef5fc35a4a4d74e74654e257274d7fb9bc7d Mon Sep 17 00:00:00 2001 From: Diego Gomez Date: Thu, 20 Feb 2025 15:50:03 +0000 Subject: [PATCH 4/8] Changed ttnn to link the backend statically if we care about python bindings, otherwise the backend will be a dynamic library, so the user can choose the best scenario without having another level of indirection in the happy path --- build_metal.sh | 2 +- ttnn/CMakeLists.txt | 91 +++++++++++++++++++++++++++++---------------- 2 files changed, 59 insertions(+), 34 deletions(-) diff --git a/build_metal.sh b/build_metal.sh index 14bbaa81b2b..d60e655a59f 100755 --- a/build_metal.sh +++ b/build_metal.sh @@ -39,7 +39,7 @@ show_help() { echo " --toolchain-path Set path to CMake toolchain file." echo " --configure-only Only configure the project, do not build." echo " --enable-coverage Instrument the binaries for code coverage." - echo " --without-python-bindings Disable Python bindings, Enabled by default" + echo " --without-python-bindings Disable Python bindings (ttnncpp will be available as standalone library, otherwise ttnn will include the cpp backend and the python bindings), Enabled by default" } clean() { diff --git a/ttnn/CMakeLists.txt b/ttnn/CMakeLists.txt index 76c9b152301..8b740c5602c 100644 --- a/ttnn/CMakeLists.txt +++ b/ttnn/CMakeLists.txt @@ -21,6 +21,7 @@ function( LINK_DIRECTORIES INCLUDE_DIRS TARGET_LINK_LIBRARIES + DYNAMIC_LIBRARY ) ################################################## # Declare and define the library @@ -28,7 +29,12 @@ function( #todo: Ideally declaring the library should be the first thing to do, sadly making it shared requires to add sources string(TOUPPER "${LIBRARY_NAME}" LIBRARY_NAME_ALIAS) - add_library(${LIBRARY_NAME} SHARED ${SOURCES}) + if(DYNAMIC_LIBRARY) + add_library(${LIBRARY_NAME} SHARED ${SOURCES}) + else() + add_library(${LIBRARY_NAME} STATIC ${SOURCES}) + endif() + add_library(TT::NN::${LIBRARY_NAME_ALIAS} ALIAS ${LIBRARY_NAME}) target_include_directories(${LIBRARY_NAME} PUBLIC "${INCLUDE_DIRS}") target_link_directories(${LIBRARY_NAME} PUBLIC ${LINK_DIRECTORIES}) @@ -69,26 +75,28 @@ function( "$ORIGIN" ) - #Make sure library built is _ttnn.so / _ttnnpycpp.so and that it can find all it's linked libraries - #ttnn breaks if - fvisibility = hidden, so CXX_VISIBILITY_PRESET set to default - set_target_properties( - ${LIBRARY_NAME} - PROPERTIES - OUTPUT_NAME - "_${LIBRARY_NAME}" - PREFIX - "" - SUFFIX - ".so" - BUILD_RPATH - "${PROJECT_BINARY_DIR}/tt_metal;${PROJECT_BINARY_DIR}/ttnn" - INSTALL_RPATH - "${TTNN_INSTALL_RPATH}" - CXX_VISIBILITY_PRESET - "default" - ADDITIONAL_CLEAN_FILES - "${PROJECT_SOURCE_DIR}/ttnn/ttnn/_'${LIBRARY_NAME}'.so;${PROJECT_SOURCE_DIR}/ttnn/'${LIBRARY_NAME}'.egg-info" - ) + if(DYNAMIC_LIBRARY) + #Make sure library built is _ttnn.so / _ttnnpycpp.so and that it can find all it's linked libraries + #ttnn breaks if - fvisibility = hidden, so CXX_VISIBILITY_PRESET set to default + set_target_properties( + ${LIBRARY_NAME} + PROPERTIES + OUTPUT_NAME + "_${LIBRARY_NAME}" + PREFIX + "" + SUFFIX + ".so" + BUILD_RPATH + "${PROJECT_BINARY_DIR}/tt_metal;${PROJECT_BINARY_DIR}/ttnn" + INSTALL_RPATH + "${TTNN_INSTALL_RPATH}" + CXX_VISIBILITY_PRESET + "default" + ADDITIONAL_CLEAN_FILES + "${PROJECT_SOURCE_DIR}/ttnn/ttnn/_'${LIBRARY_NAME}'.so;${PROJECT_SOURCE_DIR}/ttnn/'${LIBRARY_NAME}'.egg-info" + ) + endif() endfunction() ################################################## @@ -155,10 +163,8 @@ endfunction() ################################################## set(TTNN_PUBLIC_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} # ${PROJECT_SOURCE_DIR}/ttnn - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/deprecated # symlink to tt_eager; should become native folder once merge complete ${CMAKE_CURRENT_SOURCE_DIR}/cpp ${CMAKE_CURRENT_BINARY_DIR}/flatbuffers - ${CMAKE_CURRENT_SOURCE_DIR}/cpp/ttnn/experimental/tt_lib ) set(TTNN_BASE_SRCS @@ -1016,20 +1022,39 @@ list(APPEND TTNN_PUBLIC_INCLUDE_DIRS_PYBIND ${TTNN_PUBLIC_INCLUDE_DIRS}) ################################################## # Build the libraries! ################################################## + +set(BUILD_DYNAMIC_LIB ON) +if(WITH_PYTHON_BINDINGS) + #ttnncpp will be static when building python bindings + set(BUILD_DYNAMIC_LIB OFF) +endif() + +#there are two ways to build TTNN +# 1) Without Python bindings +# ttnncpp will be a dynamic library that can be linked to any project +# 2) With python bindings +# ttnn will be a dynamic library with ttnncpp statically linked to it +# so if a user wants to consume ttnncpp for a project but also is interested on having +# ttnn as well, it should build it first without python bindings and then with them. +# Most of the use cases will link to ttnn without caring a lot about the backend, but +# for those who need this second use case, now it is officially supported build_library( - "ttnncpp" - "${SOURCES_CPP}" - "${TTNN_PUBLIC_LINK_DIRS}" - "${TTNN_PUBLIC_INCLUDE_DIRS}" - "${TARGET_LINK_LIBRARIES_CPP}" + "ttnncpp" #LIBRARY_NAME + "${SOURCES_CPP}" #SOURCES + "${TTNN_PUBLIC_LINK_DIRS}" #LINK_DIRECTORIES + "${TTNN_PUBLIC_INCLUDE_DIRS}" #INCLUDE_DIRS + "${TARGET_LINK_LIBRARIES_CPP}" #TARGET_LINK_LIBRARIES + ${BUILD_DYNAMIC_LIB} #DYNAMIC_LIBRARY + #if we don't build the python binding, is always dynamic ) if(WITH_PYTHON_BINDINGS) build_library( - "ttnn" - "${SOURCES_PYBIND}" - "${TTNN_PUBLIC_LINK_DIRS_PYBIND}" - "${TTNN_PUBLIC_INCLUDE_DIRS_PYBIND}" - "${TARGET_LINK_LIBRARIES_PYBIND}" + "ttnn" #LIBRARY_NAME + "${SOURCES_PYBIND}" #SOURCES + "${TTNN_PUBLIC_LINK_DIRS_PYBIND}" #LINK_DIRECTORIES + "${TTNN_PUBLIC_INCLUDE_DIRS_PYBIND}"#INCLUDE_DIRS + "${TARGET_LINK_LIBRARIES_PYBIND}" #TARGET_LINK_LIBRARIES + ON # if is built, is always dynamic #DYNAMIC_LIBRARY ) endif() From 6bb582cbdd753750529efd740d44c0712b41ddee Mon Sep 17 00:00:00 2001 From: Diego Gomez Date: Fri, 21 Feb 2025 16:02:18 +0000 Subject: [PATCH 5/8] Addressed feedback from PR --- CMakeLists.txt | 21 +++--- tt-train/sources/ttml/CMakeLists.txt | 6 +- ttnn/CMakeLists.txt | 97 ++++++++++++++++++---------- 3 files changed, 78 insertions(+), 46 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a570ab4ce08..988fd46e1c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -270,7 +270,6 @@ endif() # For top level install: cmake --build build --target install or make/ninja install -C build ############################################################################################################################ # Install for build artifacts that will upload build/lib - install( TARGETS tt_metal @@ -280,15 +279,6 @@ install( DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT tar ) -install( - TARGETS - ttnncpp - ARCHIVE - DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY - DESTINATION ${CMAKE_INSTALL_LIBDIR} - COMPONENT tar -) if(WITH_PYTHON_BINDINGS) # Install .so into src files for pybinds implementation install( @@ -309,6 +299,17 @@ if(WITH_PYTHON_BINDINGS) COMPONENT tt_pybinds ) +else() + #when we don't build python bindings, we generate a dynamic library ttnncpp + install( + TARGETS + ttnncpp + ARCHIVE + DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY + DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT tar + ) endif() # FIXME(17578): figure out what bits we actually need to ship and omit the rest diff --git a/tt-train/sources/ttml/CMakeLists.txt b/tt-train/sources/ttml/CMakeLists.txt index bbb1a23f321..61b48d2d62c 100644 --- a/tt-train/sources/ttml/CMakeLists.txt +++ b/tt-train/sources/ttml/CMakeLists.txt @@ -66,9 +66,9 @@ if(NOT TARGET Metalium::Metal) message(FATAL_ERROR "libtt_metal.so not found in ${METALIUM_LIB_PATH}") endif() if(TTNN_LIBRARY) - add_library(TT::NN SHARED IMPORTED) + add_library(Metalium::PYBIND SHARED IMPORTED) set_target_properties( - TT::NN::TTNN + Metalium::PYBIND PROPERTIES IMPORTED_LOCATION "${TTNN_LIBRARY}" @@ -101,7 +101,7 @@ target_link_libraries( pthread atomic Metalium::Metal - TT::NN::TTNN + Metalium::PYBIND Python::Python fmt::fmt-header-only magic_enum::magic_enum diff --git a/ttnn/CMakeLists.txt b/ttnn/CMakeLists.txt index 8b740c5602c..3d411ee82cd 100644 --- a/ttnn/CMakeLists.txt +++ b/ttnn/CMakeLists.txt @@ -14,28 +14,49 @@ endif() ################################################## # Define a method build_library to define all the options and properties for a library ################################################## -function( - build_library - LIBRARY_NAME - SOURCES - LINK_DIRECTORIES - INCLUDE_DIRS - TARGET_LINK_LIBRARIES - DYNAMIC_LIBRARY -) +function(build_library LIBRARY_NAME ALIAS) + set(options + SHARED + STATIC + ) + set(oneValueArgs) # No single-value args + set(multiValueArgs + SOURCES + PUBLIC_LINK_DIRECTORIES + INCLUDE_DIRECTORIES + TARGET_LINK_LIBRARIES + ) # All are multi-value + + cmake_parse_arguments(BUILD_LIB "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + # Determine library type + if(BUILD_LIB_SHARED) + set(LIBRARY_TYPE "SHARED") + elseif(BUILD_LIB_STATIC) + set(LIBRARY_TYPE "STATIC") + else() + message(FATAL_ERROR "You must specify SHARED or STATIC for library type") + endif() + + # Assign values + set(SOURCES "${BUILD_LIB_SOURCES}") + set(TARGET_LINK_LIBRARIES "${BUILD_LIB_TARGET_LINK_LIBRARIES}") + set(LINK_DIRECTORIES "${BUILD_LIB_LINK_DIRECTORIES}") + set(INCLUDE_DIRS "${BUILD_LIB_INCLUDE_DIRS}") + ################################################## # Declare and define the library ################################################## - #todo: Ideally declaring the library should be the first thing to do, sadly making it shared requires to add sources - string(TOUPPER "${LIBRARY_NAME}" LIBRARY_NAME_ALIAS) - if(DYNAMIC_LIBRARY) - add_library(${LIBRARY_NAME} SHARED ${SOURCES}) - else() - add_library(${LIBRARY_NAME} STATIC ${SOURCES}) - endif() + # Assign values to variables for clarity - add_library(TT::NN::${LIBRARY_NAME_ALIAS} ALIAS ${LIBRARY_NAME}) + add_library( + ${LIBRARY_NAME} + ${LIBRARY_TYPE} + ${SOURCES} + ) + + add_library(Metalium::${ALIAS} ALIAS ${LIBRARY_NAME}) target_include_directories(${LIBRARY_NAME} PUBLIC "${INCLUDE_DIRS}") target_link_directories(${LIBRARY_NAME} PUBLIC ${LINK_DIRECTORIES}) @@ -75,7 +96,7 @@ function( "$ORIGIN" ) - if(DYNAMIC_LIBRARY) + if(BUILD_LIB_SHARED) #Make sure library built is _ttnn.so / _ttnnpycpp.so and that it can find all it's linked libraries #ttnn breaks if - fvisibility = hidden, so CXX_VISIBILITY_PRESET set to default set_target_properties( @@ -1023,10 +1044,10 @@ list(APPEND TTNN_PUBLIC_INCLUDE_DIRS_PYBIND ${TTNN_PUBLIC_INCLUDE_DIRS}) # Build the libraries! ################################################## -set(BUILD_DYNAMIC_LIB ON) +set(TTNN_CPP_BUILD_TYPE SHARED) if(WITH_PYTHON_BINDINGS) #ttnncpp will be static when building python bindings - set(BUILD_DYNAMIC_LIB OFF) + set(TTNN_CPP_BUILD_TYPE STATIC) endif() #there are two ways to build TTNN @@ -1038,23 +1059,33 @@ endif() # ttnn as well, it should build it first without python bindings and then with them. # Most of the use cases will link to ttnn without caring a lot about the backend, but # for those who need this second use case, now it is officially supported + build_library( - "ttnncpp" #LIBRARY_NAME - "${SOURCES_CPP}" #SOURCES - "${TTNN_PUBLIC_LINK_DIRS}" #LINK_DIRECTORIES - "${TTNN_PUBLIC_INCLUDE_DIRS}" #INCLUDE_DIRS - "${TARGET_LINK_LIBRARIES_CPP}" #TARGET_LINK_LIBRARIES - ${BUILD_DYNAMIC_LIB} #DYNAMIC_LIBRARY - #if we don't build the python binding, is always dynamic + "ttnncpp" #LIBRARY_NAME + "TTNN" #ALIAS + ${TTNN_CPP_BUILD_TYPE} + SOURCES + "${SOURCES_CPP}" + PUBLIC_LINK_DIRECTORIES + "${TTNN_PUBLIC_LINK_DIRS}" + INCLUDE_DIRECTORIES + "${TTNN_PUBLIC_INCLUDE_DIRS}" + TARGET_LINK_LIBRARIES + "${TARGET_LINK_LIBRARIES_CPP}" ) if(WITH_PYTHON_BINDINGS) build_library( - "ttnn" #LIBRARY_NAME - "${SOURCES_PYBIND}" #SOURCES - "${TTNN_PUBLIC_LINK_DIRS_PYBIND}" #LINK_DIRECTORIES - "${TTNN_PUBLIC_INCLUDE_DIRS_PYBIND}"#INCLUDE_DIRS - "${TARGET_LINK_LIBRARIES_PYBIND}" #TARGET_LINK_LIBRARIES - ON # if is built, is always dynamic #DYNAMIC_LIBRARY + "ttnn" #LIBRARY_NAME + "PYBIND" #ALIAS + SHARED + SOURCES + "${SOURCES_PYBIND}" + PUBLIC_LINK_DIRECTORIES + "${TTNN_PUBLIC_LINK_DIRS_PYBIND}" + INCLUDE_DIRECTORIES + "${TTNN_PUBLIC_INCLUDE_DIRS_PYBIND}" + TARGET_LINK_LIBRARIES + "${TARGET_LINK_LIBRARIES_PYBIND}" ) endif() From 79590e4b24524a8ed050dcb8586826c3e2f62d0e Mon Sep 17 00:00:00 2001 From: Diego Gomez Date: Tue, 25 Feb 2025 15:01:50 +0000 Subject: [PATCH 6/8] Removed the reference to Metalium::Pybinds in tt-train --- tt-train/sources/ttml/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tt-train/sources/ttml/CMakeLists.txt b/tt-train/sources/ttml/CMakeLists.txt index 61b48d2d62c..666196e7a18 100644 --- a/tt-train/sources/ttml/CMakeLists.txt +++ b/tt-train/sources/ttml/CMakeLists.txt @@ -66,9 +66,9 @@ if(NOT TARGET Metalium::Metal) message(FATAL_ERROR "libtt_metal.so not found in ${METALIUM_LIB_PATH}") endif() if(TTNN_LIBRARY) - add_library(Metalium::PYBIND SHARED IMPORTED) + add_library(Metalium::TTNN SHARED IMPORTED) set_target_properties( - Metalium::PYBIND + Metalium::TTNN PROPERTIES IMPORTED_LOCATION "${TTNN_LIBRARY}" @@ -101,7 +101,7 @@ target_link_libraries( pthread atomic Metalium::Metal - Metalium::PYBIND + Metalium::TTNN Python::Python fmt::fmt-header-only magic_enum::magic_enum From 6a6b213effc6a8da9672c42b0ec7da66011647e0 Mon Sep 17 00:00:00 2001 From: Diego Gomez Date: Fri, 28 Feb 2025 15:03:17 +0000 Subject: [PATCH 7/8] Changed the aliases to keep compatibility --- ttnn/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ttnn/CMakeLists.txt b/ttnn/CMakeLists.txt index 3d411ee82cd..dd9516750dd 100644 --- a/ttnn/CMakeLists.txt +++ b/ttnn/CMakeLists.txt @@ -1062,7 +1062,7 @@ endif() build_library( "ttnncpp" #LIBRARY_NAME - "TTNN" #ALIAS + "TTNNCPP" #ALIAS ${TTNN_CPP_BUILD_TYPE} SOURCES "${SOURCES_CPP}" @@ -1077,7 +1077,7 @@ build_library( if(WITH_PYTHON_BINDINGS) build_library( "ttnn" #LIBRARY_NAME - "PYBIND" #ALIAS + "TTNN" #ALIAS SHARED SOURCES "${SOURCES_PYBIND}" From eed802f8c6d18cf85dfab9bcce775dbf518a875b Mon Sep 17 00:00:00 2001 From: Diego Gomez Date: Fri, 28 Feb 2025 21:18:45 +0000 Subject: [PATCH 8/8] Fixed a compilation issue that was generating log2 to be detected as a template instead of a function --- .../fold/device/fold_single_core_program_factory.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ttnn/cpp/ttnn/operations/data_movement/fold/device/fold_single_core_program_factory.cpp b/ttnn/cpp/ttnn/operations/data_movement/fold/device/fold_single_core_program_factory.cpp index 83dd5f1d849..03ef3fa15df 100644 --- a/ttnn/cpp/ttnn/operations/data_movement/fold/device/fold_single_core_program_factory.cpp +++ b/ttnn/cpp/ttnn/operations/data_movement/fold/device/fold_single_core_program_factory.cpp @@ -65,7 +65,7 @@ Fold::SingleCore::cached_program_t fold_single_core( // Setup kernels uint32_t src_unit_size_is_power_of_two = is_power_of_two_at_least_32(aligned_pixel_size); - uint32_t src_log2_unit_size = src_unit_size_is_power_of_two ? (std::uint32_t)log2(aligned_pixel_size) : 0; + uint32_t src_log2_unit_size = src_unit_size_is_power_of_two ? (std::uint32_t)std::log2(aligned_pixel_size) : 0; std::vector reader_compile_time_args = { cb_src0_index, src_is_dram, @@ -74,7 +74,7 @@ Fold::SingleCore::cached_program_t fold_single_core( }; uint32_t dst_unit_size_is_power_of_two = is_power_of_two_at_least_32(aligned_dst_pixel_size); - uint32_t dst_log2_unit_size = dst_unit_size_is_power_of_two ? (std::uint32_t)log2(aligned_dst_pixel_size) : 0; + uint32_t dst_log2_unit_size = dst_unit_size_is_power_of_two ? (std::uint32_t)std::log2(aligned_dst_pixel_size) : 0; std::vector writer_compile_time_args = { cb_dst0_index,