diff --git a/ci/official/containers/ml_build/cuda12.1_cudnn9.10.packages.txt b/ci/official/containers/ml_build/cuda12.1_cudnn9.10.packages.txt new file mode 100644 index 00000000000000..534c1c787eadc6 --- /dev/null +++ b/ci/official/containers/ml_build/cuda12.1_cudnn9.10.packages.txt @@ -0,0 +1,23 @@ +# All required CUDA packages +cuda-compat-12-1 +cuda-command-line-tools-12-1 +cuda-cudart-dev-12-1 +cuda-nvcc-12-1 +cuda-cupti-12-1 +cuda-nvprune-12-1 +cuda-libraries-12-1 +cuda-libraries-dev-12-1 +cuda-nvml-dev-12-1 +libcufft-12-1 +libcurand-12-1 +libcusolver-dev-12-1 +libcusparse-dev-12-1 +libcublas-12-1 +libcublas-dev-12-1 +libnccl-dev=2.18.3-1+cuda12.1 +libnccl2=2.18.3-1+cuda12.1 +# CuDNN: https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#ubuntu-network-installation +libcudnn9-headers-cuda-12=9.10.2.21-1 +libcudnn9-static-cuda-12=9.10.2.21-1 +libcudnn9-dev-cuda-12=9.10.2.21-1 +libcudnn9-cuda-12=9.10.2.21-1 diff --git a/tensorflow/cc/saved_model/fingerprinting.cc b/tensorflow/cc/saved_model/fingerprinting.cc index 63b8eb4e8b3d3b..9f7519130e6add 100644 --- a/tensorflow/cc/saved_model/fingerprinting.cc +++ b/tensorflow/cc/saved_model/fingerprinting.cc @@ -173,11 +173,6 @@ absl::StatusOr CreateFingerprintDefPb( SavedModel saved_model; TF_RETURN_IF_ERROR(ReadBinaryProto(Env::Default(), pb_file, &saved_model)); - if (saved_model.meta_graphs_size() == 0) { - return absl::InvalidArgumentError( - "SavedModel (.pb) contains no MetaGraphs."); - } - // Create a copy of `metagraph` which will be used and mutated for fingerprint // computation. FingerprintDef fingerprint_def; @@ -242,12 +237,11 @@ absl::StatusOr CreateFingerprintDef( // At this point we have neither saved_model.pb nor saved_model.cpb. return CreateReducedFingerprintDef(); // Only sets the UUID. #else // The following runs on Windows and Mac. - absl::StatusOr fingerprint_def = - CreateFingerprintDefPb(export_dir, absl::StrCat(prefix, ".pb")); - if (!fingerprint_def.ok()) { - return CreateReducedFingerprintDef(); + std::string pb_file = absl::StrCat(prefix, ".pb"); + if (Env::Default()->FileExists(pb_file).ok()) { + return CreateFingerprintDefPb(export_dir, pb_file); } - return fingerprint_def; + return CreateReducedFingerprintDef(); #endif } diff --git a/tensorflow/cc/saved_model/fingerprinting_test.cc b/tensorflow/cc/saved_model/fingerprinting_test.cc index 8860d0cb587d5d..135646df74fdf9 100644 --- a/tensorflow/cc/saved_model/fingerprinting_test.cc +++ b/tensorflow/cc/saved_model/fingerprinting_test.cc @@ -25,7 +25,6 @@ limitations under the License. #include "absl/strings/string_view.h" #include "tensorflow/core/framework/graph.pb.h" #include "tensorflow/core/framework/versions.pb.h" -#include "tensorflow/core/lib/core/status_test_util.h" #include "tensorflow/core/platform/env.h" #include "tensorflow/core/platform/path.h" #include "tensorflow/core/platform/test.h" @@ -207,20 +206,5 @@ TEST(FingerprintingTest, TestSingleprint) { const_singleprint); } -TEST(FingerprintingTest, CreateFingerprintDefPbEmptyMetaGraphsReturnsError) { - const std::string model_dir = - io::JoinPath(::testing::TempDir(), "empty_metagraphs_model"); - TF_ASSERT_OK(Env::Default()->RecursivelyCreateDir(model_dir)); - const std::string pb_file = io::JoinPath(model_dir, "saved_model.pb"); - SavedModel saved_model; - TF_ASSERT_OK(WriteBinaryProto(Env::Default(), pb_file, saved_model)); - - absl::StatusOr result = CreateFingerprintDef(model_dir); - EXPECT_FALSE(result.ok()); - EXPECT_EQ(result.status().code(), absl::StatusCode::kInvalidArgument); - EXPECT_EQ(result.status().message(), - "SavedModel (.pb) contains no MetaGraphs."); -} - } // namespace } // namespace tensorflow::saved_model::fingerprinting diff --git a/tensorflow/compiler/aot/compile.cc b/tensorflow/compiler/aot/compile.cc index 10994486fa471b..efc6869f6235de 100644 --- a/tensorflow/compiler/aot/compile.cc +++ b/tensorflow/compiler/aot/compile.cc @@ -198,8 +198,7 @@ absl::Status CompileGraph(GraphDef graph_def, const tf2xla::Config& config, xla::cpu::CpuAotCompilationOptions aot_opts( flags.target_triple, flags.target_cpu, flags.target_features, flags.entry_point, - xla::cpu::CpuAotCompilationOptions::RelocationModel::BigPic, - /*compile_copy_as_llvm_kernel=*/true); + xla::cpu::CpuAotCompilationOptions::RelocationModel::BigPic); if (flags.sanitize_dataflow) { aot_opts.set_sanitize_dataflow(flags.sanitize_dataflow); diff --git a/tensorflow/compiler/mlir/lite/tests/canonicalize.mlir b/tensorflow/compiler/mlir/lite/tests/canonicalize.mlir index e380039d53dd1f..1a521726b6010f 100644 --- a/tensorflow/compiler/mlir/lite/tests/canonicalize.mlir +++ b/tensorflow/compiler/mlir/lite/tests/canonicalize.mlir @@ -204,7 +204,7 @@ func.func @WhileCanonicalizeBug1(%arg0: tensor, %arg1: tensor) -> tens // ----- // Test case to test While op with resources that are not read-only variables. -// Do not remove resource arugments if they are not read-only variables to keep +// Do not remove resource arguments if they are not read-only variables to keep // the graph's control dependency. // CHECK-LABEL: WhileWithNonReadOnlyVariableResources func.func @WhileWithNonReadOnlyVariableResources(%arg0: tensor) -> tensor { diff --git a/tensorflow/compiler/mlir/lite/transforms/lower_static_tensor_list.cc b/tensorflow/compiler/mlir/lite/transforms/lower_static_tensor_list.cc index afaa948293a269..50287ef1aaa0c0 100644 --- a/tensorflow/compiler/mlir/lite/transforms/lower_static_tensor_list.cc +++ b/tensorflow/compiler/mlir/lite/transforms/lower_static_tensor_list.cc @@ -1414,7 +1414,7 @@ struct ConvertIf : public OpConversionPattern { LogicalResult matchAndRewrite( TF::IfOp op, OpAdaptor adaptor, ConversionPatternRewriter &rewriter) const override { - // Find all Tensor List arugments. + // Find all Tensor List arguments. auto tensor_list_args = GetTensorListArgumentsIndex(op.else_function()); auto tensor_list_results = GetTensorListResultsIndex(op.else_function()); auto tensor_list_map = MapTensorListResultToArgument(op.else_function()); @@ -1451,7 +1451,7 @@ struct ConvertWhile : public OpConversionPattern { LogicalResult matchAndRewrite( TF::WhileOp op, OpAdaptor adaptor, ConversionPatternRewriter &rewriter) const override { - // Find all Tensor List arugments. + // Find all Tensor List arguments. auto tensor_list_args = GetTensorListArgumentsIndex(op.body_function()); llvm::SmallVector result_types; diff --git a/tensorflow/compiler/mlir/lite/transforms/reduce_while_operands.cc b/tensorflow/compiler/mlir/lite/transforms/reduce_while_operands.cc index 452a9295330ace..c88ae036e5d799 100644 --- a/tensorflow/compiler/mlir/lite/transforms/reduce_while_operands.cc +++ b/tensorflow/compiler/mlir/lite/transforms/reduce_while_operands.cc @@ -147,7 +147,7 @@ bool AllOperationSafe(Block &block) { } // op has implict arguments not listed in operands. // Fact: if every op's operands are defined in the same block as op, - // then no operation has implicit arugments (constant doesn't count). + // then no operation has implicit arguments (constant doesn't count). for (auto operand : op->getOperands()) { if (auto arg = mlir::dyn_cast_or_null(operand)) { if (arg.getOwner() == &block) { diff --git a/tensorflow/compiler/mlir/tf2xla/tests/legalize-tf-collective.mlir b/tensorflow/compiler/mlir/tf2xla/tests/legalize-tf-collective.mlir index d1d9e83e93a808..9ee94286464546 100644 --- a/tensorflow/compiler/mlir/tf2xla/tests/legalize-tf-collective.mlir +++ b/tensorflow/compiler/mlir/tf2xla/tests/legalize-tf-collective.mlir @@ -290,7 +290,7 @@ func.func @inconsistent_collective_info(%input: tensor) -> tensor { %group_size1 = "tf.Const"() { value = dense<1> : tensor } : () -> tensor %group_size2 = "tf.Const"() { value = dense<2> : tensor } : () -> tensor %instance_key = "tf.Const"() { value = dense<3> : tensor } : () -> tensor - // expected-error@below {{op module already contains an attribute tf2xla.collective_info.group_size=2, overwritting to a new value 1 is not allowed.}} + // expected-error@below {{op module already contains an attribute tf2xla.collective_info.group_size=2, overwriting to a new value 1 is not allowed.}} %0 = "tf.CollectiveReduceV2"(%input, %group_size1, %group_key, %instance_key) {merge_op = "Add", final_op = "Id"} : (tensor, tensor, tensor, tensor) -> tensor %1 = "tf.CollectiveReduceV2"(%input, %group_size2, %group_key, %instance_key) {merge_op = "Add", final_op = "Id"} : (tensor, tensor, tensor, tensor) -> tensor %2 = "tf.Add"(%0, %1) : (tensor, tensor) -> tensor diff --git a/tensorflow/compiler/mlir/tf2xla/transforms/legalize_tf_collective.cc b/tensorflow/compiler/mlir/tf2xla/transforms/legalize_tf_collective.cc index abfcc0d26acc65..31a259f043800b 100644 --- a/tensorflow/compiler/mlir/tf2xla/transforms/legalize_tf_collective.cc +++ b/tensorflow/compiler/mlir/tf2xla/transforms/legalize_tf_collective.cc @@ -75,7 +75,7 @@ LogicalResult SetOnceModuleAttribute(StringRef attr_name, } return op->emitOpError() << "module already contains an attribute " << attr_name << "=" << ex_attr_value.getInt() - << ", overwritting to a new value " + << ", overwriting to a new value " << attr_value.getInt() << " is not allowed."; } diff --git a/tensorflow/dtensor/mlir/tests/lower_send_recv.mlir b/tensorflow/dtensor/mlir/tests/lower_send_recv.mlir index b5216adb606e03..35fcb67266495b 100644 --- a/tensorflow/dtensor/mlir/tests/lower_send_recv.mlir +++ b/tensorflow/dtensor/mlir/tests/lower_send_recv.mlir @@ -29,7 +29,7 @@ func.func @main(%arg0: tensor) { // CHECK-DAG: %[[RECV_SIZE_TYPE]] = "tf.Const"() <{value = dense<1> : tensor<1xi32>}> // CHECK-DAG: %[[RECV_SLICE_SIZE]] = "tf.Const"() <{value = dense<1> : tensor<1xi32>}> // CHECK-DAG: %[[RECV_SCALAR_TYPE]] = "tf.Const"() <{value = dense<> : tensor<0xi32>}> - // COMMENT: Recv and Send seperated by the output tensor. + // COMMENT: Recv and Send separated by the output tensor. // CHECK: %[[PROGRAM_KEY:.*]] = "tf._XlaCompileMlirPlaceholderProgramKey" // CHECK-NEXT: %[[CONST_OUT:.*]] = "tf.Const"() <{value = dense<10> : tensor<1xi32>}> // CHECK-NEXT: %[[LAYOUT_OUT:.*]] = "tf.DTensorLayout"(%[[CONST_OUT]]) diff --git a/tensorflow/lite/async/testing/mock_async_kernel.h b/tensorflow/lite/async/testing/mock_async_kernel.h index be31a2a71a843c..0d3b825c18117b 100644 --- a/tensorflow/lite/async/testing/mock_async_kernel.h +++ b/tensorflow/lite/async/testing/mock_async_kernel.h @@ -26,7 +26,7 @@ namespace async { namespace testing { // A fully mocked out async kernel. -// Mocked TfLiteAsyncKernel can be retreived by `MockAsyncKernel::kernel()`. +// Mocked TfLiteAsyncKernel can be retrieved by `MockAsyncKernel::kernel()`. class MockAsyncKernel : public delegates::BackendAsyncKernelInterface { public: MOCK_METHOD(TfLiteStatus, RegisterBuffer, diff --git a/tensorflow/lite/examples/label_image/bitmap_helpers.cc b/tensorflow/lite/examples/label_image/bitmap_helpers.cc index 32d7f443fc49d8..82d73201560587 100644 --- a/tensorflow/lite/examples/label_image/bitmap_helpers.cc +++ b/tensorflow/lite/examples/label_image/bitmap_helpers.cc @@ -22,31 +22,136 @@ limitations under the License. #include #include #include +#include #include #include #include "tensorflow/lite/examples/label_image/label_image.h" #include "tensorflow/lite/examples/label_image/log.h" -#include "tsl/platform/ctstring_internal.h" namespace tflite { namespace label_image { +namespace { + +constexpr size_t kBmpHeaderMinSize = 30; + +uint16_t ReadLe16(const std::vector& bytes, size_t offset) { + return static_cast(bytes[offset]) | + static_cast(bytes[offset + 1]) << 8; +} + +int32_t ReadLe32(const std::vector& bytes, size_t offset) { + const uint32_t value = static_cast(bytes[offset]) | + static_cast(bytes[offset + 1]) << 8 | + static_cast(bytes[offset + 2]) << 16 | + static_cast(bytes[offset + 3]) << 24; + return static_cast(value); +} + +bool ValidateBmpAndGetPixelOffset(const std::vector& img_bytes, + int* width, int* height, int* channels, + int* row_size, size_t* pixel_offset) { + if (width == nullptr || height == nullptr || channels == nullptr || + row_size == nullptr || pixel_offset == nullptr) { + LOG(ERROR) + << "Null pointer argument passed to ValidateBmpAndGetPixelOffset"; + return false; + } + *width = 0; + *height = 0; + *channels = 0; + *row_size = 0; + *pixel_offset = 0; + + if (img_bytes.size() < kBmpHeaderMinSize || img_bytes[0] != 'B' || + img_bytes[1] != 'M') { + LOG(ERROR) << "Invalid BMP header"; + return false; + } + + const int32_t parsed_pixel_offset = ReadLe32(img_bytes, 10); + const int32_t parsed_width = ReadLe32(img_bytes, 18); + const int32_t parsed_height = ReadLe32(img_bytes, 22); + const uint16_t bpp = ReadLe16(img_bytes, 28); + + if (parsed_pixel_offset < static_cast(kBmpHeaderMinSize) || + static_cast(parsed_pixel_offset) > img_bytes.size()) { + LOG(ERROR) << "BMP pixel data offset is invalid or outside the file"; + return false; + } + if (parsed_width <= 0 || parsed_height == 0 || + parsed_height == std::numeric_limits::min()) { + LOG(ERROR) << "Invalid BMP dimensions"; + return false; + } + if (bpp != 8 && bpp != 24 && bpp != 32) { + LOG(ERROR) << "Unsupported BMP bits per pixel: " << bpp; + return false; + } + + const int parsed_channels = bpp / 8; + const int64_t abs_height = parsed_height < 0 + ? -static_cast(parsed_height) + : static_cast(parsed_height); + const uint64_t total_output_bytes = static_cast(parsed_width) * + static_cast(abs_height) * + static_cast(parsed_channels); + if (total_output_bytes > + static_cast(std::numeric_limits::max())) { + LOG(ERROR) << "Decoded BMP size exceeds maximum supported size"; + return false; + } + const int64_t bits_per_row = static_cast(bpp) * parsed_width; + if (bits_per_row > (std::numeric_limits::max() - 31)) { + LOG(ERROR) << "BMP row size overflow"; + return false; + } + const int parsed_row_size = static_cast((bits_per_row + 31) / 32 * 4); + + const size_t pixel_bytes = + img_bytes.size() - static_cast(parsed_pixel_offset); + if (abs_height > 0 && static_cast(parsed_row_size) > + std::numeric_limits::max() / + static_cast(abs_height)) { + LOG(ERROR) << "BMP pixel data size overflow"; + return false; + } + const uint64_t required_pixel_bytes = static_cast(parsed_row_size) * + static_cast(abs_height); + if (required_pixel_bytes > pixel_bytes) { + LOG(ERROR) << "BMP pixel data is shorter than the declared dimensions"; + return false; + } + + *width = parsed_width; + *height = parsed_height; + *channels = parsed_channels; + *row_size = parsed_row_size; + *pixel_offset = static_cast(parsed_pixel_offset); + return true; +} + +} // namespace std::vector decode_bmp(const uint8_t* input, int row_size, int width, int height, int channels, bool top_down) { - std::vector output(height * width * channels); + std::vector output(static_cast(height) * + static_cast(width) * + static_cast(channels)); for (int i = 0; i < height; i++) { - int src_pos; - int dst_pos; + size_t src_pos; + size_t dst_pos; for (int j = 0; j < width; j++) { if (!top_down) { - src_pos = ((height - 1 - i) * row_size) + j * channels; + src_pos = static_cast(height - 1 - i) * row_size + + static_cast(j) * channels; } else { - src_pos = i * row_size + j * channels; + src_pos = static_cast(i) * row_size + + static_cast(j) * channels; } - dst_pos = (i * width + j) * channels; + dst_pos = (static_cast(i) * width + j) * channels; switch (channels) { case 1: @@ -94,31 +199,26 @@ std::vector read_bmp(const std::string& input_bmp_name, int* width, std::vector img_bytes(len); file.seekg(0, std::ios::beg); file.read(reinterpret_cast(img_bytes.data()), len); - const int32_t header_size = - TF_le32toh(*(reinterpret_cast(img_bytes.data() + 10))); - *width = - TF_le32toh(*(reinterpret_cast(img_bytes.data() + 18))); - *height = - TF_le32toh(*(reinterpret_cast(img_bytes.data() + 22))); - const int32_t bpp = - TF_le32toh(*(reinterpret_cast(img_bytes.data() + 28))); - *channels = bpp / 8; + int row_size = 0; + size_t header_size = 0; + if (!ValidateBmpAndGetPixelOffset(img_bytes, width, height, channels, + &row_size, &header_size)) { + return std::vector(); + } if (s->verbose) LOG(INFO) << "width, height, channels: " << *width << ", " << *height << ", " << *channels; - // there may be padding bytes when the width is not a multiple of 4 bytes - // 8 * channels == bits per pixel - const int row_size = (8 * *channels * *width + 31) / 32 * 4; - // if height is negative, data layout is top down // otherwise, it's bottom up bool top_down = (*height < 0); // Decode image, allocating tensor once the image size is known - const uint8_t* bmp_pixels = &img_bytes[header_size]; - return decode_bmp(bmp_pixels, row_size, *width, abs(*height), *channels, + const uint8_t* bmp_pixels = img_bytes.data() + header_size; + const int abs_height = + static_cast(*height < 0 ? -static_cast(*height) : *height); + return decode_bmp(bmp_pixels, row_size, *width, abs_height, *channels, top_down); } diff --git a/tensorflow/lite/examples/label_image/label_image_test.cc b/tensorflow/lite/examples/label_image/label_image_test.cc index 02410987e62894..b42769dc8eaefe 100644 --- a/tensorflow/lite/examples/label_image/label_image_test.cc +++ b/tensorflow/lite/examples/label_image/label_image_test.cc @@ -15,7 +15,10 @@ limitations under the License. #include "tensorflow/lite/examples/label_image/label_image.h" +#include #include +#include +#include #include #include #include @@ -27,6 +30,45 @@ limitations under the License. namespace tflite { namespace label_image { +namespace { + +std::string WriteTestBmp(const std::vector& bytes, + const std::string& name) { + const testing::TestInfo* test_info = + testing::UnitTest::GetInstance()->current_test_info(); + const std::string filename = ::testing::TempDir() + + test_info->test_suite_name() + "_" + + test_info->name() + "_" + name + ".bmp"; + std::ofstream file(filename, std::ios::binary); + file.write(reinterpret_cast(bytes.data()), bytes.size()); + return filename; +} + +std::vector ValidBmpHeader(int32_t pixel_offset, int32_t width, + int32_t height, uint16_t bpp) { + std::vector bytes( + std::max(pixel_offset < 0 ? 30 : pixel_offset, 30), 0); + bytes[0] = 'B'; + bytes[1] = 'M'; + auto write_le16 = [&bytes](size_t offset, uint16_t value) { + bytes[offset] = value & 0xff; + bytes[offset + 1] = value >> 8; + }; + auto write_le32 = [&bytes](size_t offset, int32_t value) { + const uint32_t unsigned_value = static_cast(value); + bytes[offset] = unsigned_value & 0xff; + bytes[offset + 1] = (unsigned_value >> 8) & 0xff; + bytes[offset + 2] = (unsigned_value >> 16) & 0xff; + bytes[offset + 3] = (unsigned_value >> 24) & 0xff; + }; + write_le32(10, pixel_offset); + write_le32(18, width); + write_le32(22, height); + write_le16(28, bpp); + return bytes; +} + +} // namespace TEST(LabelImageTest, GraceHopper) { std::string lena_file = @@ -47,6 +89,117 @@ TEST(LabelImageTest, GraceHopper) { ASSERT_EQ(output[214 * 214 * 3 - 1], 0x11); } +TEST(LabelImageTest, RejectsTruncatedBmpHeader) { + const std::string filename = WriteTestBmp({'B', 'M'}, "truncated_header"); + int height, width, channels; + Settings s; + auto result = read_bmp(filename, &width, &height, &channels, &s); + EXPECT_TRUE(result.empty()); +} + +TEST(LabelImageTest, RejectsPixelDataOutsideFile) { + std::vector bytes = ValidBmpHeader(128, 1, 1, 24); + const std::string filename = WriteTestBmp(bytes, "bad_pixel_offset"); + int height, width, channels; + Settings s; + auto result = read_bmp(filename, &width, &height, &channels, &s); + EXPECT_TRUE(result.empty()); +} + +TEST(LabelImageTest, RejectsShortPixelData) { + std::vector bytes = ValidBmpHeader(54, 2, 2, 24); + bytes.resize(54 + 8); + const std::string filename = WriteTestBmp(bytes, "short_pixel_data"); + int height, width, channels; + Settings s; + auto result = read_bmp(filename, &width, &height, &channels, &s); + EXPECT_TRUE(result.empty()); +} + +TEST(LabelImageTest, RejectsRowSizeOverflow) { + // Output size (width * height * channels) fits in int, but the padded + // row size in bits (bpp * width) overflows. + std::vector bytes = ValidBmpHeader(54, 100000000, 1, 32); + const std::string filename = WriteTestBmp(bytes, "row_size_overflow"); + int height, width, channels; + Settings s; + auto result = read_bmp(filename, &width, &height, &channels, &s); + EXPECT_TRUE(result.empty()); +} + +TEST(LabelImageTest, RejectsZeroWidth) { + std::vector bytes = ValidBmpHeader(54, 0, 1, 24); + const std::string filename = WriteTestBmp(bytes, "zero_width"); + int height, width, channels; + Settings s; + auto result = read_bmp(filename, &width, &height, &channels, &s); + EXPECT_TRUE(result.empty()); +} + +TEST(LabelImageTest, RejectsNegativeWidth) { + std::vector bytes = ValidBmpHeader(54, -1, 1, 24); + const std::string filename = WriteTestBmp(bytes, "negative_width"); + int height, width, channels; + Settings s; + auto result = read_bmp(filename, &width, &height, &channels, &s); + EXPECT_TRUE(result.empty()); +} + +TEST(LabelImageTest, RejectsZeroHeight) { + std::vector bytes = ValidBmpHeader(54, 1, 0, 24); + const std::string filename = WriteTestBmp(bytes, "zero_height"); + int height, width, channels; + Settings s; + auto result = read_bmp(filename, &width, &height, &channels, &s); + EXPECT_TRUE(result.empty()); +} + +TEST(LabelImageTest, RejectsInt32MinHeight) { + std::vector bytes = + ValidBmpHeader(54, 1, std::numeric_limits::min(), 24); + const std::string filename = WriteTestBmp(bytes, "int32_min_height"); + int height, width, channels; + Settings s; + auto result = read_bmp(filename, &width, &height, &channels, &s); + EXPECT_TRUE(result.empty()); +} + +TEST(LabelImageTest, RejectsPixelOffsetInsideHeader) { + std::vector bytes = ValidBmpHeader(10, 1, 1, 24); + const std::string filename = WriteTestBmp(bytes, "pixel_offset_in_header"); + int height, width, channels; + Settings s; + auto result = read_bmp(filename, &width, &height, &channels, &s); + EXPECT_TRUE(result.empty()); +} + +TEST(LabelImageTest, RejectsUnsupportedBpp4) { + std::vector bytes = ValidBmpHeader(54, 1, 1, 4); + const std::string filename = WriteTestBmp(bytes, "bpp_4"); + int height, width, channels; + Settings s; + auto result = read_bmp(filename, &width, &height, &channels, &s); + EXPECT_TRUE(result.empty()); +} + +TEST(LabelImageTest, RejectsUnsupportedBpp16) { + std::vector bytes = ValidBmpHeader(54, 1, 1, 16); + const std::string filename = WriteTestBmp(bytes, "bpp_16"); + int height, width, channels; + Settings s; + auto result = read_bmp(filename, &width, &height, &channels, &s); + EXPECT_TRUE(result.empty()); +} + +TEST(LabelImageTest, RejectsOutputSizeOverflow) { + std::vector bytes = ValidBmpHeader(54, 65536, 65536, 24); + const std::string filename = WriteTestBmp(bytes, "output_size_overflow"); + int height, width, channels; + Settings s; + auto result = read_bmp(filename, &width, &height, &channels, &s); + EXPECT_TRUE(result.empty()); +} + TEST(LabelImageTest, GetTopN) { uint8_t in[] = {1, 1, 2, 2, 4, 4, 16, 32, 128, 64}; diff --git a/tensorflow/lite/kernels/BUILD b/tensorflow/lite/kernels/BUILD index 76158c739db190..d693d8f2aa11f9 100644 --- a/tensorflow/lite/kernels/BUILD +++ b/tensorflow/lite/kernels/BUILD @@ -3353,7 +3353,7 @@ cc_test( ], ) -# TODO(b/249321616) pull unsorted_segment_test* into seperate `cc_library`. +# TODO(b/249321616) pull unsorted_segment_test* into separate `cc_library`. cc_test( name = "unsorted_segment_prod_test", size = "small", diff --git a/tensorflow/lite/kernels/variants/list_ops_subgraph_test.cc b/tensorflow/lite/kernels/variants/list_ops_subgraph_test.cc index cb5491e9ca2c2f..680c2ed2e83627 100644 --- a/tensorflow/lite/kernels/variants/list_ops_subgraph_test.cc +++ b/tensorflow/lite/kernels/variants/list_ops_subgraph_test.cc @@ -234,7 +234,7 @@ class WhileIncrementListOpsTest : public InterpreterTest { arr->Resize(num_elements); } - // Retreives a pointer to the `TensorArray` sitting behind the + // Retrieves a pointer to the `TensorArray` sitting behind the // `kTfLiteVariant` tensor at given index. const TensorArray* GetOutputTensorArray(int tensor_id) { TfLiteTensor* tensor = interpreter_->tensor(tensor_id); diff --git a/tensorflow/lite/python/lite_test.py b/tensorflow/lite/python/lite_test.py index 28d4f617041c9e..da0c23f3ac5937 100644 --- a/tensorflow/lite/python/lite_test.py +++ b/tensorflow/lite/python/lite_test.py @@ -2110,7 +2110,7 @@ def testOrderInputArrays(self): self.assertEqual((0., 0.), output_details[0]['quantization']) def testShapeOverriding(self): - """Test a SavedModel with the input_shapes arugment.""" + """Test a SavedModel with the input_shapes argument.""" saved_model_dir = self._createSavedModel(shape=[None, 16, 16, 3]) # Convert model and ensure model is not None. diff --git a/tensorflow/python/ops/numpy_ops/tests/extensions.py b/tensorflow/python/ops/numpy_ops/tests/extensions.py index 8d1a1edf6e9cb1..e685fc75f95d90 100644 --- a/tensorflow/python/ops/numpy_ops/tests/extensions.py +++ b/tensorflow/python/ops/numpy_ops/tests/extensions.py @@ -461,7 +461,7 @@ def _abstractify(x): if allow_static_outputs: # When `tf_f` below is called (via get_concrete_function) with the same - # arugments (after abstraction), the Python function `f` won't be run, so we + # arguments (after abstraction), the Python function `f` won't be run, so we # need this python_outputs_map to retrieve the Python outputs we've seen # before that correspond the arguments. python_outputs_map = {} @@ -840,8 +840,11 @@ def tf_conv_general_dilated(lhs, rhs, window_strides, padding, output_shape, raise ValueError("Current implementation requires the `data_format` of the " "inputs and outputs to be the same.") if len(lhs_spec) >= 6: - raise ValueError("Current implmentation does not support 4 or higher" - "dimensional convolution, but got: ", len(lhs_spec) - 2) + raise ValueError( + "Current implementation does not support 4 or higher" + "dimensional convolution, but got: ", + len(lhs_spec) - 2, + ) dim = len(lhs_spec) - 2 if lhs_dilation and rhs_dilation: if lhs_dilation == (1,) * dim and rhs_dilation == (1,) * dim: diff --git a/third_party/xla/third_party/gpus/rocm/BUILD.tpl b/third_party/xla/third_party/gpus/rocm/BUILD.tpl index 0adc83295ce03b..d05070d8d74223 100644 --- a/third_party/xla/third_party/gpus/rocm/BUILD.tpl +++ b/third_party/xla/third_party/gpus/rocm/BUILD.tpl @@ -433,6 +433,15 @@ rocm_lib_import( ], ) +rocm_lib_import( + name = "rocprofiler_sdk_roctx", + data = glob(["%{rocm_root}/lib/librocprofiler-sdk-roctx.so*"]), + interface_library = "%{rocm_root}/lib/librocprofiler-sdk-roctx.so", + # NEEDED librocprofiler-register.so, which the glob above does not match. + # Without this a hermetic build stages the shim without it and fails at load. + deps = [":rocprofiler_register_libs"], +) + rocm_lib_import( name = "rocsolver", data = glob([ diff --git a/third_party/xla/third_party/llvm/build.patch b/third_party/xla/third_party/llvm/build.patch index 868226d56a92b7..e98a6a218fa61e 100644 --- a/third_party/xla/third_party/llvm/build.patch +++ b/third_party/xla/third_party/llvm/build.patch @@ -70,3 +70,16 @@ index a7e652c..5b8ac5e 100644 "//conditions:default": [ "BLAKE3_NO_AVX2", "BLAKE3_NO_AVX512", + +diff --git a/utils/bazel/llvm-project-overlay/llvm/config.bzl b/utils/bazel/llvm-project-overlay/llvm/config.bzl +--- a/utils/bazel/llvm-project-overlay/llvm/config.bzl ++++ b/utils/bazel/llvm-project-overlay/llvm/config.bzl +@@ -110,6 +110,7 @@ + # LLVM features + r'LTDL_SHLIB_EXT=\".dll\"', + r'LLVM_PLUGIN_EXT=\".dll\"', ++ "LLVM_ENABLE_THREADS=1", + ] + fenv_defines + + # TODO: We should switch to platforms-based config settings to make this easier + diff --git a/third_party/xla/xla/backends/autotuner/BUILD b/third_party/xla/xla/backends/autotuner/BUILD index 906480372e5fe3..9d0c34d30a8140 100644 --- a/third_party/xla/xla/backends/autotuner/BUILD +++ b/third_party/xla/xla/backends/autotuner/BUILD @@ -460,7 +460,6 @@ cc_library( "//xla/tsl/platform:env", "@com_google_absl//absl/log", "@com_google_absl//absl/status", - "@com_google_absl//absl/status:status_macros", "@com_google_absl//absl/status:statusor", "@com_google_absl//absl/strings", "@com_google_absl//absl/time", diff --git a/third_party/xla/xla/backends/autotuner/directory_store.cc b/third_party/xla/xla/backends/autotuner/directory_store.cc index e04f0ae8a9dbbf..93ef0ab2b5171f 100644 --- a/third_party/xla/xla/backends/autotuner/directory_store.cc +++ b/third_party/xla/xla/backends/autotuner/directory_store.cc @@ -21,7 +21,6 @@ limitations under the License. #include "absl/log/log.h" #include "absl/status/status.h" -#include "absl/status/status_macros.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" #include "absl/time/clock.h" @@ -54,7 +53,12 @@ absl::StatusOr> DirectoryStore::Read( } std::string content; - ABSL_RETURN_IF_ERROR(tsl::ReadFileToString(env, path, &content)); + absl::Status read_status = tsl::ReadFileToString(env, path, &content); + if (!read_status.ok()) { + LOG(WARNING) << "Failed to read cache entry from file: " << path << ": " + << read_status; + return std::vector{}; + } autotuner::AutotuneEntry entry; if (!entry.ParseFromString(content)) { @@ -74,11 +78,17 @@ absl::Status DirectoryStore::Write(const autotuner::AutotuneEntry& entry) { tsl::Env* env = tsl::Env::Default(); std::string dir(tsl::io::Dirname(path)); - ABSL_RETURN_IF_ERROR(env->RecursivelyCreateDir(dir)); + absl::Status dir_status = env->RecursivelyCreateDir(dir); + if (!dir_status.ok()) { + LOG(WARNING) << "Failed to create directory for autotune cache: " << dir + << ": " << dir_status; + return absl::OkStatus(); + } std::string content; if (!entry.SerializeToString(&content)) { - return absl::InternalError("Failed to serialize autotune entry."); + LOG(WARNING) << "Failed to serialize autotune entry."; + return absl::OkStatus(); } // Rename trick: Write to a temporary file, then rename it to the final file @@ -89,14 +99,18 @@ absl::Status DirectoryStore::Write(const autotuner::AutotuneEntry& entry) { absl::Status status = tsl::WriteStringToFile(env, tmp_path, content); if (!status.ok()) { + LOG(WARNING) << "Failed to write temporary autotune cache file: " + << tmp_path << ": " << status; env->DeleteFile(tmp_path).IgnoreError(); - return status; + return absl::OkStatus(); } status = env->RenameFile(tmp_path, path); if (!status.ok()) { + LOG(WARNING) << "Failed to rename temporary autotune cache file to " << path + << ": " << status; env->DeleteFile(tmp_path).IgnoreError(); - return status; + return absl::OkStatus(); } return absl::OkStatus(); diff --git a/third_party/xla/xla/backends/autotuner/directory_store.h b/third_party/xla/xla/backends/autotuner/directory_store.h index 805db66bea8b65..918a13b92dfae2 100644 --- a/third_party/xla/xla/backends/autotuner/directory_store.h +++ b/third_party/xla/xla/backends/autotuner/directory_store.h @@ -27,6 +27,10 @@ limitations under the License. namespace xla { +// The reads/writes are best-effort and only log warnings if they fail. This +// ensures that the autotuner cache does not fail the compilation due to +// permission issues or disks quotas. +// // DirectoryStore implements AutotuneCacheStore by writing each autotune entry // into its own protobuf file inside a structured directory layout: // //[]/.pb diff --git a/third_party/xla/xla/backends/autotuner/directory_store_test.cc b/third_party/xla/xla/backends/autotuner/directory_store_test.cc index e36229302ec70b..dc19759383576b 100644 --- a/third_party/xla/xla/backends/autotuner/directory_store_test.cc +++ b/third_party/xla/xla/backends/autotuner/directory_store_test.cc @@ -226,5 +226,21 @@ TEST_F(DirectoryStoreTest, NoTemporaryFilesLeftBehind) { EXPECT_THAT(children, testing::ElementsAre("fp1.pb")); } +TEST_F(DirectoryStoreTest, WriteToInvalidPathIsNonFatal) { + // Create a file at a path where a directory is expected so that directory + // creation fails. + std::string blocking_file = cache_dir_ + "/blocked_dir"; + std::ofstream ofs(blocking_file); + ofs << "blocking file"; + ofs.close(); + + // Try to use a cache dir underneath the regular file. + DirectoryStore store(blocking_file + "/subpath", CacheMode::kReadWrite); + autotuner::AutotuneEntry entry = MakeEntry( + "gpu", "v1.0", "fp1", "cg1", "opt1", autotuner::Backend::TRITON); + // Write should be non-fatal (log warning and return OK). + EXPECT_OK(store.Write(entry)); +} + } // namespace } // namespace xla diff --git a/third_party/xla/xla/backends/cpu/runtime/sort_lib.cc b/third_party/xla/xla/backends/cpu/runtime/sort_lib.cc index 9efb8db5020fd8..e3bb5f5961d9b3 100644 --- a/third_party/xla/xla/backends/cpu/runtime/sort_lib.cc +++ b/third_party/xla/xla/backends/cpu/runtime/sort_lib.cc @@ -539,236 +539,6 @@ class SortIterator { difference_type stride_ = 1; }; -} // namespace - -template -static void Sort1DInplace(const SortDims& sort_dims, int64_t offset, - absl::Span data, - absl::Span primitive_sizes, - bool is_stable, LessThan* less_than) { - DCHECK_EQ(n, data.size()); - DCHECK_EQ(n, primitive_sizes.size()); - - std::array ptrs; - for (size_t i = 0; i < n; ++i) { - ptrs[i] = data[i] + offset * primitive_sizes[i]; - } - - Inputs inputs(ptrs, primitive_sizes); - - auto compare = [&](const auto& a, const auto& b) { - std::array values; - a.FillComparedValues(&values[0]); - b.FillComparedValues(&values[1]); - return (*less_than)(values.data()); - }; - - SortIterator, Ref, Ptr> begin( - Ptr(&inputs), /*stride=*/sort_dims.inner_dim_size); - if (is_stable) { - std::stable_sort(begin, begin + sort_dims.sort_dim_size, compare); - } else { - std::sort(begin, begin + sort_dims.sort_dim_size, compare); - } -} - -static void DSort1DInplace(const SortDims& sort_dims, int64_t offset, - absl::Span data, - absl::Span primitive_sizes, - bool is_stable, LessThan* less_than) { - DCHECK_EQ(data.size(), primitive_sizes.size()); - - std::vector ptrs(data.size()); - for (size_t i = 0; i < data.size(); ++i) { - ptrs[i] = data[i] + offset * primitive_sizes[i]; - } - - DInputs inputs(std::move(ptrs), primitive_sizes); - - // Allocate scratch space for sorted values outside of the lambda to avoid - // allocating it on every call to `compare`. - std::vector values(2 * data.size()); - - auto compare = [&, values = values.data()](const auto& a, const auto& b) { - a.FillComparedValues(&values[0]); - b.FillComparedValues(&values[1]); - return (*less_than)(values); - }; - - SortIterator begin(DPtr(&inputs), - /*stride=*/sort_dims.inner_dim_size); - if (is_stable) { - std::stable_sort(begin, begin + sort_dims.sort_dim_size, compare); - } else { - std::sort(begin, begin + sort_dims.sort_dim_size, compare); - } -} - -// Sorts `data` using `less_than` comparator function for slices in -// [start_slice, end_slice). -void SortInplace(const SortDims& sort_dims, int64_t start_slice, - int64_t end_slice, absl::Span data, - absl::Span primitive_sizes, bool is_stable, - LessThan* less_than) { - DCHECK_LE(0, start_slice); - DCHECK_LE(start_slice, end_slice); - DCHECK_LE(end_slice, sort_dims.outer_dim_size * sort_dims.inner_dim_size); - - for (int64_t i = start_slice; i < end_slice; ++i) { - int64_t inner_idx = i % sort_dims.inner_dim_size; - int64_t offset = inner_idx + (i - inner_idx) * sort_dims.sort_dim_size; - - // Use "sort" for statically known number of sorted inputs (expected to be - // faster) and "dsort" for dynamically known number of sorted inputs. - auto sort = [&](auto num_inputs) { - Sort1DInplace( - sort_dims, offset, data, primitive_sizes, is_stable, less_than); - }; - - switch (data.size()) { - case 1: - sort(std::integral_constant{}); - break; - case 2: - sort(std::integral_constant{}); - break; - case 3: - sort(std::integral_constant{}); - break; - case 4: - sort(std::integral_constant{}); - break; - case 5: - sort(std::integral_constant{}); - break; - case 6: - sort(std::integral_constant{}); - break; - case 7: - sort(std::integral_constant{}); - break; - case 8: - sort(std::integral_constant{}); - break; - case 9: - sort(std::integral_constant{}); - break; - case 10: - sort(std::integral_constant{}); - break; - case 11: - sort(std::integral_constant{}); - break; - case 12: - sort(std::integral_constant{}); - break; - case 13: - sort(std::integral_constant{}); - break; - case 14: - sort(std::integral_constant{}); - break; - case 15: - sort(std::integral_constant{}); - break; - case 16: - sort(std::integral_constant{}); - break; - default: - DSort1DInplace(sort_dims, offset, data, primitive_sizes, is_stable, - less_than); - break; - } - } -} - -template -static void Sort1DInplace(Iterator begin, Iterator end, bool is_stable, - SortDirection direction) { - if constexpr (std::is_integral_v) { - if (direction == SortDirection::kAscending) { - if (is_stable) { - std::stable_sort(begin, end, std::less()); - } else { - std::sort(begin, end, std::less()); - } - } else { - if (is_stable) { - std::stable_sort(begin, end, std::greater()); - } else { - std::sort(begin, end, std::greater()); - } - } - } else { - if (direction == SortDirection::kAscending) { - if (is_stable) { - std::stable_sort(begin, end, SortComparatorLess()); - } else { - std::sort(begin, end, SortComparatorLess()); - } - } else { - if (is_stable) { - std::stable_sort(begin, end, SortComparatorGreater()); - } else { - std::sort(begin, end, SortComparatorGreater()); - } - } - } -} - -template -static void Sort1DInplace(const SortDims& sort_dims, int64_t offset, T* data, - bool is_stable, SortDirection direction) { - T* begin = data + offset; - T* end = begin + sort_dims.sort_dim_size; - - if (sort_dims.inner_dim_size == 1) { - Sort1DInplace(begin, end, is_stable, direction); - } else { - using Iterator = internal::SortIterator; - Iterator begin_it(begin, /*stride=*/sort_dims.inner_dim_size); - Iterator end_it = begin_it + sort_dims.sort_dim_size; - Sort1DInplace(begin_it, end_it, is_stable, direction); - } -} - -template -void SortInplace(const SortDims& sort_dims, int64_t start_slice, - int64_t end_slice, T* data, bool is_stable, - SortDirection direction) { - DCHECK_LE(0, start_slice); - DCHECK_LE(start_slice, end_slice); - DCHECK_LE(end_slice, sort_dims.outer_dim_size * sort_dims.inner_dim_size); - - for (int64_t i = start_slice; i < end_slice; ++i) { - int64_t inner_idx = i % sort_dims.inner_dim_size; - int64_t offset = inner_idx + (i - inner_idx) * sort_dims.sort_dim_size; - - Sort1DInplace(sort_dims, offset, data, is_stable, direction); - } -} - -// Declare SortInplace for all supported types. Template is instantiated in -// the .cc file. -#define DEFINE_SORT_INPLACE(T) \ - template void SortInplace(const SortDims&, int64_t, int64_t, T*, bool, \ - SortDirection) - -DEFINE_SORT_INPLACE(float); -DEFINE_SORT_INPLACE(double); -DEFINE_SORT_INPLACE(bfloat16); -DEFINE_SORT_INPLACE(half); -DEFINE_SORT_INPLACE(int8_t); -DEFINE_SORT_INPLACE(int16_t); -DEFINE_SORT_INPLACE(int32_t); -DEFINE_SORT_INPLACE(int64_t); -DEFINE_SORT_INPLACE(uint8_t); -DEFINE_SORT_INPLACE(uint16_t); -DEFINE_SORT_INPLACE(uint32_t); -DEFINE_SORT_INPLACE(uint64_t); - -#undef DEFINE_SORT_INPLACE - template struct ZipRef { Key& key; @@ -915,46 +685,10 @@ class ZipIterator { Value* val_ptr_; }; -template -static void SortKeyValueSlice(int64_t n, Key* keys, Value* values, - bool is_stable, SortDirection direction) { - auto comp = [direction](const auto& a, const auto& b) -> bool { - auto get_key = [](const auto& item) -> const Key& { - using T = std::decay_t; - if constexpr (std::is_same_v>) { - return item.first; - } else { - return item.key; - } - }; - const Key& ka = get_key(a); - const Key& kb = get_key(b); - if constexpr (std::is_integral_v) { - if (direction == SortDirection::kAscending) { - return std::less()(ka, kb); - } - return std::greater()(ka, kb); - } else { - if (direction == SortDirection::kAscending) { - return SortComparatorLess()(ka, kb); - } - return SortComparatorGreater()(ka, kb); - } - }; - - ZipIterator begin(keys, values); - ZipIterator end(keys + n, values + n); - if (is_stable) { - std::stable_sort(begin, end, comp); - } else { - std::sort(begin, end, comp); - } -} - -template -void Sort2DKeyValue(const SortDims& sort_dims, int64_t start_slice, - int64_t end_slice, Key* keys, Value* values, bool is_stable, - SortDirection direction) { +template +static void Sort2DSlices(const SortDims& sort_dims, int64_t start_slice, + int64_t end_slice, Key* keys, Value* values, + SliceSorter&& sort_slice) { DCHECK_LE(0, start_slice); DCHECK_LE(start_slice, end_slice); DCHECK_LE(end_slice, sort_dims.outer_dim_size * sort_dims.inner_dim_size); @@ -963,8 +697,7 @@ void Sort2DKeyValue(const SortDims& sort_dims, int64_t start_slice, if (sort_dims.inner_dim_size == 1) { for (int64_t i = start_slice; i < end_slice; ++i) { int64_t offset = i * n; - SortKeyValueSlice(n, keys + offset, values + offset, - is_stable, direction); + sort_slice(n, keys + offset, values + offset); } return; } @@ -980,7 +713,7 @@ void Sort2DKeyValue(const SortDims& sort_dims, int64_t start_slice, key_buf[i] = key_ptr[i * stride]; val_buf[i] = val_ptr[i * stride]; } - SortKeyValueSlice(n, key_buf, val_buf, is_stable, direction); + sort_slice(n, key_buf, val_buf); for (int64_t i = 0; i < n; ++i) { key_ptr[i * stride] = key_buf[i]; val_ptr[i * stride] = val_buf[i]; @@ -1015,6 +748,366 @@ void Sort2DKeyValue(const SortDims& sort_dims, int64_t start_slice, } } +template +static void Sort2DSliceWithComparator(int64_t n, Key* keys, Value* values, + bool is_stable, LessThan* less_than) { + auto comp = [&](const auto& a, const auto& b) -> bool { + auto get_ptrs = + [](const auto& item) -> std::pair { + using T = std::decay_t; + if constexpr (std::is_same_v>) { + return {&item.first, &item.second}; + } else { + return {&item.key, &item.value}; + } + }; + auto [a0, a1] = get_ptrs(a); + auto [b0, b1] = get_ptrs(b); + const void* values_ptrs[4] = {a0, b0, a1, b1}; + return (*less_than)(values_ptrs); + }; + + ZipIterator begin(keys, values); + ZipIterator end(keys + n, values + n); + if (is_stable) { + std::stable_sort(begin, end, comp); + } else { + std::sort(begin, end, comp); + } +} + +template +static void Sort2DWithComparator(const SortDims& sort_dims, int64_t start_slice, + int64_t end_slice, Key* keys, Value* values, + bool is_stable, LessThan* less_than) { + Sort2DSlices(sort_dims, start_slice, end_slice, keys, values, + [is_stable, less_than](int64_t n, Key* k, Value* v) { + Sort2DSliceWithComparator(n, k, v, is_stable, + less_than); + }); +} + +// Dispatches to a generic functor parameterized by an unsigned integer type +// of matching byte size (uint8_t, uint16_t, uint32_t, uint64_t). +// +// When sorting with a non-inlined `less_than` comparator callback, comparisons +// are delegated via `const void*` pointers, so the sort algorithm does not need +// semantic type information (e.g. float vs int32_t). The types are only used +// for pointer arithmetic and data movement (swapping and temporary pivot copies +// on the stack). Because all trivially copyable types of the same byte width +// share the same size, alignment, and copy semantics, unsigned integers are +// binary-compatible stand-ins, avoiding the need to instantiate templates for +// every semantic type combination. +template +bool DispatchBySize(size_t size, Fn&& fn) { + switch (size) { + case 1: + return fn(uint8_t{}); + case 2: + return fn(uint16_t{}); + case 4: + return fn(uint32_t{}); + case 8: + return fn(uint64_t{}); + default: + return false; + } +} + +template +void Sort1DInplace(const SortDims& sort_dims, int64_t offset, + absl::Span data, + absl::Span primitive_sizes, bool is_stable, + LessThan* less_than) { + DCHECK_EQ(n, data.size()); + DCHECK_EQ(n, primitive_sizes.size()); + + std::array ptrs; + for (size_t i = 0; i < n; ++i) { + ptrs[i] = data[i] + offset * primitive_sizes[i]; + } + + Inputs inputs(ptrs, primitive_sizes); + + auto compare = [&](const auto& a, const auto& b) { + std::array values; + a.FillComparedValues(&values[0]); + b.FillComparedValues(&values[1]); + return (*less_than)(values.data()); + }; + + SortIterator, Ref, Ptr> begin( + Ptr(&inputs), /*stride=*/sort_dims.inner_dim_size); + if (is_stable) { + std::stable_sort(begin, begin + sort_dims.sort_dim_size, compare); + } else { + std::sort(begin, begin + sort_dims.sort_dim_size, compare); + } +} + +void DSort1DInplace(const SortDims& sort_dims, int64_t offset, + absl::Span data, + absl::Span primitive_sizes, bool is_stable, + LessThan* less_than) { + DCHECK_EQ(data.size(), primitive_sizes.size()); + + std::vector ptrs(data.size()); + for (size_t i = 0; i < data.size(); ++i) { + ptrs[i] = data[i] + offset * primitive_sizes[i]; + } + + DInputs inputs(std::move(ptrs), primitive_sizes); + + // Allocate scratch space for sorted values outside of the lambda to avoid + // allocating it on every call to `compare`. + std::vector values(2 * data.size()); + + auto compare = [&, values = values.data()](const auto& a, const auto& b) { + a.FillComparedValues(&values[0]); + b.FillComparedValues(&values[1]); + return (*less_than)(values); + }; + + SortIterator begin(DPtr(&inputs), + /*stride=*/sort_dims.inner_dim_size); + if (is_stable) { + std::stable_sort(begin, begin + sort_dims.sort_dim_size, compare); + } else { + std::sort(begin, begin + sort_dims.sort_dim_size, compare); + } +} + +template +void Sort1DInplace(Iterator begin, Iterator end, bool is_stable, + SortDirection direction) { + if constexpr (std::is_integral_v) { + if (direction == SortDirection::kAscending) { + if (is_stable) { + std::stable_sort(begin, end, std::less()); + } else { + std::sort(begin, end, std::less()); + } + } else { + if (is_stable) { + std::stable_sort(begin, end, std::greater()); + } else { + std::sort(begin, end, std::greater()); + } + } + } else { + if (direction == SortDirection::kAscending) { + if (is_stable) { + std::stable_sort(begin, end, SortComparatorLess()); + } else { + std::sort(begin, end, SortComparatorLess()); + } + } else { + if (is_stable) { + std::stable_sort(begin, end, SortComparatorGreater()); + } else { + std::sort(begin, end, SortComparatorGreater()); + } + } + } +} + +template +void Sort1DInplace(const SortDims& sort_dims, int64_t offset, T* data, + bool is_stable, SortDirection direction) { + T* begin = data + offset; + T* end = begin + sort_dims.sort_dim_size; + + if (sort_dims.inner_dim_size == 1) { + Sort1DInplace(begin, end, is_stable, direction); + } else { + using Iterator = internal::SortIterator; + Iterator begin_it(begin, /*stride=*/sort_dims.inner_dim_size); + Iterator end_it = begin_it + sort_dims.sort_dim_size; + Sort1DInplace(begin_it, end_it, is_stable, direction); + } +} + +template +void SortKeyValueSlice(int64_t n, Key* keys, Value* values, bool is_stable, + SortDirection direction) { + auto comp = [direction](const auto& a, const auto& b) -> bool { + auto get_key = [](const auto& item) -> const Key& { + using T = std::decay_t; + if constexpr (std::is_same_v>) { + return item.first; + } else { + return item.key; + } + }; + const Key& ka = get_key(a); + const Key& kb = get_key(b); + if constexpr (std::is_integral_v) { + if (direction == SortDirection::kAscending) { + return std::less()(ka, kb); + } + return std::greater()(ka, kb); + } else { + if (direction == SortDirection::kAscending) { + return SortComparatorLess()(ka, kb); + } + return SortComparatorGreater()(ka, kb); + } + }; + + ZipIterator begin(keys, values); + ZipIterator end(keys + n, values + n); + if (is_stable) { + std::stable_sort(begin, end, comp); + } else { + std::sort(begin, end, comp); + } +} + +} // namespace + +// Sorts `data` using `less_than` comparator function for slices in +// [start_slice, end_slice). +void SortInplace(const SortDims& sort_dims, int64_t start_slice, + int64_t end_slice, absl::Span data, + absl::Span primitive_sizes, bool is_stable, + LessThan* less_than) { + DCHECK_LE(0, start_slice); + DCHECK_LE(start_slice, end_slice); + DCHECK_LE(end_slice, sort_dims.outer_dim_size * sort_dims.inner_dim_size); + DCHECK_EQ(data.size(), primitive_sizes.size()); + + if (data.size() == 2 && + (sort_dims.inner_dim_size == 1 || sort_dims.sort_dim_size <= 65536)) { + bool dispatched = DispatchBySize(primitive_sizes[0], [&](auto key_dummy) { + using Key = decltype(key_dummy); + return DispatchBySize(primitive_sizes[1], [&](auto val_dummy) { + using Value = decltype(val_dummy); + Sort2DWithComparator( + sort_dims, start_slice, end_slice, reinterpret_cast(data[0]), + reinterpret_cast(data[1]), is_stable, less_than); + return true; + }); + }); + if (dispatched) { + return; + } + } + + for (int64_t i = start_slice; i < end_slice; ++i) { + int64_t inner_idx = i % sort_dims.inner_dim_size; + int64_t offset = inner_idx + (i - inner_idx) * sort_dims.sort_dim_size; + + // Use "sort" for statically known number of sorted inputs (expected to be + // faster) and "dsort" for dynamically known number of sorted inputs. + auto sort = [&](auto num_inputs) { + Sort1DInplace( + sort_dims, offset, data, primitive_sizes, is_stable, less_than); + }; + + switch (data.size()) { + case 1: + sort(std::integral_constant{}); + break; + case 2: + sort(std::integral_constant{}); + break; + case 3: + sort(std::integral_constant{}); + break; + case 4: + sort(std::integral_constant{}); + break; + case 5: + sort(std::integral_constant{}); + break; + case 6: + sort(std::integral_constant{}); + break; + case 7: + sort(std::integral_constant{}); + break; + case 8: + sort(std::integral_constant{}); + break; + case 9: + sort(std::integral_constant{}); + break; + case 10: + sort(std::integral_constant{}); + break; + case 11: + sort(std::integral_constant{}); + break; + case 12: + sort(std::integral_constant{}); + break; + case 13: + sort(std::integral_constant{}); + break; + case 14: + sort(std::integral_constant{}); + break; + case 15: + sort(std::integral_constant{}); + break; + case 16: + sort(std::integral_constant{}); + break; + default: + DSort1DInplace(sort_dims, offset, data, primitive_sizes, is_stable, + less_than); + break; + } + } +} + +template +void SortInplace(const SortDims& sort_dims, int64_t start_slice, + int64_t end_slice, T* data, bool is_stable, + SortDirection direction) { + DCHECK_LE(0, start_slice); + DCHECK_LE(start_slice, end_slice); + DCHECK_LE(end_slice, sort_dims.outer_dim_size * sort_dims.inner_dim_size); + + for (int64_t i = start_slice; i < end_slice; ++i) { + int64_t inner_idx = i % sort_dims.inner_dim_size; + int64_t offset = inner_idx + (i - inner_idx) * sort_dims.sort_dim_size; + + Sort1DInplace(sort_dims, offset, data, is_stable, direction); + } +} + +// Declare SortInplace for all supported types. Template is instantiated in +// the .cc file. +#define DEFINE_SORT_INPLACE(T) \ + template void SortInplace(const SortDims&, int64_t, int64_t, T*, bool, \ + SortDirection) + +DEFINE_SORT_INPLACE(float); +DEFINE_SORT_INPLACE(double); +DEFINE_SORT_INPLACE(bfloat16); +DEFINE_SORT_INPLACE(half); +DEFINE_SORT_INPLACE(int8_t); +DEFINE_SORT_INPLACE(int16_t); +DEFINE_SORT_INPLACE(int32_t); +DEFINE_SORT_INPLACE(int64_t); +DEFINE_SORT_INPLACE(uint8_t); +DEFINE_SORT_INPLACE(uint16_t); +DEFINE_SORT_INPLACE(uint32_t); +DEFINE_SORT_INPLACE(uint64_t); + +#undef DEFINE_SORT_INPLACE + +template +void Sort2DKeyValue(const SortDims& sort_dims, int64_t start_slice, + int64_t end_slice, Key* keys, Value* values, bool is_stable, + SortDirection direction) { + Sort2DSlices(sort_dims, start_slice, end_slice, keys, values, + [is_stable, direction](int64_t n, Key* k, Value* v) { + SortKeyValueSlice(n, k, v, is_stable, direction); + }); +} + #define DEFINE_SORT_2D_KEY_VALUE(Key, Value) \ template void Sort2DKeyValue(const SortDims&, int64_t, int64_t, \ Key*, Value*, bool, SortDirection) diff --git a/third_party/xla/xla/backends/cpu/runtime/sort_thunk_test.cc b/third_party/xla/xla/backends/cpu/runtime/sort_thunk_test.cc index a34b36d84afc5e..82229ef8ab4044 100644 --- a/third_party/xla/xla/backends/cpu/runtime/sort_thunk_test.cc +++ b/third_party/xla/xla/backends/cpu/runtime/sort_thunk_test.cc @@ -445,6 +445,90 @@ TEST_P(SortThunkTest, SortKeyValueStridedSlices) { {{{2, 3}, {4, 5}, {0, 1}}, {{8, 9}, {10, 11}, {6, 7}}})); } +TEST_P(SortThunkTest, SortKeyValueWithCustomComparator) { + bool is_stable = GetParam(); + + auto keys = LiteralUtil::CreateR1({2.0f, 1.0f, 2.0f, 1.0f}); + auto values = LiteralUtil::CreateR1({10, 20, 30, 40}); + + BufferAllocations allocations = CreateBufferAllocations(keys, values); + auto [alloc0, alloc1] = CreateBufferAllocation(keys, values); + auto [slice0, slice1] = CreateBufferAllocationSlice(alloc0, alloc1); + + // Custom comparator using both operands: sort by key ascending, breaking + // ties by value descending. + auto custom_less_than = [](const void** data) { + auto* lhs_k = reinterpret_cast(data[0]); + auto* rhs_k = reinterpret_cast(data[1]); + auto* lhs_v = reinterpret_cast(data[2]); + auto* rhs_v = reinterpret_cast(data[3]); + if (*lhs_k != *rhs_k) { + return *lhs_k < *rhs_k; + } + return *lhs_v > *rhs_v; + }; + + ASSERT_OK_AND_ASSIGN( + auto thunk, + SortThunk::Create({"sort"}, + {{slice0, keys.shape()}, {slice1, values.shape()}}, + /*dimension=*/0, is_stable, custom_less_than, + /*direction=*/std::nullopt)); + + Thunk::ExecuteParams params; + params.buffer_allocations = &allocations; + + auto execute_event = thunk->Execute(params); + tsl::BlockUntilReady(execute_event); + ASSERT_FALSE(execute_event.IsError()); + + EXPECT_EQ(keys, LiteralUtil::CreateR1({1.0f, 1.0f, 2.0f, 2.0f})); + EXPECT_EQ(values, LiteralUtil::CreateR1({40, 20, 30, 10})); +} + +TEST_P(SortThunkTest, SortKeyValueStridedWithCustomComparator) { + bool is_stable = GetParam(); + + // Shape [2, 3, 2], sort along dimension 1 (inner_dim_size = 2, sort_dim_size + // = 3) + auto keys = LiteralUtil::CreateR3( + {{{3.0f, 6.0f}, {1.0f, 4.0f}, {2.0f, 5.0f}}, + {{9.0f, 12.0f}, {7.0f, 10.0f}, {8.0f, 11.0f}}}); + auto values = LiteralUtil::CreateR3( + {{{0, 1}, {2, 3}, {4, 5}}, {{6, 7}, {8, 9}, {10, 11}}}); + + BufferAllocations allocations = CreateBufferAllocations(keys, values); + auto [alloc0, alloc1] = CreateBufferAllocation(keys, values); + auto [slice0, slice1] = CreateBufferAllocationSlice(alloc0, alloc1); + + auto custom_less_than = [](const void** data) { + auto* lhs_k = reinterpret_cast(data[0]); + auto* rhs_k = reinterpret_cast(data[1]); + return *lhs_k < *rhs_k; + }; + + ASSERT_OK_AND_ASSIGN( + auto thunk, + SortThunk::Create({"sort"}, + {{slice0, keys.shape()}, {slice1, values.shape()}}, + /*dimension=*/1, is_stable, custom_less_than, + /*direction=*/std::nullopt)); + + Thunk::ExecuteParams params; + params.buffer_allocations = &allocations; + + auto execute_event = thunk->Execute(params); + tsl::BlockUntilReady(execute_event); + ASSERT_FALSE(execute_event.IsError()); + + EXPECT_EQ(keys, LiteralUtil::CreateR3( + {{{1.0f, 4.0f}, {2.0f, 5.0f}, {3.0f, 6.0f}}, + {{7.0f, 10.0f}, {8.0f, 11.0f}, {9.0f, 12.0f}}})); + EXPECT_EQ(values, + LiteralUtil::CreateR3( + {{{2, 3}, {4, 5}, {0, 1}}, {{8, 9}, {10, 11}, {6, 7}}})); +} + INSTANTIATE_TEST_SUITE_P(SortThunk, SortThunkTest, testing::Bool(), testing::PrintToStringParamName()); diff --git a/third_party/xla/xla/backends/gpu/BUILD b/third_party/xla/xla/backends/gpu/BUILD index ed4efa05638975..8c6e0b68aae1d1 100644 --- a/third_party/xla/xla/backends/gpu/BUILD +++ b/third_party/xla/xla/backends/gpu/BUILD @@ -51,3 +51,31 @@ cc_library( "@com_google_absl//absl/base:core_headers", ], ) + +cc_library( + name = "ffi_collectives", + srcs = ["ffi_collectives.cc"], + hdrs = ["ffi_collectives.h"], + visibility = ["//visibility:public"], + deps = [ + "//xla:status_macros", + "//xla:util", + "//xla:xla_data_proto_cc", + "//xla/backends/gpu/collectives:gpu_clique_key", + "//xla/backends/gpu/collectives:gpu_communicator", + "//xla/backends/gpu/runtime:collective_clique_requests", + "//xla/backends/gpu/runtime:collective_cliques", + "//xla/backends/gpu/runtime:collective_execution", + "//xla/backends/gpu/runtime:collective_params", + "//xla/ffi:ffi_interop", + "//xla/ffi/api:c_api", + "//xla/runtime:device_id", + "//xla/service:collective_ops_utils", + "@com_google_absl//absl/algorithm:container", + "@com_google_absl//absl/log", + "@com_google_absl//absl/status", + "@com_google_absl//absl/status:status_macros", + "@com_google_absl//absl/status:statusor", + "@com_google_absl//absl/strings:string_view", + ], +) diff --git a/third_party/xla/xla/backends/gpu/ffi_collectives.cc b/third_party/xla/xla/backends/gpu/ffi_collectives.cc new file mode 100644 index 00000000000000..76e7efb02d51e8 --- /dev/null +++ b/third_party/xla/xla/backends/gpu/ffi_collectives.cc @@ -0,0 +1,242 @@ +/* Copyright 2026 The OpenXLA Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +#include "xla/backends/gpu/ffi_collectives.h" + +#include +#include +#include +#include + +#include "absl/algorithm/container.h" +#include "absl/log/log.h" +#include "absl/status/status.h" +#include "absl/status/status_macros.h" +#include "absl/status/statusor.h" +#include "absl/strings/string_view.h" +#include "xla/backends/gpu/collectives/gpu_clique_key.h" +#include "xla/backends/gpu/collectives/gpu_communicator.h" +#include "xla/backends/gpu/runtime/collective_clique_requests.h" +#include "xla/backends/gpu/runtime/collective_cliques.h" +#include "xla/backends/gpu/runtime/collective_execution.h" +#include "xla/backends/gpu/runtime/collective_params.h" +#include "xla/ffi/api/c_api.h" +#include "xla/ffi/api/collectives_c_api.h" +#include "xla/ffi/ffi_interop.h" +#include "xla/runtime/device_id.h" +#include "xla/service/collective_ops_utils.h" +#include "xla/status_macros.h" +#include "xla/util.h" +#include "xla/xla_data.pb.h" + +namespace xla::gpu { +namespace { + +absl::Status ActualStructSizeIsGreaterOrEqual(absl::string_view struct_name, + size_t expected, size_t actual) { + if (actual < expected) { + return InvalidArgument("Unexpected %s size: expected %zu, got %zu", + struct_name, expected, actual); + } + if (actual > expected) { + VLOG(2) << "Unexpected " << struct_name << " size: expected " << expected + << ", got " << actual << ". Check installed software versions."; + } + return absl::OkStatus(); +} + +absl::StatusOr ToCollectiveOpGroupMode( + XLA_FFI_CollectiveGroupMode group_mode) { + switch (group_mode) { + case XLA_FFI_GROUP_CROSS_REPLICA: + return CollectiveOpGroupMode::COLLECTIVE_OP_GROUP_MODE_CROSS_REPLICA; + case XLA_FFI_GROUP_CROSS_PARTITION: + return CollectiveOpGroupMode::COLLECTIVE_OP_GROUP_MODE_CROSS_PARTITION; + case XLA_FFI_GROUP_CROSS_REPLICA_AND_PARTITION: + return CollectiveOpGroupMode:: + COLLECTIVE_OP_GROUP_MODE_CROSS_REPLICA_AND_PARTITION; + case XLA_FFI_GROUP_FLATTENED_ID: + return CollectiveOpGroupMode::COLLECTIVE_OP_GROUP_MODE_FLATTENED_ID; + default: + return InvalidArgument("Invalid collective group mode: %d", + static_cast(group_mode)); + } +} + +absl::StatusOr> ToReplicaGroups( + const XLA_FFI_ReplicaGroup* groups, size_t num_groups) { + if (groups == nullptr && num_groups != 0) { + return InvalidArgument("groups must be set when num_groups is non-zero"); + } + + std::vector replica_groups; + replica_groups.reserve(num_groups); + for (size_t i = 0; i < num_groups; ++i) { + if (groups[i].ids == nullptr && groups[i].size != 0) { + return InvalidArgument( + "group ids must be set when group size is non-zero"); + } + ReplicaGroup replica_group; + for (size_t j = 0; j < groups[i].size; ++j) { + replica_group.add_replica_ids(groups[i].ids[j]); + } + replica_groups.push_back(std::move(replica_group)); + } + return replica_groups; +} + +absl::StatusOr GetCliqueKey( + const CollectiveParams& params, XLA_FFI_CollectiveGroupMode group_mode, + const std::vector& replica_groups, int64_t communication_id) { + if (communication_id < 0) { + return InvalidArgument("communication_id must be non-negative"); + } + ABSL_ASSIGN_OR_RETURN(CollectiveOpGroupMode mode, + ToCollectiveOpGroupMode(group_mode)); + return GetGpuCliqueKey(params, replica_groups, mode, + CommunicationId(communication_id)); +} + +absl::StatusOr>> GetDeviceGroups( + const CollectiveParams& params, XLA_FFI_CollectiveGroupMode group_mode, + const std::vector& replica_groups) { + TF_RET_CHECK(params.device_assn != nullptr) + << "Device assignment is required for GPU communicator FFI calls"; + + ABSL_ASSIGN_OR_RETURN(CollectiveOpGroupMode mode, + ToCollectiveOpGroupMode(group_mode)); + + ABSL_ASSIGN_OR_RETURN( + std::vector> device_groups, + GetParticipatingDevicesGroups(*params.device_assn, replica_groups, mode)); + + for (auto& group : device_groups) { + absl::c_sort(group); + } + absl::c_sort(device_groups); + return device_groups; +} + +GpuCollectivesState* AsState(const XLA_FFI_Collectives_Extension* self) { + if (self == nullptr) { + return nullptr; + } + return reinterpret_cast(self->state); +} + +absl::Status CommunicatorRequestImpl(const XLA_FFI_Collectives_Extension* self, + XLA_FFI_Communicator_Request_Args* args) { + if (self == nullptr) { + return InvalidArgument("Collectives extension is not available"); + } + if (args == nullptr) { + return InvalidArgument("XLA_FFI_Communicator_Request_Args is null"); + } + ABSL_RETURN_IF_ERROR(ActualStructSizeIsGreaterOrEqual( + "XLA_FFI_Communicator_Request_Args", + XLA_FFI_Communicator_Request_Args_STRUCT_SIZE, args->struct_size)); + + GpuCollectivesState* state = AsState(self); + if (state == nullptr || state->collective_params == nullptr) { + return InvalidArgument("Collective params are not available"); + } + if (state->collective_clique_requests == nullptr) { + return FailedPrecondition( + "GPU communicator request is only available during the prepare stage"); + } + + ABSL_ASSIGN_OR_RETURN(std::vector replica_groups, + ToReplicaGroups(args->groups, args->num_groups)); + ABSL_ASSIGN_OR_RETURN(GpuCliqueKey clique_key, + GetCliqueKey(*state->collective_params, args->group_mode, + replica_groups, args->communication_id)); + ABSL_ASSIGN_OR_RETURN(std::vector> device_groups, + GetDeviceGroups(*state->collective_params, args->group_mode, + replica_groups)); + return state->collective_clique_requests->RequestClique(clique_key, + device_groups); +} + +absl::Status CommunicatorGetImpl(const XLA_FFI_Collectives_Extension* self, + XLA_FFI_Communicator_Get_Args* args) { + if (self == nullptr) { + return InvalidArgument("Collectives extension is not available"); + } + if (args == nullptr) { + return InvalidArgument("XLA_FFI_Communicator_Get_Args is null"); + } + ABSL_RETURN_IF_ERROR(ActualStructSizeIsGreaterOrEqual( + "XLA_FFI_Communicator_Get_Args", + XLA_FFI_Communicator_Get_Args_STRUCT_SIZE, args->struct_size)); + + GpuCollectivesState* state = AsState(self); + if (state == nullptr || state->collective_params == nullptr) { + return InvalidArgument("Collective params are not available"); + } + if (state->collective_cliques == nullptr) { + return FailedPrecondition( + "GPU communicator get is only available after cliques are acquired"); + } + + ABSL_ASSIGN_OR_RETURN(std::vector replica_groups, + ToReplicaGroups(args->groups, args->num_groups)); + ABSL_ASSIGN_OR_RETURN(GpuCliqueKey clique_key, + GetCliqueKey(*state->collective_params, args->group_mode, + replica_groups, args->communication_id)); + ABSL_ASSIGN_OR_RETURN(GpuCommunicator * comm, + state->collective_cliques->GetComm( + clique_key, state->collective_params->global_device_id)); + + PlatformCommunicatorHandle platform_comm = comm->platform_comm(); + if (platform_comm.handle == nullptr) { + return Unimplemented("Platform communicator handle is not available"); + } + + args->communicator = + reinterpret_cast(platform_comm.handle); + return absl::OkStatus(); +} + +XLA_FFI_Error* CommunicatorRequest(const XLA_FFI_Collectives_Extension* self, + XLA_FFI_Communicator_Request_Args* args) { + return ffi::CreateError(CommunicatorRequestImpl(self, args)); +} + +XLA_FFI_Error* CommunicatorGet(const XLA_FFI_Collectives_Extension* self, + XLA_FFI_Communicator_Get_Args* args) { + return ffi::CreateError(CommunicatorGetImpl(self, args)); +} + +} // namespace + +XLA_FFI_Collectives_Extension MakeCollectivesExtension( + GpuCollectivesState* state) { + XLA_FFI_Collectives_Extension ext; + ext.extension_base = XLA_FFI_Extension{ + /*struct_size=*/sizeof(XLA_FFI_Collectives_Extension), + /*id=*/ + XLA_FFI_ExtensionId{ + /*extension_type=*/XLA_FFI_Extension_Collectives, + /*major_version=*/XLA_FFI_Extension_Collectives_MajorVersion, + /*minor_version=*/XLA_FFI_Extension_Collectives_MinorVersion}, + /*next=*/nullptr, + }; + ext.state = reinterpret_cast(state); + ext.request_communicator = CommunicatorRequest; + ext.get_communicator = CommunicatorGet; + return ext; +} + +} // namespace xla::gpu diff --git a/third_party/xla/xla/backends/gpu/ffi_collectives.h b/third_party/xla/xla/backends/gpu/ffi_collectives.h new file mode 100644 index 00000000000000..62661885822ec4 --- /dev/null +++ b/third_party/xla/xla/backends/gpu/ffi_collectives.h @@ -0,0 +1,44 @@ +/* Copyright 2026 The OpenXLA Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +#ifndef XLA_BACKENDS_GPU_FFI_COLLECTIVES_H_ +#define XLA_BACKENDS_GPU_FFI_COLLECTIVES_H_ + +#include "xla/backends/gpu/runtime/collective_clique_requests.h" +#include "xla/backends/gpu/runtime/collective_cliques.h" +#include "xla/backends/gpu/runtime/collective_params.h" +#include "xla/ffi/api/collectives_c_api.h" + +namespace xla::gpu { + +// Per-invocation collective state read by the collectives FFI extension +// callbacks via `XLA_FFI_Collectives_Extension::state`. Pointers are non-owning +// and only valid for the stage they belong to: `collective_clique_requests` is +// set in Prepare, `collective_cliques` once cliques are acquired. +struct GpuCollectivesState { + const CollectiveParams* collective_params = nullptr; + CollectiveCliqueRequests* collective_clique_requests = nullptr; + const CollectiveCliques* collective_cliques = nullptr; +}; + +// Builds a collectives FFI extension whose callbacks read `state`. Borrows +// `state`, which must outlive the returned extension (both are typically stack +// locals for the duration of the invocation). +XLA_FFI_Collectives_Extension MakeCollectivesExtension( + GpuCollectivesState* state); + +} // namespace xla::gpu + +#endif // XLA_BACKENDS_GPU_FFI_COLLECTIVES_H_ diff --git a/third_party/xla/xla/backends/gpu/runtime/BUILD b/third_party/xla/xla/backends/gpu/runtime/BUILD index 58b051062d1e54..ad0fc565c7b22c 100644 --- a/third_party/xla/xla/backends/gpu/runtime/BUILD +++ b/third_party/xla/xla/backends/gpu/runtime/BUILD @@ -1090,6 +1090,7 @@ cc_library( "//xla:status_macros", "//xla:util", "//xla/backends/cpu:target_machine_options", + "//xla/backends/gpu:ffi_collectives", "//xla/ffi", "//xla/ffi:attribute_map", "//xla/ffi:call_frame", diff --git a/third_party/xla/xla/backends/gpu/runtime/custom_call_thunk.cc b/third_party/xla/xla/backends/gpu/runtime/custom_call_thunk.cc index 5cad765f2bded4..bafe141e69d927 100644 --- a/third_party/xla/xla/backends/gpu/runtime/custom_call_thunk.cc +++ b/third_party/xla/xla/backends/gpu/runtime/custom_call_thunk.cc @@ -38,6 +38,7 @@ limitations under the License. #include "absl/strings/string_view.h" #include "absl/types/span.h" #include "xla/backends/cpu/target_machine_options.h" +#include "xla/backends/gpu/ffi_collectives.h" #include "xla/backends/gpu/runtime/collective_clique_requests.h" #include "xla/backends/gpu/runtime/collective_cliques.h" #include "xla/backends/gpu/runtime/collective_params.h" @@ -49,6 +50,7 @@ limitations under the License. #include "xla/backends/gpu/runtime/traced_command.h" #include "xla/executable_run_options.h" #include "xla/ffi/api/c_api.h" +#include "xla/ffi/api/collectives_c_api.h" #include "xla/ffi/api/record_api.h" #include "xla/ffi/api/record_c_api.h" #include "xla/ffi/attribute_map.h" @@ -417,7 +419,12 @@ absl::Status CustomCallThunk::ExecuteFfiHandler( collective_params, collective_clique_requests, collective_memory_requests, collective_cliques, collective_memory, execution_context, computation_streams); - context.extension_start = extension_start; + GpuCollectivesState collectives_state{ + collective_params, collective_clique_requests, collective_cliques}; + XLA_FFI_Collectives_Extension collectives = + MakeCollectivesExtension(&collectives_state); + collectives.extension_base.next = extension_start; + context.extension_start = &collectives.extension_base; return Invoke(ffi::GetXlaFfiApi(), handler, *call_frame, context, stage); } @@ -444,7 +451,12 @@ absl::Status CustomCallThunk::ExecuteFfiHandler( collective_params, collective_clique_requests, collective_memory_requests, collective_cliques, collective_memory, execution_context, computation_streams); - context.extension_start = extension_start; + GpuCollectivesState collectives_state{ + collective_params, collective_clique_requests, collective_cliques}; + XLA_FFI_Collectives_Extension collectives = + MakeCollectivesExtension(&collectives_state); + collectives.extension_base.next = extension_start; + context.extension_start = &collectives.extension_base; return Invoke(ffi::GetXlaFfiApi(), handler, *call_frame, context, stage); } diff --git a/third_party/xla/xla/backends/gpu/tests/BUILD b/third_party/xla/xla/backends/gpu/tests/BUILD index bb31981f457da6..76576adcd14f38 100644 --- a/third_party/xla/xla/backends/gpu/tests/BUILD +++ b/third_party/xla/xla/backends/gpu/tests/BUILD @@ -1409,7 +1409,10 @@ xla_test( xla_test( name = "collective_ops_ffi_test", - srcs = ["collective_ops_ffi_test.cc"], + srcs = ["collective_ops_ffi_test.cc"] + if_cuda_is_configured( + ["collective_ops_ffi_communicator_cuda.cc"], + ["collective_ops_ffi_communicator_default.cc"], + ), backend_tags = { "gpu": [ "multi_gpu", @@ -1439,8 +1442,10 @@ xla_test( "//xla/core/collectives:rank_id", "//xla/core/collectives:reduction_kind", "//xla/ffi", + "//xla/ffi:collectives_ffi", "//xla/ffi:ffi_api", "//xla/ffi/api:c_api", + "//xla/ffi/api:collectives_api", "//xla/runtime:device_id", "//xla/service:collective_ops_utils", "//xla/service:rendezvous", @@ -1466,6 +1471,9 @@ xla_test( "@com_google_absl//absl/types:span", ] + if_cuda_is_configured([ ":collective_ops_ffi_kernels_cuda", + "@com_google_absl//absl/base", + "@local_config_cuda//cuda:cuda_headers", + "@local_config_nccl//:nccl", ]), ) diff --git a/third_party/xla/xla/backends/gpu/tests/collective_ops_ffi_communicator_cuda.cc b/third_party/xla/xla/backends/gpu/tests/collective_ops_ffi_communicator_cuda.cc new file mode 100644 index 00000000000000..a8940c0de58db7 --- /dev/null +++ b/third_party/xla/xla/backends/gpu/tests/collective_ops_ffi_communicator_cuda.cc @@ -0,0 +1,44 @@ +/* Copyright 2025 The OpenXLA Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +#include + +#include "absl/base/casts.h" +#include "absl/status/status.h" +#include "third_party/gpus/cuda/include/driver_types.h" +#include "third_party/nccl/nccl.h" +#include "xla/ffi/api/collectives_c_api.h" +#include "xla/status_macros.h" +#include "xla/stream_executor/stream.h" + +namespace xla::gpu { + +absl::Status CommunicatorAllReduceU32(stream_executor::Stream* stream, + XLA_FFI_Communicator* communicator, + const void* send_buffer, + void* recv_buffer, int64_t count) { + ncclComm_t nccl_comm = reinterpret_cast(communicator); + cudaStream_t cuda_stream = + absl::bit_cast(stream->platform_specific_handle().stream); + + ncclResult_t result = + ncclAllReduce(send_buffer, recv_buffer, count, ncclUint32, ncclSum, + nccl_comm, cuda_stream); + TF_RET_CHECK(result == ncclSuccess) + << "ncclAllReduce failed: " << ncclGetErrorString(result); + return stream->BlockHostUntilDone(); +} + +} // namespace xla::gpu diff --git a/third_party/xla/xla/backends/gpu/tests/collective_ops_ffi_communicator_default.cc b/third_party/xla/xla/backends/gpu/tests/collective_ops_ffi_communicator_default.cc new file mode 100644 index 00000000000000..71487a9fd8fa5e --- /dev/null +++ b/third_party/xla/xla/backends/gpu/tests/collective_ops_ffi_communicator_default.cc @@ -0,0 +1,34 @@ +/* Copyright 2025 The OpenXLA Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +#include + +#include "absl/status/status.h" +#include "xla/ffi/api/collectives_c_api.h" + +namespace stream_executor { +class Stream; +} // namespace stream_executor + +namespace xla::gpu { + +absl::Status CommunicatorAllReduceU32(stream_executor::Stream*, + XLA_FFI_Communicator*, const void*, void*, + int64_t) { + return absl::UnimplementedError( + "Communicator all-reduce is not implemented for this platform"); +} + +} // namespace xla::gpu diff --git a/third_party/xla/xla/backends/gpu/tests/collective_ops_ffi_test.cc b/third_party/xla/xla/backends/gpu/tests/collective_ops_ffi_test.cc index 4ce28da13bb3e2..7b02691885318b 100644 --- a/third_party/xla/xla/backends/gpu/tests/collective_ops_ffi_test.cc +++ b/third_party/xla/xla/backends/gpu/tests/collective_ops_ffi_test.cc @@ -47,6 +47,9 @@ limitations under the License. #include "xla/core/collectives/rank_id.h" #include "xla/core/collectives/reduction_kind.h" #include "xla/ffi/api/c_api.h" +#include "xla/ffi/api/collectives_api.h" +#include "xla/ffi/api/collectives_c_api.h" +#include "xla/ffi/collectives_ffi.h" #include "xla/ffi/ffi.h" #include "xla/future.h" #include "xla/literal.h" @@ -66,6 +69,13 @@ limitations under the License. namespace xla::gpu { using ::testing::Values; +// Defined in `collective_ops_ffi_communicator_{cuda,default}.cc` and selected +// at link time. The default translation unit returns Unimplemented. +absl::Status CommunicatorAllReduceU32(se::Stream* stream, + XLA_FFI_Communicator* communicator, + const void* send_buffer, + void* recv_buffer, int64_t count); + struct SynchronizationSignals { absl::Mutex mutex; absl::BlockingCounter finished_kernels_counter; @@ -320,6 +330,41 @@ static absl::Status PreparePeerAllReduce( return absl::OkStatus(); } +namespace { +std::vector> PublicApiReplicaGroups() { + std::vector ids; + ids.reserve(kNumReplicas); + for (int64_t i = 0; i < kNumReplicas; ++i) { + ids.push_back(i); + } + return {std::move(ids)}; +} + +// Prepare handler: requests the XLA-owned collective clique via the public +// collectives FFI extension, using the C++ Communicator wrapper. +absl::Status PreparePublicApiAllReduce(ffi::Communicator comm) { + return comm.RequestCommunicator(ffi::GroupMode::kFlattenedId, + PublicApiReplicaGroups(), + /*communication_id=*/0); +} + +// Execute handler: gets the XLA-owned communicator via the public collectives +// FFI extension and runs an all-reduce on it via the platform collective +// library (see CommunicatorAllReduceU32). +absl::Status PublicApiAllReduce(se::Stream* stream, ffi::BufferR0 src, + ffi::Result> dst, + ffi::Communicator comm) { + ABSL_ASSIGN_OR_RETURN(XLA_FFI_Communicator * communicator, + comm.GetCommunicator(ffi::GroupMode::kFlattenedId, + PublicApiReplicaGroups(), + /*communication_id=*/0)); + TF_RET_CHECK(communicator != nullptr); + return CommunicatorAllReduceU32( + stream, communicator, src.device_memory().opaque(), + dst->device_memory().opaque(), src.element_count()); +} +} // namespace + // FFI handler that uses XLA:GPU collectives API to perform an all reduce. This // is just a test that demonstrates how to use XLA:GPU collectives API in an FFI // handler, builtin all-reduce is a much better option. This version @@ -781,6 +826,17 @@ XLA_FFI_DEFINE_HANDLER(kPrepareAllReduce, PrepareAllReduce, .Ctx() .Ctx()); +XLA_FFI_DEFINE_HANDLER( + kPreparePublicApiAllReduce, PreparePublicApiAllReduce, + ffi::Ffi::BindPrepare().Ctx>()); + +XLA_FFI_DEFINE_HANDLER(kPublicApiAllReduce, PublicApiAllReduce, + ffi::Ffi::Bind() + .Ctx() + .Arg>() // src + .Ret>() // dst + .Ctx>()); + // Preprocessor fails to parse comma inside macro call, introduce an alias to // request multiple comm streams for test. using CommunicationStreams = ffi::CommunicationStream<0, 1>; @@ -941,6 +997,16 @@ XLA_FFI_REGISTER_HANDLER(ffi::GetXlaFfiApi(), "__xla_test$$all_reduce", "gpu", /*execute=*/kAllReduce, }); +// Register handler bundle for the public collectives FFI all-reduce test. +XLA_FFI_REGISTER_HANDLER(ffi::GetXlaFfiApi(), + "__xla_test$$public_api_all_reduce", "gpu", + XLA_FFI_Handler_Bundle{ + /*instantiate=*/nullptr, + /*prepare=*/kPreparePublicApiAllReduce, + /*initialize=*/nullptr, + /*execute=*/kPublicApiAllReduce, + }); + // Register handler bundle for the custom all-reduce operation with // device-initiated collective kernels that use multimem addresses. XLA_FFI_REGISTER_HANDLER(ffi::GetXlaFfiApi(), @@ -1103,6 +1169,45 @@ TEST_F(CollectiveOpsTestFFI, AllReduce) { } } +TEST_F(CollectiveOpsTestFFI, PublicApiAllReduce) { + if (!Capability().IsCuda()) { + GTEST_SKIP() << "Communicator all-reduce is not implemented for this " + "platform"; + } + if (device_count() < kNumReplicas) { + GTEST_SKIP() << "Test requires at least " << kNumReplicas << " devices (" + << device_count() << " available)"; + } + + constexpr absl::string_view hlo_string = R"hlo( + HloModule m, replica_count=2 + ENTRY test_computation { + id = u32[] replica-id() + ROOT all-reduce = u32[] custom-call(id), + custom_call_target="__xla_test$$public_api_all_reduce", + api_version=API_VERSION_TYPED_FFI + } + )hlo"; + + ASSERT_OK_AND_ASSIGN(auto module, + ParseAndReturnVerifiedModule(hlo_string, kNumReplicas)); + + ASSERT_OK_AND_ASSIGN(ExecutionResult execution_result, + ExecuteReplicated(std::move(module), + /*arguments=*/std::vector(), + /*run_hlo_passes=*/false)); + + absl::Span results = execution_result.results; + ASSERT_EQ(results.size(), kNumReplicas); + + // Each replica contributes its replica id, so the all-reduce sum is + // sum [0, kNumReplicas). + const uint32_t expected = kNumReplicas * (kNumReplicas - 1) / 2; + for (int i = 0; i < kNumReplicas; ++i) { + LiteralTestUtil::ExpectR0Equal(expected, results[i]); + } +} + class AllReduceTest : public CollectiveOpsTestFFI, public ::testing::WithParamInterface { }; diff --git a/third_party/xla/xla/backends/gpu/transforms/BUILD b/third_party/xla/xla/backends/gpu/transforms/BUILD index 864d7e0fe5126b..0782615d4ddab4 100644 --- a/third_party/xla/xla/backends/gpu/transforms/BUILD +++ b/third_party/xla/xla/backends/gpu/transforms/BUILD @@ -106,7 +106,9 @@ cc_library( hdrs = ["conv_canonicalizer.h"], deps = [ "//xla:literal", + "//xla:literal_util", "//xla:shape_util", + "//xla:util", "//xla/hlo/ir:hlo", "//xla/hlo/pass:hlo_pass", "@com_google_absl//absl/container:flat_hash_set", @@ -2594,6 +2596,7 @@ xla_cc_test( "//xla/hlo/testlib:hlo_hardware_independent_test_base", "//xla/hlo/testlib:pattern_matcher_gmock", "//xla/service:hlo_cost_analysis", + "//xla/service:hlo_module_config", "//xla/service:pattern_matcher", "//xla/service/gpu:backend_configs_cc", "//xla/service/gpu:gpu_device_info_for_tests", diff --git a/third_party/xla/xla/backends/gpu/transforms/collectives/collective_ops_utils.cc b/third_party/xla/xla/backends/gpu/transforms/collectives/collective_ops_utils.cc index 812a6ddf139dc1..46d98160522060 100644 --- a/third_party/xla/xla/backends/gpu/transforms/collectives/collective_ops_utils.cc +++ b/third_party/xla/xla/backends/gpu/transforms/collectives/collective_ops_utils.cc @@ -268,10 +268,10 @@ absl::StatusOr CommunicationType( const se::GpuComputeCapability& gpu_version) { const bool is_supported_rocm = gpu_version.IsRocm() && - gpu_version.rocm_compute_capability()->gfx9_mi350(); + gpu_version.rocm_compute_capability()->gfx9_mi300_series(); if (!gpu_version.IsCuda() && !is_supported_rocm) { return absl::FailedPreconditionError( - "Only CUDA and ROCm gfx950 (MI350) are supported."); + "Only CUDA and ROCm gfx942 (MI300) and gfx950 (MI350) are supported."); } if (const auto* collective = DynCast(&instr)) { diff --git a/third_party/xla/xla/backends/gpu/transforms/conv_canonicalizer.cc b/third_party/xla/xla/backends/gpu/transforms/conv_canonicalizer.cc index 47aee6a9843c11..4f89955a73f6ed 100644 --- a/third_party/xla/xla/backends/gpu/transforms/conv_canonicalizer.cc +++ b/third_party/xla/xla/backends/gpu/transforms/conv_canonicalizer.cc @@ -17,6 +17,7 @@ limitations under the License. #include #include +#include #include "absl/container/flat_hash_set.h" #include "absl/status/status_macros.h" @@ -27,8 +28,10 @@ limitations under the License. #include "xla/hlo/ir/hlo_instruction.h" #include "xla/hlo/ir/hlo_opcode.h" #include "xla/literal.h" +#include "xla/literal_util.h" #include "xla/shape.h" #include "xla/shape_util.h" +#include "xla/util.h" namespace xla { namespace gpu { @@ -129,6 +132,111 @@ absl::StatusOr CanonicalizeOperandToS8Convert( return operand; } +// Pads convolution channel dimensions to multiples of 2 for 16-bit float +// (BF16/F16) convolutions so that they satisfy 32-bit alignment requirements +// for cuDNN runtime epilogue fusion. +absl::StatusOr PadConvolutionChannels(HloComputation* comp, + HloInstruction* conv) { + if (conv->operand_count() != 2) { + return false; + } + if (conv->feature_group_count() > 1 || conv->batch_group_count() > 1) { + return false; + } + + HloInstruction* input = conv->mutable_operand(0); + HloInstruction* filter = conv->mutable_operand(1); + PrimitiveType input_type = input->shape().element_type(); + PrimitiveType filter_type = filter->shape().element_type(); + + // 32-bit alignment requirement applies to 16-bit float types (BF16 and F16). + if (input_type != BF16 && input_type != F16) { + return false; + } + + const auto& dnums = conv->convolution_dimension_numbers(); + int64_t in_feature_dim = dnums.input_feature_dimension(); + int64_t kernel_in_feature_dim = dnums.kernel_input_feature_dimension(); + int64_t kernel_out_feature_dim = dnums.kernel_output_feature_dimension(); + int64_t out_feature_dim = dnums.output_feature_dimension(); + + int64_t in_channels = input->shape().dimensions(in_feature_dim); + int64_t out_channels = conv->shape().dimensions(out_feature_dim); + + // Minimum alignment required by cuDNN runtime fusion for 16-bit floats is 2 + // elements (4 bytes / 32 bits). + constexpr int64_t kAlignment = 2; + int64_t padded_in_channels = RoundUpTo(in_channels, kAlignment); + int64_t padded_out_channels = RoundUpTo(out_channels, kAlignment); + + if (padded_in_channels == in_channels && + padded_out_channels == out_channels) { + return false; + } + + HloInstruction* new_input = input; + if (padded_in_channels > in_channels) { + Shape padded_input_shape = input->shape(); + padded_input_shape.set_dimensions(in_feature_dim, padded_in_channels); + PaddingConfig pad_config = + MakeNoPaddingConfig(padded_input_shape.dimensions().size()); + pad_config.mutable_dimensions(in_feature_dim) + ->set_edge_padding_high(padded_in_channels - in_channels); + auto* zero = comp->AddInstruction( + HloInstruction::CreateConstant(LiteralUtil::Zero(input_type))); + new_input = comp->AddInstruction( + HloInstruction::CreatePad(padded_input_shape, input, zero, pad_config), + &input->metadata()); + } + + HloInstruction* new_filter = filter; + if (padded_in_channels > in_channels || padded_out_channels > out_channels) { + Shape padded_filter_shape = filter->shape(); + PaddingConfig pad_config = + MakeNoPaddingConfig(padded_filter_shape.dimensions().size()); + if (padded_in_channels > in_channels) { + padded_filter_shape.set_dimensions(kernel_in_feature_dim, + padded_in_channels); + pad_config.mutable_dimensions(kernel_in_feature_dim) + ->set_edge_padding_high(padded_in_channels - in_channels); + } + if (padded_out_channels > out_channels) { + padded_filter_shape.set_dimensions(kernel_out_feature_dim, + padded_out_channels); + pad_config.mutable_dimensions(kernel_out_feature_dim) + ->set_edge_padding_high(padded_out_channels - out_channels); + } + auto* zero = comp->AddInstruction( + HloInstruction::CreateConstant(LiteralUtil::Zero(filter_type))); + new_filter = + comp->AddInstruction(HloInstruction::CreatePad( + padded_filter_shape, filter, zero, pad_config), + &filter->metadata()); + } + + Shape new_conv_shape = conv->shape(); + new_conv_shape.set_dimensions(out_feature_dim, padded_out_channels); + HloInstruction* new_conv = comp->AddInstruction( + conv->CloneWithNewOperands(new_conv_shape, {new_input, new_filter})); + + if (padded_out_channels > out_channels) { + std::vector start_indices(new_conv_shape.dimensions().size(), 0); + std::vector end_indices(new_conv_shape.dimensions().begin(), + new_conv_shape.dimensions().end()); + end_indices[out_feature_dim] = out_channels; + std::vector strides(new_conv_shape.dimensions().size(), 1); + HloInstruction* sliced = comp->AddInstruction( + HloInstruction::CreateSlice(conv->shape(), new_conv, start_indices, + end_indices, strides), + &conv->metadata()); + ABSL_RETURN_IF_ERROR(comp->ReplaceInstruction(conv, sliced)); + } else { + ABSL_RETURN_IF_ERROR(comp->ReplaceInstruction(conv, new_conv)); + } + + return true; +} + } // namespace absl::StatusOr ConvCanonicalizer::RunImpl( @@ -152,6 +260,9 @@ absl::StatusOr ConvCanonicalizer::RunImpl( changed = true; } } + + ABSL_ASSIGN_OR_RETURN(bool padded, PadConvolutionChannels(comp, instr)); + changed |= padded; } } diff --git a/third_party/xla/xla/backends/gpu/transforms/conv_canonicalizer.h b/third_party/xla/xla/backends/gpu/transforms/conv_canonicalizer.h index 267e7799b93911..84420ece5a03af 100644 --- a/third_party/xla/xla/backends/gpu/transforms/conv_canonicalizer.h +++ b/third_party/xla/xla/backends/gpu/transforms/conv_canonicalizer.h @@ -38,6 +38,10 @@ namespace gpu { // 3. Transforms SpatialOp(s32 convert(s8)) -> s32 convert(SpatialOp(s8)). // Commutes convert op over spatial operations (e.g. Reshape, Transpose, // Broadcast, Pad, Slice) and moves the convert to the convolution operand. +// +// 4. Pads odd channel dimensions to multiples of 2 for 16-bit float (BF16/F16) +// convolutions so that they satisfy 32-bit alignment requirements for cuDNN +// runtime epilogue fusion. class ConvCanonicalizer : public HloModulePass { public: diff --git a/third_party/xla/xla/backends/gpu/transforms/conv_canonicalizer_test.cc b/third_party/xla/xla/backends/gpu/transforms/conv_canonicalizer_test.cc index 6b617f2360ffd4..cf637f6b1817e5 100644 --- a/third_party/xla/xla/backends/gpu/transforms/conv_canonicalizer_test.cc +++ b/third_party/xla/xla/backends/gpu/transforms/conv_canonicalizer_test.cc @@ -110,5 +110,82 @@ TEST_F(ConvCanonicalizerTest, SimplifiesRedundantConverts) { EXPECT_TRUE(filecheck_matched); } +TEST_F(ConvCanonicalizerTest, PadsOddInputChannelsForBf16) { + const char* hlo_text = R"hlo( + HloModule test + + ENTRY test { + p0 = bf16[1024,96,96,1] parameter(0) + w0 = bf16[1,5,5,64] parameter(1) + ROOT conv = bf16[1024,96,96,64] convolution(p0, w0), window={size=5x5 pad=2_2x2_2}, dim_labels=b01f_i01o->b01f, convolution_kind=dgrad + } + )hlo"; + + ASSERT_OK_AND_ASSIGN(auto module, ParseAndReturnVerifiedModule(hlo_text)); + ASSERT_OK_AND_ASSIGN(auto pass_result, + RunHloPass(ConvCanonicalizer(), module.get())); + EXPECT_TRUE(pass_result); + + const char* expected = R"( + CHECK: %[[P0:.*]] = bf16[1024,96,96,1]{{.*}} parameter(0) + CHECK: %[[PAD_IN:.*]] = bf16[1024,96,96,2]{{.*}} pad(%[[P0]], %c{{.*}}), padding=0_0x0_0x0_0x0_1 + CHECK: %[[W0:.*]] = bf16[1,5,5,64]{{.*}} parameter(1) + CHECK: %[[PAD_FILTER:.*]] = bf16[2,5,5,64]{{.*}} pad(%[[W0]], %c{{.*}}), padding=0_1x0_0x0_0x0_0 + CHECK: ROOT %[[CONV:.*]] = bf16[1024,96,96,64]{{.*}} convolution(%[[PAD_IN]], %[[PAD_FILTER]]), window={size=5x5 pad=2_2x2_2}, dim_labels=b01f_i01o->b01f, convolution_kind=dgrad + )"; + ASSERT_OK_AND_ASSIGN(bool filecheck_matched, + RunFileCheck(module->ToString(), expected)); + EXPECT_TRUE(filecheck_matched); +} + +TEST_F(ConvCanonicalizerTest, PadsOddOutputChannelsForF16WithSlice) { + const char* hlo_text = R"hlo( + HloModule test + + ENTRY test { + p0 = f16[8,14,14,4] parameter(0) + w0 = f16[3,3,4,3] parameter(1) + ROOT conv = f16[8,12,12,3] convolution(p0, w0), window={size=3x3}, dim_labels=b01f_01io->b01f + } + )hlo"; + + ASSERT_OK_AND_ASSIGN(auto module, ParseAndReturnVerifiedModule(hlo_text)); + ASSERT_OK_AND_ASSIGN(auto pass_result, + RunHloPass(ConvCanonicalizer(), module.get())); + EXPECT_TRUE(pass_result); + + const char* expected = R"( + CHECK: %[[P0:.*]] = f16[8,14,14,4]{{.*}} parameter(0) + CHECK: %[[W0:.*]] = f16[3,3,4,3]{{.*}} parameter(1) + CHECK: %[[PAD_FILTER:.*]] = f16[3,3,4,4]{{.*}} pad(%[[W0]], %c{{.*}}), padding=0_0x0_0x0_0x0_1 + CHECK: %[[NEW_CONV:.*]] = f16[8,12,12,4]{{.*}} convolution(%[[P0]], %[[PAD_FILTER]]), window={size=3x3}, dim_labels=b01f_01io->b01f + CHECK: ROOT %[[SLICE:.*]] = f16[8,12,12,3]{{.*}} slice(%[[NEW_CONV]]), slice={[0:8], [0:12], [0:12], [0:3]} + )"; + ASSERT_OK_AND_ASSIGN(bool filecheck_matched, + RunFileCheck(module->ToString(), expected)); + EXPECT_TRUE(filecheck_matched); +} + +TEST_F(ConvCanonicalizerTest, NoPaddingForEvenChannelsOrF32) { + const char* hlo_text = R"hlo( + HloModule test + + ENTRY test { + p0 = bf16[8,14,14,4] parameter(0) + w0 = bf16[3,3,4,8] parameter(1) + p1 = f32[8,14,14,1] parameter(2) + w1 = f32[3,3,1,3] parameter(3) + c0 = bf16[8,12,12,8] convolution(p0, w0), window={size=3x3}, dim_labels=b01f_01io->b01f + c1 = f32[8,12,12,3] convolution(p1, w1), window={size=3x3}, dim_labels=b01f_01io->b01f + ROOT tuple = (bf16[8,12,12,8], f32[8,12,12,3]) tuple(c0, c1) + } + )hlo"; + + ASSERT_OK_AND_ASSIGN(auto module, ParseAndReturnVerifiedModule(hlo_text)); + ASSERT_OK_AND_ASSIGN(auto pass_result, + RunHloPass(ConvCanonicalizer(), module.get())); + EXPECT_FALSE(pass_result); +} + } // namespace } // namespace xla::gpu diff --git a/third_party/xla/xla/backends/gpu/transforms/conv_fusion_rewriter.cc b/third_party/xla/xla/backends/gpu/transforms/conv_fusion_rewriter.cc index 787a3ec4b2108d..e6224421ff59a8 100644 --- a/third_party/xla/xla/backends/gpu/transforms/conv_fusion_rewriter.cc +++ b/third_party/xla/xla/backends/gpu/transforms/conv_fusion_rewriter.cc @@ -89,7 +89,11 @@ std::vector GetAllReachableAndFusible( const se::DeviceDescription& device_info) { std::vector fusible_users; // cuDNN frontend fusions do not support grouped convolutions with epilogues. - if (convolution->feature_group_count() > 1) { + // TODO(b/553414095): Re-enable 1D convolution epilogue fusions once cuDNN + // fixes NaN corruption with dummy spatial dimensions. + if (convolution->feature_group_count() > 1 || + convolution->convolution_dimension_numbers() + .input_spatial_dimensions_size() < 2) { fusion_outputs.push_back(convolution); return fusible_users; } diff --git a/third_party/xla/xla/backends/gpu/transforms/priority_fusion_test.cc b/third_party/xla/xla/backends/gpu/transforms/priority_fusion_test.cc index ce91f4bc21ccb6..72586cc5e63882 100644 --- a/third_party/xla/xla/backends/gpu/transforms/priority_fusion_test.cc +++ b/third_party/xla/xla/backends/gpu/transforms/priority_fusion_test.cc @@ -41,6 +41,7 @@ limitations under the License. #include "xla/service/gpu/hlo_fusion_analysis.h" #include "xla/service/gpu/model/gpu_hlo_cost_analysis.h" #include "xla/service/hlo_cost_analysis.h" +#include "xla/service/hlo_module_config.h" #include "xla/service/pattern_matcher.h" #include "xla/stream_executor/device_description.h" #include "xla/tsl/platform/env.h" @@ -55,10 +56,19 @@ using ::testing::UnorderedElementsAre; namespace xla { namespace gpu { -class PriorityFusionTest : public HloHardwareIndependentTestBase { +class PriorityFusionTest : public HloHardwareIndependentTestBase, + public ::testing::WithParamInterface { public: PriorityFusionTest() { RegisterSymbolicExprStorage(&mlir_context_); } + DebugOptions GetDebugOptionsForTest() const override { + DebugOptions debug_options = + HloHardwareIndependentTestBase::GetDebugOptionsForTest(); + debug_options.set_xla_gpu_experimental_enable_tiling_propagation( + GetParam()); + return debug_options; + } + std::vector RunAndGetFusionKinds( absl::string_view hlo) { auto module = ParseAndReturnVerifiedModule(hlo).value(); @@ -89,7 +99,13 @@ class PriorityFusionTest : public HloHardwareIndependentTestBase { }(); }; -TEST_F(PriorityFusionTest, FuseWithSharedArgument) { +INSTANTIATE_TEST_SUITE_P( + PriorityFusionTest, PriorityFusionTest, ::testing::Bool(), + [](const ::testing::TestParamInfo& info) { + return info.param ? "TilingPropagation" : "SymbolicAnalysis"; + }); + +TEST_P(PriorityFusionTest, FuseWithSharedArgument) { auto module = ParseAndReturnVerifiedModule(R"( HloModule test_module @@ -112,7 +128,7 @@ TEST_F(PriorityFusionTest, FuseWithSharedArgument) { EXPECT_EQ(root->fusion_kind(), HloInstruction::FusionKind::kLoop); } -TEST_F(PriorityFusionTest, FusionOnStreamAnnotatedComputation) { +TEST_P(PriorityFusionTest, FusionOnStreamAnnotatedComputation) { auto module = ParseAndReturnVerifiedModule(R"( HloModule test_module stream { @@ -146,7 +162,7 @@ TEST_F(PriorityFusionTest, FusionOnStreamAnnotatedComputation) { EXPECT_EQ(called_root->fusion_kind(), HloInstruction::FusionKind::kLoop); } -TEST_F(PriorityFusionTest, FusionFusionWithDuplication) { +TEST_P(PriorityFusionTest, FusionFusionWithDuplication) { absl::string_view kHlo = R"( HloModule test_module @@ -182,7 +198,7 @@ CHECK-NEXT: ROOT {{.*}} tuple(%[[FUSION_0]], %[[FUSION_1]]) )"); } -TEST_F(PriorityFusionTest, FuseBroadcastIntoBitcastConsumers) { +TEST_P(PriorityFusionTest, FuseBroadcastIntoBitcastConsumers) { absl::string_view kHlo = R"( HloModule test_module @@ -200,7 +216,7 @@ CHECK-NEXT: ROOT %{{.*}} fusion(%[[PARAM]]) )"); } -TEST_F(PriorityFusionTest, FuseWideningConvertIntoConsumers) { +TEST_P(PriorityFusionTest, FuseWideningConvertIntoConsumers) { absl::string_view kHlo = R"( HloModule test_module @@ -223,7 +239,7 @@ CHECK-NEXT: ROOT %{{.*}} = (f32[512]{0}, s32[512]{0}) tuple(%[[FUSION_F32]], %[[ )"); } -TEST_F(PriorityFusionTest, DoNotFuseBitWidthChangingBitcast) { +TEST_P(PriorityFusionTest, DoNotFuseBitWidthChangingBitcast) { // `neg` is the producer that could be fused with `bitcast` and `mul`, but // since `bitcast` changes the bit width, we don't fuse it. auto module = *ParseAndReturnVerifiedModule(R"( @@ -239,7 +255,7 @@ TEST_F(PriorityFusionTest, DoNotFuseBitWidthChangingBitcast) { absl_testing::IsOkAndHolds(false)); } -TEST_F(PriorityFusionTest, FuseConvertIntoReduce) { +TEST_P(PriorityFusionTest, FuseConvertIntoReduce) { absl::string_view kHlo = R"( HloModule test_module @@ -278,7 +294,7 @@ CHECK-COUNT-3: fusion )"); } -TEST_F(PriorityFusionTest, ReductionEpilogueFusionRegressionTest) { +TEST_P(PriorityFusionTest, ReductionEpilogueFusionRegressionTest) { // Regression test for epilogue fusion of convert into a reduction, even if // the convert has a bitcast as consumer. absl::string_view kHlo = R"( @@ -333,7 +349,7 @@ CHECK: ROOT {{.*}} bitcast({{.*}}fusion{{.*}}) )"); } -TEST_F(PriorityFusionTest, DoNotChangeReductionFusionToLoopFusion) { +TEST_P(PriorityFusionTest, DoNotChangeReductionFusionToLoopFusion) { // Regression test for epilogue fusion of slice into a reduction. The fusion // kind for the reduction fusion is intentionally chosen to be set to kLoop, // as we cannot rely on reductions always having fusion kind kInput. @@ -361,7 +377,7 @@ TEST_F(PriorityFusionTest, DoNotChangeReductionFusionToLoopFusion) { absl_testing::IsOkAndHolds(false)); } -TEST_F(PriorityFusionTest, DoNotFuseTransposeIntoReduce) { +TEST_P(PriorityFusionTest, DoNotFuseTransposeIntoReduce) { absl::string_view kHlo = R"( HloModule test_module @@ -437,7 +453,7 @@ TEST_F(PriorityFusionTest, DoNotFuseTransposeIntoReduce) { Kind::kTranspose, Kind::kTranspose)); } -TEST_F(PriorityFusionTest, DoNotFuseReduceIntoReduce) { +TEST_P(PriorityFusionTest, DoNotFuseReduceIntoReduce) { absl::string_view kHlo = R"( HloModule test_module @@ -460,7 +476,7 @@ CHECK: ROOT {{.*}} reduce( )"); } -TEST_F(PriorityFusionTest, ConvertFusedIntoReduce) { +TEST_P(PriorityFusionTest, ConvertFusedIntoReduce) { absl::string_view kHlo = R"( HloModule test_module @@ -500,7 +516,7 @@ CHECK-NOT: fusion( )"); } -TEST_F(PriorityFusionTest, DoNotFuseDynamicUpdateSliceIntoReduce) { +TEST_P(PriorityFusionTest, DoNotFuseDynamicUpdateSliceIntoReduce) { absl::string_view kHlo = R"( HloModule test_module @@ -576,7 +592,7 @@ CHECK-COUNT-3: fusion( )"); } -TEST_F(PriorityFusionTest, DontFuseIntoFirstOperandOfScatter) { +TEST_P(PriorityFusionTest, DontFuseIntoFirstOperandOfScatter) { auto module = *ParseAndReturnVerifiedModule(R"( HloModule test_module @@ -616,7 +632,7 @@ TEST_F(PriorityFusionTest, DontFuseIntoFirstOperandOfScatter) { // This test is similar to DontFuseIntoFirstOperandOfScatter, but PriorityFusion // has a separate run to fuse constants. Fusing anything into a scatter fusion // will fail in the emitter. -TEST_F(PriorityFusionTest, DontFuseConstantIntoFirstOperandOfScatter) { +TEST_P(PriorityFusionTest, DontFuseConstantIntoFirstOperandOfScatter) { auto module = *ParseAndReturnVerifiedModule(R"( HloModule test_module @@ -650,7 +666,7 @@ TEST_F(PriorityFusionTest, DontFuseConstantIntoFirstOperandOfScatter) { m::Broadcast(m::Constant())))); } -TEST_F(PriorityFusionTest, DoNotFuseReduceIntoReduceEvenIfOccupancyIsHigh) { +TEST_P(PriorityFusionTest, DoNotFuseReduceIntoReduceEvenIfOccupancyIsHigh) { constexpr absl::string_view kHlo = R"( HloModule test_module @@ -673,7 +689,7 @@ CHECK: ROOT {{.*}} reduce( )"); } -TEST_F(PriorityFusionTest, FuseReductionEpilogueWithMultipleUsers) { +TEST_P(PriorityFusionTest, FuseReductionEpilogueWithMultipleUsers) { // Regression test that verifies we correctly fuse the `log` into the reduce. constexpr absl::string_view kHlo = R"( HloModule test_module @@ -707,7 +723,7 @@ TEST_F(PriorityFusionTest, FuseReductionEpilogueWithMultipleUsers) { )"); } -TEST_F(PriorityFusionTest, EpilogueFusion) { +TEST_P(PriorityFusionTest, EpilogueFusion) { absl::string_view kHlo = R"( HloModule test_module @@ -739,7 +755,7 @@ TEST_F(PriorityFusionTest, EpilogueFusion) { CHECK: ROOT {{.*}} = f32[8,4,128]{2,1,0} fusion(%p{{.*}}), kind=kInput, calls=%fused_computation)"); } -TEST_F(PriorityFusionTest, EpilogueFusionFails) { +TEST_P(PriorityFusionTest, EpilogueFusionFails) { auto module = *ParseAndReturnVerifiedModule(R"( HloModule test_module @@ -772,7 +788,7 @@ TEST_F(PriorityFusionTest, EpilogueFusionFails) { absl_testing::IsOkAndHolds(false)); } -TEST_F(PriorityFusionTest, DoNotFuseIntoRoot) { +TEST_P(PriorityFusionTest, DoNotFuseIntoRoot) { auto module = *ParseAndReturnVerifiedModule(R"( HloModule test_module @@ -790,7 +806,7 @@ TEST_F(PriorityFusionTest, DoNotFuseIntoRoot) { absl_testing::IsOkAndHolds(false)); } -TEST_F(PriorityFusionTest, DontFuseConcat) { +TEST_P(PriorityFusionTest, DontFuseConcat) { // Regression test that verifies we don't fuse concat into a column reduction. auto module = *ParseAndReturnVerifiedModule(R"( HloModule module @@ -843,7 +859,7 @@ TEST_F(PriorityFusionTest, DontFuseConcat) { absl_testing::IsOkAndHolds(false)); } -TEST_F(PriorityFusionTest, FuseOnlySmallConstant) { +TEST_P(PriorityFusionTest, FuseOnlySmallConstant) { auto module = *ParseAndReturnVerifiedModule(R"( HloModule module @@ -867,7 +883,7 @@ TEST_F(PriorityFusionTest, FuseOnlySmallConstant) { m::Add(m::Parameter(), m::Broadcast(m::Constant()))))); } -TEST_F(PriorityFusionTest, FuseSmallConstantIntoTritonFusion) { +TEST_P(PriorityFusionTest, FuseSmallConstantIntoTritonFusion) { auto module = *ParseAndReturnVerifiedModule(R"( HloModule module @@ -897,7 +913,7 @@ ENTRY main { GmockMatch(m::Reduce(m::Parameter(), m::Constant()))); } -TEST_F(PriorityFusionTest, FuseProducerConsumerMergedNotTooLarge) { +TEST_P(PriorityFusionTest, FuseProducerConsumerMergedNotTooLarge) { auto module = *ParseAndReturnVerifiedModule(R"( HloModule module @@ -949,7 +965,7 @@ TEST_F(PriorityFusionTest, FuseProducerConsumerMergedNotTooLarge) { absl_testing::IsOkAndHolds(true)); } -TEST_F(PriorityFusionTest, CanMergeTritonFusionWithBothProducerAndConsumer) { +TEST_P(PriorityFusionTest, CanMergeTritonFusionWithBothProducerAndConsumer) { const std::string kHloText = R"( HloModule t add { @@ -1006,7 +1022,7 @@ ENTRY main { 2); } -TEST_F(PriorityFusionTest, FuseTritonProducerWithTwoConsumers) { +TEST_P(PriorityFusionTest, FuseTritonProducerWithTwoConsumers) { const std::string kHloText = R"( HloModule t add { @@ -1070,13 +1086,12 @@ ENTRY main { 2); } -TEST_F(PriorityFusionTest, +TEST_P(PriorityFusionTest, FuseTritonProducerWithTwoConsumersUsingMultiOutputFusion) { - if (GetDebugOptionsForTest() - .xla_gpu_experimental_enable_tiling_propagation()) { + if (GetParam()) { // TODO(b/530092114): support multi-output fusions. - GTEST_SKIP() - << "Multi-output fusions are not supported with block-level emitter"; + GTEST_SKIP() << "Multi-output fusions are not supported with tile-based " + "block-level emitter"; } const std::string kHloText = R"( HloModule t @@ -1130,12 +1145,11 @@ ENTRY main { 2); } -TEST_F(PriorityFusionTest, +TEST_P(PriorityFusionTest, FuseProducerWithTritonConsumerUsingMultiOutputFusion) { - if (GetDebugOptionsForTest() - .xla_gpu_experimental_enable_tiling_propagation()) { - GTEST_SKIP() - << "Multi-output fusions are not supported with block-level emitter"; + if (GetParam()) { + GTEST_SKIP() << "Multi-output fusions are not supported with tile-based " + "block-level emitter"; } const std::string kHloText = R"( HloModule t @@ -1184,11 +1198,10 @@ ENTRY main { 2); } -TEST_F(PriorityFusionTest, FuseTritonFusionBothEndsUsingMultiOutputFusion) { - if (GetDebugOptionsForTest() - .xla_gpu_experimental_enable_tiling_propagation()) { - GTEST_SKIP() - << "Multi-output fusions are not supported with block-level emitter"; +TEST_P(PriorityFusionTest, FuseTritonFusionBothEndsUsingMultiOutputFusion) { + if (GetParam()) { + GTEST_SKIP() << "Multi-output fusions are not supported with tile-based " + "block-level emitter"; } // Here, we fuse `fusion` first into `exp` and `sqrt`. When we try to fuse // `log` into the two fusions resulting from the previous step using @@ -1231,7 +1244,7 @@ ENTRY main { EXPECT_TRUE(IsGenericTritonFusion(*fusion2)); } -TEST_F(PriorityFusionTest, TritonProducerNotSupported_DoNotFuse) { +TEST_P(PriorityFusionTest, TritonProducerNotSupported_DoNotFuse) { const std::string kHloText = R"( HloModule t @@ -1260,7 +1273,7 @@ ENTRY main { EXPECT_FALSE(priority_fusion_.Run(module.get()).value()); } -TEST_F(PriorityFusionTest, TritonConsumerNotSupported_DoNotFuse) { +TEST_P(PriorityFusionTest, TritonConsumerNotSupported_DoNotFuse) { const std::string kHloText = R"( HloModule t @@ -1290,7 +1303,7 @@ ENTRY main { EXPECT_FALSE(priority_fusion_.Run(module.get()).value()); } -TEST_F(PriorityFusionTest, DoNotFuseInsideReducer) { +TEST_P(PriorityFusionTest, DoNotFuseInsideReducer) { auto module = *ParseAndReturnVerifiedModule(R"( %reducer { p0 = f32[] parameter(0) @@ -1315,7 +1328,7 @@ TEST_F(PriorityFusionTest, DoNotFuseInsideReducer) { absl_testing::IsOkAndHolds(false)); } -TEST_F(PriorityFusionTest, SkipsTilingsWithInfiniteRuntime) { +TEST_P(PriorityFusionTest, SkipsTilingsWithInfiniteRuntime) { // This test verifies the fix in TryFindBestTilingForFusion that skips // tilings with infinite runtime estimates. // @@ -1432,7 +1445,7 @@ ENTRY main { absl_testing::IsOkAndHolds(false)); } -class PriorityFusionWithTritonEnabledTest : public PriorityFusionTest { +class HerolessPriorityFusionTest : public PriorityFusionTest { public: DebugOptions GetDebugOptionsForTest() const override { DebugOptions debug_options = PriorityFusionTest::GetDebugOptionsForTest(); @@ -1442,8 +1455,14 @@ class PriorityFusionWithTritonEnabledTest : public PriorityFusionTest { } }; -TEST_F(PriorityFusionWithTritonEnabledTest, - TwoElementwiseOpsAreFusedWithTriton) { +INSTANTIATE_TEST_SUITE_P( + HerolessPriorityFusionTest, HerolessPriorityFusionTest, ::testing::Bool(), + [](const ::testing::TestParamInfo& + info) { + return info.param ? "TilingPropagation" : "SymbolicAnalysis"; + }); + +TEST_P(HerolessPriorityFusionTest, TwoElementwiseOpsAreFusedWithTriton) { auto module = *ParseAndReturnVerifiedModule(R"( HloModule m @@ -1462,7 +1481,7 @@ ENTRY main { EXPECT_TRUE(IsGenericTritonFusion(*root)); } -TEST_F(PriorityFusionWithTritonEnabledTest, DoNotFuseIntoRoot) { +TEST_P(HerolessPriorityFusionTest, DoNotFuseIntoRoot) { auto module = *ParseAndReturnVerifiedModule(R"( HloModule test_module @@ -1480,7 +1499,7 @@ TEST_F(PriorityFusionWithTritonEnabledTest, DoNotFuseIntoRoot) { absl_testing::IsOkAndHolds(false)); } -TEST_F(PriorityFusionWithTritonEnabledTest, LimitNumberOfParameters) { +TEST_P(HerolessPriorityFusionTest, LimitNumberOfParameters) { std::string module_text = "HloModule m\n\nENTRY main {\nadd0 = f32[] parameter(0)\n"; for (int64_t i = 1; i <= MaxOperandsAndOutputsPerFusion(); ++i) { @@ -1499,12 +1518,10 @@ TEST_F(PriorityFusionWithTritonEnabledTest, LimitNumberOfParameters) { EXPECT_LE(root->operand_count(), MaxOperandsAndOutputsPerFusion()); } -TEST_F(PriorityFusionWithTritonEnabledTest, - MultipleMultiOutputFusionCandidates) { - if (GetDebugOptionsForTest() - .xla_gpu_experimental_enable_tiling_propagation()) { - GTEST_SKIP() - << "Multi-output fusions are not supported with block-level emitter"; +TEST_P(HerolessPriorityFusionTest, MultipleMultiOutputFusionCandidates) { + if (GetParam()) { + GTEST_SKIP() << "Multi-output fusions are not supported with tile-based " + "block-level emitter"; } auto module = *ParseAndReturnVerifiedModule(R"( HloModule test_module @@ -1539,7 +1556,7 @@ TEST_F(PriorityFusionWithTritonEnabledTest, EXPECT_TRUE(IsGenericTritonFusion(*fusion)); } -TEST_F(PriorityFusionTest, FusesQwixQuantization) { +TEST_P(PriorityFusionTest, FusesQwixQuantization) { absl::string_view kHlo = R"( HloModule hlo_qwix_quantize_bf16_s8_2x256x512_tile128 @@ -1584,6 +1601,7 @@ ENTRY main.4 { PriorityFusion priority_fusion(nullptr, device_info_, &alias_info_, options, &mlir_context_); HloModuleConfig config; + config.set_debug_options(GetDebugOptionsForTest()); config.mutable_debug_options() .set_xla_gpu_experimental_enable_triton_heroless_priority_fusion(true); @@ -1673,8 +1691,10 @@ TEST_F(PriorityFusionRocmMemoryBandwidthTest, MemoryBandwidthTipsReduceFusion) { EXPECT_EQ(RunAndCountFusions(kHlo, kFixedBandwidth), 2); } -TEST_F(PriorityFusionTest, DoNotFuseScanEpilogue) { - const char* kHlo = R"( +TEST_P(HerolessPriorityFusionTest, DoNotFuseScanEpilogue) { + bool experimental_tiling = GetParam(); + std::string hlo = absl::StrFormat( + R"( HloModule module add { @@ -1695,27 +1715,24 @@ ENTRY entry { p0 = f32[100] parameter(0) p1 = f32[] parameter(1) scan_fusion = f32[100] fusion(p0, p1), kind=kCustom, calls=fused_computation, - backend_config={"fusion_backend_config":{"kind":"__triton","block_level_fusion_config":{"output_tiles":[{"sizes":["100"]}],"num_warps":"1"}}} + backend_config={"fusion_backend_config":{"kind":"__triton","block_level_fusion_config": + {"output_tiles":[{"sizes":[%s]}],"num_warps":"1"}}} c = f32[] constant(1.0) bcast = f32[100] broadcast(c), dimensions={} ROOT add = f32[100] add(scan_fusion, bcast) } - )"; + )", + experimental_tiling ? "" : "100"); GpuHloCostAnalysis::Options options; options.count_multiple_input_accesses = true; PriorityFusion priority_fusion(nullptr, device_info_, &alias_info_, options, &mlir_context_); - HloModuleConfig config; - config.mutable_debug_options() - .set_xla_gpu_experimental_enable_triton_heroless_priority_fusion(true); - - RunAndFilecheckHloRewrite(kHlo, std::move(priority_fusion), R"( + RunAndFilecheckHloRewrite(hlo, std::move(priority_fusion), R"( CHECK: ENTRY CHECK: %[[SCAN_FUSION:.*]] = f32[100]{0} fusion(%{{.*}}, %{{.*}}), kind=kCustom CHECK: ROOT %[[EPILOGUE_FUSION:.*]] = f32[100]{0} fusion(%[[SCAN_FUSION]]), kind=kCustom - )", - /*after_pass_checks=*/nullptr, &config); + )"); } } // namespace gpu diff --git a/third_party/xla/xla/backends/profiler/gpu/BUILD b/third_party/xla/xla/backends/profiler/gpu/BUILD index f18e6376ad0ffc..3bf88b2de50a18 100644 --- a/third_party/xla/xla/backends/profiler/gpu/BUILD +++ b/third_party/xla/xla/backends/profiler/gpu/BUILD @@ -585,12 +585,12 @@ cc_library( "@com_google_absl//absl/base:core_headers", "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/container:inlined_vector", - "@com_google_absl//absl/container:node_hash_set", "@com_google_absl//absl/log", "@com_google_absl//absl/status", "@com_google_absl//absl/status:status_macros", "@com_google_absl//absl/strings", "@com_google_absl//absl/strings:str_format", + "@com_google_absl//absl/strings:string_view", "@com_google_absl//absl/synchronization", "@com_google_absl//absl/types:optional", "@com_google_absl//absl/types:span", @@ -616,13 +616,17 @@ xla_cc_test( ":rocm_tracer", ":rocm_tracer_utils", "//xla/tsl/lib/core:status_test_util", + "//xla/tsl/platform:env_time", + "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/log", + "@com_google_absl//absl/strings", "@com_google_absl//absl/strings:string_view", "@com_google_absl//absl/time", "@com_google_googletest//:gtest_main", "@local_config_rocm//rocm:hip", # buildcleaner: keep "@local_config_rocm//rocm:rocm_headers", "@local_config_rocm//rocm:rocprofiler_sdk", # buildcleaner: keep + "@local_config_rocm//rocm:rocprofiler_sdk_roctx", # buildcleaner: keep "@tsl//tsl/profiler/protobuf:xplane_proto_cc", ], ) @@ -642,6 +646,7 @@ xla_cc_test( ":rocm_collector", ":rocm_tracer_utils", "@com_google_absl//absl/container:flat_hash_set", + "@com_google_absl//absl/strings", "@com_google_googletest//:gtest_main", "//xla/tsl/profiler/utils:xplane_utils", "@tsl//tsl/profiler/protobuf:xplane_proto_cc", diff --git a/third_party/xla/xla/backends/profiler/gpu/rocm_collector.cc b/third_party/xla/xla/backends/profiler/gpu/rocm_collector.cc index 03703b5016f454..ce2d759a4dbc2c 100644 --- a/third_party/xla/xla/backends/profiler/gpu/rocm_collector.cc +++ b/third_party/xla/xla/backends/profiler/gpu/rocm_collector.cc @@ -206,7 +206,8 @@ void PerDeviceCollector::CreateXEvent(const RocmTracerEvent& event, VLOG(7) << "Adding event to line=" << line->Id(); xevent.SetTimestampNs(event.start_time_ns); xevent.SetEndTimestampNs(event.end_time_ns); - if (event.source == RocmTracerEventSource::ApiCallback) { + if (event.source == RocmTracerEventSource::ApiCallback && + event.device_id != RocmTracerEvent::kInvalidDeviceId) { xevent.AddStatValue( *plane->GetOrCreateStatMetadata(GetStatTypeStr(StatType::kDeviceId)), event.device_id); @@ -221,10 +222,20 @@ void PerDeviceCollector::CreateXEvent(const RocmTracerEvent& event, GetStatTypeStr(StatType::kScopeRangeId)), event.scope_range_id); } - if (!event.roctx_range.empty()) { + // Two sources for the same stat, by event type: + // Generic (a ROCTX marker) owns its label in `name`. + // Kernel / HIP-API events carry a view into AnnotationMap's pool, set from + // the ROCTX range that was active when the call was made. + // Markers deliberately do not populate roctx_range: a view into their own + // `name` would dangle as soon as the event is moved, and interning them + // elsewhere would duplicate bytes `name` already owns. + const absl::string_view roctx_label = + event.type == RocmTracerEventType::Generic ? absl::string_view(event.name) + : event.roctx_range; + if (!roctx_label.empty()) { xevent.AddStatValue( *plane->GetOrCreateStatMetadata(GetStatTypeStr(StatType::kNVTXRange)), - *plane->GetOrCreateStatMetadata(event.roctx_range)); + *plane->GetOrCreateStatMetadata(roctx_label)); } if (event.type == RocmTracerEventType::Kernel && @@ -362,6 +373,7 @@ void PerDeviceCollector::Export(uint64_t start_walltime_ns, uint64_t start_gputime_ns, uint64_t end_gputime_ns, XPlaneBuilder* device_plane, + XPlaneBuilder* marker_plane, XPlaneBuilder* host_plane) { int host_ev_cnt = 0, dev_ev_cnt = 0; absl::MutexLock lock(events_mutex_); @@ -406,7 +418,14 @@ void PerDeviceCollector::Export(uint64_t start_walltime_ns, continue; } auto* plane = is_host_event ? host_plane : device_plane; - VLOG(9) << "Event" << " type=" << static_cast(event.type) + // Generic events (ROCTX markers) are always host-side; the is_host_event + // guard is redundant here but made explicit to document the assumption. + if (event.type == RocmTracerEventType::Generic && is_host_event && + marker_plane != nullptr) { + plane = marker_plane; + } + VLOG(9) << "Event" + << " type=" << static_cast(event.type) << " line_id=" << line_id << (is_host_event ? " host plane=" : " device plane=") << plane->Name(); @@ -423,6 +442,17 @@ void PerDeviceCollector::Export(uint64_t start_walltime_ns, host_plane->ForEachLine([&](XLineBuilder line) { line.SetName(absl::StrCat("Host Threads/", line.Id())); }); + if (marker_plane != nullptr) { + // "Host Threads//ROCTX", matching CUPTI's "Host Threads//NVTX" + // (cupti_collector.cc). Line names are sorted after the merge into + // /host:CPU, so this form places each marker track directly beneath the + // host thread that produced it. The former "ROCTX Threads/" sorted + // into a separate alphabetical block, divorcing every marker track from + // its thread. The line name -- not the plane name -- is what a user sees. + marker_plane->ForEachLine([&](XLineBuilder line) { + line.SetName(absl::StrCat("Host Threads/", line.Id(), "/ROCTX")); + }); + } events_.clear(); } @@ -526,6 +556,34 @@ void RocmTraceCollectorImpl::AddEvent(RocmTracerEvent&& event, bool is_auxiliary) { absl::MutexLock lock(event_maps_mutex_); + // Generic events (e.g. ROCTX/NVTX markers) have no GPU-side activity + // counterpart. Route them directly to standalone_events_ so they bypass + // ApiActivityInfoExchange and are flushed straight to per_device_collector_. + // Check this BEFORE the source-based branching below. + // + // The cap is enforced here rather than inherited from the branch below, + // because that branch is unreachable for Generic events. Marker volume is + // driven by application code -- a per-op roctx hook can emit millions of + // ranges a second -- and standalone_events_ is only drained in Flush() at + // Disable(), so without this guard a long capture retains every marker for + // the whole session and can exhaust memory in the process being profiled. + // Counting them in num_callback_events_ also keeps the VLOG(3) summary and + // the documented XLA_FLAGS=--xla_gpu_rocm_max_trace_events knob honest; + // both silently ignored this path before. + if (event.type == RocmTracerEventType::Generic) { + if (num_callback_events_ >= options_.max_callback_api_events) { + OnEventsDropped( + "ROCTX marker event dropped: max_callback_api_events " + "reached. To collect more, set " + "XLA_FLAGS=--xla_gpu_rocm_max_trace_events=X", + event.correlation_id); + return; + } + num_callback_events_++; + standalone_events_.push_back(std::move(event)); + return; + } + if (event.source == RocmTracerEventSource::ApiCallback) { if (!is_auxiliary) { if (num_callback_events_ >= options_.max_callback_api_events) { @@ -601,6 +659,26 @@ void RocmTraceCollectorImpl::Flush() { } } + // Flush standalone events (e.g. ROCTX markers) directly — they have no + // GPU-side activity counterpart and bypass ApiActivityInfoExchange. + // All standalone events are bucketed into slot [0] regardless of which + // thread produced them; ROCTX markers are host-side and have no per-device + // meaning. If num_gpus_ is zero (e.g. a CI node where rocprofiler reports + // no GPU agents), per_device_collector_[0] is never exported by Export(), + // so we drop rather than silently lose events into an unexported slot. + if (!standalone_events_.empty()) { + if (num_gpus_ == 0) { + LOG(WARNING) << "Dropping " << standalone_events_.size() + << " standalone ROCTX events: no GPUs reported by " + "rocprofiler, so no device plane exists to export them."; + } else { + for (auto& event : standalone_events_) { + per_device_collector_[0].AddEvent(std::move(event)); + } + } + standalone_events_.clear(); + } + activity_ops_events_map_.clear(); api_events_map_.clear(); auxiliary_api_events_map_.clear(); @@ -622,6 +700,15 @@ void RocmTraceCollectorImpl::Export(XSpace* space) { uint64_t end_gputime_ns = get_timestamp(); XPlaneBuilder host_plane(FindOrAddMutablePlaneWithName( space, tsl::profiler::kRoctracerApiPlaneName)); + // ROCTX markers go into the same plane CUDA uses for NVTX. The plane is a + // transient routing token: PostProcessSingleHostXSpace merges it into + // /host:CPU and deletes it, and nothing downstream reads a plane name. Using + // the existing constant means the already-shipped NVTX merge block handles + // ROCm unchanged -- which matters across the PJRT plugin boundary, where the + // collector XSpace is serialized without post-processing and a plane name the + // host does not recognise would leak into the viewer unmerged. + XPlaneBuilder marker_plane(FindOrAddMutablePlaneWithName( + space, tsl::profiler::kCuptiActivityNvtxPlaneName)); VLOG(3) << "Calling RocmTraceCollectorImpl::Export num_gpus " << num_gpus_; @@ -635,10 +722,11 @@ void RocmTraceCollectorImpl::Export(XSpace* space) { } per_device_collector_[id].Export(start_walltime_ns_, start_gputime_ns_, end_gputime_ns, &device_plane, - &host_plane); + &marker_plane, &host_plane); NormalizeTimeStamps(&device_plane, start_walltime_ns_); } NormalizeTimeStamps(&host_plane, start_walltime_ns_); + NormalizeTimeStamps(&marker_plane, start_walltime_ns_); ExportScopeRangeIdTree(space); } diff --git a/third_party/xla/xla/backends/profiler/gpu/rocm_collector.h b/third_party/xla/xla/backends/profiler/gpu/rocm_collector.h index 84621a1025413e..cafdc0bde36591 100644 --- a/third_party/xla/xla/backends/profiler/gpu/rocm_collector.h +++ b/third_party/xla/xla/backends/profiler/gpu/rocm_collector.h @@ -154,6 +154,7 @@ class PerDeviceCollector { void Export(uint64_t start_walltime_ns, uint64_t start_gputime_ns, uint64_t end_gputime_ns, tsl::profiler::XPlaneBuilder* device_plane, + tsl::profiler::XPlaneBuilder* marker_plane, tsl::profiler::XPlaneBuilder* host_plane); PerDeviceCollector() = default; @@ -228,6 +229,12 @@ class RocmTraceCollectorImpl : public RocmTraceCollector { absl::flat_hash_map auxiliary_api_events_map_ ABSL_GUARDED_BY(event_maps_mutex_); + // Host-side events that need no API↔Activity join (e.g. ROCTX markers). + // Flushed directly to per_device_collector_ without going through + // ApiActivityInfoExchange. + std::vector standalone_events_ + ABSL_GUARDED_BY(event_maps_mutex_); + std::vector ApiActivityInfoExchange() ABSL_EXCLUSIVE_LOCKS_REQUIRED(event_maps_mutex_); diff --git a/third_party/xla/xla/backends/profiler/gpu/rocm_collector_test.cc b/third_party/xla/xla/backends/profiler/gpu/rocm_collector_test.cc index 5261cebe36b906..51cba12620f24c 100644 --- a/third_party/xla/xla/backends/profiler/gpu/rocm_collector_test.cc +++ b/third_party/xla/xla/backends/profiler/gpu/rocm_collector_test.cc @@ -22,6 +22,9 @@ limitations under the License. #include #include "absl/container/flat_hash_set.h" +#include "absl/strings/match.h" +#include "absl/strings/str_cat.h" +#include "absl/strings/string_view.h" #include "xla/backends/profiler/gpu/rocm_tracer_utils.h" #include "xla/tsl/profiler/utils/xplane_utils.h" #include "tsl/profiler/protobuf/xplane.pb.h" @@ -200,6 +203,191 @@ TEST(RocmCollectorTest, MultipleActivitiesPerCorrelationIdAllExported) { EXPECT_TRUE(seen_names.contains("kernel_c")); } +// --------------------------------------------------------------------------- +// ROCTX marker (Generic event) handling. +// +// These live here rather than in rocm_tracer_test.cc deliberately: they drive +// RocmTraceCollectorImpl directly, with no rocprofiler context and no tracer +// singleton, so they exercise the collector contract on any host. +// --------------------------------------------------------------------------- + +namespace { + +RocmTracerEvent MakeMarkerEvent(absl::string_view label, uint64_t tid, + uint64_t start_ns, uint64_t end_ns) { + RocmTracerEvent e; + e.type = RocmTracerEventType::Generic; + // ApiCallback is what routes this to a host line keyed on thread_id. + e.source = RocmTracerEventSource::ApiCallback; + e.domain = RocmTracerEventDomain::InvalidDomain; + e.name = std::string(label); + e.start_time_ns = start_ns; + e.end_time_ns = end_ns; + e.thread_id = tid; + e.device_id = RocmTracerEvent::kInvalidDeviceId; + e.correlation_id = RocmTracerEvent::kInvalidCorrelationId; + e.stream_id = RocmTracerEvent::kInvalidStreamId; + return e; +} + +// Counts drops so the cap can be asserted on rather than inferred. +class DropCountingCollector : public RocmTraceCollectorImpl { + public: + using RocmTraceCollectorImpl::RocmTraceCollectorImpl; + void OnEventsDropped(const std::string& reason, uint64_t id) override { + ++drops_; + } + int drops() const { return drops_; } + + private: + int drops_ = 0; +}; + +} // namespace + +// Marker events are routed to standalone_events_ by an early return that sits +// above the source-based branching, so they do not inherit the cap enforced +// there. Without an explicit guard an application emitting markers in a hot +// loop grows standalone_events_ without bound for the whole session -- the +// buffer is only drained at Flush(). This is the regression guard for that. +TEST(RocmCollectorTest, MarkerEventsRespectMaxCallbackApiEvents) { + RocmTraceCollectorOptions options; + options.max_callback_api_events = 8; + options.max_activity_api_events = 100; + options.max_annotation_strings = 100; + options.num_gpus = 1; + + DropCountingCollector collector(options, /*start_walltime_ns=*/1000, + /*start_gputime_ns=*/2000); + + constexpr int kEmitted = 25; + for (int i = 0; i < kEmitted; ++i) { + collector.AddEvent(MakeMarkerEvent(absl::StrCat("marker_", i), /*tid=*/7, + 3000 + i, 3100 + i), + /*is_auxiliary=*/false); + } + + EXPECT_EQ(collector.drops(), kEmitted - options.max_callback_api_events) + << "every marker past the cap must be reported through OnEventsDropped, " + "not silently retained"; + + collector.Flush(); + XSpace space; + collector.Export(&space); + + int marker_events = 0; + for (const auto& plane : space.planes()) { + for (const auto& line : plane.lines()) { + if (absl::EndsWith(line.name(), "/ROCTX")) { + marker_events += line.events_size(); + } + } + } + EXPECT_EQ(marker_events, static_cast(options.max_callback_api_events)) + << "the cap must bound what is retained, not just what is reported"; +} + +// Flush() buckets standalone events into per_device_collector_[0], but +// Export() only iterates [0, num_gpus_). With no GPUs that slot is created and +// never exported, so the events would be silently lost; drop them explicitly +// instead, and do not crash. +TEST(RocmCollectorTest, MarkerEventsDroppedWhenNoGpusReported) { + RocmTraceCollectorOptions options; + options.max_callback_api_events = 100; + options.max_activity_api_events = 100; + options.max_annotation_strings = 100; + options.num_gpus = 0; + + RocmTraceCollectorImpl collector(options, /*start_walltime_ns=*/1000, + /*start_gputime_ns=*/2000); + collector.AddEvent(MakeMarkerEvent("orphan", /*tid=*/11, 3000, 3100), + /*is_auxiliary=*/false); + collector.Flush(); + + XSpace space; + collector.Export(&space); // must not crash + + for (const auto& plane : space.planes()) { + for (const auto& line : plane.lines()) { + EXPECT_FALSE(absl::EndsWith(line.name(), "/ROCTX")) + << "no device plane exists to carry marker events"; + } + } +} + +// The routing contract, stated once without a tracer singleton: a marker and a +// kernel-launch API event on the SAME thread must land on different lines -- +// "Host Threads//ROCTX" and "Host Threads/" -- so marker bands sort +// directly beneath their owning thread after the merge into /host:CPU. +TEST(RocmCollectorTest, MarkerAndApiEventsOnSameThreadGetSeparateLines) { + RocmTraceCollectorOptions options; + options.max_callback_api_events = 100; + options.max_activity_api_events = 100; + options.max_annotation_strings = 100; + options.num_gpus = 1; + + RocmTraceCollectorImpl collector(options, /*start_walltime_ns=*/1000, + /*start_gputime_ns=*/2000); + + constexpr uint64_t kTid = 4242; + collector.AddEvent(MakeMarkerEvent("my_range", kTid, 3000, 4000), + /*is_auxiliary=*/false); + + // The API event needs its Activity counterpart: ApiActivityInfoExchange + // drops any ApiCallback event whose correlation_id has no activity record + // (rocm_collector.cc, "could not find activity counterpart"). Markers are + // exempt because they never enter that exchange -- which is the asymmetry + // this test is here to pin down. + constexpr uint32_t kCorrelationId = 55; + + RocmTracerEvent api_event; + api_event.type = RocmTracerEventType::Kernel; + api_event.source = RocmTracerEventSource::ApiCallback; + api_event.domain = RocmTracerEventDomain::HIP_API; + api_event.name = "some_kernel_launch"; + api_event.correlation_id = kCorrelationId; + api_event.thread_id = kTid; + api_event.device_id = 0; + api_event.start_time_ns = 3100; + api_event.end_time_ns = 3200; + api_event.kernel_info = KernelDetails{}; + collector.AddEvent(std::move(api_event), /*is_auxiliary=*/false); + + RocmTracerEvent activity_event; + activity_event.type = RocmTracerEventType::Kernel; + activity_event.source = RocmTracerEventSource::Activity; + activity_event.domain = RocmTracerEventDomain::HIP_OPS; + activity_event.name = "some_kernel_launch"; + activity_event.correlation_id = kCorrelationId; + activity_event.thread_id = kTid; + activity_event.device_id = 0; + activity_event.stream_id = 1; + activity_event.start_time_ns = 3150; + activity_event.end_time_ns = 3250; + activity_event.kernel_info = KernelDetails{}; + collector.AddEvent(std::move(activity_event), /*is_auxiliary=*/false); + + collector.Flush(); + XSpace space; + collector.Export(&space); + + bool found_marker_line = false; + bool found_plain_host_line = false; + for (const auto& plane : space.planes()) { + for (const auto& line : plane.lines()) { + if (line.name() == absl::StrCat("Host Threads/", kTid, "/ROCTX")) { + found_marker_line = true; + EXPECT_EQ(line.events_size(), 1); + } else if (line.name() == absl::StrCat("Host Threads/", kTid)) { + found_plain_host_line = true; + } + } + } + EXPECT_TRUE(found_marker_line) << "marker must get its own /ROCTX line"; + EXPECT_TRUE(found_plain_host_line) + << "the API event must stay on the plain host-thread line"; +} + } // namespace test } // namespace profiler } // namespace xla diff --git a/third_party/xla/xla/backends/profiler/gpu/rocm_tracer.cc b/third_party/xla/xla/backends/profiler/gpu/rocm_tracer.cc index b56d63d701b70b..f9c37cfac6cd1d 100644 --- a/third_party/xla/xla/backends/profiler/gpu/rocm_tracer.cc +++ b/third_party/xla/xla/backends/profiler/gpu/rocm_tracer.cc @@ -34,6 +34,7 @@ limitations under the License. #include "absl/status/status_macros.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" +#include "absl/strings/string_view.h" #include "absl/synchronization/mutex.h" #include "absl/types/span.h" #include "rocm/include/rocprofiler-sdk/agent.h" @@ -45,6 +46,7 @@ limitations under the License. #include "rocm/include/rocprofiler-sdk/fwd.h" #include "rocm/include/rocprofiler-sdk/hip/runtime_api_id.h" #include "rocm/include/rocprofiler-sdk/internal_threading.h" +#include "rocm/include/rocprofiler-sdk/marker.h" #include "rocm/include/rocprofiler-sdk/registration.h" #include "rocm/include/rocprofiler-sdk/rocprofiler.h" #include "xla/backends/profiler/gpu/rocm_collector.h" @@ -73,6 +75,13 @@ absl::Status RocprofilerStatusToAbslStatus(rocprofiler_status_t status) { // Initialized with 0 (the default HIP stream). thread_local absl::InlinedVector tls_stream_stack = {0}; +// Thread-local ROCTX range stack. roctxRangePushA/Pop are thread-local by +// definition and the rocprofiler marker callback runs synchronously on the +// calling thread, so this needs no lock -- which matters because the HIP API +// callback reads the current label on EVERY HIP call. Dies with the thread, +// so no per-thread bookkeeping outlives it. +thread_local std::vector tls_roctx_stack; + } // namespace using tsl::profiler::AnnotationStack; @@ -154,6 +163,16 @@ absl::Status RocmTracer::Enable(const RocmTracerOptions& options, if (collector_ != nullptr) { return absl::AlreadyExistsError("ROCM tracer is already running"); } + + // Clear per-session state while holding collector_mutex_ so no in-flight + // callback can race between the clear and the new session start. + annotation_map_.Clear(); + // ROCTX frames live on thread_local stacks this thread cannot reach, so + // isolate by generation instead of clearing: any frame pushed before this + // point is now stale and will be dropped at pop rather than emitted into + // the new session. See roctx_generation_ in rocm_tracer.h. + roctx_generation_.fetch_add(1, std::memory_order_relaxed); + options_ = options; collector_ = collector; @@ -165,7 +184,6 @@ absl::Status RocmTracer::Enable(const RocmTracerOptions& options, return absl::InternalError( absl::StrCat("rocprofiler_start_context failed: ", errstr)); } - annotation_map_.Clear(); api_tracing_enabled_ = true; activity_tracing_enabled_ = true; VLOG(1) << "GpuTracer started with number of GPUs = " << NumGpus(); @@ -188,6 +206,8 @@ void RocmTracer::HipApiEvent(const rocprofiler_record_header_t* hdr, trace_event->correlation_id = rec.correlation_id.internal; trace_event->annotation = annotation_map()->LookUp(trace_event->correlation_id); + trace_event->roctx_range = + annotation_map()->LookUpRoctxRange(trace_event->correlation_id); trace_event->scope_range_id = annotation_map()->LookUpScopeRangeId(trace_event->correlation_id); trace_event->thread_id = rec.thread_id; @@ -284,6 +304,8 @@ void RocmTracer::MemcpyEvent(const rocprofiler_record_header_t* hdr, trace_event->correlation_id = rec.correlation_id.internal; trace_event->annotation = annotation_map()->LookUp(trace_event->correlation_id); + trace_event->roctx_range = + annotation_map()->LookUpRoctxRange(trace_event->correlation_id); trace_event->scope_range_id = annotation_map()->LookUpScopeRangeId(trace_event->correlation_id); trace_event->thread_id = rec.thread_id; @@ -318,6 +340,8 @@ void RocmTracer::KernelEvent(const rocprofiler_record_header_t* hdr, trace_event->correlation_id = rec.correlation_id.internal; trace_event->annotation = annotation_map()->LookUp(trace_event->correlation_id); + trace_event->roctx_range = + annotation_map()->LookUpRoctxRange(trace_event->correlation_id); trace_event->scope_range_id = annotation_map()->LookUpScopeRangeId(trace_event->correlation_id); trace_event->thread_id = rec.thread_id; @@ -340,6 +364,111 @@ void RocmTracer::KernelEvent(const rocprofiler_record_header_t* hdr, if (it != kernel_info_.end()) trace_event->name = it->second.name; } +void RocmTracer::EmitMarkerEvent(std::string label, uint64_t start_ns, + uint64_t end_ns, uint64_t tid) { + RocmTracerEvent event; + event.type = RocmTracerEventType::Generic; + // ApiCallback is load-bearing, not incidental: PerDeviceCollector:: + // IsHostEvent keys off it to set line_id = thread_id, which is what places + // markers on a per-thread line rather than a device stream line. + event.source = RocmTracerEventSource::ApiCallback; + // These arrive via MARKER_CORE_API, not the HIP API. InvalidDomain is the + // honest value; HIP_API here would be wrong and would start counting + // markers as activity events if the Generic early-return in + // RocmTraceCollectorImpl::AddEvent were ever reordered. + event.domain = RocmTracerEventDomain::InvalidDomain; + // The label is owned by event.name. Deliberately no roctx_range view: that + // field is for kernel/HIP-API events, where it points into AnnotationMap's + // session-scoped pool. A view into our own name would dangle the moment the + // event is moved (small-string optimisation relocates the buffer), and a + // separate intern pool would only duplicate bytes name already owns. + // CreateXEvent reads name for the kNVTXRange stat on Generic events. + event.name = std::move(label); + event.start_time_ns = start_ns; + event.end_time_ns = end_ns; + event.thread_id = tid; + event.device_id = RocmTracerEvent::kInvalidDeviceId; + // Markers correlate with nothing downstream: a Generic event has no GPU + // activity record to be paired with, so it carries no correlation id. + event.correlation_id = RocmTracerEvent::kInvalidCorrelationId; + event.stream_id = RocmTracerEvent::kInvalidStreamId; + event.scope_range_id = 0; + + absl::MutexLock lock(&collector_mutex_); + if (collector()) { + collector()->AddEvent(std::move(event), /*is_auxiliary=*/false); + } +} + +void RocmTracer::MarkerCallback( + const rocprofiler_callback_tracing_record_t& record) { + if (record.kind != ROCPROFILER_CALLBACK_TRACING_MARKER_CORE_API) return; + + const auto* data = + static_cast( + record.payload); + const uint64_t tid = record.thread_id; + + if (record.operation == ROCPROFILER_MARKER_CORE_API_ID_roctxRangePushA && + record.phase == ROCPROFILER_CALLBACK_PHASE_ENTER) { + const char* msg = data ? data->args.roctxRangePushA.message : nullptr; + // Push unconditionally, even when GetTimestamp() fails (ts == 0) or the + // label is absent. Skipping the push would desynchronise the whole + // thread's stack: the matching pop would consume the ENCLOSING frame and + // emit it with the inner end time, and every outer level after it would + // be off by one. A frame with start_ns == 0 is dropped at pop instead, + // which costs one bogus range rather than corrupting the rest. + tls_roctx_stack.push_back( + RoctxFrame{msg ? std::string(msg) : std::string(), GetTimestamp(), + roctx_generation_.load(std::memory_order_relaxed)}); + + } else if (record.operation == ROCPROFILER_MARKER_CORE_API_ID_roctxRangePop && + record.phase == ROCPROFILER_CALLBACK_PHASE_EXIT) { + if (tls_roctx_stack.empty()) return; // unmatched pop + RoctxFrame frame = std::move(tls_roctx_stack.back()); + tls_roctx_stack.pop_back(); + + const uint64_t ts = GetTimestamp(); + // Drop rather than emit: a frame from a previous session would carry that + // session's start timestamp, a failed clock read cannot produce a valid + // duration, and an unlabelled range renders as an anonymous "Generic" + // band. Popping first (above) keeps the stack balanced in every case. + if (frame.generation != roctx_generation_.load(std::memory_order_relaxed) || + frame.start_ns == 0 || ts == 0 || frame.message.empty()) { + return; + } + EmitMarkerEvent(std::move(frame.message), frame.start_ns, ts, tid); + + } else if (record.operation == ROCPROFILER_MARKER_CORE_API_ID_roctxMarkA && + record.phase == ROCPROFILER_CALLBACK_PHASE_ENTER) { + const uint64_t ts = GetTimestamp(); + if (ts == 0) return; + const char* msg = data ? data->args.roctxMarkA.message : nullptr; + if (!msg || msg[0] == '\0') return; + EmitMarkerEvent(std::string(msg), ts, ts, tid); + + } else if (record.phase == ROCPROFILER_CALLBACK_PHASE_ENTER) { + // roctxRangeStartA/roctxRangeStop -- the documented idiom for ranges that + // begin and end on different threads or that overlap -- are not handled. + // Warn once rather than dropping silently, so a user whose instrumentation + // produces an empty ROCTX row can tell "unsupported" from "broken". + LOG_FIRST_N(WARNING, 1) + << "ROCTX marker operation " << record.operation + << " is not captured by the XLA profiler (only roctxRangePushA/" + "roctxRangePop/roctxMarkA are). Ranges created with " + "roctxRangeStartA/roctxRangeStop will not appear in the trace."; + } +} + +absl::string_view RocmTracer::GetCurrentRoctxLabel() { + if (tls_roctx_stack.empty()) return {}; + const RoctxFrame& frame = tls_roctx_stack.back(); + if (frame.generation != roctx_generation_.load(std::memory_order_relaxed)) { + return {}; + } + return frame.message; +} + void RocmTracer::TracingCallback(rocprofiler_context_id_t context, rocprofiler_buffer_id_t buffer_id, rocprofiler_record_header_t** headers, @@ -579,19 +708,58 @@ absl::Status RocmTracer::InitProfiling(void* tool_data) { [](rocprofiler_callback_tracing_record_t record, rocprofiler_user_data_t*, void*) { if (record.phase == ROCPROFILER_CALLBACK_PHASE_ENTER) { + auto& tracer = RocmTracer::GetRocmTracerSingleton(); const std::string& annotation = tsl::profiler::AnnotationStack::Get(); - if (!annotation.empty()) { + // Aliases the thread_local roctx frame. Safe to hold across + // Add(): this callback runs synchronously on the thread that + // owns the stack, so nothing can pop it in between, and Add() + // interns a copy. + absl::string_view roctx = tracer.GetCurrentRoctxLabel(); + // Store when either field is non-empty: annotation populates + // kTfOp on kernel events; roctx populates kNVTXRange. + if (!annotation.empty() || !roctx.empty()) { absl::Span range_ids = tsl::profiler::AnnotationStack::GetScopeRangeIds(); - RocmTracer::GetRocmTracerSingleton().annotation_map()->Add( - record.correlation_id.internal, annotation, range_ids); + tracer.annotation_map()->Add(record.correlation_id.internal, + annotation, roctx, range_ids); } } }, nullptr))); } + // ROCTX marker tracing: capture roctxRangePushA, roctxRangePop, and + // roctxMarkA so user-emitted ranges appear as named bands in the XPlane host + // thread timeline (kNVTXRange stat on Generic events). + // + // The producer is the application, not XLA. On ROCm, nvtx_utils_impl builds + // nvtx_utils_stub.cc, whose DefaultProfilerDomain() returns null, so + // scoped_annotation.h takes its AnnotationStack branch and XLA emits no + // roctx call. Only code that links librocprofiler-sdk-roctx and calls it + // directly reaches this callback. A follow-up adds the XLA-side emitter. + // Log and continue rather than ABSL_RETURN_IF_ERROR. A failure here propagates to + // toolInit, which returns -1 and tears down HIP-API, kernel-dispatch and + // memcpy tracing along with it. That is far too much collateral for an + // optional feature whose producer is the application: MARKER_CORE_API may be + // absent in an older rocprofiler-sdk, or already claimed by another tool in + // the process (ROCPROFILER_STATUS_ERROR_SERVICE_ALREADY_CONFIGURED). Losing + // ROCTX bands is acceptable; losing all GPU profiling is not. + if (absl::Status marker_status = RocprofilerStatusToAbslStatus( + rocprofiler_configure_callback_tracing_service( + context_, ROCPROFILER_CALLBACK_TRACING_MARKER_CORE_API, nullptr, + 0, + [](rocprofiler_callback_tracing_record_t record, + rocprofiler_user_data_t*, void*) { + RocmTracer::GetRocmTracerSingleton().MarkerCallback(record); + }, + nullptr)); + !marker_status.ok()) { + LOG(WARNING) << "ROCTX marker tracing unavailable; continuing without it. " + "ROCTX ranges will not appear in the trace. Reason: " + << marker_status.message(); + } + auto client_thread = rocprofiler_callback_thread_t{}; ABSL_RETURN_IF_ERROR(RocprofilerStatusToAbslStatus( rocprofiler_create_callback_thread(&client_thread))); diff --git a/third_party/xla/xla/backends/profiler/gpu/rocm_tracer.h b/third_party/xla/xla/backends/profiler/gpu/rocm_tracer.h index a948af688a4982..8d2fd30efd238f 100644 --- a/third_party/xla/xla/backends/profiler/gpu/rocm_tracer.h +++ b/third_party/xla/xla/backends/profiler/gpu/rocm_tracer.h @@ -16,9 +16,13 @@ limitations under the License. #ifndef XLA_BACKENDS_PROFILER_GPU_ROCM_TRACER_H_ #define XLA_BACKENDS_PROFILER_GPU_ROCM_TRACER_H_ +#include +#include +#include + #include "absl/container/flat_hash_map.h" -#include "absl/container/node_hash_set.h" #include "absl/status/status.h" +#include "absl/strings/string_view.h" #include "absl/synchronization/mutex.h" #include "absl/types/optional.h" #include "xla/backends/profiler/gpu/rocm_tracer_utils.h" @@ -72,6 +76,30 @@ class RocmTracer { void CodeObjectCallback(rocprofiler_callback_tracing_record_t record, void* callback_data); + // Called from the MARKER_CORE_API callback. Handles roctxRangePushA, + // roctxRangePop, and roctxMarkA, emitting RocmTracerEvent(Generic) for each + // completed range or instantaneous mark. + void MarkerCallback(const rocprofiler_callback_tracing_record_t& record); + + // Returns the label of the innermost ROCTX range active on the CALLING + // thread, or empty if none. Takes no thread id: the range stack is + // thread_local, and the HIP API callback that consumes this runs on the same + // thread that pushed the range. + // + // The view aliases the thread_local frame, so it is only valid until this + // thread makes its next roctx call. That is enough for the caller: the HIP + // API callback runs synchronously on the thread that owns the stack, so no + // pop can interleave, and AnnotationMap::Add interns a copy before + // returning. Do not store the view. + absl::string_view GetCurrentRoctxLabel(); + + // Builds and hands a Generic (ROCTX marker) event to the collector. Shared + // by the range-pop and mark paths so the two cannot drift in how they set + // source/domain/ids -- an earlier duplicated version diverged on empty-label + // handling and emitted anonymous "Generic" bands. + void EmitMarkerEvent(std::string label, uint64_t start_ns, uint64_t end_ns, + uint64_t tid); + AnnotationMap* annotation_map() { return &annotation_map_; } protected: @@ -95,6 +123,21 @@ class RocmTracer { AnnotationMap annotation_map_{/* default size, e.g. */ 1024 * 1024}; + // ROCTX range state lives in a thread_local stack in rocm_tracer.cc, not + // here. roctx pushes and pops are thread-local by definition and the + // rocprofiler callback runs synchronously on the calling thread, so no + // shared structure is needed -- and the HIP API callback reads the current + // label on every single HIP call, which must not touch a process-wide lock. + // Keeping it thread_local also means no per-thread map entry outlives the + // thread, and there is no lock to order against collector_mutex_. + // + // Session isolation is by generation instead of by clearing: Enable() bumps + // this counter, and a pop whose frame carries an older generation is + // discarded rather than emitted into the new session. Relaxed ordering is + // sufficient -- a racing push either sees the old or the new value, and + // either way the frame is consistently tagged and consistently judged. + std::atomic roctx_generation_{0}; + public: using kernel_symbol_data_t = rocprofiler_callback_tracing_code_object_kernel_symbol_register_data_t; diff --git a/third_party/xla/xla/backends/profiler/gpu/rocm_tracer_test.cc b/third_party/xla/xla/backends/profiler/gpu/rocm_tracer_test.cc index b1e8b997881c6e..72c1e4824a90c0 100644 --- a/third_party/xla/xla/backends/profiler/gpu/rocm_tracer_test.cc +++ b/third_party/xla/xla/backends/profiler/gpu/rocm_tracer_test.cc @@ -18,20 +18,30 @@ limitations under the License. #include #include #include +#include #include +#include #include +#include #include +#include "absl/container/flat_hash_map.h" #include "absl/log/log.h" +#include "absl/strings/match.h" +#include "absl/strings/str_join.h" #include "absl/strings/string_view.h" #include "absl/time/clock.h" #include "absl/time/time.h" #include "rocm/include/hip/hip_runtime.h" +#include "rocm/include/rocprofiler-sdk-roctx/roctx.h" +#include "rocm/include/rocprofiler-sdk/callback_tracing.h" #include "rocm/include/rocprofiler-sdk/context.h" #include "rocm/include/rocprofiler-sdk/fwd.h" +#include "rocm/include/rocprofiler-sdk/marker.h" #include "xla/backends/profiler/gpu/rocm_collector.h" #include "xla/backends/profiler/gpu/rocm_tracer_utils.h" #include "xla/tsl/lib/core/status_test_util.h" +#include "xla/tsl/platform/env_time.h" #include "tsl/profiler/protobuf/xplane.pb.h" namespace xla { @@ -337,6 +347,598 @@ TEST(RocmTracerTest, DisableIsolatesNextSession) { << kLeakedPairs << " hipMemcpy pairs"; } +// MarkerCallback unit tests — exercise MarkerCallback() directly without +// requiring real ROCTX API calls, using a capturing collector. +// ============================================================================ + +// Collector variant that captures the full RocmTracerEvent for inspection. +class MarkerCapturingCollector : public RocmTraceCollector { + public: + MarkerCapturingCollector() : RocmTraceCollector(MakeCollectorOptions()) {} + + void AddEvent(RocmTracerEvent&& event, bool) override { + absl::MutexLock lock(&mu_); + events_.push_back(std::move(event)); + } + void OnEventsDropped(const std::string&, uint64_t) override {} + void Flush() override {} + void Export(tsl::profiler::XSpace*) override {} + + std::vector TakeEvents() { + absl::MutexLock lock(&mu_); + return std::exchange(events_, {}); + } + + private: + static RocmTraceCollectorOptions MakeCollectorOptions() { + RocmTraceCollectorOptions o; + o.max_callback_api_events = 1024; + o.max_activity_api_events = 1024; + o.max_annotation_strings = 1024; + o.num_gpus = 1; + return o; + } + absl::Mutex mu_; + std::vector events_ ABSL_GUARDED_BY(mu_); +}; + +// Build a minimal rocprofiler_callback_tracing_record_t for MARKER_CORE_API. +// `payload` must point to a live rocprofiler_callback_tracing_marker_api_data_t +// for the duration of the MarkerCallback call. +static rocprofiler_callback_tracing_record_t MakeMarkerRecord( + rocprofiler_marker_core_api_id_t op, rocprofiler_callback_phase_t phase, + uint64_t thread_id, void* payload) { + rocprofiler_callback_tracing_record_t rec{}; + rec.kind = ROCPROFILER_CALLBACK_TRACING_MARKER_CORE_API; + rec.operation = static_cast(op); + rec.phase = phase; + rec.thread_id = thread_id; + rec.correlation_id.internal = 99; + rec.payload = payload; + return rec; +} + +TEST(RocmTracerTest, MarkerCallbackPushPopEmitsRoctxRange) { + RocmTracer& tracer = RocmTracer::GetRocmTracerSingleton(); + ASSERT_TRUE(tracer.IsAvailable()); + + auto collector = std::make_unique(); + MarkerCapturingCollector* cptr = collector.get(); + + RocmTracerOptions opts{/*max_annotation_strings=*/1024}; + TF_ASSERT_OK(tracer.Enable(opts, cptr)); + + const uint64_t tid = 12345; + const char* label = "my_roctx_range"; + + // Simulate roctxRangePushA ENTER + rocprofiler_callback_tracing_marker_api_data_t push_data{}; + push_data.args.roctxRangePushA.message = label; + auto push_rec = + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePushA, + ROCPROFILER_CALLBACK_PHASE_ENTER, tid, &push_data); + tracer.MarkerCallback(push_rec); + + // No event yet — PUSH doesn't emit + EXPECT_TRUE(cptr->TakeEvents().empty()) + << "roctxRangePushA must not emit an event until the matching Pop"; + + // Simulate roctxRangePop EXIT + rocprofiler_callback_tracing_marker_api_data_t pop_data{}; + auto pop_rec = + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePop, + ROCPROFILER_CALLBACK_PHASE_EXIT, tid, &pop_data); + tracer.MarkerCallback(pop_rec); + + tracer.Disable(); + + auto events = cptr->TakeEvents(); + ASSERT_EQ(events.size(), 1u) + << "Expected exactly one range event from Push+Pop"; + + const RocmTracerEvent& e = events[0]; + EXPECT_EQ(e.type, RocmTracerEventType::Generic); + // ApiCallback is what makes PerDeviceCollector place this on a per-thread + // line rather than a device stream line. + EXPECT_EQ(e.source, RocmTracerEventSource::ApiCallback); + // Markers own their label in `name`; `roctx_range` is reserved for + // kernel/HIP-API events, where it views AnnotationMap's pool. + EXPECT_EQ(e.name, label); + EXPECT_TRUE(e.roctx_range.empty()) + << "marker events must not carry a roctx_range view"; + EXPECT_EQ(e.thread_id, tid); + // GE, not GT: both timestamps come from rocprofiler_get_timestamp and a + // zero-length range is legal, so strict inequality is a flake tail. + EXPECT_GE(e.end_time_ns, e.start_time_ns); +} + +TEST(RocmTracerTest, MarkerCallbackMarkEmitsInstantaneousEvent) { + RocmTracer& tracer = RocmTracer::GetRocmTracerSingleton(); + ASSERT_TRUE(tracer.IsAvailable()); + + auto collector = std::make_unique(); + MarkerCapturingCollector* cptr = collector.get(); + + RocmTracerOptions opts{/*max_annotation_strings=*/1024}; + TF_ASSERT_OK(tracer.Enable(opts, cptr)); + + const uint64_t tid = 77777; + const char* label = "checkpoint"; + + rocprofiler_callback_tracing_marker_api_data_t mark_data{}; + mark_data.args.roctxMarkA.message = label; + auto mark_rec = + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxMarkA, + ROCPROFILER_CALLBACK_PHASE_ENTER, tid, &mark_data); + tracer.MarkerCallback(mark_rec); + + tracer.Disable(); + + auto events = cptr->TakeEvents(); + ASSERT_EQ(events.size(), 1u) << "roctxMarkA must emit exactly one event"; + + const RocmTracerEvent& e = events[0]; + EXPECT_EQ(e.type, RocmTracerEventType::Generic); + EXPECT_EQ(e.name, label); + EXPECT_TRUE(e.roctx_range.empty()); + EXPECT_EQ(e.thread_id, tid); + EXPECT_EQ(e.start_time_ns, e.end_time_ns) + << "roctxMarkA produces an instantaneous event (start == end)"; +} + +TEST(RocmTracerTest, MarkerCallbackUnmatchedPopIsIgnored) { + RocmTracer& tracer = RocmTracer::GetRocmTracerSingleton(); + ASSERT_TRUE(tracer.IsAvailable()); + + auto collector = std::make_unique(); + MarkerCapturingCollector* cptr = collector.get(); + + RocmTracerOptions opts{/*max_annotation_strings=*/1024}; + TF_ASSERT_OK(tracer.Enable(opts, cptr)); + + // Pop without any preceding Push — must not crash, must not emit any event. + rocprofiler_callback_tracing_marker_api_data_t pop_data{}; + auto pop_rec = + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePop, + ROCPROFILER_CALLBACK_PHASE_EXIT, 1111, &pop_data); + tracer.MarkerCallback(pop_rec); + + tracer.Disable(); + + EXPECT_TRUE(cptr->TakeEvents().empty()) + << "An unmatched roctxRangePop must not emit an event"; +} + +TEST(RocmTracerTest, MarkerCallbackNullLabelRangeIsDroppedNotEmitted) { + RocmTracer& tracer = RocmTracer::GetRocmTracerSingleton(); + ASSERT_TRUE(tracer.IsAvailable()); + + auto collector = std::make_unique(); + MarkerCapturingCollector* cptr = collector.get(); + + RocmTracerOptions opts{/*max_annotation_strings=*/1024}; + TF_ASSERT_OK(tracer.Enable(opts, cptr)); + + const uint64_t tid = 2222; + + // Push with a null message — must not crash, and must still push so the + // matching pop consumes THIS frame rather than an enclosing one. + rocprofiler_callback_tracing_marker_api_data_t push_data{}; + push_data.args.roctxRangePushA.message = nullptr; + auto push_rec = + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePushA, + ROCPROFILER_CALLBACK_PHASE_ENTER, tid, &push_data); + tracer.MarkerCallback(push_rec); + + rocprofiler_callback_tracing_marker_api_data_t pop_data{}; + auto pop_rec = + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePop, + ROCPROFILER_CALLBACK_PHASE_EXIT, tid, &pop_data); + tracer.MarkerCallback(pop_rec); + + tracer.Disable(); + + // An unlabelled range carries no information and renders in the trace + // viewer as an anonymous "Generic" band (CreateXEvent falls back to the + // event-type name when `name` is empty). Drop it, matching how roctxMarkA + // already treats a null/empty message. + EXPECT_THAT(cptr->TakeEvents(), ::testing::IsEmpty()) + << "A range with no label must be dropped, not emitted as \"Generic\""; +} + +// The counterpart to the above: dropping the unlabelled range must NOT +// desynchronise the thread's stack. If the null push were skipped entirely, +// this pop would consume "outer" and report it with the inner end time. +TEST(RocmTracerTest, MarkerCallbackNullLabelRangeKeepsStackBalanced) { + RocmTracer& tracer = RocmTracer::GetRocmTracerSingleton(); + ASSERT_TRUE(tracer.IsAvailable()); + + auto collector = std::make_unique(); + MarkerCapturingCollector* cptr = collector.get(); + + RocmTracerOptions opts{/*max_annotation_strings=*/1024}; + TF_ASSERT_OK(tracer.Enable(opts, cptr)); + + const uint64_t tid = 2223; + + rocprofiler_callback_tracing_marker_api_data_t outer{}; + outer.args.roctxRangePushA.message = "outer"; + tracer.MarkerCallback( + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePushA, + ROCPROFILER_CALLBACK_PHASE_ENTER, tid, &outer)); + + rocprofiler_callback_tracing_marker_api_data_t inner{}; + inner.args.roctxRangePushA.message = nullptr; // unlabelled inner range + tracer.MarkerCallback( + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePushA, + ROCPROFILER_CALLBACK_PHASE_ENTER, tid, &inner)); + + rocprofiler_callback_tracing_marker_api_data_t pop{}; + tracer.MarkerCallback( + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePop, + ROCPROFILER_CALLBACK_PHASE_EXIT, tid, &pop)); // inner + tracer.MarkerCallback( + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePop, + ROCPROFILER_CALLBACK_PHASE_EXIT, tid, &pop)); // outer + + tracer.Disable(); + + auto events = cptr->TakeEvents(); + ASSERT_EQ(events.size(), 1u) << "only the labelled range should be emitted"; + EXPECT_EQ(events[0].name, "outer") + << "the surviving event must be the outer range, not a shifted frame"; +} + +// Integration test: verifies the full pipeline — MarkerCallback → AddEvent → +// PerDeviceCollector::Export — produces a Generic event in the XSpace host +// plane. Uses the unit-test collector path (real rocprofiler context is live +// because Enable() starts it; we inject the event via MarkerCallback directly +// rather than going through the real ROCTX library). +TEST(RocmTracerTest, MarkerEventAppearsInExportedXSpace) { + RocmTracer& tracer = RocmTracer::GetRocmTracerSingleton(); + ASSERT_TRUE(tracer.IsAvailable()); + + RocmTraceCollectorOptions col_opts; + col_opts.max_callback_api_events = 1024; + col_opts.max_activity_api_events = 1024; + col_opts.max_annotation_strings = 1024; + col_opts.num_gpus = tracer.NumGpus() > 0 ? tracer.NumGpus() : 1; + + uint64_t start_gpu = RocmTracer::GetTimestamp(); + uint64_t start_wall = tsl::EnvTime::NowNanos(); + auto collector = + std::make_unique(col_opts, start_wall, start_gpu); + collector->SetGpuAgents(tracer.GpuAgents()); + + RocmTracerOptions opts{/*max_annotation_strings=*/1024}; + TF_ASSERT_OK(tracer.Enable(opts, collector.get())); + + const uint64_t tid = 4242; + const char* label = "integration_label"; + + rocprofiler_callback_tracing_marker_api_data_t push_data{}; + push_data.args.roctxRangePushA.message = label; + auto push_rec = + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePushA, + ROCPROFILER_CALLBACK_PHASE_ENTER, tid, &push_data); + tracer.MarkerCallback(push_rec); + + rocprofiler_callback_tracing_marker_api_data_t pop_data{}; + auto pop_rec = + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePop, + ROCPROFILER_CALLBACK_PHASE_EXIT, tid, &pop_data); + tracer.MarkerCallback(pop_rec); + + tracer.Disable(); + + tsl::profiler::XSpace space; + collector->Export(&space); + + // Assert on the LINE name, not the plane name. The marker plane is a + // transient routing token that PostProcessSingleHostXSpace merges into + // /host:CPU and deletes, so a plane-name assertion pins an implementation + // detail that never reaches a user. The line name does survive, and the + // "/ROCTX" suffix is applied only to lines on the marker plane -- so this + // single check covers both halves of the routing contract: markers land on + // the marker plane, and they do NOT land on the HIP-API host plane (whose + // lines are named "Host Threads/" with no suffix). + bool found_nvtx_stat = false; + bool found_correct_label = false; + bool found_on_non_marker_line = false; + for (const auto& plane : space.planes()) { + // Build a map from stat metadata ID -> stat name for this plane. + absl::flat_hash_map stat_id_to_name; + for (const auto& [id, stat_md] : plane.stat_metadata()) { + stat_id_to_name[id] = stat_md.name(); + } + + // CreateXEvent writes the label via + // AddStatValue(md(kNVTXRange), *plane->GetOrCreateStatMetadata(label)) + // whose second argument is an XStatMetadata&, so the label arrives as a + // ref_value naming another stat_metadata entry -- NOT as a str_value. + // Reading str_value alone silently yields "" and the assertion can never + // pass. Handle both encodings, as RealRoctxCallsProduceNvtxRangeInXSpace + // below already does. + auto label_of = + [&](const tensorflow::profiler::XStat& stat) -> std::string { + if (stat.value_case() == tensorflow::profiler::XStat::kRefValue) { + auto it = plane.stat_metadata().find(stat.ref_value()); + return it != plane.stat_metadata().end() ? it->second.name() : ""; + } + return stat.str_value(); + }; + + for (const auto& line : plane.lines()) { + const bool is_marker_line = absl::EndsWith(line.name(), "/ROCTX"); + for (const auto& event : line.events()) { + for (const auto& stat : event.stats()) { + auto name_it = stat_id_to_name.find(stat.metadata_id()); + if (name_it == stat_id_to_name.end() || + name_it->second != "nvtx_range") { + continue; + } + found_nvtx_stat = true; + if (!is_marker_line) { + found_on_non_marker_line = true; + continue; + } + if (label_of(stat) == label) found_correct_label = true; + } + } + } + } + EXPECT_TRUE(found_nvtx_stat) + << "XSpace should contain an nvtx_range stat after a ROCTX range"; + EXPECT_TRUE(found_correct_label) + << "nvtx_range stat on a \"Host Threads//ROCTX\" line must equal " + "the pushed label: " + << label; + EXPECT_FALSE(found_on_non_marker_line) + << "ROCTX markers must not be routed onto the HIP-API host plane"; +} + +// ============================================================================ +// Integration test: real librocprofiler-sdk-roctx.so → MarkerCallback → +// kNVTXRange stat in exported XSpace. +// +// Linked directly against @local_config_rocm//rocm:rocprofiler_sdk_roctx, +// which stages the library and its librocprofiler-register.so dependency so +// rocprofiler-sdk intercepts the calls. libroctx64.so (old roctracer-era +// roctx) would NOT be intercepted, which is why this test requires the +// rocprofiler-sdk-integrated variant. +// ============================================================================ + +// Test: real roctxRangePushA/roctxRangePop → kNVTXRange stat in XSpace. +TEST(RocmTracerTest, RealRoctxCallsProduceNvtxRangeInXSpace) { + RocmTracer& tracer = RocmTracer::GetRocmTracerSingleton(); + ASSERT_TRUE(tracer.IsAvailable()); + + RocmTraceCollectorOptions col_opts; + col_opts.max_callback_api_events = 1024; + col_opts.max_activity_api_events = 1024; + col_opts.max_annotation_strings = 1024; + col_opts.num_gpus = tracer.NumGpus() > 0 ? tracer.NumGpus() : 1; + + uint64_t start_gpu = RocmTracer::GetTimestamp(); + uint64_t start_wall = tsl::EnvTime::NowNanos(); + auto collector = + std::make_unique(col_opts, start_wall, start_gpu); + collector->SetGpuAgents(tracer.GpuAgents()); + + RocmTracerOptions opts{/*max_annotation_strings=*/1024}; + TF_ASSERT_OK(tracer.Enable(opts, collector.get())); + + // Emit real ROCTX ranges — rocprofiler-sdk intercepts these and fires + // MarkerCallback, which emits Generic RocmTracerEvents. + EXPECT_GE(roctxRangePushA("unit_test_outer"), 0); + EXPECT_GE(roctxRangePushA("unit_test_inner"), 0); + roctxMarkA("unit_test_mark"); + roctxRangePop(); // end unit_test_inner + roctxRangePop(); // end unit_test_outer + + tracer.Disable(); + + // Export and verify kNVTXRange stat appears in XSpace. + tsl::profiler::XSpace space; + collector->Export(&space); + + bool found_nvtx_stat = false; + bool found_on_marker_line = false; + std::vector found_labels; + + for (const auto& plane : space.planes()) { + // Find the nvtx_range stat metadata id in this plane. + int64_t nvtx_stat_id = -1; + for (const auto& [sid, smd] : plane.stat_metadata()) { + if (smd.name() == "nvtx_range") { + nvtx_stat_id = sid; + found_nvtx_stat = true; + break; + } + } + if (nvtx_stat_id < 0) continue; + + // Collect the label strings from event stats. Routing is asserted via the + // line name ("Host Threads//ROCTX"), which is what survives the merge + // into /host:CPU -- the marker plane itself is deleted in post-processing. + for (const auto& line : plane.lines()) { + const bool is_marker_line = absl::EndsWith(line.name(), "/ROCTX"); + for (const auto& event : line.events()) { + for (const auto& stat : event.stats()) { + if (stat.metadata_id() != nvtx_stat_id) continue; + if (is_marker_line) found_on_marker_line = true; + if (stat.value_case() == tensorflow::profiler::XStat::kRefValue) { + int64_t ref = stat.ref_value(); + auto it = plane.stat_metadata().find(ref); + if (it != plane.stat_metadata().end()) { + found_labels.push_back(it->second.name()); + } + } else if (stat.value_case() == + tensorflow::profiler::XStat::kStrValue) { + found_labels.push_back(stat.str_value()); + } + } + } + } + } + + EXPECT_TRUE(found_nvtx_stat) + << "XSpace should contain 'nvtx_range' stat metadata after real ROCTX " + "calls via librocprofiler-sdk-roctx.so"; + EXPECT_TRUE(found_on_marker_line) + << "ROCTX events must land on a \"Host Threads//ROCTX\" line"; + + if (found_nvtx_stat) { + std::set label_set(found_labels.begin(), found_labels.end()); + EXPECT_TRUE(label_set.count("unit_test_outer")) + << "Expected 'unit_test_outer' in nvtx_range labels. Found: " + << absl::StrJoin(found_labels, ", "); + EXPECT_TRUE(label_set.count("unit_test_inner")) + << "Expected 'unit_test_inner' in nvtx_range labels. Found: " + << absl::StrJoin(found_labels, ", "); + // roctxMarkA emits an instantaneous event — label is present + EXPECT_TRUE(label_set.count("unit_test_mark")) + << "Expected 'unit_test_mark' in nvtx_range labels. Found: " + << absl::StrJoin(found_labels, ", "); + } +} + +// ============================================================================ +// GetCurrentRoctxLabel and AnnotationMap roctx_range tests (Commit B) +// ============================================================================ + +TEST(RocmTracerTest, GetCurrentRoctxLabelReturnsTopOfStack) { + RocmTracer& tracer = RocmTracer::GetRocmTracerSingleton(); + ASSERT_TRUE(tracer.IsAvailable()); + + auto collector = std::make_unique(); + RocmTracerOptions opts{/*max_annotation_strings=*/1024}; + TF_ASSERT_OK(tracer.Enable(opts, collector.get())); + + const uint64_t tid = 55555; + + EXPECT_EQ(tracer.GetCurrentRoctxLabel(), ""); + + rocprofiler_callback_tracing_marker_api_data_t push_data{}; + push_data.args.roctxRangePushA.message = "outer"; + tracer.MarkerCallback( + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePushA, + ROCPROFILER_CALLBACK_PHASE_ENTER, tid, &push_data)); + EXPECT_EQ(tracer.GetCurrentRoctxLabel(), "outer"); + + push_data.args.roctxRangePushA.message = "inner"; + tracer.MarkerCallback( + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePushA, + ROCPROFILER_CALLBACK_PHASE_ENTER, tid, &push_data)); + EXPECT_EQ(tracer.GetCurrentRoctxLabel(), "inner"); + + tracer.Disable(); +} + +TEST(RocmTracerTest, GetCurrentRoctxLabelEmptyAfterPop) { + RocmTracer& tracer = RocmTracer::GetRocmTracerSingleton(); + ASSERT_TRUE(tracer.IsAvailable()); + + auto collector = std::make_unique(); + RocmTracerOptions opts{/*max_annotation_strings=*/1024}; + TF_ASSERT_OK(tracer.Enable(opts, collector.get())); + + const uint64_t tid = 55556; + + rocprofiler_callback_tracing_marker_api_data_t push_data{}; + push_data.args.roctxRangePushA.message = "only_range"; + tracer.MarkerCallback( + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePushA, + ROCPROFILER_CALLBACK_PHASE_ENTER, tid, &push_data)); + EXPECT_EQ(tracer.GetCurrentRoctxLabel(), "only_range"); + + rocprofiler_callback_tracing_marker_api_data_t pop_data{}; + tracer.MarkerCallback( + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePop, + ROCPROFILER_CALLBACK_PHASE_EXIT, tid, &pop_data)); + EXPECT_EQ(tracer.GetCurrentRoctxLabel(), ""); + + tracer.Disable(); +} + +TEST(RocmTracerTest, AnnotationMapStoresRoctxRange) { + AnnotationMap map(1024); + map.Add(99, "my_annotation", "my_roctx_label", {}); + EXPECT_EQ(map.LookUp(99), "my_annotation"); + EXPECT_EQ(map.LookUpRoctxRange(99), "my_roctx_label"); + + EXPECT_EQ(map.LookUpRoctxRange(100), ""); + + map.Clear(); + EXPECT_EQ(map.LookUpRoctxRange(99), ""); +} + +TEST(RocmTracerTest, AnnotationMapRoctxRangeEmptyWhenNotProvided) { + AnnotationMap map(1024); + map.Add(42, "some_op", {}, {}); + EXPECT_EQ(map.LookUp(42), "some_op"); + EXPECT_EQ(map.LookUpRoctxRange(42), ""); +} + +// Verify that Add() stores the roctx_range even when annotation is empty, +// so that standalone ROCTX annotations (no XLA AnnotationStack text) still +// produce kNVTXRange on kernel events. +TEST(RocmTracerTest, AnnotationMapStoresRoctxRangeWhenAnnotationEmpty) { + AnnotationMap map(1024); + // annotation is empty, roctx_range is not. + map.Add(77, /*annotation=*/"", "roctx_only_label", {}); + EXPECT_EQ(map.LookUp(77), "") + << "correlation_map should not have an entry when annotation is empty"; + EXPECT_EQ(map.LookUpRoctxRange(77), "roctx_only_label") + << "roctx_range_map must store the label even with no annotation"; +} + +// GetCurrentRoctxLabel returns a view aliasing the thread_local frame. It is +// valid until this thread makes its next roctx call, which is the whole window +// the HIP API callback needs: that callback runs synchronously on the pushing +// thread, so no pop can interleave, and AnnotationMap::Add interns a copy +// before returning. This models that sequence -- read the view, materialise it +// the way Add does, then pop -- and confirms the materialised copy outlives the +// frame and that the stack reads empty afterwards. +TEST(RocmTracerTest, GetCurrentRoctxLabelViewIsValidUntilNextRoctxCall) { + RocmTracer& tracer = RocmTracer::GetRocmTracerSingleton(); + ASSERT_TRUE(tracer.IsAvailable()); + + auto collector = std::make_unique(); + RocmTracerOptions opts{/*max_annotation_strings=*/1024}; + TF_ASSERT_OK(tracer.Enable(opts, collector.get())); + + const uint64_t tid = 66666; + const char* label = "lifetime_check"; + + // Push a range. + rocprofiler_callback_tracing_marker_api_data_t push_data{}; + push_data.args.roctxRangePushA.message = label; + tracer.MarkerCallback( + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePushA, + ROCPROFILER_CALLBACK_PHASE_ENTER, tid, &push_data)); + + // Read the view while the frame is live, then intern it -- this is the + // HIP API callback's sequence, all on the pushing thread. + absl::string_view view = tracer.GetCurrentRoctxLabel(); + EXPECT_EQ(view, label); + std::string interned(view); + + // Pop the range: this destroys the RoctxFrame::message inside roctx_stack_. + // `view` dangles from here on and must not be read again. + rocprofiler_callback_tracing_marker_api_data_t pop_data{}; + tracer.MarkerCallback( + MakeMarkerRecord(ROCPROFILER_MARKER_CORE_API_ID_roctxRangePop, + ROCPROFILER_CALLBACK_PHASE_EXIT, tid, &pop_data)); + + EXPECT_EQ(interned, label) + << "Copy taken before the pop must outlive the source frame"; + EXPECT_EQ(tracer.GetCurrentRoctxLabel(), "") + << "Stack must be empty after pop"; + + tracer.Disable(); +} + } // namespace } // namespace profiler } // namespace xla diff --git a/third_party/xla/xla/backends/profiler/gpu/rocm_tracer_utils.cc b/third_party/xla/xla/backends/profiler/gpu/rocm_tracer_utils.cc index ccb5ac15d342ea..43dbfd7a1b342a 100644 --- a/third_party/xla/xla/backends/profiler/gpu/rocm_tracer_utils.cc +++ b/third_party/xla/xla/backends/profiler/gpu/rocm_tracer_utils.cc @@ -16,6 +16,7 @@ limitations under the License. #include "xla/backends/profiler/gpu/rocm_tracer_utils.h" #include +#include #include #include @@ -90,26 +91,43 @@ const char* GetRocmTracerEventTypeName(const RocmTracerEventType& type) { } void AnnotationMap::Add(uint64_t correlation_id, const std::string& annotation, + absl::string_view roctx_range, absl::Span scope_range_ids) { - if (annotation.empty()) { + // Skip if both fields are empty — nothing to store. + if (annotation.empty() && roctx_range.empty()) { return; } - VLOG(3) << "Add annotation: " << " correlation_id=" << correlation_id - << ", annotation: " << annotation; + VLOG(3) << "Add annotation: " + << " correlation_id=" << correlation_id + << ", annotation: " << annotation << ", roctx_range: " << roctx_range; absl::MutexLock lock(map_.mutex); - if (map_.annotations.size() < max_size_) { - absl::string_view annotation_str = - *map_.annotations.insert(annotation).first; - map_.correlation_map.emplace(correlation_id, annotation_str); - if (!scope_range_ids.empty()) { - map_.scope_range_id_map.emplace(correlation_id, scope_range_ids.back()); - if (scope_range_ids.size() > 1) { - const int64_t* head = scope_range_ids.data(); - const int64_t* curr = &scope_range_ids.back(); - for (; curr > head && !map_.scope_range_id_tree.contains(*curr); - --curr) { - map_.scope_range_id_tree.emplace(*curr, *(curr - 1)); - } + // Each branch re-checks the size guard before inserting to avoid exceeding + // max_size_ by 1 when both annotation and roctx_range are non-empty (two + // insertions under a single size check would silently violate the capacity + // contract). + // Only insert into correlation_map when annotation is non-empty; it may + // be empty when only a ROCTX range (no XLA AnnotationStack text) is active. + if (!annotation.empty() && map_.annotations.size() < max_size_) { + const std::string& interned = *map_.annotations.insert(annotation).first; + map_.correlation_map.emplace(correlation_id, std::cref(interned)); + } + if (!roctx_range.empty() && map_.annotations.size() < max_size_) { + const std::string& interned = + *map_.annotations.insert(std::string(roctx_range)).first; + map_.roctx_range_map.emplace(correlation_id, std::cref(interned)); + } + // max_size_ gates the whole map, not just the string pool: scope_range_id_map + // takes one entry per correlation id and would otherwise grow without bound + // for the rest of the session once the annotation cache fills. Keeping the + // same gate here preserves the "maximum number of annotation strings that we + // can accommodate" contract in rocm_tracer_utils.h. + if (!scope_range_ids.empty() && map_.annotations.size() < max_size_) { + map_.scope_range_id_map.emplace(correlation_id, scope_range_ids.back()); + if (scope_range_ids.size() > 1) { + const int64_t* head = scope_range_ids.data(); + const int64_t* curr = &scope_range_ids.back(); + for (; curr > head && !map_.scope_range_id_tree.contains(*curr); --curr) { + map_.scope_range_id_tree.emplace(*curr, *(curr - 1)); } } } @@ -118,7 +136,15 @@ void AnnotationMap::Add(uint64_t correlation_id, const std::string& annotation, absl::string_view AnnotationMap::LookUp(uint64_t correlation_id) { absl::MutexLock lock(map_.mutex); auto it = map_.correlation_map.find(correlation_id); - return it != map_.correlation_map.end() ? it->second : absl::string_view(); + return it != map_.correlation_map.end() ? it->second.get() + : absl::string_view(); +} + +absl::string_view AnnotationMap::LookUpRoctxRange(uint64_t correlation_id) { + absl::MutexLock lock(map_.mutex); + auto it = map_.roctx_range_map.find(correlation_id); + return it != map_.roctx_range_map.end() ? it->second.get() + : absl::string_view(); } int64_t AnnotationMap::LookUpScopeRangeId(uint64_t correlation_id) { @@ -135,6 +161,7 @@ ScopeRangeIdTree AnnotationMap::TakeScopeRangeIdTree() { void AnnotationMap::Clear() { absl::MutexLock lock(map_.mutex); map_.correlation_map.clear(); + map_.roctx_range_map.clear(); map_.scope_range_id_map.clear(); map_.scope_range_id_tree.clear(); map_.annotations.clear(); diff --git a/third_party/xla/xla/backends/profiler/gpu/rocm_tracer_utils.h b/third_party/xla/xla/backends/profiler/gpu/rocm_tracer_utils.h index 75c8c64b9ceae5..7c93538f9ce640 100644 --- a/third_party/xla/xla/backends/profiler/gpu/rocm_tracer_utils.h +++ b/third_party/xla/xla/backends/profiler/gpu/rocm_tracer_utils.h @@ -18,6 +18,7 @@ limitations under the License. #include #include +#include #include #include @@ -137,6 +138,12 @@ struct RocmTracerEvent { // This points to strings in AnnotationMap, which should outlive the point // where serialization happens. absl::string_view annotation; + // Set only for kernel/HIP-API events: the ROCTX label that was active on + // the dispatching thread at call time, stored via AnnotationMap::Add and + // retrieved by AnnotationMap::LookUpRoctxRange. Empty for Generic (marker) + // events, which carry their label in `name` instead. + // The view points into AnnotationMap's interning pool, which is session- + // scoped. Export() runs within the same session, so the lifetime is safe. absl::string_view roctx_range; uint64_t start_time_ns = 0; uint64_t end_time_ns = 0; @@ -157,6 +164,26 @@ struct RocmTracerEvent { }; }; +// Represents one pending ROCTX range pushed via roctxRangePushA. Stored on +// a per-thread stack in RocmTracer and consumed when roctxRangePop fires. +struct RoctxFrame { + // TODO(rocm-profiler): carry a reference into AnnotationMap's intern pool + // instead of owning a copy. Blocked on lifetime, not on the generation + // check: the generation guards *emission*, but Enable() calls + // annotation_map_.Clear() while frames pushed before it are still live on + // some other thread's stack, so a reference would dangle even though the + // frame is correctly dropped at pop. Needs the pool to outlive the session + // (or a per-frame refcount) before the copy can go. + std::string message; // the range label (owned here for lifetime safety) + uint64_t start_ns; // timestamp captured at push time + // Profiling session this frame was pushed in. Frames live on a thread_local + // stack that no session boundary can reach, so a range pushed before + // Enable() and popped after it would otherwise emit an event with a + // previous session's start timestamp into the new session's collector. + // Enable() bumps the generation; a pop whose frame predates it is dropped. + uint64_t generation; +}; + struct RocmTraceCollectorOptions { // Maximum number of events to collect from callback API; if -1, no limit. // if 0, the callback API is enabled to build a correlation map, but no @@ -174,8 +201,10 @@ class AnnotationMap { public: explicit AnnotationMap(uint64_t max_size) : max_size_(max_size) {} void Add(uint64_t correlation_id, const std::string& annotation, + absl::string_view roctx_range = {}, absl::Span scope_range_ids = {}); absl::string_view LookUp(uint64_t correlation_id); + absl::string_view LookUpRoctxRange(uint64_t correlation_id); int64_t LookUpScopeRangeId(uint64_t correlation_id); ScopeRangeIdTree TakeScopeRangeIdTree(); void Clear(); @@ -186,10 +215,14 @@ class AnnotationMap { // callback/activity api related threads. absl::Mutex mutex; // Annotation tends to be repetitive, use a hash_set to store the strings, - // an use the reference to the string in the map. + // and use a reference_wrapper into the set in the maps. node_hash_set + // guarantees pointer and reference stability on rehash, so the stored + // references remain valid for the lifetime of the set. absl::node_hash_set annotations ABSL_GUARDED_BY(mutex); - absl::flat_hash_map correlation_map - ABSL_GUARDED_BY(mutex); + absl::flat_hash_map> + correlation_map ABSL_GUARDED_BY(mutex); + absl::flat_hash_map> + roctx_range_map ABSL_GUARDED_BY(mutex); absl::flat_hash_map scope_range_id_map ABSL_GUARDED_BY(mutex); ScopeRangeIdTree scope_range_id_tree ABSL_GUARDED_BY(mutex); diff --git a/third_party/xla/xla/benchmarks/benchmark_configs.py b/third_party/xla/xla/benchmarks/benchmark_configs.py new file mode 100644 index 00000000000000..b8aa7156173d3b --- /dev/null +++ b/third_party/xla/xla/benchmarks/benchmark_configs.py @@ -0,0 +1,178 @@ +# Copyright 2026 The OpenXLA Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Preconfigured benchmark configs and shared cost model derivation utilities.""" + +from collections.abc import Callable +from typing import Any, Mapping + +import immutabledict +from jax.experimental.pallas import tpu as pltpu +import jax.numpy as jnp + +from xla.benchmarks.jax_microbenchmarks import matmul_lib +from xla.benchmarks.pallas_microbenchmarks import dense_matmul_lib +from xla.benchmarks.pallas_microbenchmarks import subchannel_matmul_lib + + +_DIM_VALUES = (1024, 2048, 4096, 8192, 16384, 32768) + +_LHS_RHS_DTYPE_PAIRS = ( + (jnp.bfloat16, jnp.bfloat16), + (jnp.bfloat16, jnp.float8_e4m3fn), + (jnp.bfloat16, jnp.int4), + (jnp.float8_e4m3fn, jnp.float8_e4m3fn), + (jnp.float8_e4m3fn, jnp.int4), +) + +_OUT_DTYPE_PAIRS = ( + jnp.float32, + jnp.bfloat16, +) + + +def get_dense_matmul_configs( + chip_version: pltpu.ChipVersion | None = None, +) -> list[dense_matmul_lib.DenseMatmulConfig]: + """Generates preconfigured dense matmul benchmark configs.""" + configs = [] + acc_dtype = jnp.float32 + subblock_m = dense_matmul_lib.get_default_subblock_m(chip_version) + + for m in _DIM_VALUES: + n = k = m + mem_options = [pltpu.HBM, pltpu.VMEM] if m in (1024, 2048) else [pltpu.HBM] + for lhs_dtype, rhs_dtype in _LHS_RHS_DTYPE_PAIRS: + for out_dtype in _OUT_DTYPE_PAIRS: + for mem in mem_options: + block_m, block_k, block_n = dense_matmul_lib.select_window( + m=m, + k=k, + n=n, + lhs_mem=mem, + rhs_mem=mem, + out_mem=mem, + lhs_dtype=lhs_dtype, + rhs_dtype=rhs_dtype, + out_dtype=out_dtype, + acc_dtype=acc_dtype, + subblock_m=subblock_m, + chip_version=chip_version, + ) + configs.append( + dense_matmul_lib.DenseMatmulConfig( + m=m, + k=k, + n=n, + block_m=int(block_m), + block_k=int(block_k), + block_n=int(block_n), + lhs_mem=mem, + rhs_mem=mem, + out_mem=mem, + lhs_dtype=lhs_dtype, + rhs_dtype=rhs_dtype, + out_dtype=out_dtype, + acc_dtype=acc_dtype, + subblock_m=subblock_m, + ) + ) + return configs + + +def get_subchannel_matmul_configs( + chip_version: pltpu.ChipVersion | None = None, +) -> list[subchannel_matmul_lib.SubchannelMatmulConfig]: + """Generates preconfigured subchannel matmul benchmark configs.""" + configs = [] + m, k, n = 128, 8192, 4096 + lhs_dtype = rhs_dtype = out_dtype = jnp.bfloat16 + acc_dtype = jnp.bfloat16 + subchannel_size = 1024 + lhs_quantized_dtype = jnp.float8_e4m3fn + rhs_quantized_dtype = jnp.int4 + pre_quantize_lhs = False + + for mem in [pltpu.HBM, pltpu.VMEM]: + block_m, block_k, block_n = subchannel_matmul_lib.select_window( + m=m, + k=k, + n=n, + lhs_mem=mem, + rhs_mem=mem, + out_mem=mem, + lhs_dtype=lhs_dtype, + rhs_dtype=rhs_dtype, + out_dtype=out_dtype, + acc_dtype=acc_dtype, + lhs_quantized_dtype=lhs_quantized_dtype, + rhs_quantized_dtype=rhs_quantized_dtype, + pre_quantize_lhs=pre_quantize_lhs, + chip_version=chip_version, + ) + configs.append( + subchannel_matmul_lib.SubchannelMatmulConfig( + m=m, + k=k, + n=n, + block_m=int(block_m), + block_k=int(block_k), + block_n=int(block_n), + subchannel_size=subchannel_size, + lhs_mem=mem, + rhs_mem=mem, + out_mem=mem, + lhs_dtype=lhs_dtype, + rhs_dtype=rhs_dtype, + out_dtype=out_dtype, + acc_dtype=acc_dtype, + lhs_quantized_dtype=lhs_quantized_dtype, + rhs_quantized_dtype=rhs_quantized_dtype, + pre_quantize_lhs=pre_quantize_lhs, + ) + ) + return configs + + +def get_jax_matmul_configs( + chip_version: pltpu.ChipVersion | None = None, +) -> list[matmul_lib.JaxMatmulConfig]: + """Generates preconfigured JAX matmul benchmark configs.""" + del chip_version # Unused. + configs = [] + for m in _DIM_VALUES: + n = k = m + for lhs_dtype, rhs_dtype in _LHS_RHS_DTYPE_PAIRS: + for out_dtype in _OUT_DTYPE_PAIRS: + configs.append( + matmul_lib.JaxMatmulConfig( + b=1, + m=m, + k=k, + n=n, + lhs_dtype=lhs_dtype, + rhs_dtype=rhs_dtype, + out_dtype=out_dtype, + ) + ) + return configs + + +BENCHMARK_FACTORIES: Mapping[ + str, Callable[[pltpu.ChipVersion | None], list[Any]] +] = immutabledict.immutabledict({ + "dense_matmul": get_dense_matmul_configs, + "subchannel_matmul": get_subchannel_matmul_configs, + "jax_matmul": get_jax_matmul_configs, +}) diff --git a/third_party/xla/xla/benchmarks/benchmark_configs_test.py b/third_party/xla/xla/benchmarks/benchmark_configs_test.py new file mode 100644 index 00000000000000..c23f217ee68b94 --- /dev/null +++ b/third_party/xla/xla/benchmarks/benchmark_configs_test.py @@ -0,0 +1,122 @@ +# Copyright 2026 The OpenXLA Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unit tests for benchmark_configs.""" + +from absl.testing import absltest +from absl.testing import parameterized +from jax.experimental.pallas import tpu as pltpu +import jax.numpy as jnp + +from xla.benchmarks import benchmark_configs +from xla.benchmarks.jax_microbenchmarks import matmul_lib +from xla.benchmarks.pallas_microbenchmarks import dense_matmul_lib +from xla.benchmarks.pallas_microbenchmarks import subchannel_matmul_lib + + +class BenchmarkConfigsTest(parameterized.TestCase): + + def test_dense_matmul_configs(self): + chip = pltpu.ChipVersion.TPU_V5E + configs = benchmark_configs.get_dense_matmul_configs(chip_version=chip) + # Expected total configs: + # M in [1024, 2048] -> + # 2 sizes * 5 dtype pairs * 2 out_dtypes * 2 mems (HBM, VMEM) = 40 + # M in [4096, 8192, 16384, 32768] -> + # 4 sizes * 4 dtype pairs * 2 out_dtypes * 1 mem (HBM) = 40 + # Total = 32 configs. + self.assertLen(configs, 80) + + for cfg in configs: + self.assertIsInstance(cfg, dense_matmul_lib.DenseMatmulConfig) + self.assertEqual(cfg.m, cfg.k) + self.assertEqual(cfg.m, cfg.n) + self.assertIn(cfg.m, [1024, 2048, 4096, 8192, 16384, 32768]) + self.assertIn( + (cfg.lhs_dtype, cfg.rhs_dtype), + [ + (jnp.bfloat16, jnp.bfloat16), + (jnp.bfloat16, jnp.float8_e4m3fn), + (jnp.bfloat16, jnp.int4), + (jnp.float8_e4m3fn, jnp.float8_e4m3fn), + (jnp.float8_e4m3fn, jnp.int4), + ], + ) + self.assertIn(cfg.out_dtype, [jnp.float32, jnp.bfloat16]) + self.assertEqual(cfg.acc_dtype, jnp.float32) + self.assertEqual(cfg.lhs_mem, cfg.rhs_mem) + self.assertEqual(cfg.lhs_mem, cfg.out_mem) + + if cfg.m in (1024, 2048): + self.assertIn(cfg.lhs_mem, [pltpu.HBM, pltpu.VMEM]) + else: + self.assertEqual(cfg.lhs_mem, pltpu.HBM) + + self.assertGreater(cfg.block_m, 0) + self.assertGreater(cfg.block_k, 0) + self.assertGreater(cfg.block_n, 0) + + def test_subchannel_matmul_configs(self): + chip = pltpu.ChipVersion.TPU_V5E + configs = benchmark_configs.get_subchannel_matmul_configs(chip_version=chip) + # Expected: 2 configs (HBM and VMEM) + self.assertLen(configs, 2) + + mems = set() + for cfg in configs: + self.assertIsInstance(cfg, subchannel_matmul_lib.SubchannelMatmulConfig) + self.assertEqual(cfg.m, 128) + self.assertEqual(cfg.k, 8192) + self.assertEqual(cfg.n, 4096) + self.assertEqual(cfg.lhs_dtype, jnp.bfloat16) + self.assertEqual(cfg.rhs_dtype, jnp.bfloat16) + self.assertEqual(cfg.out_dtype, jnp.bfloat16) + self.assertEqual(cfg.subchannel_size, 1024) + self.assertEqual(cfg.lhs_quantized_dtype, jnp.float8_e4m3fn) + self.assertEqual(cfg.rhs_quantized_dtype, jnp.int4) + self.assertFalse(cfg.pre_quantize_lhs) + self.assertEqual(cfg.lhs_mem, cfg.rhs_mem) + self.assertEqual(cfg.lhs_mem, cfg.out_mem) + self.assertGreater(cfg.block_m, 0) + self.assertGreater(cfg.block_k, 0) + self.assertGreater(cfg.block_n, 0) + mems.add(cfg.lhs_mem) + + self.assertEqual(mems, {pltpu.HBM, pltpu.VMEM}) + + def test_jax_matmul_configs(self): + configs = benchmark_configs.get_jax_matmul_configs() + # 6 dim sizes * 5 dtype pairs * 2 out dtypes = 60 configs. + self.assertLen(configs, 60) + for cfg in configs: + self.assertIsInstance(cfg, matmul_lib.JaxMatmulConfig) + self.assertEqual(cfg.b, 1) + self.assertEqual(cfg.m, cfg.k) + self.assertEqual(cfg.m, cfg.n) + self.assertIn(cfg.m, [1024, 2048, 4096, 8192, 16384, 32768]) + self.assertIn( + (cfg.lhs_dtype, cfg.rhs_dtype), + [ + (jnp.bfloat16, jnp.bfloat16), + (jnp.bfloat16, jnp.float8_e4m3fn), + (jnp.bfloat16, jnp.int4), + (jnp.float8_e4m3fn, jnp.float8_e4m3fn), + (jnp.float8_e4m3fn, jnp.int4), + ], + ) + self.assertIn(cfg.out_dtype, [jnp.float32, jnp.bfloat16]) + + +if __name__ == "__main__": + absltest.main() diff --git a/third_party/xla/xla/benchmarks/core/benchmark.py b/third_party/xla/xla/benchmarks/core/benchmark.py index 5cdbdf86100caf..e85f992707ab60 100644 --- a/third_party/xla/xla/benchmarks/core/benchmark.py +++ b/third_party/xla/xla/benchmarks/core/benchmark.py @@ -26,7 +26,7 @@ import jax.numpy as jnp import numpy as np -from xla.benchmarks.jax_microbenchmarks import jax_profiler_utils # pylint: disable=g-direct-tensorflow-import +from xla.benchmarks.jax_microbenchmarks import jax_profiler_utils _USE_PROFILER = flags.DEFINE_bool( @@ -238,9 +238,23 @@ def run( return profiler_results +@dataclasses.dataclass(frozen=True) class BenchmarkConfig(abc.ABC): """Base class for benchmark configs.""" + def as_dict(self) -> dict[str, Any]: + """Returns a dictionary representation of the config.""" + return { + k: dtype_to_str(v) if isinstance(v, jnp.dtype) else v + for k, v in dataclasses.asdict(self).items() + } + + def __repr__(self) -> str: + return ( + f"{self.__class__.__name__}" + f"({', '.join(f'{k}={v!r}' for k, v in self.as_dict().items())})" + ) + @abc.abstractmethod def get_benchmark(self) -> Benchmark: """Returns a Benchmark instance for this config.""" diff --git a/third_party/xla/xla/benchmarks/core/benchmark_test.py b/third_party/xla/xla/benchmarks/core/benchmark_test.py index 377eb710b98598..441fc76d4f6aed 100644 --- a/third_party/xla/xla/benchmarks/core/benchmark_test.py +++ b/third_party/xla/xla/benchmarks/core/benchmark_test.py @@ -23,8 +23,8 @@ import jax.numpy as jnp import numpy as np -from xla.benchmarks.core import benchmark # pylint: disable=g-direct-tensorflow-import -from xla.benchmarks.jax_microbenchmarks import jax_profiler_utils # pylint: disable=g-direct-tensorflow-import +from xla.benchmarks.core import benchmark +from xla.benchmarks.jax_microbenchmarks import jax_profiler_utils InputSpec = benchmark.InputSpec diff --git a/third_party/xla/xla/benchmarks/core/flag_utils_test.py b/third_party/xla/xla/benchmarks/core/flag_utils_test.py index 1cceb48609fe74..140ae3a8a8ff01 100644 --- a/third_party/xla/xla/benchmarks/core/flag_utils_test.py +++ b/third_party/xla/xla/benchmarks/core/flag_utils_test.py @@ -20,7 +20,7 @@ from absl.testing import absltest from absl.testing import parameterized -from xla.benchmarks.core import flag_utils # pylint: disable=g-direct-tensorflow-import +from xla.benchmarks.core import flag_utils class FlagsTest(parameterized.TestCase): diff --git a/third_party/xla/xla/benchmarks/core/platform_info.py b/third_party/xla/xla/benchmarks/core/platform_info.py index 44a415e28ab9d1..495b4f2c1877be 100644 --- a/third_party/xla/xla/benchmarks/core/platform_info.py +++ b/third_party/xla/xla/benchmarks/core/platform_info.py @@ -276,7 +276,7 @@ def mxu_size_by_dtype(self, lhs_dtype: jnp.dtype) -> tuple[int, int]: jnp.int4: 4, jnp.uint4: 4, }), - # Note that GLC doesn't support P states. + # Note that v6e doesn't support P states. clock_speed_ghz_by_p_state=immutabledict({ None: 1.75, }), diff --git a/third_party/xla/xla/benchmarks/dma_microbenchmarks/chip_to_chip_dma_benchmark.py b/third_party/xla/xla/benchmarks/dma_microbenchmarks/chip_to_chip_dma_benchmark.py index ded3fc5b26d3b0..2c6c0d098b1e30 100644 --- a/third_party/xla/xla/benchmarks/dma_microbenchmarks/chip_to_chip_dma_benchmark.py +++ b/third_party/xla/xla/benchmarks/dma_microbenchmarks/chip_to_chip_dma_benchmark.py @@ -18,7 +18,7 @@ from absl.testing import absltest import jax import jax.numpy as jnp -from xla.benchmarks.dma_microbenchmarks import memory_base # pylint: disable=g-direct-tensorflow-import +from xla.benchmarks.dma_microbenchmarks import memory_base _NUMBER_OF_MEASUREMENTS = flags.DEFINE_integer( diff --git a/third_party/xla/xla/benchmarks/dma_microbenchmarks/chiplet_to_chiplet_dma_benchmark.py b/third_party/xla/xla/benchmarks/dma_microbenchmarks/chiplet_to_chiplet_dma_benchmark.py index 22ff31fbb58d84..ee0e14eeff76f5 100644 --- a/third_party/xla/xla/benchmarks/dma_microbenchmarks/chiplet_to_chiplet_dma_benchmark.py +++ b/third_party/xla/xla/benchmarks/dma_microbenchmarks/chiplet_to_chiplet_dma_benchmark.py @@ -21,7 +21,7 @@ from jax.experimental import pallas as pl from jax.experimental.pallas import tpu as pltpu import jax.numpy as jnp -from xla.benchmarks.dma_microbenchmarks import memory_base # pylint: disable=g-direct-tensorflow-import +from xla.benchmarks.dma_microbenchmarks import memory_base _NUMBER_OF_MEASUREMENTS = flags.DEFINE_integer( diff --git a/third_party/xla/xla/benchmarks/dma_microbenchmarks/host_dma_benchmark.py b/third_party/xla/xla/benchmarks/dma_microbenchmarks/host_dma_benchmark.py index 264fc6d82fee67..c8d8980086f437 100644 --- a/third_party/xla/xla/benchmarks/dma_microbenchmarks/host_dma_benchmark.py +++ b/third_party/xla/xla/benchmarks/dma_microbenchmarks/host_dma_benchmark.py @@ -18,7 +18,7 @@ from absl.testing import absltest import jax import jax.numpy as jnp -from xla.benchmarks.dma_microbenchmarks import memory_base # pylint: disable=g-direct-tensorflow-import +from xla.benchmarks.dma_microbenchmarks import memory_base _NUMBER_OF_MEASUREMENTS = flags.DEFINE_integer( diff --git a/third_party/xla/xla/benchmarks/dma_microbenchmarks/local_dma_benchmark.py b/third_party/xla/xla/benchmarks/dma_microbenchmarks/local_dma_benchmark.py index 2c5351d041a465..1073cc976782cc 100644 --- a/third_party/xla/xla/benchmarks/dma_microbenchmarks/local_dma_benchmark.py +++ b/third_party/xla/xla/benchmarks/dma_microbenchmarks/local_dma_benchmark.py @@ -20,7 +20,7 @@ import jax.experimental.pallas as pl import jax.experimental.pallas.tpu as pltpu import jax.numpy as jnp -from xla.benchmarks.dma_microbenchmarks import memory_base # pylint: disable=g-direct-tensorflow-import +from xla.benchmarks.dma_microbenchmarks import memory_base _VMEM_DMA_SIZE_KIB = flags.DEFINE_integer( diff --git a/third_party/xla/xla/benchmarks/jax_microbenchmarks/jax_profiler_utils_test.py b/third_party/xla/xla/benchmarks/jax_microbenchmarks/jax_profiler_utils_test.py index 3ad9f4d920ffee..ef079d9666b777 100644 --- a/third_party/xla/xla/benchmarks/jax_microbenchmarks/jax_profiler_utils_test.py +++ b/third_party/xla/xla/benchmarks/jax_microbenchmarks/jax_profiler_utils_test.py @@ -18,7 +18,7 @@ import jax import jax.numpy as jnp -from xla.benchmarks.jax_microbenchmarks import jax_profiler_utils # pylint: disable=g-direct-tensorflow-import +from xla.benchmarks.jax_microbenchmarks import jax_profiler_utils class JaxProfilerUtilsTest(absltest.TestCase): diff --git a/third_party/xla/xla/benchmarks/jax_microbenchmarks/matmul_lib.py b/third_party/xla/xla/benchmarks/jax_microbenchmarks/matmul_lib.py index 7b094cba3aed8a..f10dd1e4987572 100644 --- a/third_party/xla/xla/benchmarks/jax_microbenchmarks/matmul_lib.py +++ b/third_party/xla/xla/benchmarks/jax_microbenchmarks/matmul_lib.py @@ -21,7 +21,7 @@ import jax import jax.numpy as jnp -from xla.benchmarks.core import benchmark # pylint: disable=g-direct-tensorflow-import +from xla.benchmarks.core import benchmark @dataclasses.dataclass(frozen=True, kw_only=True) diff --git a/third_party/xla/xla/benchmarks/pallas_microbenchmarks/cost_model.py b/third_party/xla/xla/benchmarks/pallas_microbenchmarks/cost_model.py index 9c21d5494e23f5..ca8ec7db9a9bc4 100644 --- a/third_party/xla/xla/benchmarks/pallas_microbenchmarks/cost_model.py +++ b/third_party/xla/xla/benchmarks/pallas_microbenchmarks/cost_model.py @@ -22,7 +22,7 @@ import jax.numpy as jnp import numpy as np -from xla.benchmarks.core import platform_info # pylint: disable=g-direct-tensorflow-import +from xla.benchmarks.core import platform_info def _vmem_usage_bytes( diff --git a/third_party/xla/xla/benchmarks/pallas_microbenchmarks/dense_matmul_lib.py b/third_party/xla/xla/benchmarks/pallas_microbenchmarks/dense_matmul_lib.py index c3f161b84d413a..fa988e6e4bdd9b 100644 --- a/third_party/xla/xla/benchmarks/pallas_microbenchmarks/dense_matmul_lib.py +++ b/third_party/xla/xla/benchmarks/pallas_microbenchmarks/dense_matmul_lib.py @@ -24,11 +24,11 @@ from jax.experimental.pallas import tpu as pltpu import jax.numpy as jnp -from xla.benchmarks.core import benchmark # pylint: disable=g-direct-tensorflow-import -from xla.benchmarks.core import flag_utils # pylint: disable=g-direct-tensorflow-import -from xla.benchmarks.core import platform_info # pylint: disable=g-direct-tensorflow-import -from xla.benchmarks.pallas_microbenchmarks import cost_model as pallas_cost_model # pylint: disable=g-direct-tensorflow-import -from xla.benchmarks.pallas_microbenchmarks import memory_utils # pylint: disable=g-direct-tensorflow-import +from xla.benchmarks.core import benchmark +from xla.benchmarks.core import flag_utils +from xla.benchmarks.core import platform_info +from xla.benchmarks.pallas_microbenchmarks import cost_model as pallas_cost_model +from xla.benchmarks.pallas_microbenchmarks import memory_utils Benchmark = benchmark.Benchmark InputSpec = benchmark.InputSpec diff --git a/third_party/xla/xla/benchmarks/pallas_microbenchmarks/subchannel_matmul.py b/third_party/xla/xla/benchmarks/pallas_microbenchmarks/subchannel_matmul.py index b5a7fb7d1e9b65..e3e381158e70f8 100644 --- a/third_party/xla/xla/benchmarks/pallas_microbenchmarks/subchannel_matmul.py +++ b/third_party/xla/xla/benchmarks/pallas_microbenchmarks/subchannel_matmul.py @@ -20,8 +20,8 @@ import immutabledict from jax.experimental.pallas import tpu as pltpu -from xla.benchmarks.core import benchmark # pylint: disable=g-direct-tensorflow-import -from xla.benchmarks.pallas_microbenchmarks import subchannel_matmul_lib # pylint: disable=g-direct-tensorflow-import +from xla.benchmarks.core import benchmark +from xla.benchmarks.pallas_microbenchmarks import subchannel_matmul_lib immutabledict = immutabledict.immutabledict diff --git a/third_party/xla/xla/benchmarks/pallas_microbenchmarks/subchannel_matmul_lib.py b/third_party/xla/xla/benchmarks/pallas_microbenchmarks/subchannel_matmul_lib.py index 90f9b4027885f6..20838543385c2d 100644 --- a/third_party/xla/xla/benchmarks/pallas_microbenchmarks/subchannel_matmul_lib.py +++ b/third_party/xla/xla/benchmarks/pallas_microbenchmarks/subchannel_matmul_lib.py @@ -23,11 +23,11 @@ from jax.experimental.pallas import tpu as pltpu import jax.numpy as jnp -from xla.benchmarks.core import benchmark # pylint: disable=g-direct-tensorflow-import -from xla.benchmarks.core import flag_utils # pylint: disable=g-direct-tensorflow-import -from xla.benchmarks.core import platform_info # pylint: disable=g-direct-tensorflow-import -from xla.benchmarks.pallas_microbenchmarks import cost_model as pallas_cost_model # pylint: disable=g-direct-tensorflow-import -from xla.benchmarks.pallas_microbenchmarks import memory_utils # pylint: disable=g-direct-tensorflow-import +from xla.benchmarks.core import benchmark +from xla.benchmarks.core import flag_utils +from xla.benchmarks.core import platform_info +from xla.benchmarks.pallas_microbenchmarks import cost_model as pallas_cost_model +from xla.benchmarks.pallas_microbenchmarks import memory_utils InputSpec = benchmark.InputSpec diff --git a/third_party/xla/xla/benchmarks/results_utils.py b/third_party/xla/xla/benchmarks/results_utils.py new file mode 100644 index 00000000000000..8d127e0c1c6ea9 --- /dev/null +++ b/third_party/xla/xla/benchmarks/results_utils.py @@ -0,0 +1,135 @@ +# Copyright 2026 The OpenXLA Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Utilities for generating, logging, and saving benchmark results tables.""" + +from collections.abc import Sequence +import dataclasses +import os +from typing import Any + +from absl import logging +import numpy as np +import pandas as pd + +from xla.benchmarks.core import benchmark +from xla.benchmarks.jax_microbenchmarks import jax_profiler_utils + + +def config_to_dict(cfg: Any) -> dict[str, Any]: + """Converts a config dataclass to a dictionary with formatted values.""" + if dataclasses.is_dataclass(cfg): + return dataclasses.asdict(cfg) + raise ValueError(f"Expected dataclass or dict, got {type(cfg)}") + + +def extract_metrics( + profiler_results: Sequence[jax_profiler_utils.JaxProfilerResult | None], +) -> dict[str, Any]: + """Extracts average latency in microseconds and FLOPS from profiler results.""" + all_runtimes = [] + flops_values = [] + for res in profiler_results: + if res is not None: + if res.runtimes_us: + all_runtimes.extend(res.runtimes_us) + if res.flops: + flops_values.append(res.flops) + + avg_latency_us = float(np.mean(all_runtimes)) if all_runtimes else None + flops = float(np.mean(flops_values)) if flops_values else None + + return { + "latency_us": avg_latency_us, + "flops": flops, + } + + +def create_results_table( + results: Sequence[ + tuple[ + benchmark.BenchmarkConfig, + Sequence[jax_profiler_utils.JaxProfilerResult | None], + ] + ], +) -> pd.DataFrame: + """Generates a pandas DataFrame table of results for a benchmark run. + + Args: + results: Sequence of (config, profiler_results) pairs. + + Returns: + A DataFrame whose columns are the fields of the config object followed by + latency_us and flops. + """ + rows = [] + for cfg, prof_results in results: + row = cfg.as_dict() + metrics = extract_metrics(prof_results) + row.update(metrics) + rows.append(row) + return pd.DataFrame(rows) + + +def log_results_table( + benchmark_name: str, + df: pd.DataFrame, +) -> None: + """Logs the benchmark results table.""" + logging.info( + "Benchmark Results for '%s':\n%s", + benchmark_name, + df.to_string(index=False), + ) + + +def write_results_to_csv( + df: pd.DataFrame, + csv_path: str, +) -> None: + """Writes a results DataFrame to a CSV file at csv_path.""" + parent_dir = os.path.dirname(os.path.abspath(csv_path)) + if parent_dir: + os.makedirs(parent_dir, exist_ok=True) + df.to_csv(csv_path, index=False) + logging.info("Wrote results to %s", csv_path) + + +def save_all_results_to_csv( + results_by_benchmark: dict[str, pd.DataFrame], + csv_path: str, +) -> None: + """Writes all benchmark results tables to CSV file(s). + + Args: + results_by_benchmark: Dictionary mapping benchmark names to DataFrames. + csv_path: Destination path. If a directory or path ending with separator, + writes `/.csv`. If a file path, only one benchmark + should be provided. + """ + if not csv_path or not results_by_benchmark: + return + + is_dir = os.path.isdir(csv_path) or csv_path.endswith(("/", "\\")) + if is_dir: + for name, df in results_by_benchmark.items(): + dest = os.path.join(csv_path, f"{name}.csv") + write_results_to_csv(df, dest) + elif len(results_by_benchmark) == 1: + _, df = next(iter(results_by_benchmark.items())) + write_results_to_csv(df, csv_path) + else: + raise ValueError( + "Multiple benchmarks provided but csv_path is not a directory." + ) diff --git a/third_party/xla/xla/benchmarks/results_utils_test.py b/third_party/xla/xla/benchmarks/results_utils_test.py new file mode 100644 index 00000000000000..4e240bf9462e77 --- /dev/null +++ b/third_party/xla/xla/benchmarks/results_utils_test.py @@ -0,0 +1,97 @@ +# Copyright 2026 The OpenXLA Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unit tests for results_utils.""" + +import os + +from absl.testing import absltest +from jax.experimental.pallas import tpu as pltpu +import jax.numpy as jnp +import pandas as pd + +from xla.benchmarks import results_utils +from xla.benchmarks.jax_microbenchmarks import jax_profiler_utils +from xla.benchmarks.pallas_microbenchmarks import dense_matmul_lib + + +class ResultsUtilsTest(absltest.TestCase): + + def test_extract_metrics(self): + prof_res1 = jax_profiler_utils.JaxProfilerResult( + runtimes_us=[100.0, 200.0], flops=1e12 + ) + prof_res2 = jax_profiler_utils.JaxProfilerResult( + runtimes_us=[300.0], flops=1e12 + ) + metrics = results_utils.extract_metrics([prof_res1, prof_res2]) + self.assertAlmostEqual(metrics["latency_us"], 200.0) + self.assertEqual(metrics["flops"], 1e12) + + # Test empty / None profiler results + empty_metrics = results_utils.extract_metrics([None]) + self.assertIsNone(empty_metrics["latency_us"]) + self.assertIsNone(empty_metrics["flops"]) + + def test_create_results_table(self): + cfg = dense_matmul_lib.DenseMatmulConfig( + m=1024, + k=1024, + n=1024, + block_m=128, + block_k=128, + block_n=128, + lhs_mem=pltpu.HBM, + rhs_mem=pltpu.HBM, + out_mem=pltpu.HBM, + lhs_dtype=jnp.bfloat16, + rhs_dtype=jnp.bfloat16, + out_dtype=jnp.float32, + acc_dtype=jnp.float32, + ) + prof_res = jax_profiler_utils.JaxProfilerResult( + runtimes_us=[150.0], flops=5e11 + ) + df = results_utils.create_results_table([(cfg, [prof_res])]) + self.assertIsInstance(df, pd.DataFrame) + self.assertLen(df, 1) + self.assertIn("m", df.columns) + self.assertIn("latency_us", df.columns) + self.assertIn("flops", df.columns) + self.assertEqual(df["m"].iloc[0], 1024) + self.assertEqual(df["latency_us"].iloc[0], 150.0) + self.assertEqual(df["flops"].iloc[0], 5e11) + + def test_write_and_save_csv(self): + temp_dir = self.create_tempdir() + df1 = pd.DataFrame([{"a": 1, "b": 2}]) + df2 = pd.DataFrame([{"c": 3, "d": 4}]) + + # Test single benchmark CSV write + csv_single = os.path.join(temp_dir.full_path, "single.csv") + results_utils.save_all_results_to_csv({"bm1": df1}, csv_single) + self.assertTrue(os.path.exists(csv_single)) + read_df = pd.read_csv(csv_single) + self.assertEqual(read_df.to_dict(orient="records"), [{"a": 1, "b": 2}]) + + # Test multi-benchmark CSV write to directory + dir_path = os.path.join(temp_dir.full_path, "csv_folder") + os.makedirs(dir_path, exist_ok=True) + results_utils.save_all_results_to_csv({"bm1": df1, "bm2": df2}, dir_path) + self.assertTrue(os.path.exists(os.path.join(dir_path, "bm1.csv"))) + self.assertTrue(os.path.exists(os.path.join(dir_path, "bm2.csv"))) + + +if __name__ == "__main__": + absltest.main() diff --git a/third_party/xla/xla/benchmarks/run_benchmarks.py b/third_party/xla/xla/benchmarks/run_benchmarks.py new file mode 100644 index 00000000000000..080d5ae7f942e4 --- /dev/null +++ b/third_party/xla/xla/benchmarks/run_benchmarks.py @@ -0,0 +1,26 @@ +# Copyright 2026 The OpenXLA Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Script for running JAX and Pallas microbenchmarks on TPU.""" + +from absl import app +from xla.benchmarks import run_benchmarks_lib + + +def main(argv): + run_benchmarks_lib.main(argv) + + +if __name__ == "__main__": + app.run(main) diff --git a/third_party/xla/xla/benchmarks/run_benchmarks_lib.py b/third_party/xla/xla/benchmarks/run_benchmarks_lib.py new file mode 100644 index 00000000000000..569a65dd13122d --- /dev/null +++ b/third_party/xla/xla/benchmarks/run_benchmarks_lib.py @@ -0,0 +1,120 @@ +# Copyright 2026 The OpenXLA Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Library for running JAX and Pallas microbenchmarks on TPU.""" + +from typing import Sequence +from absl import flags +from absl import logging +from jax.experimental.pallas import tpu as pltpu +import pandas as pd + +from xla.benchmarks import benchmark_configs +from xla.benchmarks import results_utils + +_BENCHMARKS = flags.DEFINE_multi_enum( + "benchmarks", + None, + list(benchmark_configs.BENCHMARK_FACTORIES.keys()), + "List of benchmarks to run (e.g. dense_matmul, subchannel_matmul, " + "jax_matmul). If not specified, runs all registered benchmarks.", +) +_CSV_PATH = flags.DEFINE_string( + "csv_path", + None, + "Destination path for writing CSV benchmark results table.", +) +_REPEAT = flags.DEFINE_integer( + "repeat", + 1, + "Number of times target_fn is executed per benchmark run.", +) +_RUNS = flags.DEFINE_integer( + "runs", + 1, + "Number of end-to-end benchmark iterations.", +) +_USE_RANDOM_DATA = flags.DEFINE_bool( + "use_random_data", + True, + "Use random data for input tensors, or zeros if false.", +) +_CHECK_NUMERICS = flags.DEFINE_bool( + "check_numerics", + False, + "Whether to verify output accuracy against reference_fn.", +) + + +def run_benchmark_suite( + benchmark_name: str, + repeat: int = 1, + runs: int = 1, + use_random_data: bool = True, + check_numerics: bool = False, +) -> pd.DataFrame: + """Runs all configurations for a given benchmark suite serially.""" + config_factory = benchmark_configs.BENCHMARK_FACTORIES[benchmark_name] + chip_version = pltpu.get_tpu_info().chip_version + configs = config_factory(chip_version) + logging.info( + "=== Running %s: %d configuration(s) ===", + benchmark_name, + len(configs), + ) + + results = [] + for i, cfg in enumerate(configs): + logging.info( + "[%s %d/%d] Starting benchmark: %s", + benchmark_name, + i + 1, + len(configs), + cfg, + ) + bm = cfg.get_benchmark() + prof_results = bm.run( + repeat=repeat, + runs=runs, + use_random_data=use_random_data, + check_numerics=check_numerics, + ) + results.append((cfg, prof_results)) + + df = results_utils.create_results_table(results) + results_utils.log_results_table(benchmark_name, df) + return df + + +def main(argv: Sequence[str] | None = None) -> None: + del argv + if _BENCHMARKS.value is None or len(_BENCHMARKS.value) == 0: + benchmarks_to_run = list(benchmark_configs.BENCHMARK_FACTORIES.keys()) + else: + benchmarks_to_run = list(_BENCHMARKS.value) + + all_tables = {} + for bm_name in benchmarks_to_run: + df = run_benchmark_suite( + benchmark_name=bm_name, + repeat=_REPEAT.value, + runs=_RUNS.value, + use_random_data=_USE_RANDOM_DATA.value, + check_numerics=_CHECK_NUMERICS.value, + ) + all_tables[bm_name] = df + + if _CSV_PATH.value: + results_utils.save_all_results_to_csv(all_tables, _CSV_PATH.value) + diff --git a/third_party/xla/xla/benchmarks/run_benchmarks_test.py b/third_party/xla/xla/benchmarks/run_benchmarks_test.py new file mode 100644 index 00000000000000..97898dbb8286d6 --- /dev/null +++ b/third_party/xla/xla/benchmarks/run_benchmarks_test.py @@ -0,0 +1,104 @@ +# Copyright 2026 The OpenXLA Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unit tests for run_benchmarks script.""" + +import dataclasses +import os +from unittest import mock + +from absl.testing import absltest +from absl.testing import flagsaver +from jax.experimental.pallas import tpu as pltpu +import pandas as pd + +from xla.benchmarks import benchmark_configs +from xla.benchmarks import run_benchmarks_lib +from xla.benchmarks.core import benchmark +from xla.benchmarks.jax_microbenchmarks import jax_profiler_utils + + +class FakeBenchmark(benchmark.Benchmark): + + def get_input_shapes_and_dtypes(self): + return [] + + def target_fn(self): + return lambda: None + + def kernel_name(self): + return "fake" + + def run(self, **kwargs): + return [ + jax_profiler_utils.JaxProfilerResult(runtimes_us=[100.0], flops=1e9) + ] + + +@dataclasses.dataclass(frozen=True) +class FakeBenchmarkConfig(benchmark.BenchmarkConfig): + m: int = 128 + + def get_benchmark(self) -> benchmark.Benchmark: + return FakeBenchmark() + + +class RunBenchmarksTest(absltest.TestCase): + + def test_run_benchmark_suite(self): + fake_config = FakeBenchmarkConfig() + + with mock.patch.object( + benchmark_configs, + "BENCHMARK_FACTORIES", + {"test_bm": lambda chip_version=None: [fake_config]}, + ), mock.patch.object( + pltpu, + "get_tpu_info", + return_value=mock.MagicMock(chip_version=pltpu.ChipVersion.TPU_V5E), + ): + df = run_benchmarks_lib.run_benchmark_suite("test_bm", repeat=1, runs=1) + self.assertIsInstance(df, pd.DataFrame) + self.assertLen(df, 1) + self.assertEqual(df["m"].iloc[0], 128) + self.assertEqual(df["latency_us"].iloc[0], 100.0) + self.assertEqual(df["flops"].iloc[0], 1e9) + + def test_unknown_benchmark_suite_raises(self): + with self.assertRaises(KeyError): + run_benchmarks_lib.run_benchmark_suite("non_existent_suite") + + def test_main_with_flags(self): + fake_config = FakeBenchmarkConfig() + temp_dir = self.create_tempdir() + csv_file = os.path.join(temp_dir.full_path, "results.csv") + + with mock.patch.object( + benchmark_configs, + "BENCHMARK_FACTORIES", + {"dense_matmul": lambda chip_version=None: [fake_config]}, + ), mock.patch.object( + pltpu, + "get_tpu_info", + return_value=mock.MagicMock(chip_version=pltpu.ChipVersion.TPU_V5E), + ), flagsaver.flagsaver( + benchmarks=["dense_matmul"], + csv_path=csv_file, + ): + run_benchmarks_lib.main() + self.assertIsNotNone(pd.read_csv(csv_file)) + + +if __name__ == "__main__": + absltest.main() diff --git a/third_party/xla/xla/hlo/builder/lib/math.cc b/third_party/xla/xla/hlo/builder/lib/math.cc index b3d2876fccd4fb..69ffba156d3bf2 100644 --- a/third_party/xla/xla/hlo/builder/lib/math.cc +++ b/third_party/xla/xla/hlo/builder/lib/math.cc @@ -40,6 +40,7 @@ limitations under the License. #include "xla/hlo/ir/hlo_opcode.h" #include "xla/primitive_util.h" #include "xla/shape.h" +#include "xla/shape_util.h" #include "xla/status_macros.h" #include "xla/util.h" #include "xla/xla_data.pb.h" @@ -975,7 +976,7 @@ XlaOp Igamma(XlaOp a, XlaOp x) { return b.ReportErrorOrReturn([&]() -> absl::StatusOr { ABSL_ASSIGN_OR_RETURN(auto a_shape, b.GetShape(a)); ABSL_ASSIGN_OR_RETURN(auto x_shape, b.GetShape(x)); - if (a_shape != x_shape) { + if (!ShapeUtil::Compatible(a_shape, x_shape)) { return InvalidArgument( "Arguments to Igamma must have equal shapes and types; got %s and %s", a_shape.ToString(), x_shape.ToString()); @@ -1029,7 +1030,7 @@ XlaOp IgammaGradA(XlaOp a, XlaOp x) { return b.ReportErrorOrReturn([&]() -> absl::StatusOr { ABSL_ASSIGN_OR_RETURN(auto a_shape, b.GetShape(a)); ABSL_ASSIGN_OR_RETURN(auto x_shape, b.GetShape(x)); - if (a_shape != x_shape) { + if (!ShapeUtil::Compatible(a_shape, x_shape)) { return InvalidArgument( "Arguments to IgammaGradA must have equal shapes and types; got %s " "and %s", @@ -1083,7 +1084,7 @@ XlaOp RandomGammaGrad(XlaOp a, XlaOp x) { return b.ReportErrorOrReturn([&]() -> absl::StatusOr { ABSL_ASSIGN_OR_RETURN(auto a_shape, b.GetShape(a)); ABSL_ASSIGN_OR_RETURN(auto x_shape, b.GetShape(x)); - if (a_shape != x_shape) { + if (!ShapeUtil::Compatible(a_shape, x_shape)) { return InvalidArgument( "Arguments to RandomGammaGrad must have equal shapes and types; got " "%s and %s", @@ -1128,7 +1129,7 @@ XlaOp Igammac(XlaOp a, XlaOp x) { return b.ReportErrorOrReturn([&]() -> absl::StatusOr { ABSL_ASSIGN_OR_RETURN(auto a_shape, b.GetShape(a)); ABSL_ASSIGN_OR_RETURN(auto x_shape, b.GetShape(x)); - if (a_shape != x_shape) { + if (!ShapeUtil::Compatible(a_shape, x_shape)) { return InvalidArgument( "Arguments to Igammac must have equal shapes and types; " "got %s and %s", @@ -2058,7 +2059,7 @@ XlaOp Polygamma(XlaOp n, XlaOp x) { return builder.ReportErrorOrReturn([&]() -> absl::StatusOr { ABSL_ASSIGN_OR_RETURN(auto n_shape, builder.GetShape(n)); ABSL_ASSIGN_OR_RETURN(auto x_shape, builder.GetShape(x)); - if (n_shape != x_shape) { + if (!ShapeUtil::Compatible(n_shape, x_shape)) { return InvalidArgument( "Arguments to Polygamma must have equal shapes and types; " "got %s and %s", @@ -2177,7 +2178,7 @@ XlaOp Zeta(XlaOp x, XlaOp q) { return builder.ReportErrorOrReturn([&]() -> absl::StatusOr { ABSL_ASSIGN_OR_RETURN(auto x_shape, builder.GetShape(x)); ABSL_ASSIGN_OR_RETURN(auto q_shape, builder.GetShape(q)); - if (x_shape != q_shape) { + if (!ShapeUtil::Compatible(x_shape, q_shape)) { return InvalidArgument( "Arguments to Zeta must have equal shapes and types; got %s and %s", x_shape.ToString(), q_shape.ToString()); diff --git a/third_party/xla/xla/hlo/builder/lib/math_test.cc b/third_party/xla/xla/hlo/builder/lib/math_test.cc index 28c16bbe1b4117..dce946ee200368 100644 --- a/third_party/xla/xla/hlo/builder/lib/math_test.cc +++ b/third_party/xla/xla/hlo/builder/lib/math_test.cc @@ -863,5 +863,75 @@ TEST_F(MathTest, ZetaF64) { ErrorSpec{0.00000000000001}); } +TEST_F(MathTest, IgammaDynamicDimensionMismatch) { + XlaBuilder builder(TestName()); + // Logical shape is identical, but one operand carries a dynamic-dimension + // bit. + Shape shape_a = ShapeUtil::MakeShape(F32, {2, 2}); + Shape shape_x = ShapeUtil::MakeShape(F32, {2, 2}); + shape_x.set_dynamic_dimension(0, true); + XlaOp a = Parameter(&builder, 0, shape_a, "a"); + XlaOp x = Parameter(&builder, 1, shape_x, "x"); + Igamma(a, x); + EXPECT_OK(builder.Build().status()); +} + +TEST_F(MathTest, IgammacDynamicDimensionMismatch) { + XlaBuilder builder(TestName()); + Shape shape_a = ShapeUtil::MakeShape(F32, {2, 2}); + Shape shape_x = ShapeUtil::MakeShape(F32, {2, 2}); + shape_x.set_dynamic_dimension(0, true); + XlaOp a = Parameter(&builder, 0, shape_a, "a"); + XlaOp x = Parameter(&builder, 1, shape_x, "x"); + Igammac(a, x); + EXPECT_OK(builder.Build().status()); +} + +TEST_F(MathTest, IgammaGradADynamicDimensionMismatch) { + XlaBuilder builder(TestName()); + Shape shape_a = ShapeUtil::MakeShape(F32, {2, 2}); + Shape shape_x = ShapeUtil::MakeShape(F32, {2, 2}); + shape_x.set_dynamic_dimension(0, true); + XlaOp a = Parameter(&builder, 0, shape_a, "a"); + XlaOp x = Parameter(&builder, 1, shape_x, "x"); + IgammaGradA(a, x); + EXPECT_OK(builder.Build().status()); +} + +TEST_F(MathTest, RandomGammaGradDynamicDimensionMismatch) { + XlaBuilder builder(TestName()); + Shape shape_a = ShapeUtil::MakeShape(F32, {2, 2}); + Shape shape_x = ShapeUtil::MakeShape(F32, {2, 2}); + shape_x.set_dynamic_dimension(0, true); + XlaOp a = Parameter(&builder, 0, shape_a, "a"); + XlaOp x = Parameter(&builder, 1, shape_x, "x"); + RandomGammaGrad(a, x); + EXPECT_OK(builder.Build().status()); +} + +TEST_F(MathTest, ZetaDynamicDimensionMismatch) { + XlaBuilder builder(TestName()); + // x is static; q carries a dynamic-dimension bit. + Shape shape_x = ShapeUtil::MakeShape(F32, {2, 2}); + Shape shape_q = ShapeUtil::MakeShape(F32, {2, 2}); + shape_q.set_dynamic_dimension(0, true); + XlaOp x = Parameter(&builder, 0, shape_x, "x"); + XlaOp q = Parameter(&builder, 1, shape_q, "q"); + Zeta(x, q); + EXPECT_OK(builder.Build().status()); +} + +TEST_F(MathTest, PolygammaDynamicDimensionMismatch) { + XlaBuilder builder(TestName()); + // n is static; x carries a dynamic-dimension bit. + Shape shape_n = ShapeUtil::MakeShape(F32, {2, 2}); + Shape shape_x = ShapeUtil::MakeShape(F32, {2, 2}); + shape_x.set_dynamic_dimension(0, true); + XlaOp n = Parameter(&builder, 0, shape_n, "n"); + XlaOp x = Parameter(&builder, 1, shape_x, "x"); + Polygamma(n, x); + EXPECT_OK(builder.Build().status()); +} + } // namespace } // namespace xla diff --git a/third_party/xla/xla/hlo/builder/lib/self_adjoint_eig_test.cc b/third_party/xla/xla/hlo/builder/lib/self_adjoint_eig_test.cc index 467445ea097988..5778da3b926576 100644 --- a/third_party/xla/xla/hlo/builder/lib/self_adjoint_eig_test.cc +++ b/third_party/xla/xla/hlo/builder/lib/self_adjoint_eig_test.cc @@ -259,6 +259,86 @@ TEST_F(SelfAdjointEigTest, Test_Orthogonality_8x8) { ErrorSpec(1e-3, 1e-3)); } +TEST_F(SelfAdjointEigTest, Test_Large_Magnitude_2x2) { + XlaBuilder builder(TestName()); + float v = 1e20f; + Array2D input{{v, v}, {v, v}}; + std::vector expected{0.0f, 2e20f}; + + XlaOp a; + auto a_data = CreateR2Parameter(input, 0, "a", &builder, &a); + auto result = SelfAdjointEig(a, /*lower=*/true, /*max_iter=*/15, + /*tol=*/1e-5, /*sort_eigenvalues=*/true); + Add(result.w, ZerosLike(result.w)); + + ComputeAndCompareR1(&builder, expected, {&a_data}, + ErrorSpec(1e15f, 1e-4f)); +} + +TEST_F(SelfAdjointEigTest, Test_Large_Magnitude_3x3) { + XlaBuilder builder(TestName()); + float v = 1e20f; + Array2D input{{v, v, v}, {v, v, v}, {v, v, v}}; + std::vector expected{0.0f, 0.0f, 3e20f}; + + XlaOp a; + auto a_data = CreateR2Parameter(input, 0, "a", &builder, &a); + auto result = SelfAdjointEig(a, /*lower=*/true, /*max_iter=*/15, + /*tol=*/1e-5, /*sort_eigenvalues=*/true); + Add(result.w, ZerosLike(result.w)); + + ComputeAndCompareR1(&builder, expected, {&a_data}, + ErrorSpec(1e15f, 1e-4f)); +} + +TEST_F(SelfAdjointEigTest, Test_Large_Magnitude_Complex_3x3) { + XlaBuilder builder(TestName()); + float v = 1e20f; + Array input = { + {complex64{v, 0.0f}, complex64{v, -v}, complex64{0.0f, 0.0f}}, + {complex64{v, v}, complex64{v, 0.0f}, complex64{0.0f, 0.0f}}, + {complex64{0.0f, 0.0f}, complex64{0.0f, 0.0f}, complex64{v, 0.0f}}, + }; + const Literal a_literal = LiteralUtil::CreateFromArray(input); + XlaOp a = Parameter(&builder, 0, a_literal.shape(), "a"); + auto result = SelfAdjointEig(a); + ComputeMatmulVWVt(result, &builder); + + ComputeAndCompareLiteral(&builder, LiteralUtil::CreateFromArray(input), + {&a_literal}, ErrorSpec(1e15f, 1e-4f)); +} + +TEST_F(SelfAdjointEigTest, Test_Small_Magnitude_2x2) { + XlaBuilder builder(TestName()); + float v = 1e-20f; + Array2D input{{v, v}, {v, v}}; + std::vector expected{0.0f, 2e-20f}; + + XlaOp a; + auto a_data = CreateR2Parameter(input, 0, "a", &builder, &a); + auto result = SelfAdjointEig(a, /*lower=*/true, /*max_iter=*/15, + /*tol=*/1e-5, /*sort_eigenvalues=*/true); + Add(result.w, ZerosLike(result.w)); + + ComputeAndCompareR1(&builder, expected, {&a_data}, + ErrorSpec(1e-25f, 1e-4f)); +} + +TEST_F(SelfAdjointEigTest, Test_Zero_Matrix_2x2) { + XlaBuilder builder(TestName()); + Array2D input{{0.0f, 0.0f}, {0.0f, 0.0f}}; + std::vector expected{0.0f, 0.0f}; + + XlaOp a; + auto a_data = CreateR2Parameter(input, 0, "a", &builder, &a); + auto result = SelfAdjointEig(a, /*lower=*/true, /*max_iter=*/15, + /*tol=*/1e-5, /*sort_eigenvalues=*/true); + Add(result.w, ZerosLike(result.w)); + + ComputeAndCompareR1(&builder, expected, {&a_data}, + ErrorSpec(1e-6f, 1e-6f)); +} + TEST_F(SelfAdjointEigTest, Wrong_Type_Int) { XlaBuilder builder(TestName()); diff --git a/third_party/xla/xla/hlo/transforms/expanders/eigh_expander.cc b/third_party/xla/xla/hlo/transforms/expanders/eigh_expander.cc index 3b6c0debf5a26e..7400fb932f566f 100644 --- a/third_party/xla/xla/hlo/transforms/expanders/eigh_expander.cc +++ b/third_party/xla/xla/hlo/transforms/expanders/eigh_expander.cc @@ -477,6 +477,29 @@ XlaOp EighExpander::BuildEigh(XlaOp a, bool lower, int64_t max_iter, float tol, a = Symmetrize(a, lower); + PrimitiveType real_type = primitive_util::IsComplexType(type) + ? primitive_util::ComplexComponentType(type) + : type; + XlaOp zero_real = Zero(builder, real_type); + XlaOp one_real = One(builder, real_type); + XlaOp abs_a = primitive_util::IsComplexType(type) + ? Max(Abs(Real(a)), Abs(Imag(a))) + : Abs(a); + XlaOp a_max = + Reduce(abs_a, zero_real, CreateScalarMaxComputation(real_type, builder), + {num_dims - 2, num_dims - 1}); + XlaOp scale = Select(Eq(a_max, zero_real), one_real, a_max); + + std::vector batch_broadcast_dims(num_batch_dims); + absl::c_iota(batch_broadcast_dims, 0); + + XlaOp scale_a = primitive_util::IsComplexType(type) + ? Complex(scale, ZerosLike(scale)) + : scale; + scale_a = + BroadcastInDim(scale_a, a_shape.dimensions(), batch_broadcast_dims); + a = a / scale_a; + const int64_t k = CeilOfRatio(n, int64_t{2}); // tl = A[:n // 2, :n // 2] // bl = A[n // 2:, :n // 2] @@ -537,6 +560,11 @@ XlaOp EighExpander::BuildEigh(XlaOp a, bool lower, int64_t max_iter, float tol, } v = MaybeConjugate(TransposeInMinorDims(v), true); + ABSL_ASSIGN_OR_RETURN(Shape w_shape, builder->GetShape(w)); + XlaOp scale_w = + BroadcastInDim(scale, w_shape.dimensions(), batch_broadcast_dims); + w = w * scale_w; + if (sort_eigenvalues) { ABSL_RETURN_IF_ERROR(SortByEigenvalues(v, w)); } diff --git a/third_party/xla/xla/service/BUILD b/third_party/xla/xla/service/BUILD index 152db83f4beeb1..bab0c3b7b4031a 100644 --- a/third_party/xla/xla/service/BUILD +++ b/third_party/xla/xla/service/BUILD @@ -7205,6 +7205,7 @@ xla_cc_test( ":cpu_plugin", ":hlo_cse", ":hlo_proto_cc", + ":hlo_verifier", ":xla_transform", "//xla:shape_layout", "//xla:shape_util", diff --git a/third_party/xla/xla/service/batchnorm_expander.cc b/third_party/xla/xla/service/batchnorm_expander.cc index bcdf46bdcb3f28..b4450bd754f5ed 100644 --- a/third_party/xla/xla/service/batchnorm_expander.cc +++ b/third_party/xla/xla/service/batchnorm_expander.cc @@ -243,9 +243,16 @@ absl::Status BatchNormExpanderVisitor::HandleBatchNormTraining( add_binary(feature_shape, HloOpcode::kMultiply, mean, mean); // Var[X]. - auto var = + auto raw_var = add_binary(feature_shape, HloOpcode::kSubtract, square_mean, mean_square); + // Clamp variance to 0 to prevent negative variance due to floating-point + // rounding errors. + auto zero_feature = add(HloInstruction::CreateBroadcast( + ShapeUtil::MakeStaticShape(feature_shape), zero, {})); + auto var = + add_binary(feature_shape, HloOpcode::kMaximum, raw_var, zero_feature); + auto var_broadcasted = feature_broadcast(var); // Var[X] + epsilon. diff --git a/third_party/xla/xla/service/cpu/BUILD b/third_party/xla/xla/service/cpu/BUILD index ccbc2d7827ddfe..59b301065844fb 100644 --- a/third_party/xla/xla/service/cpu/BUILD +++ b/third_party/xla/xla/service/cpu/BUILD @@ -1112,6 +1112,7 @@ cc_library( hdrs = ["fusion_wrapper.h"], deps = [ ":ir_emission_utils", + "//xla:shape_util", "//xla:xla_data_proto_cc", "//xla/backends/cpu/codegen:target_machine_features", "//xla/backends/cpu/codegen/elemental:concatenate_kernel_emitter", diff --git a/third_party/xla/xla/service/cpu/cpu_aot_compilation_result.cc b/third_party/xla/xla/service/cpu/cpu_aot_compilation_result.cc index ecf51d8ecfd829..cca37527ec1c7f 100644 --- a/third_party/xla/xla/service/cpu/cpu_aot_compilation_result.cc +++ b/third_party/xla/xla/service/cpu/cpu_aot_compilation_result.cc @@ -59,14 +59,12 @@ namespace xla::cpu { CpuAotCompilationOptions::CpuAotCompilationOptions( std::string triple, std::string cpu_name, std::string features, - std::string entry_point_name, RelocationModel relocation_model, - bool compile_copy_as_llvm_kernel) + std::string entry_point_name, RelocationModel relocation_model) : triple_(std::move(triple)), cpu_name_(std::move(cpu_name)), features_(std::move(features)), entry_point_name_(std::move(entry_point_name)), - relocation_model_(relocation_model), - compile_copy_as_llvm_kernel_(compile_copy_as_llvm_kernel) {} + relocation_model_(relocation_model) {} CpuAotCompilationOptions::~CpuAotCompilationOptions() = default; diff --git a/third_party/xla/xla/service/cpu/cpu_aot_compilation_result.h b/third_party/xla/xla/service/cpu/cpu_aot_compilation_result.h index e3454788e54502..3c36c42bac7455 100644 --- a/third_party/xla/xla/service/cpu/cpu_aot_compilation_result.h +++ b/third_party/xla/xla/service/cpu/cpu_aot_compilation_result.h @@ -73,8 +73,7 @@ class CpuAotCompilationOptions : public AotCompilationOptions { CpuAotCompilationOptions(std::string triple, std::string cpu_name, std::string features, std::string entry_point_name, - RelocationModel relocation_model, - bool compile_copy_as_llvm_kernel = false); + RelocationModel relocation_model); ~CpuAotCompilationOptions() override; @@ -90,11 +89,6 @@ class CpuAotCompilationOptions : public AotCompilationOptions { const std::string& entry_point_name() const { return entry_point_name_; } // The relocation model used for compilation. RelocationModel relocation_model() const { return relocation_model_; } - // Whether to compile copy as LLVM kernel. This is used to avoid dependencies - // on pjrt/transpose for tfcompiled models. - bool compile_copy_as_llvm_kernel() const { - return compile_copy_as_llvm_kernel_; - } private: const std::string triple_; @@ -102,7 +96,6 @@ class CpuAotCompilationOptions : public AotCompilationOptions { const std::string features_; const std::string entry_point_name_; const RelocationModel relocation_model_; - const bool compile_copy_as_llvm_kernel_; }; // This class represents the result of a CPU AOT compilation. diff --git a/third_party/xla/xla/service/cpu/cpu_compiler.cc b/third_party/xla/xla/service/cpu/cpu_compiler.cc index 59440df24ae0c8..39a6808562aa7c 100644 --- a/third_party/xla/xla/service/cpu/cpu_compiler.cc +++ b/third_party/xla/xla/service/cpu/cpu_compiler.cc @@ -2199,7 +2199,6 @@ absl::StatusOr> CpuCompiler::RunBackend( }; ThunkEmitter::Options thunk_emitter_options = { - /*compile_copy_as_llvm_kernel=*/false, /*is_aot_compilation=*/options.is_aot_compile}; auto ir_compiler = IrCompiler::Create(CompilerTargetOptions(module->config()), @@ -2317,7 +2316,6 @@ CpuCompiler::CompileAheadOfTimeThunks( target_machine_builder()); ThunkEmitter::Options thunk_emitter_options = { - /*compile_copy_as_llvm_kernel=*/aot_options.compile_copy_as_llvm_kernel(), /*is_aot_compilation=*/true}; TargetMachineOptions target_machine_options( diff --git a/third_party/xla/xla/service/cpu/fusion_wrapper.cc b/third_party/xla/xla/service/cpu/fusion_wrapper.cc index 91d853adb8ca09..a2756acfa2fe7b 100644 --- a/third_party/xla/xla/service/cpu/fusion_wrapper.cc +++ b/third_party/xla/xla/service/cpu/fusion_wrapper.cc @@ -19,6 +19,7 @@ limitations under the License. #include "xla/backends/cpu/codegen/tiled/tiled_fusion_emitter.h" #include "xla/hlo/ir/hlo_instruction.h" #include "xla/hlo/ir/hlo_opcode.h" +#include "xla/primitive_util.h" #include "xla/service/cpu/ir_emission_utils.h" #include "xla/xla_data.pb.h" @@ -106,8 +107,9 @@ bool FusionWrapper::MustWrapInstruction(const HloInstruction& instruction) { if (instruction.shape() == instruction.operand(0)->shape()) { return false; } - - return IsSupportedTilingType(instruction.shape().element_type()); + return IsSupportedTilingType(instruction.shape().element_type()) || + primitive_util::IsSubByteNonPredType( + instruction.shape().element_type()); case HloOpcode::kConcatenate: return !CanDoFastConcatenate(instruction).ok(); case HloOpcode::kConvolution: diff --git a/third_party/xla/xla/service/cpu/fusion_wrapper_test.cc b/third_party/xla/xla/service/cpu/fusion_wrapper_test.cc index 2f543194f261f1..c4447f089c1196 100644 --- a/third_party/xla/xla/service/cpu/fusion_wrapper_test.cc +++ b/third_party/xla/xla/service/cpu/fusion_wrapper_test.cc @@ -234,6 +234,23 @@ TEST_F(FusionWrapperTest, CopyWithMatchingLayoutsNotWrapped) { wrapper.MustWrapInstruction(*m->entry_computation()->root_instruction())); } +TEST_F(FusionWrapperTest, + LayoutChangingSubByteCopyWrappedWithNewFusionEmitters) { + static constexpr absl::string_view hlo_string = R"( + HloModule m + ENTRY e { + p0 = u2[20,20]{1,0:E(2)} parameter(0) + ROOT copy = u2[20,20]{0,1:E(2)} copy(p0) + } + )"; + ASSERT_OK_AND_ASSIGN(std::unique_ptr m, + ParseAndReturnVerifiedModule(hlo_string)); + FusionWrapper wrapper(/*using_new_fusion_emitter=*/true, + /*use_tiled_emitter=*/true, &target_machine_features_); + EXPECT_TRUE( + wrapper.MustWrapInstruction(*m->entry_computation()->root_instruction())); +} + TEST_F(FusionWrapperTest, ConcatenateWithMismatchedLayoutsWrapped) { static constexpr absl::string_view hlo_string = R"( HloModule m diff --git a/third_party/xla/xla/service/cpu/tests/BUILD b/third_party/xla/xla/service/cpu/tests/BUILD index 1cecf8f2ee0a52..bc46f8b473bb2a 100644 --- a/third_party/xla/xla/service/cpu/tests/BUILD +++ b/third_party/xla/xla/service/cpu/tests/BUILD @@ -405,8 +405,11 @@ xla_test( backends = ["cpu"], deps = [ "//xla:literal", - "//xla/tests:hlo_pjrt_test_base", + "//xla/service/cpu:fusion_wrapper", + "//xla/service/cpu:target_machine_features_stub", + "//xla/tests:hlo_test_base", "//xla/tsl/platform:statusor", + "//xla/tsl/platform:test", "@com_google_absl//absl/types:span", "@com_google_googletest//:gtest_main", ], diff --git a/third_party/xla/xla/service/cpu/tests/cpu_copy_test.cc b/third_party/xla/xla/service/cpu/tests/cpu_copy_test.cc index 0cebcd9ee37463..cb2a62dbc0aabb 100644 --- a/third_party/xla/xla/service/cpu/tests/cpu_copy_test.cc +++ b/third_party/xla/xla/service/cpu/tests/cpu_copy_test.cc @@ -20,13 +20,45 @@ limitations under the License. #include #include "absl/types/span.h" #include "xla/literal.h" -#include "xla/tests/hlo_pjrt_test_base.h" +#include "xla/service/cpu/fusion_wrapper.h" +#include "xla/service/cpu/target_machine_features_stub.h" +#include "xla/tests/hlo_test_base.h" #include "xla/tsl/platform/statusor.h" +#include "xla/tsl/platform/test.h" namespace xla::cpu { namespace { -TEST_F(HloTestBase, SubByteCopy) { +TEST_F(HloTestBase, SubByteEqualShapeCopy) { + const std::string hlo_text = R"hlo( +HloModule module + +ENTRY entry { + in = u2[20,20]{1,0:E(2)} iota(), iota_dimension=1 + copy = u2[20,20]{1,0:E(2)} copy(in) + ROOT out = u8[20,20]{1,0} convert(copy) +} +)hlo"; + + ASSERT_OK_AND_ASSIGN(auto module, ParseAndReturnVerifiedModule(hlo_text)); + TargetMachineFeaturesStub target_machine_features( + [](int64_t size) { return 16; }); + FusionWrapper fusion_wrapper(/*using_new_fusion_emitter=*/true, + /*use_tiled_emitter=*/true, + &target_machine_features); + ASSERT_OK(fusion_wrapper.Run(module.get())); + ASSERT_OK_AND_ASSIGN(const Literal result, Execute(std::move(module), {}, + /*run_hlo_passes=*/false)); + + absl::Span result_data = result.data(); + for (int64_t row = 0; row < 20; ++row) { + for (int64_t col = 0; col < 20; ++col) { + EXPECT_EQ(result_data[row * 20 + col], col % 4); + } + } +} + +TEST_F(HloTestBase, LayoutChangingSubByteCopy) { const std::string hlo_text = R"hlo( HloModule module @@ -38,10 +70,15 @@ ENTRY entry { } )hlo"; - TF_ASSERT_OK_AND_ASSIGN(auto module, ParseAndReturnVerifiedModule(hlo_text)); - TF_ASSERT_OK_AND_ASSIGN( - const Literal result, - Execute(std::move(module), {}, /*run_hlo_passes=*/false)); + ASSERT_OK_AND_ASSIGN(auto module, ParseAndReturnVerifiedModule(hlo_text)); + TargetMachineFeaturesStub target_machine_features( + [](int64_t size) { return 16; }); + FusionWrapper fusion_wrapper(/*using_new_fusion_emitter=*/true, + /*use_tiled_emitter=*/true, + &target_machine_features); + ASSERT_OK(fusion_wrapper.Run(module.get())); + ASSERT_OK_AND_ASSIGN(const Literal result, Execute(std::move(module), {}, + /*run_hlo_passes=*/false)); absl::Span result_data = result.data(); for (int64_t row = 0; row < 20; ++row) { diff --git a/third_party/xla/xla/service/cpu/thunk_emitter.cc b/third_party/xla/xla/service/cpu/thunk_emitter.cc index d057cbc587f6a0..287cbb36d8af12 100644 --- a/third_party/xla/xla/service/cpu/thunk_emitter.cc +++ b/third_party/xla/xla/service/cpu/thunk_emitter.cc @@ -458,15 +458,8 @@ absl::StatusOr ThunkEmitter::EmitHloInstruction( case HloOpcode::kConvolution: return EmitConvolutionThunk(instruction); - case HloOpcode::kCopy: { - // The copy thunk does not support sub-byte data types. - bool has_byte_strides = - ShapeUtil::ByteStrides(instruction->shape()).has_value(); - if (!has_byte_strides || options_.compile_copy_as_llvm_kernel) { - return EmitElementalKernelThunk(instruction); - } + case HloOpcode::kCopy: return EmitCopyThunk(instruction); - } case HloOpcode::kDot: return EmitDotThunk(instruction); diff --git a/third_party/xla/xla/service/cpu/thunk_emitter.h b/third_party/xla/xla/service/cpu/thunk_emitter.h index 81b112022fffc4..7f837199310cc7 100644 --- a/third_party/xla/xla/service/cpu/thunk_emitter.h +++ b/third_party/xla/xla/service/cpu/thunk_emitter.h @@ -60,13 +60,10 @@ namespace xla::cpu { class ThunkEmitter { public: struct Options { - // Whether to compile copy as LLVM kernel. This is used to avoid - // dependencies on pjrt/transpose for tfcompiled models. - bool compile_copy_as_llvm_kernel; // Wheter the thunk emitter is used for AOT compilation. AOT compiled // kernels get linked together and might have to respect certain // restrictions, such as having the same module flags. - bool is_aot_compilation; + bool is_aot_compilation = false; }; struct EmittedKernel { @@ -81,8 +78,7 @@ class ThunkEmitter { const BufferAssignment& buffer_assignment, const TargetMachineFeatures& target_machine_features, const HloModule& hlo_module, - const Options& options = {/*compile_copy_as_llvm_kernel=*/false, - /*is_aot_compilation=*/false}); + const Options& options = {/*is_aot_compilation=*/false}); // Emits HLO module entry computation as a sequence of thunks. absl::StatusOr EmitEntryComputation(const HloModule& module); diff --git a/third_party/xla/xla/service/gpu/gpu_compiler.cc b/third_party/xla/xla/service/gpu/gpu_compiler.cc index 0939d1c897195e..97d916a9feb43f 100644 --- a/third_party/xla/xla/service/gpu/gpu_compiler.cc +++ b/third_party/xla/xla/service/gpu/gpu_compiler.cc @@ -679,8 +679,10 @@ void LogDebugOptions(HloModule* hlo_module) { } } -absl::Status RunPreSPMDPartitionerPasses(HloModule* hlo_module, - CompilationStats* compilation_stats) { +absl::Status RunPreSPMDPartitionerPasses( + HloModule* hlo_module, const se::GpuComputeCapability& gpu_version, + const AlgebraicSimplifierOptions& layout_insensitive_algsimp_opts, + CompilationStats* compilation_stats) { HloPassPipeline pre_spmd_pipeline("pre-spmd-partitioner", compilation_stats); // Run some IR cleanup passes before running the SPMD partitioning // passes. @@ -693,7 +695,18 @@ absl::Status RunPreSPMDPartitionerPasses(HloModule* hlo_module, pre_spmd_pipeline.AddPass( /*single_call_site=*/false, /*update_domain=*/false, /*composites_to_preserve=*/absl::flat_hash_set()); - pre_spmd_pipeline.AddPass(); + + // Remove zero-sized HLO from the input so that other passes don't have to + // handle it. + { + // ZeroSizedHloElimination and GpuAlgebraicSimplifier need to be run + // together. ZeroSizedHloElimination replaces zero-sized ops with constants + // and GpuAlgebraicSimplifier folds those constants into users. + pre_spmd_pipeline.AddPass(); + pre_spmd_pipeline.AddPass( + layout_insensitive_algsimp_opts, gpu_version); + } + pre_spmd_pipeline.AddPass(); // The TopkDecomposer generates a compare op with type=TOTALORDER and must @@ -849,10 +862,6 @@ absl::Status RunOptimizationPasses( } pipeline.AddPass(comparison_expander_upcasts); - // Remove zero-sized HLO from the input so that other passes don't have to - // handle it. - pipeline.AddPass(); - // Rewrite select-and-scatter as a scatter and a reduce-window. pipeline.AddPass(); @@ -1764,6 +1773,7 @@ AlgebraicSimplifierOptions GpuCompiler::GetAlgebraicSimplifierOptions( if (!is_rocm && debug_options.xla_gpu_experimental_enable_conv_fusion()) { opts.set_enable_folding_pad_into_convolution(false); + opts.set_enable_conv_operand_swap(false); } switch (mode) { @@ -1866,7 +1876,10 @@ absl::Status GpuCompiler::OptimizeHloModule( ABSL_RETURN_IF_ERROR(pipeline.Run(hlo_module).status()); } - ABSL_RETURN_IF_ERROR(RunPreSPMDPartitionerPasses(hlo_module, compilation_stats)); + ABSL_RETURN_IF_ERROR(RunPreSPMDPartitionerPasses( + hlo_module, device_description.gpu_compute_capability(), + layout_insensitive_algsimp_opts, compilation_stats)); + // Set max_windowed_einsum_iteration to slice_size, as there will be // significant overhead when scaled beyond the maximum size of the // fast-interconnect domain. diff --git a/third_party/xla/xla/service/gpu/gpu_compiler_test.cc b/third_party/xla/xla/service/gpu/gpu_compiler_test.cc index f0c4749ef97a6f..1fa627cfa97c74 100644 --- a/third_party/xla/xla/service/gpu/gpu_compiler_test.cc +++ b/third_party/xla/xla/service/gpu/gpu_compiler_test.cc @@ -224,7 +224,7 @@ ENTRY test_computation { )"; AssertionResult run_result = Run(std::move(ValueOrDie(ParseAndReturnVerifiedModule(kHloText))), - /*run_hlo_passes=*/true); + /*run_hlo_passes=*/false); EXPECT_THAT(run_result.failure_message(), HasSubstr("Expected send and recv instructions to have " "non-cyclical source-target pairs")); diff --git a/third_party/xla/xla/service/gpu/model/BUILD b/third_party/xla/xla/service/gpu/model/BUILD index 01a509bfd55802..3cd57521a593c2 100644 --- a/third_party/xla/xla/service/gpu/model/BUILD +++ b/third_party/xla/xla/service/gpu/model/BUILD @@ -11,6 +11,7 @@ load("//xla/tsl:tsl.default.bzl", "get_compatible_with_portable") load("//xla/tsl/platform:build_config.bzl", "tf_proto_library") load("//xla/tsl/platform/default:cuda_build_defs.bzl", "if_cuda_is_configured") load("//xla/tsl/util:cc_embed_data.bzl", "cc_embed_data") +load("//xla/util:build_defs.bzl", "text_to_binary_proto") package( # copybara:uncomment default_applicable_licenses = ["//tensorflow:license"], @@ -1151,7 +1152,6 @@ cc_library( "@com_google_absl//absl/status:statusor", "@com_google_absl//absl/strings", "@com_google_absl//absl/time", - "@com_google_protobuf//:protobuf", ], ) @@ -1369,9 +1369,17 @@ cc_embed_data( flatten = True, ) +text_to_binary_proto( + name = "default_collective_perf_table_binary", + src = "default_collective_perf_table.txtpb", + out = "default_collective_perf_table.pb", + proto_deps = [":hlo_op_profile_proto"], + proto_name = "xla.gpu.DeviceHloInstructionProfiles", +) + cc_embed_data( name = "default_collective_perf_table", - srcs = ["default_collective_perf_table.txtpb"], + srcs = [":default_collective_perf_table_binary"], outs = [ "default_collective_perf_table.cc", "default_collective_perf_table.h", diff --git a/third_party/xla/xla/service/gpu/model/collective_interpolator.cc b/third_party/xla/xla/service/gpu/model/collective_interpolator.cc index 387b53302493be..2a2cc7beeba9a1 100644 --- a/third_party/xla/xla/service/gpu/model/collective_interpolator.cc +++ b/third_party/xla/xla/service/gpu/model/collective_interpolator.cc @@ -34,7 +34,6 @@ limitations under the License. #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" #include "absl/time/time.h" -#include "google/protobuf/text_format.h" #include "xla/backends/gpu/transforms/collectives/collective_ops_utils.h" #include "xla/hlo/ir/hlo_casting_utils.h" #include "xla/hlo/ir/hlo_computation.h" @@ -63,19 +62,18 @@ namespace { absl::string_view GetDefaultCollectivePerfTable() { const struct FileToc* toc = config::default_collective_perf_table_create(); for (size_t i = 0; i < config::default_collective_perf_table_size(); ++i) { - if (absl::string_view(toc[i].name) == - "default_collective_perf_table.txtpb") { + if (absl::string_view(toc[i].name) == "default_collective_perf_table.pb") { return absl::string_view(toc[i].data, toc[i].size); } } - LOG(FATAL) << "Embedded file not found: default_collective_perf_table.txtpb"; + LOG(FATAL) << "Embedded file not found: default_collective_perf_table.pb"; } static const DeviceHloInstructionProfiles& Profile() { static const DeviceHloInstructionProfiles* profile = []() { auto* profile = new DeviceHloInstructionProfiles(); - CHECK(tsl::protobuf::TextFormat::ParseFromString( - GetDefaultCollectivePerfTable(), profile)) + CHECK(profile->ParseFromArray(GetDefaultCollectivePerfTable().data(), + GetDefaultCollectivePerfTable().size())) << "Cannot parse a default profile."; return profile; }(); diff --git a/third_party/xla/xla/service/gpu/model/collective_interpolator_test.cc b/third_party/xla/xla/service/gpu/model/collective_interpolator_test.cc index 8cb11a0592c773..e4fec1d9f95ff5 100644 --- a/third_party/xla/xla/service/gpu/model/collective_interpolator_test.cc +++ b/third_party/xla/xla/service/gpu/model/collective_interpolator_test.cc @@ -30,6 +30,7 @@ limitations under the License. #include "absl/time/time.h" #include "xla/backends/gpu/transforms/collectives/collective_ops_utils.h" #include "xla/hlo/ir/hlo_casting_utils.h" +#include "xla/hlo/ir/hlo_instruction.h" #include "xla/hlo/ir/hlo_instructions.h" #include "xla/hlo/ir/hlo_module.h" #include "xla/hlo/ir/hlo_opcode.h" @@ -1081,6 +1082,56 @@ INSTANTIATE_TEST_SUITE_P( return info.param.test_name; }); +TEST(DefaultCollectivePerfTableTest, EstimatesGfx942DefaultProfile) { + se::DeviceDescription device_info = TestGpuDeviceInfo::RTXA6000DeviceInfo(); + device_info.set_rocm_compute_capability("gfx942"); + ASSERT_OK_AND_ASSIGN( + std::unique_ptr interpolator, + CollectiveInterpolator::Create(kNumGpusPerHost, device_info)); + + absl::string_view kAllReduceHlo = R"( + HloModule m, num_partitions=8 + + wrapped_add { + a = f32[] parameter(0) + b = f32[] parameter(1) + ROOT _ = f32[] add(a,b) + } + + ENTRY main { + p = f32[256] parameter(0) + ROOT _ = f32[256] all-reduce(p), to_apply=wrapped_add, + replica_groups=[1,8]<=[8], use_global_device_ids=true, channel_id=1 + } + )"; + ASSERT_OK_AND_ASSIGN(auto all_reduce_module, + ParseAndReturnUnverifiedModule(kAllReduceHlo)); + HloInstruction* all_reduce = + all_reduce_module->entry_computation()->root_instruction(); + ASSERT_OK_AND_ASSIGN(absl::Duration all_reduce_runtime, + interpolator->EstimatedRuntime(*all_reduce)); + EXPECT_NEAR(absl::ToDoubleMicroseconds(all_reduce_runtime), + 1e6 * 1024.0 / 18206710.0, 0.01); + + absl::string_view kCollectivePermuteHlo = R"( + HloModule m, num_partitions=8 + + ENTRY main { + p = f32[256] parameter(0) + ROOT _ = f32[256] collective-permute(p), + source_target_pairs={{0,4},{1,5},{2,6},{3,7}}, channel_id=1 + } + )"; + ASSERT_OK_AND_ASSIGN(auto collective_permute_module, + ParseAndReturnUnverifiedModule(kCollectivePermuteHlo)); + HloInstruction* collective_permute = + collective_permute_module->entry_computation()->root_instruction(); + ASSERT_OK_AND_ASSIGN(absl::Duration collective_permute_runtime, + interpolator->EstimatedRuntime(*collective_permute)); + EXPECT_NEAR(absl::ToDoubleMicroseconds(collective_permute_runtime), + 1e6 * 1024.0 / 6772889.0, 0.01); +} + TEST(DefaultCollectivePerfTableTest, EstimatesGfx950DefaultProfile) { se::DeviceDescription device_info = TestGpuDeviceInfo::RTXA6000DeviceInfo(); device_info.set_rocm_compute_capability("gfx950"); diff --git a/third_party/xla/xla/service/gpu/model/default_collective_perf_table.txtpb b/third_party/xla/xla/service/gpu/model/default_collective_perf_table.txtpb index 3d833ea20bd41e..06474f0dc13d88 100644 --- a/third_party/xla/xla/service/gpu/model/default_collective_perf_table.txtpb +++ b/third_party/xla/xla/service/gpu/model/default_collective_perf_table.txtpb @@ -77749,6 +77749,16139 @@ entries { } } } +entries { + key: "gfx942" + value { + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 64 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f8b5ec938cad8a87a80fc1dcd768c66b" + network_throughput_bytes_per_sec: 65712635 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "2eb056e21ce0ddec3c4acf722189b700" + network_throughput_bytes_per_sec: 211253803 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "ea0954193cc480c6593f553bd3438c9e" + network_throughput_bytes_per_sec: 3886148007 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "5771f9afffba4af7a205f96eef84981b" + network_throughput_bytes_per_sec: 291397585757 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "ce91af68036c36a9df8e3bbf567eee09" + network_throughput_bytes_per_sec: 970328694 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "2c6f6210ff747b61044161f5f2d82027" + network_throughput_bytes_per_sec: 331378273764 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c899fb206acc512aabad1c825500db25" + network_throughput_bytes_per_sec: 1635986919 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "bb0c837eadcc79bc10233ea7ef4010a9" + network_throughput_bytes_per_sec: 44582786806 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "8eaf5a05d48989b38e5eaea491d6f0fb" + network_throughput_bytes_per_sec: 66806896826 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "2d717ad201d941580b9e0106406fd7d5" + network_throughput_bytes_per_sec: 612302862 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "8ba146534a3ced22d98ec89e13791de1" + network_throughput_bytes_per_sec: 53843726 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "184135279c70089f7c6ca507b1582d55" + network_throughput_bytes_per_sec: 16838643371 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "ef16ed48f2ab9a546f3605e4c3340419" + network_throughput_bytes_per_sec: 178797245127 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9bb2cf7ea4be08f4379c34a8776dd615" + network_throughput_bytes_per_sec: 44943947365 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "33661ac19032bfe68c3d9b02871f9ed9" + network_throughput_bytes_per_sec: 176597395 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "cbd1ef2c36141930a966889cfc48d322" + network_throughput_bytes_per_sec: 88663212318 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "921e6393a965bcd40b2ee3799112ec42" + network_throughput_bytes_per_sec: 282843628 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 536870912 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "19badbe16d051a71a5719fc1cbd40c7f" + network_throughput_bytes_per_sec: 168232855159 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "d3b910fdeb6b07245ce93ccb67ea88bd" + network_throughput_bytes_per_sec: 211221122 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "fbda4473b6de260c6512121cc16e8f04" + network_throughput_bytes_per_sec: 339875179474 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "3064d5d2f82d8e6ced1ab7e947ef7391" + network_throughput_bytes_per_sec: 428272689 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "96f8309cce55a9949e1f2f0f3e0ec690" + network_throughput_bytes_per_sec: 771960822 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "184920561f3c0de7e3083fe2fc0bd31c" + network_throughput_bytes_per_sec: 45450589848 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "89e6821bfad18005a5bee029eeb23f19" + network_throughput_bytes_per_sec: 213624528878 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "057eed0f675dbf7448cc6f9f13963459" + network_throughput_bytes_per_sec: 14772004958 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "132109fb8819d2dd18efd21168ba46cf" + network_throughput_bytes_per_sec: 2420088626 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "1a7304fb341d7f07c57c9bf104fa240c" + network_throughput_bytes_per_sec: 17662309661 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "869218e49384a9020f9fbb1c8eb247de" + network_throughput_bytes_per_sec: 53758924 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "59d80d26dc690f4b5ca94bf13c0a4edb" + network_throughput_bytes_per_sec: 98407019848 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "122edd8939058bb037abb5816debfc87" + network_throughput_bytes_per_sec: 23454927750 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0828705e9e274be716d9bed985b9d04f" + network_throughput_bytes_per_sec: 149950538499 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0e252d37f4f95b65b0c309bd36d90e08" + network_throughput_bytes_per_sec: 68010961391 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "adf9fe649eb56b23ae6e148efc55dbac" + network_throughput_bytes_per_sec: 38692841328 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c5cd6dc54b5be0e57e2f5ff3b8b297a9" + network_throughput_bytes_per_sec: 77817463 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f2b280da4c9e108e14768760ebb4c392" + network_throughput_bytes_per_sec: 796480396 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "61c8e423ccee51351146a02330cbd321" + network_throughput_bytes_per_sec: 267696613347 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "3b8d159ab132a6a4de22cf70abec0b16" + network_throughput_bytes_per_sec: 157344174814 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "4cde049d4af2588421f1cd37e1a1d96d" + network_throughput_bytes_per_sec: 46648503726 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "3a6a7362223de42b37d4ea61ae462272" + network_throughput_bytes_per_sec: 70295205054 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9553913f2f28f76f48cad5808ac047a8" + network_throughput_bytes_per_sec: 152544413884 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "fbc3523926dbdd757c935102891781d6" + network_throughput_bytes_per_sec: 161038341740 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "68055875bc25bbe6685e1b9b85eab565" + network_throughput_bytes_per_sec: 8241448692 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e116b749dc6fb00963e1e1c912a89c03" + network_throughput_bytes_per_sec: 328029171676 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "863b7bb32c372a2dd7cae3096429baa4" + network_throughput_bytes_per_sec: 27175319 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "e7ff1ad5ce23298c66709c1a761fc80c" + network_throughput_bytes_per_sec: 2995058582 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "dab6356615fe22377f82fa76542aacfd" + network_throughput_bytes_per_sec: 3265533908 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9b4cd34c3b54a338ab91020d2c23470e" + network_throughput_bytes_per_sec: 142743512515 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "a25e0b6606b5a56f34374dda554164b2" + network_throughput_bytes_per_sec: 46782352764 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "1463d8954f4946d066311dc7f75d49dc" + network_throughput_bytes_per_sec: 309441391426 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "956a8ba9e3cb2a85b1f2051634580fa9" + network_throughput_bytes_per_sec: 32132319790 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "d650b9830fd51944cce5307dad5a78b6" + network_throughput_bytes_per_sec: 46145721972 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "4bd1e1be2e4f6abd94d41b47a4e4a20b" + network_throughput_bytes_per_sec: 324879343355 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "725a4a0ae76c1f2dc1f7c1877ad92a3d" + network_throughput_bytes_per_sec: 89525844505 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e2f8ceafe05d7294298b62da832dd887" + network_throughput_bytes_per_sec: 46732443700 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "833cc5cec9d7cfba5770633083f5fb7e" + network_throughput_bytes_per_sec: 160275473 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "1e90f0394d981c53e9ef82dacccbd73d" + network_throughput_bytes_per_sec: 104497793 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "be5aa918f7da473d687285a4e6e7e13f" + network_throughput_bytes_per_sec: 101085883 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "586bac400ee3830fcb0bfb33c5e1dec6" + network_throughput_bytes_per_sec: 2034773969 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "10afb3a674511ddbd597cb56dbb5c8fd" + network_throughput_bytes_per_sec: 11110385895 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "fd1abf3e9a2d65d8c9875426308088db" + network_throughput_bytes_per_sec: 4876190476 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "d2b7c2d576d861a8c7c91e1bf57c188f" + network_throughput_bytes_per_sec: 10200949490 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "4fb0e0f55c14066295dd304d8371b0ee" + network_throughput_bytes_per_sec: 8582222949 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "44ae733809312994206ebe478f6f6d88" + network_throughput_bytes_per_sec: 77185598218 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f569c9c702eb778090e38c0661443be4" + network_throughput_bytes_per_sec: 156316504935 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "6162dcdb0d5f77647fc11bc90b514c9e" + network_throughput_bytes_per_sec: 14826827 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e48d6a945ecb9b02cc16939023bc2d96" + network_throughput_bytes_per_sec: 4659260970 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "b1ee9be4f8941e8c5707b526de55ebcd" + network_throughput_bytes_per_sec: 37880712402 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "fdd21857630c37298563cd2c4a3d9d0b" + network_throughput_bytes_per_sec: 1230030030 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "ed727b57d6a3ae32b3e8b3c460375593" + network_throughput_bytes_per_sec: 89224848829 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "fdfd9b0e1d6925288b99fa31fb770d0f" + network_throughput_bytes_per_sec: 197970033 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "d3ad67df0aff5eb378644f9090463629" + network_throughput_bytes_per_sec: 17485592315 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "7d3fc6383c3bfc8d9b3e2269bf971b44" + network_throughput_bytes_per_sec: 24870167449 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "b52cca147cee2cf2afd9b52e23b0e447" + network_throughput_bytes_per_sec: 5965410522 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "56fca87b103de1eb73c7e89c61448474" + network_throughput_bytes_per_sec: 9708317902 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "4a3d963f9237ede18f970c615082a65b" + network_throughput_bytes_per_sec: 9216792068 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "7d0d5395979bcdd88ab169ef67df3d5e" + network_throughput_bytes_per_sec: 99126352 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "5fb3ea880a0b624efd5aaa39e8e94119" + network_throughput_bytes_per_sec: 45318060035 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9dc805264207f639505e60a61756f2ff" + network_throughput_bytes_per_sec: 129742143033 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0763253379412eb8c92d451a4989af92" + network_throughput_bytes_per_sec: 4883457526 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9599ceb31c1d43d9bd34666de402264a" + network_throughput_bytes_per_sec: 10240800062 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "75e40f7ad44a713cbbbd71adca9ca1c5" + network_throughput_bytes_per_sec: 183445766270 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "47b532f58d2079ddc96d356ceefa38b8" + network_throughput_bytes_per_sec: 83130378 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "a4ff2d7f7e21480824c17556c4ea5f1e" + network_throughput_bytes_per_sec: 63302604968 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "46ba65401185eae7cf33ea01a44d150f" + network_throughput_bytes_per_sec: 349577536 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "7d103ef6ef882da52bf468af2e2c89af" + network_throughput_bytes_per_sec: 51074866 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "66750fce8728e0f48633bfce62ae1980" + network_throughput_bytes_per_sec: 13661872003 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "460a0e15a081f4490055616ae5d0fa4c" + network_throughput_bytes_per_sec: 11067933291 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c52376a097b88c64ce5161577dba2070" + network_throughput_bytes_per_sec: 17419113 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0b3c62ead25a10854182eb972d21a33d" + network_throughput_bytes_per_sec: 9101590167 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "72c4414d2ea15a15319031a9404c518d" + network_throughput_bytes_per_sec: 4841965275 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "3067ba1a1aa9f8fd0f9c70c28fd2aae5" + network_throughput_bytes_per_sec: 100544945 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "21b95933b3a9fcf0834be1a9a56d565f" + network_throughput_bytes_per_sec: 19148575602 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "62a78b2d792f227e3319cbc6d0f7397a" + network_throughput_bytes_per_sec: 165414996302 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "26a9264b3431e346ef5fef61c3213c53" + network_throughput_bytes_per_sec: 171179051063 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "dbc9494722e22aa9d9bbc19961fa2bd5" + network_throughput_bytes_per_sec: 7936630 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0655eca561666269145633dca1fd0bad" + network_throughput_bytes_per_sec: 704566956 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "62deed7a65e09eb425eac9e48ddd5a47" + network_throughput_bytes_per_sec: 78805119894 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "44189885145704c5e0202393bb9877c9" + network_throughput_bytes_per_sec: 1410346905 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "5e2663d7fceff11b5312332fa4e92638" + network_throughput_bytes_per_sec: 919106922 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "5f3fc5e4e7b3cece8395d7709beadc90" + network_throughput_bytes_per_sec: 137653560879 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c057bfe7ad7cd11029ee0025cf8c22e6" + network_throughput_bytes_per_sec: 95651767 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 128 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "7a54c034380c02751b62ec1327003385" + network_throughput_bytes_per_sec: 108543565 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "30970b3a64dad66be798dd9a326d7629" + network_throughput_bytes_per_sec: 2816995852 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c3b34f754c1e17af82ed0baa3ab2e457" + network_throughput_bytes_per_sec: 322063217 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "364cc6f929827da70719a1a88a21eee6" + network_throughput_bytes_per_sec: 310460651649 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "58357e0bd8b0689ff1fe2c58de3ccb19" + network_throughput_bytes_per_sec: 93277555811 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "a275e77e76f7666c635ad7320b1e2e59" + network_throughput_bytes_per_sec: 47446844282 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "04fd9fed92d16e173fc5208523f53283" + network_throughput_bytes_per_sec: 1713090757 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "4928da39d79385e5f104ae32acf39251" + network_throughput_bytes_per_sec: 27817007335 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "273eb0c88e187b9a6a76c5d5bbda9095" + network_throughput_bytes_per_sec: 53720784876 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "7ea858b3ed721e1f90bd0ad4e02171de" + network_throughput_bytes_per_sec: 46043375226 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "bdc2c7412dbec535a96e650e8b71faba" + network_throughput_bytes_per_sec: 62027565808 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "ef4fee03912d152ba48c7a9651d5e2ec" + network_throughput_bytes_per_sec: 70459346861 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f91111ab5af2a4c95a894ac69a514d2d" + network_throughput_bytes_per_sec: 31955628018 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "5c4855fe511cdd5117be76e7385d1cf7" + network_throughput_bytes_per_sec: 2663361306 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "4c90e212c6c2ead3940ec3f3968d901f" + network_throughput_bytes_per_sec: 2578431758 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e05052a696f34e30c1714e84b65c4039" + network_throughput_bytes_per_sec: 166260642929 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "1b6ab3ab54b060fef16d0df721e84115" + network_throughput_bytes_per_sec: 47417133165 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "06470add083211b0654aff4cb202e57c" + network_throughput_bytes_per_sec: 170816646441 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "dced792a6bb96b549cd4ed3e96bb281d" + network_throughput_bytes_per_sec: 1560223072 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "0de26ff26de5e012abea2cc8bcc34581" + network_throughput_bytes_per_sec: 2936381609 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "52b2577f0bfaf38305363f115bd77596" + network_throughput_bytes_per_sec: 382241093 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e75477358c94574e1c6b9b50b78af270" + network_throughput_bytes_per_sec: 102968903 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "a35c1aa8de7b8a1b684b1b36ab4b04fd" + network_throughput_bytes_per_sec: 71371756257 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "7ce0f5f18004ff9348daed57054665a7" + network_throughput_bytes_per_sec: 341581125936 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "8e2053ca4b68a7a30436f17d2fb23d82" + network_throughput_bytes_per_sec: 47688811557 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "6b536595b1c234076e742dbd7dc69fab" + network_throughput_bytes_per_sec: 308213251 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "35b276d0339cf8c94aba45efe9bec4c7" + network_throughput_bytes_per_sec: 21996559681 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 128 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "ee756f40fb626c4aa03d562de5e5d7e4" + network_throughput_bytes_per_sec: 65044781 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "43520b1b002bd615e25c415898cef7db" + network_throughput_bytes_per_sec: 96938763305 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "45bfdb58c636e6b400334106497f5f53" + network_throughput_bytes_per_sec: 762702790 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "28126f4b484edf49b2dcf198458b4937" + network_throughput_bytes_per_sec: 2463944657 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "2184b39554ab974feabcadff2e7fb123" + network_throughput_bytes_per_sec: 79986727056 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "343586e8809857f6fca34bd73bbeed71" + network_throughput_bytes_per_sec: 3131049639 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e5db97fda4f5b604f27655ea77479506" + network_throughput_bytes_per_sec: 12018338529 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "efe3f776e8fbfab41dbe68168e3aa2e7" + network_throughput_bytes_per_sec: 65628404 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "6335d98ead54a01eaf5ba646d0d77e2d" + network_throughput_bytes_per_sec: 173573193079 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "71aee88e910b8b7555921506479bc0c9" + network_throughput_bytes_per_sec: 18206710 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "edb08e654b739c98c5c485d7a96dd456" + network_throughput_bytes_per_sec: 3132546245 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e5806ec9f07cc39cc732e915835ae9bd" + network_throughput_bytes_per_sec: 7970810021 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "fcfc7148888759b910ebf6b82fb52f3d" + network_throughput_bytes_per_sec: 85305998342 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "b7fbaf6afe0c082466ed59153b00a307" + network_throughput_bytes_per_sec: 452947030 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "75dfdcaad56647e9bf10057076c42406" + network_throughput_bytes_per_sec: 36998553332 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c25a500ce3140b364a6832b1b1362e4b" + network_throughput_bytes_per_sec: 56504162737 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "aa8ffa9987c29072b26beb5ec031d86a" + network_throughput_bytes_per_sec: 41157750127 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "ad849cba863d23a00310bcc3ee950a88" + network_throughput_bytes_per_sec: 225184859 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f99414bac0801687d5d0b26afffa8232" + network_throughput_bytes_per_sec: 353194791 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "922a53422acacfe04e053f1e422ba8fd" + network_throughput_bytes_per_sec: 389863176 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "522194310113ca1bf37c3e0f09ab8db8" + network_throughput_bytes_per_sec: 376782264 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "6c8096ed8c910cfc7ac8df0127fb2d87" + network_throughput_bytes_per_sec: 1531823387 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "a976ae7da30669c0a2326985521dd531" + network_throughput_bytes_per_sec: 10420320387 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "1e2b9985be63b818f1261076e2da88b4" + network_throughput_bytes_per_sec: 90298577009 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "3dd676703d6ef499f65d3872b7be00c1" + network_throughput_bytes_per_sec: 32510897221 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f6d023ca703280822f935c8b9b234a39" + network_throughput_bytes_per_sec: 1217236255 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "33b97af27dc242fd69140fc6a5441d85" + network_throughput_bytes_per_sec: 141498760 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "af4f3c69b95e67b20c2ec30b01c7411a" + network_throughput_bytes_per_sec: 87179730207 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "063d71e21f991fc06c181d3f90af617b" + network_throughput_bytes_per_sec: 35468001623 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "dce7d2c5dcc9ed1735611e790b3ca454" + network_throughput_bytes_per_sec: 1519974951 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "5f3eaa847e85cc2e010b81fbdc9f2856" + network_throughput_bytes_per_sec: 79117658709 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "ff47ecd6d22ac749c3efe918866b3b13" + network_throughput_bytes_per_sec: 752578029 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "af1dcdb3cca467fabadbfb453250b83e" + network_throughput_bytes_per_sec: 41589657875 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "60b6ca4ca57fed5c906e82faf7a25020" + network_throughput_bytes_per_sec: 87422341013 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "549a754e6dd1d745599a351bc6375098" + network_throughput_bytes_per_sec: 184261996383 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9f256fa6769acb746028a86f3a24c32b" + network_throughput_bytes_per_sec: 34503981572 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "5b22cde9f2f97e685ff50ea81ec477f1" + network_throughput_bytes_per_sec: 14957434668 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "4e85a8b0501a8cb5bebaede38fa82634" + network_throughput_bytes_per_sec: 113421759 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "85f5b62cb98aabd24d2b37c5dd910965" + network_throughput_bytes_per_sec: 161782131 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "76ba73613bb4d3e8a47d5731f98b069d" + network_throughput_bytes_per_sec: 186972155346 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c847e212ae13666202c7fac95f296bb2" + network_throughput_bytes_per_sec: 60452336340 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c654748a7104d2a0a9f9d067a746c65d" + network_throughput_bytes_per_sec: 89262945075 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "fcc44e04fa5b43db434b13c1ff2715b0" + network_throughput_bytes_per_sec: 863770560 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9f89f8e474b2d2108395576f404592f0" + network_throughput_bytes_per_sec: 74635568 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c78e7b3217fa35a2d658c44700e18a84" + network_throughput_bytes_per_sec: 308687006959 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "7d507fb5fef893d318380fcd6940e951" + network_throughput_bytes_per_sec: 89546779677 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "1de71abe7c607c98ba5804bf7bfe52fd" + network_throughput_bytes_per_sec: 141348475912 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "f11a1d62b4764b85d44c1b9054a4ee0c" + network_throughput_bytes_per_sec: 53624497 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "815e0561d46aa81f847e03864d64d42c" + network_throughput_bytes_per_sec: 113780938 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "bfac5cabd46928be7a0f7846d91a4c68" + network_throughput_bytes_per_sec: 378505752 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "f2f94c05790a5d153abc20208696a019" + network_throughput_bytes_per_sec: 37820083587 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "ac966f268b5c7c7311f92df25cfd603b" + network_throughput_bytes_per_sec: 795726080 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "582244bd08be612bf4fddfb765ebb9b2" + network_throughput_bytes_per_sec: 793414043 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c367cbc0001b4184f03992ff46f035c8" + network_throughput_bytes_per_sec: 166755058365 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "d2c52c9c7d7442d814395a7590d04e39" + network_throughput_bytes_per_sec: 26384082631 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "55594333fcb9e1747c94f550f2123a24" + network_throughput_bytes_per_sec: 103807843185 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "fa7774e70aad1ce38ac3bf38250e0a71" + network_throughput_bytes_per_sec: 46337580268 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "95a914bf79d60997a74f1dd9115ba2cf" + network_throughput_bytes_per_sec: 142807335 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "cb2bdec86e4c8f9a34f3e9f665f1a785" + network_throughput_bytes_per_sec: 44592266556 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "65316f05eec205fc5387382135f2e6eb" + network_throughput_bytes_per_sec: 111682816098 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "cb65fce6da1bd8410e8959d7b3b9b93d" + network_throughput_bytes_per_sec: 820040541 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e4b01b4ff61fcac06330fb733e0e9d49" + network_throughput_bytes_per_sec: 19332153392 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 64 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e1b4ad01f4943d5c7e83afcac9a37b2b" + network_throughput_bytes_per_sec: 52167711 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "dee38aee4309c8a7e6c8bffa59ecf6fc" + network_throughput_bytes_per_sec: 2784618653 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f72d81e32fb5cab52e1fbd4536ece85b" + network_throughput_bytes_per_sec: 42023936076 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "71252e403a93408fba96de8bd3825ccc" + network_throughput_bytes_per_sec: 169814497737 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "15094deb985f983ccfd5b2545123a183" + network_throughput_bytes_per_sec: 69224931712 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "ed9bb4a33c886916d5e152a46eac4310" + network_throughput_bytes_per_sec: 92123567923 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c34ec0c1f1d1ba3d22754d726aa60897" + network_throughput_bytes_per_sec: 78546489634 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0b7a2190bebed5eef89ea66815a0363b" + network_throughput_bytes_per_sec: 90006152 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "99ed8a570257a0c3cc345f86a8001dfd" + network_throughput_bytes_per_sec: 93372394292 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0f61afe6ad7cda8a18c6818f6140079e" + network_throughput_bytes_per_sec: 87860907453 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "6f02e702519475f50093c2ef72dac341" + network_throughput_bytes_per_sec: 90426395090 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "16ea64590ed40dc5483002a49f0d6285" + network_throughput_bytes_per_sec: 643115088 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "b4ed48d632b88bc005d30df32b363ad9" + network_throughput_bytes_per_sec: 375229021 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "21edd922fde3970e62fbd7ba9f2ddc48" + network_throughput_bytes_per_sec: 200581232141 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f4b02e73323ebe8b582ef8eea7eed6ba" + network_throughput_bytes_per_sec: 3587868170 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "3095bedc178b27a02eb1a4143351df17" + network_throughput_bytes_per_sec: 1515143108 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0aabccd34a8a301bc3ddf7b1d46e2129" + network_throughput_bytes_per_sec: 81830897021 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "b2df91aa80c387f126f650e678c520b4" + network_throughput_bytes_per_sec: 5891505273 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "936f0c4ef7edb565c9896c0c4870960b" + network_throughput_bytes_per_sec: 93652123431 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "1cff4402d5277799435921d310e21a35" + network_throughput_bytes_per_sec: 44649348644 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f650becd3ab75fdbc10bd51f46be4d0b" + network_throughput_bytes_per_sec: 46068661384 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "c41feadc1950e49d7e9eec9400f6e9d9" + network_throughput_bytes_per_sec: 30822283174 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "07adfd421c186a489807bf49b8eb6253" + network_throughput_bytes_per_sec: 187746806793 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "b1c4513e7ed44592d1eb64d50a5cceb1" + network_throughput_bytes_per_sec: 167314971839 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "4b078f6cd0c4e1a6730911dfbea26461" + network_throughput_bytes_per_sec: 46113390975 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "34a00406559cb1523830491d95378f08" + network_throughput_bytes_per_sec: 23667750090 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f6900c72e82afa0a8c995380ea03dc9d" + network_throughput_bytes_per_sec: 386579208 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f0faf27f86b3a156830f2f3379c1a78a" + network_throughput_bytes_per_sec: 263188331 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "aefb2f182dc06d72825918161ea66565" + network_throughput_bytes_per_sec: 47598327434 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "84feeac9978d4c556ab80dddd4768654" + network_throughput_bytes_per_sec: 5294554855 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "07ffe12ee7d0bc4514d508fe7cc19f09" + network_throughput_bytes_per_sec: 91379669823 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "8f0369c1d10b99cad34e0efd03d26027" + network_throughput_bytes_per_sec: 1652529124 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "2bbf5f211c33a2ad2c630f148483dc2a" + network_throughput_bytes_per_sec: 945685425 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "fdf5fd552cc8266498cf173283d68c43" + network_throughput_bytes_per_sec: 485164347 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "3f30e55b4464b5fd1961a36ec3206917" + network_throughput_bytes_per_sec: 146131540210 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "ed7f56a0e4cc2f90edd777cc7d0902f0" + network_throughput_bytes_per_sec: 13997810706 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "910aa36c56dc61f73860235229ece2c0" + network_throughput_bytes_per_sec: 6101622326 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "8fe6f4a6145f5e93f984c0c9d228bffa" + network_throughput_bytes_per_sec: 14872574605 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "58234bff32af3126a5abb79263b6d567" + network_throughput_bytes_per_sec: 92912347619 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "5a42dd2bf4274cd2ff01caeea3ab825e" + network_throughput_bytes_per_sec: 9126941020 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "30329f9a71a703dddba37a4140cf5ebd" + network_throughput_bytes_per_sec: 41859269137 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "a76344596468a7872eadbfd9a21739c6" + network_throughput_bytes_per_sec: 5274182271 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "30bac766dc6b8bee2436ed12933994f3" + network_throughput_bytes_per_sec: 1702410640 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "eac6121ff38a66212e2843295c8e1d87" + network_throughput_bytes_per_sec: 97945122947 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "aaf348636c4e381eafbb9006118444ae" + network_throughput_bytes_per_sec: 199809751 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "ace313bb59b4ef2c1f109158e10e2bc6" + network_throughput_bytes_per_sec: 24935223057 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "6b5eb7277c0289f2b7bb2e6260cd4d46" + network_throughput_bytes_per_sec: 826681467 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 128 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "17900cdf63a9ee0ed1755baffe233181" + network_throughput_bytes_per_sec: 125844905 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "abcc51b30fadae6e7deab4c52594727a" + network_throughput_bytes_per_sec: 27007068 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "00ea231f198010898c495c8f3aa69249" + network_throughput_bytes_per_sec: 27310308 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0d8ff69f1887cddd6d6c7a7cb6e757ad" + network_throughput_bytes_per_sec: 124165304914 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "b48e2044f7d3c623aadb3f9db7443ff5" + network_throughput_bytes_per_sec: 468515870 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0b37b4cf262c1d9b92406e50696e59c4" + network_throughput_bytes_per_sec: 46058697 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "8e275b21c1aefcc7d9d9fdd8dadee7e3" + network_throughput_bytes_per_sec: 254636210481 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "3a8645893cd88d826c0847a7ccfb1379" + network_throughput_bytes_per_sec: 10533529556 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "7d24ed151e4cd5c7633745a7ba79ff0b" + network_throughput_bytes_per_sec: 137790356359 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "df69c417ad310e1b1bb927730e2f10c0" + network_throughput_bytes_per_sec: 881476300 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "d4331b2f624a701455e129bb32031a61" + network_throughput_bytes_per_sec: 776088295 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "55ff80ff4a9a3beb6c7fbde2910fd13c" + network_throughput_bytes_per_sec: 2891698104 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "92c147798a31c7520d2ee0ded8ad804a" + network_throughput_bytes_per_sec: 355554952740 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9336904dbf1c1d1c5b645493ee702e0f" + network_throughput_bytes_per_sec: 1519745843 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "82f362e9d321c948d13b3b80b6127e69" + network_throughput_bytes_per_sec: 92037401198 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "8a1da081231362bd028addc1b51d9c9b" + network_throughput_bytes_per_sec: 24500512580 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e8636d435d0fae43c0c2a9e79a42691f" + network_throughput_bytes_per_sec: 89546779677 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "23433bd8d9f0851f4d638a12a250765c" + network_throughput_bytes_per_sec: 12382220962 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "258669441dfeae8366b3ddc732953015" + network_throughput_bytes_per_sec: 276364617 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c06280b5ee6c4fa8a084614ad718f48d" + network_throughput_bytes_per_sec: 38465737344 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "709c979785595ebfd212c19fbb0201e6" + network_throughput_bytes_per_sec: 121219155515 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "aa54856c98f8ee17f5ae47bd848f98ac" + network_throughput_bytes_per_sec: 86385982346 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "473de5e2e2797b06e199daa05c708a59" + network_throughput_bytes_per_sec: 68444350160 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "7442c7f9a88e07c2359930d71b9cb4f7" + network_throughput_bytes_per_sec: 48099922094 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "8ced1638c13ee23a87f2ed048b266463" + network_throughput_bytes_per_sec: 1513463581 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e0693614b2f73e7073f66010f736214a" + network_throughput_bytes_per_sec: 182192960570 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f33c96d99b16c475e9426acbf66dd505" + network_throughput_bytes_per_sec: 342760280811 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "3a85682307cc04bdf2d54b6e969ddf03" + network_throughput_bytes_per_sec: 19673464792 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "dc56556d1adadef6f24e57a9b7767495" + network_throughput_bytes_per_sec: 109885982 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "ba06c43b0e9a16e6f70a35cf45d16045" + network_throughput_bytes_per_sec: 32637958135 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "fa424be17588fdb480397be00ca54b0c" + network_throughput_bytes_per_sec: 121004431 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "17aeda778598e4f09df04f7f7aa4003a" + network_throughput_bytes_per_sec: 10420320387 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "49b9e194815f26ce0fdea12d8d8145da" + network_throughput_bytes_per_sec: 160772140981 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c6c8164390d18c7b8227ed85b0d93966" + network_throughput_bytes_per_sec: 85033393055 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9a2fa6100fdf7452201647b34f24d846" + network_throughput_bytes_per_sec: 336486903939 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 128 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "feace905f214b6dc5980b277dfb00077" + network_throughput_bytes_per_sec: 82196179 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "94b441a1f24803f223f997cfc3551595" + network_throughput_bytes_per_sec: 367123353018 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "89bf703c6da6a800c76bc44e3eeb91c1" + network_throughput_bytes_per_sec: 229046745303 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0b17520ef1c4f5cd7dea5e25a264eb0f" + network_throughput_bytes_per_sec: 172314449665 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "971ba4331155d73cf505b7046e927999" + network_throughput_bytes_per_sec: 137484356305 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "e747471da878022b0e610cf02be16904" + network_throughput_bytes_per_sec: 14362959 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0ac522248afbce29ceb2768f3938161e" + network_throughput_bytes_per_sec: 27078485 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "85e994016d8e47f32a5448d4032a348e" + network_throughput_bytes_per_sec: 207613158 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "8e977f1d0af1a26d296c1aaa638dd4e2" + network_throughput_bytes_per_sec: 139789164958 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "a41f12bbaed25af2cec9dd82edd3f358" + network_throughput_bytes_per_sec: 298191377142 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0f9fab80196b5ca3a20c8b4d82429ffc" + network_throughput_bytes_per_sec: 172995098260 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "ceb6ede44fdcea933bdbf9fb08da4047" + network_throughput_bytes_per_sec: 51046859 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "222e31563730a12c12652876f75aa032" + network_throughput_bytes_per_sec: 101959661 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "036547934bd0d0bb72c94bb8ac62df03" + network_throughput_bytes_per_sec: 286033519 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "b195ecd43415c6e2133f67d283c70392" + network_throughput_bytes_per_sec: 391488751 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "aba5522f4f72600896d0d38c2bace66e" + network_throughput_bytes_per_sec: 5010589089 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "ef6169f1bb54bc4a3a7a051048934504" + network_throughput_bytes_per_sec: 163127908446 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "de1e3e1a4c273794678bc61b5d653b96" + network_throughput_bytes_per_sec: 5140481606 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9a00b4aca393f1e9d49eb3b5f09fc1c0" + network_throughput_bytes_per_sec: 169777980731 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "bbc9ee9d4267db9c368730cb88915520" + network_throughput_bytes_per_sec: 94286830845 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 536870912 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0b4253423ad3baa463934639904af66a" + network_throughput_bytes_per_sec: 47650042817 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "29a32f0bb7a1457842de5659e9e37786" + network_throughput_bytes_per_sec: 25763142457 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "cf9f897c04f74b0a135ecb4c11a26855" + network_throughput_bytes_per_sec: 79140797765 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "04daaa08891c88599cf6b5e5432743e1" + network_throughput_bytes_per_sec: 38546159678 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "75cdf6eabbbdac74bc5568d6d46578eb" + network_throughput_bytes_per_sec: 211477398 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "70348095a69033348d06a2ac297b5377" + network_throughput_bytes_per_sec: 2905866181 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "b2fae3c053c9425aa7b2455cd42ed715" + network_throughput_bytes_per_sec: 86437276207 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9c3c4a224e66a397bfac9accf9cc1a7f" + network_throughput_bytes_per_sec: 89635407052 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "34029e7be9d63c46e84a59f187976494" + network_throughput_bytes_per_sec: 178430718999 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "56d105d61538ea5d57669499dbb0cd31" + network_throughput_bytes_per_sec: 511233150 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "be83c13222556564f80565d69e4c5314" + network_throughput_bytes_per_sec: 16864235454 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "5b3a40da645053c4c49583b44ff21960" + network_throughput_bytes_per_sec: 349824027481 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "6ce7f2d96c09502b579b2cc31a252a14" + network_throughput_bytes_per_sec: 18657271983 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "32d57fabcd45bb4420ad3804d58b6daa" + network_throughput_bytes_per_sec: 13229546 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "d2314470d36c1fb289de20e57d81e109" + network_throughput_bytes_per_sec: 38864396806 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "4951da2d8f297b24121287ac7e845ede" + network_throughput_bytes_per_sec: 34151547 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "d1a6a800b1ee86a32a33db83fcf204e3" + network_throughput_bytes_per_sec: 16730904855 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "b00e61bfb66f71c42590fb44fafcd46c" + network_throughput_bytes_per_sec: 74682240660 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "8fc7520997c9861590d3a11efee5e464" + network_throughput_bytes_per_sec: 3290125006 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "7fd67d96daadd70a6f60920d4dcc86e5" + network_throughput_bytes_per_sec: 128780733 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 64 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f2247e58f9dfdee0211213f74e5f7feb" + network_throughput_bytes_per_sec: 84086056 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "d32b95bcb7f76a67d13b3caf116bf903" + network_throughput_bytes_per_sec: 260011096474 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "bd7b374fb5b1baf0fcab53db4ed3a18a" + network_throughput_bytes_per_sec: 88766342555 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "36827cb7d9d81ad5d39c6724b093541c" + network_throughput_bytes_per_sec: 1238912624 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "1f8995887b89b71a8635d44959d3c644" + network_throughput_bytes_per_sec: 56382632074 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "fb36e95d966ca073a983033d1cd853ee" + network_throughput_bytes_per_sec: 7072116 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e6875d068a859fc9c823bbaa445bd205" + network_throughput_bytes_per_sec: 94213912089 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "2898f1b237631f585973476ece15eb4c" + network_throughput_bytes_per_sec: 171205034957 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "1841b260ab4a40af1b8ba495043826c7" + network_throughput_bytes_per_sec: 6809642560 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "52cb2f8abd5ba59c1eb59484cbdf0163" + network_throughput_bytes_per_sec: 1023136728 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f8236051598e374faf860e419eeb4ff9" + network_throughput_bytes_per_sec: 39871325905 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e45ba4475adc9a853d150aca5d1333d1" + network_throughput_bytes_per_sec: 2456371814 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e062c8ee9e86b399c11f6e70eeea5ab8" + network_throughput_bytes_per_sec: 67724342827 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "4ca4e3406755d17f747a07b8511cb33a" + network_throughput_bytes_per_sec: 11128249483 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "199effc00a48df62ad8aac2557ced496" + network_throughput_bytes_per_sec: 19681219264 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "6f2128c1096979ddb9bb3d2d1ecbc018" + network_throughput_bytes_per_sec: 408588742 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f53f76968e917ef5f386872467c6ef38" + network_throughput_bytes_per_sec: 92277571674 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 128 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "26a483ffc11467c6c27c00096a99950b" + network_throughput_bytes_per_sec: 105741429 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "60532c3a26ca6a8fe1410171835f3cdc" + network_throughput_bytes_per_sec: 47651402539 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "048fd4ebffa26a0f555a13d497fffb5c" + network_throughput_bytes_per_sec: 21904658449 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "b497a392f67a4f5b4072540892de137a" + network_throughput_bytes_per_sec: 86015611501 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9a97c97d215983128682ba3ef92d46a0" + network_throughput_bytes_per_sec: 182448425366 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "2e50b732eb8b42bf4094cc1128021ee0" + network_throughput_bytes_per_sec: 138172986 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 536870912 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "15a31184e19613f6aefe5aa0d66bf174" + network_throughput_bytes_per_sec: 92391274239 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "a16a4afaeeda93a334f1127435c9c469" + network_throughput_bytes_per_sec: 25942008906 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "96db7ac42e083786dd2e2ace91847307" + network_throughput_bytes_per_sec: 91569817880 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "3f17d3795d2154a17d98923926faec1e" + network_throughput_bytes_per_sec: 569640497 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "4d3e5e4cd088394f4ad45e10894ef7ff" + network_throughput_bytes_per_sec: 30733907 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "173b0bc7740214cfc9963e19610cf098" + network_throughput_bytes_per_sec: 16661121306 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "8347a8a2df0cb35df36c10079023ab76" + network_throughput_bytes_per_sec: 5578837600 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "b97f24bb846a88481c2900cac902f6f1" + network_throughput_bytes_per_sec: 422943879 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "ab056536331bdda05cf9fb4e4e83c9ac" + network_throughput_bytes_per_sec: 95852689162 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "bc9fc8450274035530c5644ee6a0cbc1" + network_throughput_bytes_per_sec: 203275434 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9eba46fe48d732fc74500cac8fb7c3fe" + network_throughput_bytes_per_sec: 42155080052 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "a7d84fd4843073d498edbcd00f7ab6a4" + network_throughput_bytes_per_sec: 50493096 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "68ae89524d1d819c91d1823b6f3d6537" + network_throughput_bytes_per_sec: 754557962 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "94a2bd79958b89a1cd906d3f4f29d6e0" + network_throughput_bytes_per_sec: 2997592951 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c66e53fff207188081e98dfa77807537" + network_throughput_bytes_per_sec: 356192581318 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e258bb39ba3efefc2c6bba1c0f94e170" + network_throughput_bytes_per_sec: 94968957319 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "289bd78c54fef174d38cd7d0d2af0ed2" + network_throughput_bytes_per_sec: 70792927971 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f97af309039c11855739ecdeec9bbc9c" + network_throughput_bytes_per_sec: 2945041118 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c33b5cae9b992934b5065b3df33efc63" + network_throughput_bytes_per_sec: 97634203974 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "11b7ac8b9606f69c06dc08e59b9a053c" + network_throughput_bytes_per_sec: 10915389740 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "66a1b5078d8f0097738c1d90c3e06c06" + network_throughput_bytes_per_sec: 3026787363 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "6dd504ab26947845d5c80bfc9586dd68" + network_throughput_bytes_per_sec: 46876285653 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "a1b2a20ae014e046611855ab2efdfda5" + network_throughput_bytes_per_sec: 91083436201 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "6011d5117ac63690f82029dc8471949a" + network_throughput_bytes_per_sec: 9840609632 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "dec343e95dd864ed86b8292ac32fc83d" + network_throughput_bytes_per_sec: 206462019 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "7bf42174397e4f9e9e4164a352814b3d" + network_throughput_bytes_per_sec: 26805460401 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "9ce58729ac6905e5deb36d1567798b01" + network_throughput_bytes_per_sec: 47981800783 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "1a63b72a7b77dfd3dbe86f522952c68a" + network_throughput_bytes_per_sec: 220363147 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "30502fd073c5c5ea768072632ec9c21b" + network_throughput_bytes_per_sec: 1322009965 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "49ee5c79563a6427d9cb86a3e99e129a" + network_throughput_bytes_per_sec: 43191295432 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "cfcef6f6eec1f07ea7bf67c6f7a8ae9a" + network_throughput_bytes_per_sec: 361886733898 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0eba5f28aff574f84c270f76a1796685" + network_throughput_bytes_per_sec: 52816174 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "df795aac25ae021df12f1fc1c95816a9" + network_throughput_bytes_per_sec: 17697485232 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "aa25b0c2ebe85af31775495126132917" + network_throughput_bytes_per_sec: 56534627308 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9673d884e9031593a3e8c06b1d1286f0" + network_throughput_bytes_per_sec: 1210044313 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 512 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c4bc78586046f9edb53d96b66049914a" + network_throughput_bytes_per_sec: 52382535 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "24af6415e6f60b5a9f415abb5457248e" + network_throughput_bytes_per_sec: 217676726263 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "24684b883922432b7bb22b93bef42919" + network_throughput_bytes_per_sec: 6365808644 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "12b21848edee6fc36f0071df662c6159" + network_throughput_bytes_per_sec: 269375036126 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e45127722646074a5d9b4c24ebc6b49a" + network_throughput_bytes_per_sec: 1426308000 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e8ee4f3c9505eedcf86568c849ec03be" + network_throughput_bytes_per_sec: 1956882651 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0dcf986269bf50a46e4297b6dc978284" + network_throughput_bytes_per_sec: 86742791184 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 4 + } + source_target_pairs { + source: 1 + target: 5 + } + source_target_pairs { + source: 2 + target: 6 + } + source_target_pairs { + source: 3 + target: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "38b551890d391b77a1f157e4b7184870" + network_throughput_bytes_per_sec: 6772889 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 1024 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "2c386b081607aab3778a5f87110bb32f" + network_throughput_bytes_per_sec: 373177842 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 32 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "5ad37bd1731c84de4e1fad9d11683e93" + network_throughput_bytes_per_sec: 44340521 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "318caa16d4196637a0b49daf3312b6ca" + network_throughput_bytes_per_sec: 92429576863 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "026c7aca115d50e9a725ad9cc129a53e" + network_throughput_bytes_per_sec: 47721549184 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "5ea2cbe7f5e685aaa702c3ac87eb2424" + network_throughput_bytes_per_sec: 335524293393 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f5c609ce87a73de10f144d4057f242ed" + network_throughput_bytes_per_sec: 18298158973 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "425885911c59969621fc807b50dc017d" + network_throughput_bytes_per_sec: 79758573805 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 4194304 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "7c944feb506c3fd2ab7c35af07f3d758" + network_throughput_bytes_per_sec: 154771365313 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "173319bd44c6e326a43edec16eff8d2e" + network_throughput_bytes_per_sec: 5634112792 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "d941f2611b4071dac72664214a7d5d29" + network_throughput_bytes_per_sec: 361213627823 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "b4d98a0368b1e111b67f10765613016d" + network_throughput_bytes_per_sec: 25964805 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "44c3eecf750fab00b51b9c70c0fd2290" + network_throughput_bytes_per_sec: 7776676851 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c2aa34383cf2e341115876c717901bc4" + network_throughput_bytes_per_sec: 5593240590 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "58314732912345548ae7796528670d53" + network_throughput_bytes_per_sec: 53966810 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "512c78e43dde94eab5be4e2a23d40c2c" + network_throughput_bytes_per_sec: 611343283 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9324434db5366a8bec594bb1549c6777" + network_throughput_bytes_per_sec: 186095275267 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "9885b3b7a489530a5723707a6c245d21" + network_throughput_bytes_per_sec: 94483080910 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "20c467af3cb33d4f6820f682bdd18097" + network_throughput_bytes_per_sec: 90652373130 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "c389be608049d2735a7f0f2da2adad8c" + network_throughput_bytes_per_sec: 174005922161 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 16777216 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "daa2296a0f8546b3da95ed15254e621b" + network_throughput_bytes_per_sec: 172527447779 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "041681439796b2c7e6a1130c7a70276e" + network_throughput_bytes_per_sec: 6576948165 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 65536 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e4c3db92efad6de5e5840e659c4c13ad" + network_throughput_bytes_per_sec: 37991884057 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "847322655433140629869e9781d50b4f" + network_throughput_bytes_per_sec: 48608195809 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "b2859bcf4713290fc071dba2107dd573" + network_throughput_bytes_per_sec: 32760833567 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "ff59d8600ca5d7625580430f6114aecd" + network_throughput_bytes_per_sec: 166326780279 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 16384 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "49048b9110f13a6c745074a7a718894f" + network_throughput_bytes_per_sec: 4079935254 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "4c4aa30c982edd7cb519d3e0f5f1a555" + network_throughput_bytes_per_sec: 175292881985 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "4ebf30811a22fe550c8a474736c86ebd" + network_throughput_bytes_per_sec: 122138699203 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "219e6eafb24f19ca46f775efb9e79f4a" + network_throughput_bytes_per_sec: 47802660212 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "6482bf31e7c22102c12db681032fb503" + network_throughput_bytes_per_sec: 663400413 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + target: 2 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 4 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 6 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "e1112f0402903c243e8cc21c4f38b20e" + network_throughput_bytes_per_sec: 54521011 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "7534416b2a6d3452a3adf39b30eb8258" + network_throughput_bytes_per_sec: 8748631691 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "eebcf31aeb46f251deb8c25cfb0f09fc" + network_throughput_bytes_per_sec: 34261591243 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "8ee9101aaefcb090d2a2098aa6d87667" + network_throughput_bytes_per_sec: 91237545204 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "2955d362c4784f9a6295fd859f6bf6dd" + network_throughput_bytes_per_sec: 17680178053 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "082a66d9bce9594529e3b56a01f55f6c" + network_throughput_bytes_per_sec: 32431021418 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "8c69870b341e765e470f58443bad0c5d" + network_throughput_bytes_per_sec: 96991582647 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "a931cd9a10313d6131a6be303bf5d394" + network_throughput_bytes_per_sec: 6092971364 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 134217728 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "a72278a0ffa1250acd42babc5e4a2c7a" + network_throughput_bytes_per_sec: 174570224588 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "6fc32835aa0f0e4084c95aec9cc07042" + network_throughput_bytes_per_sec: 368295643 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 4096 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "bd1b66688dfceaa021489d8ae3cf3eda" + network_throughput_bytes_per_sec: 933774079 + } + entries { + instruction { + name: "_" + opcode: "all-to-all" + shape { + element_type: F32 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "d46bc24d789e134da2ba22676a05d2a5" + network_throughput_bytes_per_sec: 61337272049 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 256 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "87a721da93ba6a8f0a6509223c6879d3" + network_throughput_bytes_per_sec: 80006250 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "0b11a13cda5a5f4706404093723fd1b0" + network_throughput_bytes_per_sec: 83938541588 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "34af34ffe43466899ab24789bd5af0c9" + network_throughput_bytes_per_sec: 81182859 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 8388608 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "417426246287e26b23b3f3fbb2db6735" + network_throughput_bytes_per_sec: 350358804082 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "421633cbe081af3cd0ad351606175269" + network_throughput_bytes_per_sec: 47763854948 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "71984575aa654cfc93c69a828b619b03" + network_throughput_bytes_per_sec: 24485708948 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 33554432 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "beaf14cc7bbcb59673df046c2e6aba77" + network_throughput_bytes_per_sec: 44158761033 + } + entries { + instruction { + name: "collective-permute" + opcode: "collective-permute" + shape { + element_type: F32 + dimensions: 268435456 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967299 + operand_ids: 4294967298 + source_target_pairs { + target: 1 + } + source_target_pairs { + source: 1 + } + source_target_pairs { + source: 2 + target: 3 + } + source_target_pairs { + source: 3 + target: 2 + } + source_target_pairs { + source: 4 + target: 5 + } + source_target_pairs { + source: 5 + target: 4 + } + source_target_pairs { + source: 6 + target: 7 + } + source_target_pairs { + source: 7 + target: 6 + } + frontend_attributes { + } + statistics_viz { + } + } + fingerprint: "e00ef2e375e79ce3a18a56da684651bd" + network_throughput_bytes_per_sec: 46443383948 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 524288 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "617df37ce5fbbeb886ad387486913bd2" + network_throughput_bytes_per_sec: 62734511950 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "76925d8a3b4a506d081fd885b24126eb" + network_throughput_bytes_per_sec: 27860984164 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 1048576 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "bcdb32b92ed02a87807bb1839f3142cf" + network_throughput_bytes_per_sec: 34033073140 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 32768 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "1ff7a5b620524694d519cb4f1cc2c428" + network_throughput_bytes_per_sec: 35564238230 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "4526400ba6777f813b834e26ba34cbf0" + network_throughput_bytes_per_sec: 150166624897 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "b21eaf2dedc72a5542590064bb4f26bb" + network_throughput_bytes_per_sec: 1484595868 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 67108864 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "158a817bc197fa5908085609188b9810" + network_throughput_bytes_per_sec: 177174009550 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: BF16 + dimensions: 8192 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "650508cd9199d62c5d16ff3e25f0dd9f" + network_throughput_bytes_per_sec: 3970675552 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: BF16 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "e6ae5e4e282b8bdb0243f76430a739a4" + network_throughput_bytes_per_sec: 5313873347 + } + entries { + instruction { + name: "_" + opcode: "reduce-scatter" + shape { + element_type: F32 + dimensions: 131072 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "4d2170351e894746020dfac2fcac1a4d" + network_throughput_bytes_per_sec: 96411916145 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 2097152 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 2 + num_devices_per_group: 4 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "f950cb6fec3ae1196c4e2b9969e4649f" + network_throughput_bytes_per_sec: 122892001171 + } + entries { + instruction { + name: "_" + opcode: "all-reduce" + shape { + element_type: F32 + dimensions: 2048 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + channel_id: 1 + id: 4294967297 + operand_ids: 4294967296 + called_computation_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 1 + num_devices_per_group: 8 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "7db0a796043ec024eff5d858a1fb8cee" + network_throughput_bytes_per_sec: 197392833 + } + entries { + instruction { + name: "_" + opcode: "all-gather" + shape { + element_type: F32 + dimensions: 262144 + layout { + minor_to_major: 0 + tail_padding_alignment_in_elements: 1 + } + is_dynamic_dimension: false + } + metadata { + } + dimensions: 0 + channel_id: 1 + id: 1 + operand_ids: 0 + frontend_attributes { + } + use_global_device_ids: true + statistics_viz { + } + iota_collective_device_list { + num_replica_groups: 4 + num_devices_per_group: 2 + iota_reshape_dims: 8 + iota_transpose_perm: 0 + } + } + fingerprint: "8b64b5d8f00d6d6ee4305d45a2ba83df" + network_throughput_bytes_per_sec: 40835579094 + } + } +} entries { key: "gfx950" value { diff --git a/third_party/xla/xla/service/gpu/model/default_matmul_perf_table.txtpb b/third_party/xla/xla/service/gpu/model/default_matmul_perf_table.txtpb index 0f39fab486d86d..d32187a924f084 100644 --- a/third_party/xla/xla/service/gpu/model/default_matmul_perf_table.txtpb +++ b/third_party/xla/xla/service/gpu/model/default_matmul_perf_table.txtpb @@ -8275,6 +8275,8261 @@ entries { } } } +entries { + key: "gfx942" + value { + entries { + b: 1 + m: 256 + n: 256 + k: 256 + flops { key: "bf16xbf16->bf16" value: 9103209983722 } + flops { key: "bf16xbf16->f32" value: 8957403096636 } + flops { key: "f16xf16->f16" value: 10947612398042 } + flops { key: "f16xf16->f32" value: 8546722363728 } + flops { key: "f32xf32->f32" value: 8015870043000 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 9103209983722 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 9305166943982 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 9253842250413 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 9005483628556 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 9056526855600 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 9628244476327 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 9740038316400 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 7939998106956 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 4898457226277 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 8376043934098 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 8212048947626 } + } + entries { + b: 1 + m: 256 + n: 512 + k: 256 + flops { key: "bf16xbf16->bf16" value: 16424097895252 } + flops { key: "bf16xbf16->f32" value: 16031740086000 } + flops { key: "f16xf16->f16" value: 15512913546000 } + flops { key: "f16xf16->f32" value: 16752087868197 } + flops { key: "f32xf32->f32" value: 14824136072454 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 15300698586411 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 15227788518266 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 16586471576866 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 16752087868197 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 14758932043105 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 18010967257112 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 15805196420160 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 15509328403050 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 17449002600104 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 17637020762155 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 16108704752760 } + } + entries { + b: 1 + m: 256 + n: 1024 + k: 256 + flops { key: "bf16xbf16->bf16" value: 22714118801827 } + flops { key: "bf16xbf16->f32" value: 28037962815959 } + flops { key: "f16xf16->f16" value: 29779837585977 } + flops { key: "f16xf16->f32" value: 27690886734062 } + flops { key: "f32xf32->f32" value: 23346273786745 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 27235740259740 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 29517864086210 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 28274221192332 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 24192092285508 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 26379270440251 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 32529745031507 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 27464237364436 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 26379270440251 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 28508438402718 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 33172943153732 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 26588297939778 } + } + entries { + b: 1 + m: 256 + n: 2048 + k: 256 + flops { key: "bf16xbf16->bf16" value: 38623806618705 } + flops { key: "bf16xbf16->f32" value: 42140573940345 } + flops { key: "f16xf16->f16" value: 42949672960000 } + flops { key: "f16xf16->f32" value: 38623806618705 } + flops { key: "f32xf32->f32" value: 40494110122190 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 44524043124896 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 38402783404864 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 40488002413273 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 39187657810218 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 39768215703703 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 49820982925018 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 50193615557217 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 42008678560250 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 41361395377503 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 43797594387338 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 42676543084260 } + } + entries { + b: 1 + m: 256 + n: 4096 + k: 256 + flops { key: "bf16xbf16->bf16" value: 70344721174004 } + flops { key: "bf16xbf16->f32" value: 65209633426454 } + flops { key: "f16xf16->f16" value: 62332626494833 } + flops { key: "f16xf16->f32" value: 68548379979570 } + flops { key: "f32xf32->f32" value: 51647033381433 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 71668790815645 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 74451658854527 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 72053538048584 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 71089898305084 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 72043869028448 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 81965024732824 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 64582089738963 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 75286903940541 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 75711593851360 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 74866951889555 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 73433307618656 } + } + entries { + b: 1 + m: 256 + n: 256 + k: 512 + flops { key: "bf16xbf16->bf16" value: 18610333887964 } + flops { key: "bf16xbf16->f32" value: 22943201367521 } + flops { key: "f16xf16->f16" value: 16752087868197 } + flops { key: "f16xf16->f32" value: 20554016539050 } + flops { key: "f32xf32->f32" value: 14257247503717 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 17540215368531 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 17725531959852 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 17540215368531 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 19367637518037 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 17358733574754 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 17632386757750 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 17819666489644 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 16186411963338 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 16921044881492 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 17914806193272 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 16836142498745 } + } + entries { + b: 1 + m: 256 + n: 512 + k: 512 + flops { key: "bf16xbf16->bf16" value: 29779837585977 } + flops { key: "bf16xbf16->f32" value: 31454822591985 } + flops { key: "f16xf16->f16" value: 32680235695154 } + flops { key: "f16xf16->f32" value: 32209677945764 } + flops { key: "f32xf32->f32" value: 25870803392444 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 29260459559625 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 27799860811930 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 30462489332728 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 30594421700478 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 34361937532002 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 34717467149508 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 31602949846950 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 31162695147434 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 28514495007435 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 31308077443433 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 34186889454915 } + } + entries { + b: 1 + m: 256 + n: 1024 + k: 512 + flops { key: "bf16xbf16->bf16" value: 41624353543184 } + flops { key: "bf16xbf16->f32" value: 39417834948604 } + flops { key: "f16xf16->f16" value: 38735275036075 } + flops { key: "f16xf16->f32" value: 41234325038402 } + flops { key: "f32xf32->f32" value: 29007505511130 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 39181937819296 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 38729686336747 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 36026769024292 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 42541276703645 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 37962870315372 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 38397290230296 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 38847388712011 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 41624353543184 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 41747349300155 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 42956546007361 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 34993541389649 } + } + entries { + b: 1 + m: 256 + n: 2048 + k: 512 + flops { key: "bf16xbf16->bf16" value: 62917017696003 } + flops { key: "bf16xbf16->f32" value: 61901408047964 } + flops { key: "f16xf16->f16" value: 66675473422752 } + flops { key: "f16xf16->f32" value: 62623458765892 } + flops { key: "f32xf32->f32" value: 51941845201238 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 59692118301089 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 63663098778607 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 61476114966220 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 58906178626289 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 60642822997853 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 64902189555125 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 61617228509124 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 62188221012394 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 55836808320332 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 64119301564552 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 63362553050867 } + } + entries { + b: 1 + m: 256 + n: 4096 + k: 512 + flops { key: "bf16xbf16->bf16" value: 95384367415830 } + flops { key: "bf16xbf16->f32" value: 91320107501275 } + flops { key: "f16xf16->f16" value: 96585573805882 } + flops { key: "f16xf16->f32" value: 91320107501275 } + flops { key: "f32xf32->f32" value: 63142712378712 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 108294687241553 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 80732467969924 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 114789589908060 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 113816178079287 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 81221015431164 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 117812357252578 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 106574870868486 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 117297555604107 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 80369897005988 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 113563386991010 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 110535497632283 } + } + entries { + b: 1 + m: 256 + n: 256 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 29786446515756 } + flops { key: "bf16xbf16->f32" value: 27577096363262 } + flops { key: "f16xf16->f16" value: 42676543084260 } + flops { key: "f16xf16->f32" value: 27805620053863 } + flops { key: "f32xf32->f32" value: 25003302533532 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 25870803392444 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 26071819735819 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 26908125100240 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 26488598381685 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 28882661502044 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 25575024390243 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 23592499208999 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 33172943153732 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 35264773515501 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 35274041524310 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 33172943153732 } + } + entries { + b: 1 + m: 256 + n: 512 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 54693450692746 } + flops { key: "bf16xbf16->f32" value: 54917237315875 } + flops { key: "f16xf16->f16" value: 54693450692746 } + flops { key: "f16xf16->f32" value: 50571864355689 } + flops { key: "f32xf32->f32" value: 45737852445050 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 47184998417999 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 48735558460421 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 47359819336626 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 48913166180758 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 56075925631919 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 52551968676585 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 45274996795412 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 49453842299189 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 49092073152889 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 48210390804597 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 49820982925018 } + } + entries { + b: 1 + m: 256 + n: 1024 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 87580899184339 } + flops { key: "bf16xbf16->f32" value: 76357689091167 } + flops { key: "f16xf16->f16" value: 75498651666432 } + flops { key: "f16xf16->f32" value: 82216066156202 } + flops { key: "f32xf32->f32" value: 66841498007968 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 77236500071932 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 87027218674015 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 77683535233685 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 77920306531204 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 82978502627511 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 86731972859450 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 73837286755604 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 85082553407290 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 80249762630792 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 75498651666432 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 79067881001472 } + } + entries { + b: 1 + m: 256 + n: 2048 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 90549993590824 } + flops { key: "bf16xbf16->f32" value: 92747846937894 } + flops { key: "f16xf16->f16" value: 93393217708967 } + flops { key: "f16xf16->f32" value: 96239295868064 } + flops { key: "f32xf32->f32" value: 60849020967924 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 81467513201820 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 98725802133137 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 84420302225017 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 80860141878153 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 110308385453051 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 84553258051815 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 80369897005988 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 82729164342399 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 111453375960141 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 84820430049766 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 83242253197922 } + } + entries { + b: 1 + m: 256 + n: 4096 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 156067125581395 } + flops { key: "bf16xbf16->f32" value: 155165003468208 } + flops { key: "f16xf16->f16" value: 148707405858320 } + flops { key: "f16xf16->f32" value: 149535801685119 } + flops { key: "f32xf32->f32" value: 87168519564864 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 145080640994460 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 292931884872459 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 140523730401779 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 141440008430481 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 264729246548323 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 140330892504737 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 140698660027517 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 145671119793786 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 262144000000000 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 140147728773738 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 140514535627821 } + } + entries { + b: 1 + m: 256 + n: 256 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 43094470380478 } + flops { key: "bf16xbf16->f32" value: 50006605067064 } + flops { key: "f16xf16->f16" value: 53612034351907 } + flops { key: "f16xf16->f32" value: 48201733884000 } + flops { key: "f32xf32->f32" value: 41747349300155 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 54928474728872 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 55611240107727 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 48735558460421 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 58266866941610 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 47359819336626 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 47857988233196 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 54043780148983 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 51941845201238 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 50193615557217 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 49083096727006 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 51345726090283 } + } + entries { + b: 1 + m: 256 + n: 512 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 77014906326208 } + flops { key: "bf16xbf16->f32" value: 77470550072150 } + flops { key: "f16xf16->f16" value: 75286903940541 } + flops { key: "f16xf16->f32" value: 69086464032942 } + flops { key: "f32xf32->f32" value: 69624032161846 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 81715511719939 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 78604818740849 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 75498651666432 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 80249762630792 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 80976004826546 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 80490391604197 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 85096039308923 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 74451658854527 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 84813730173775 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 79998645805394 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 81221015431164 } + } + entries { + b: 1 + m: 256 + n: 1024 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 120740112897784 } + flops { key: "bf16xbf16->f32" value: 126129663338423 } + flops { key: "f16xf16->f16" value: 127948263107721 } + flops { key: "f16xf16->f32" value: 128854173046921 } + flops { key: "f32xf32->f32" value: 103693078126508 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 105735285475135 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 109856949457745 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 105735285475135 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 111210960538581 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 117041838238500 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 113816178079287 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 106574870868486 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 111453375960141 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 111441808406850 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 111453375960141 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 111685232369461 } + } + entries { + b: 1 + m: 256 + n: 2048 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 208980502919423 } + flops { key: "bf16xbf16->f32" value: 211034163522012 } + flops { key: "f16xf16->f16" value: 202287457422758 } + flops { key: "f16xf16->f32" value: 204211073411943 } + flops { key: "f32xf32->f32" value: 142387193210449 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 357377874521551 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 350380755098711 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 338239667349188 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 225244771134885 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 217027149873673 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 217027149873673 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 234083676477000 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 363425900829243 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 344700425040128 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 368476947151681 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 376223484232655 } + } + entries { + b: 1 + m: 256 + n: 4096 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 194580133919267 } + flops { key: "bf16xbf16->f32" value: 194580133919267 } + flops { key: "f16xf16->f16" value: 194756599827687 } + flops { key: "f16xf16->f32" value: 191962424957540 } + flops { key: "f32xf32->f32" value: 98271760576593 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 362811902010474 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 360982290805177 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 369046854786045 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 400799486375513 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 376190531312954 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 155383933142795 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 392019650967506 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 370959344964588 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 399308971364819 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 160021136214605 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 369682156653468 } + } + entries { + b: 1 + m: 256 + n: 256 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 80976004826546 } + flops { key: "bf16xbf16->f32" value: 77014906326208 } + flops { key: "f16xf16->f16" value: 78593311667398 } + flops { key: "f16xf16->f32" value: 75711593851360 } + flops { key: "f32xf32->f32" value: 61617228509124 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 80249762630792 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 88753663746073 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 87296083252032 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 88753663746073 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 85096039308923 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 78604818740849 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 95038221278102 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 85899345920000 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 89642830522624 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 89048086249792 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 87027218674015 } + } + entries { + b: 1 + m: 256 + n: 512 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 114057980029742 } + flops { key: "bf16xbf16->f32" value: 146067449870765 } + flops { key: "f16xf16->f16" value: 151423187702721 } + flops { key: "f16xf16->f32" value: 156750631240875 } + flops { key: "f32xf32->f32" value: 104898576006252 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 119119350343909 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 105943939220522 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 107643290626566 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 124088966138911 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 113816178079287 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 121560265368504 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 118855636927164 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 119119350343909 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 106999683507722 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 82729164342399 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 118593088579633 } + } + entries { + b: 1 + m: 256 + n: 1024 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 220594108680020 } + flops { key: "bf16xbf16->f32" value: 206171625192012 } + flops { key: "f16xf16->f16" value: 201528120120120 } + flops { key: "f16xf16->f32" value: 210228453059226 } + flops { key: "f32xf32->f32" value: 141626567829585 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 342556013399266 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 362199974363299 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 341466631896962 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 346983947002746 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 349184333008130 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 339308523937430 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 351527852021607 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 352682484480210 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 357377874521551 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 348052455105348 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 362199974363299 } + } + entries { + b: 1 + m: 256 + n: 2048 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 344175598685792 } + flops { key: "bf16xbf16->f32" value: 354428725532266 } + flops { key: "f16xf16->f16" value: 327360312195121 } + flops { key: "f16xf16->f32" value: 340357183295031 } + flops { key: "f32xf32->f32" value: 212516936961900 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 425454907974244 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 500987670127143 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 402301170475833 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 409981605192821 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 519217516441005 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 431438201506780 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 514182604573207 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 426299483473945 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 519217516441005 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 417961005838847 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 529393232589670 } + } + entries { + b: 1 + m: 256 + n: 4096 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 495782903843934 } + flops { key: "bf16xbf16->f32" value: 465150516705474 } + flops { key: "f16xf16->f16" value: 465629585429314 } + flops { key: "f16xf16->f32" value: 453342547603968 } + flops { key: "f32xf32->f32" value: 239989232307993 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 590698294044835 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 628792518263670 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 607448878580015 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 611775129406737 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 610037255308571 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 614400585938058 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 580322563977840 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 630685359177679 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 640084544858420 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 600652723026361 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 615280752954659 } + } + entries { + b: 1 + m: 512 + n: 256 + k: 256 + flops { key: "bf16xbf16->bf16" value: 15367269063430 } + flops { key: "bf16xbf16->f32" value: 15727411295992 } + flops { key: "f16xf16->f16" value: 15158993449288 } + flops { key: "f16xf16->f32" value: 17006807906741 } + flops { key: "f32xf32->f32" value: 13620634057235 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 16344097418412 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 18206419967444 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 17819666489644 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 16027911153570 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 19825366026587 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 16504885391047 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 17180968766001 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 16836142498745 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 16424097895252 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 16752087868197 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 16420079275752 } + } + entries { + b: 1 + m: 512 + n: 512 + k: 256 + flops { key: "bf16xbf16->bf16" value: 23848210376687 } + flops { key: "bf16xbf16->f32" value: 29517864086210 } + flops { key: "f16xf16->f16" value: 25771453149001 } + flops { key: "f16xf16->f32" value: 26275984338292 } + flops { key: "f32xf32->f32" value: 22410707630656 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 29260459559625 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 27021890074491 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 26800664536741 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 31454822591985 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 27125652384801 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 31752478826590 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 27235740259740 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 27346725346373 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 26694058870326 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 30594421700478 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 27577096363262 } + } + entries { + b: 1 + m: 512 + n: 1024 + k: 256 + flops { key: "bf16xbf16->bf16" value: 41114329300045 } + flops { key: "bf16xbf16->f32" value: 43372993375343 } + flops { key: "f16xf16->f16" value: 40366233984962 } + flops { key: "f16xf16->f32" value: 38287755812294 } + flops { key: "f32xf32->f32" value: 35644065329969 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 49820982925018 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 39533940500736 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 46210269581683 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 45737852445050 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 38287755812294 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 48559235890014 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 47351465161404 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 46051716589466 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 34898005200208 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 47857988233196 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 48029246018965 } + } + entries { + b: 1 + m: 512 + n: 2048 + k: 256 + flops { key: "bf16xbf16->bf16" value: 60918065584931 } + flops { key: "bf16xbf16->f32" value: 66345886307464 } + flops { key: "f16xf16->f16" value: 56667818450496 } + flops { key: "f16xf16->f32" value: 71288130659938 } + flops { key: "f32xf32->f32" value: 50287646309479 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 54704596698593 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 74877393584379 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 74451658854527 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 73232971218114 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 72825679869777 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 75286903940541 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 73433307618656 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 82722790755007 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 75076340651657 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 76357689091167 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 76575511624589 } + } + entries { + b: 1 + m: 512 + n: 4096 + k: 256 + flops { key: "bf16xbf16->bf16" value: 104095184100824 } + flops { key: "bf16xbf16->f32" value: 107213362356465 } + flops { key: "f16xf16->f16" value: 103284130819545 } + flops { key: "f16xf16->f32" value: 109621421541602 } + flops { key: "f32xf32->f32" value: 81344077575757 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 112622385567442 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 102105536705971 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 125834035392007 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 103483213569776 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 104297408839242 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 122099365931316 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 113816178079287 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 114300811581860 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 102105536705971 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 120726537440971 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 114544679325794 } + } + entries { + b: 1 + m: 512 + n: 256 + k: 512 + flops { key: "bf16xbf16->bf16" value: 30875943869335 } + flops { key: "bf16xbf16->f32" value: 33337736711376 } + flops { key: "f16xf16->f16" value: 36611491543917 } + flops { key: "f16xf16->f32" value: 32217409505520 } + flops { key: "f32xf32->f32" value: 26908125100240 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 29260459559625 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 35274041524310 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 33842089762985 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 33009770782095 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 34361937532002 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 29007505511130 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 29912575885892 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 31602949846950 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 34178183855360 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 32055822307141 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 33337736711376 } + } + entries { + b: 1 + m: 512 + n: 512 + k: 512 + flops { key: "bf16xbf16->bf16" value: 43940981502700 } + flops { key: "bf16xbf16->f32" value: 46377929509329 } + flops { key: "f16xf16->f16" value: 43094470380478 } + flops { key: "f16xf16->f32" value: 42819501674908 } + flops { key: "f32xf32->f32" value: 33588020020020 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 40366233984962 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 40610507715582 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 42140573940345 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 40857755859969 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 38397290230296 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 41617900155038 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 39417834948604 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 41495664863193 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 40366233984962 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 40982512366412 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 40124881315396 } + } + entries { + b: 1 + m: 512 + n: 1024 + k: 512 + flops { key: "bf16xbf16->bf16" value: 57272339662897 } + flops { key: "bf16xbf16->f32" value: 63370032105760 } + flops { key: "f16xf16->f16" value: 56193312957923 } + flops { key: "f16xf16->f32" value: 63064831669211 } + flops { key: "f32xf32->f32" value: 50859313376278 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 60780132684252 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 57641283229546 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 57272339662897 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 58520919119250 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 63663098778607 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 62188221012394 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 63370032105760 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 65857570166830 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 63822029481692 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 70160861474124 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 59958779539870 } + } + entries { + b: 1 + m: 512 + n: 2048 + k: 512 + flops { key: "bf16xbf16->bf16" value: 109175579461108 } + flops { key: "bf16xbf16->f32" value: 109175579461108 } + flops { key: "f16xf16->f16" value: 100764060060060 } + flops { key: "f16xf16->f32" value: 102691452180566 } + flops { key: "f32xf32->f32" value: 64046634297643 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 108733349265822 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 90094128545057 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 102300097560975 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 110297054340010 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 89642830522624 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 116030022044521 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 113575399196107 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 110752122124806 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 92420539163367 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 110981067080103 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 113335636900992 } + } + entries { + b: 1 + m: 512 + n: 4096 + k: 512 + flops { key: "bf16xbf16->bf16" value: 166213904643962 } + flops { key: "bf16xbf16->f32" value: 175763926010803 } + flops { key: "f16xf16->f16" value: 190768734831660 } + flops { key: "f16xf16->f32" value: 172377881521913 } + flops { key: "f32xf32->f32" value: 102794679431334 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 176052110837842 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 309837490693983 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 176037679154029 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 182020990676385 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 193886208739617 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 175476683118156 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 182036420106806 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 171551657453267 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 306302046498359 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 174606362143263 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 169373266661408 } + } + entries { + b: 1 + m: 512 + n: 256 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 46855551754232 } + flops { key: "bf16xbf16->f32" value: 51345726090283 } + flops { key: "f16xf16->f16" value: 50763134644478 } + flops { key: "f16xf16->f32" value: 49453842299189 } + flops { key: "f32xf32->f32" value: 37020473865673 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 52966743488555 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 52551968676585 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 59296544289816 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 46855551754232 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 53388117740652 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 56299382550335 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 54693450692746 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 51941845201238 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 49453842299189 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 57272339662897 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 63205899693901 } + } + entries { + b: 1 + m: 512 + n: 512 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 85082553407290 } + flops { key: "bf16xbf16->f32" value: 79772795245170 } + flops { key: "f16xf16->f16" value: 81221015431164 } + flops { key: "f16xf16->f32" value: 85913092014722 } + flops { key: "f32xf32->f32" value: 62477704177819 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 93061347200554 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 89048086249792 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 100387231114435 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 92420539163367 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 88170621120052 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 87881963005401 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 86745986750686 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 90245572701294 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 92420539163367 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 94055871058163 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 104287278943278 } + } + entries { + b: 1 + m: 512 + n: 1024 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 80010568107302 } + flops { key: "bf16xbf16->f32" value: 94378291641030 } + flops { key: "f16xf16->f16" value: 100764060060060 } + flops { key: "f16xf16->f32" value: 95554135801370 } + flops { key: "f32xf32->f32" value: 63441171285081 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 87310280045535 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 101718626752557 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 89344468630387 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 82595524923076 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 95046633973621 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 88026055418921 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 84023931763048 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 88170621120052 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 96585573805882 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 87310280045535 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 89943191824426 } + } + entries { + b: 1 + m: 512 + n: 2048 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 157659764187651 } + flops { key: "bf16xbf16->f32" value: 151862219645003 } + flops { key: "f16xf16->f16" value: 155603481486848 } + flops { key: "f16xf16->f32" value: 159783009523809 } + flops { key: "f32xf32->f32" value: 89121997343957 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 153380733376187 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 292931884872459 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 152726239101059 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 150795846359104 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 307222267238912 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 154262168522376 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 155829304694869 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 152293003900432 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 253450212203469 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 152293003900432 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 151007921243231 } + } + entries { + b: 1 + m: 512 + n: 4096 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 233067467766442 } + flops { key: "bf16xbf16->f32" value: 231310173201206 } + flops { key: "f16xf16->f16" value: 226432269928300 } + flops { key: "f16xf16->f32" value: 214641044277861 } + flops { key: "f32xf32->f32" value: 121832675119847 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 235379366251986 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 441188217360041 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 231809547495682 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 233841525344367 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 474372354318533 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 230565132918187 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 229334007689021 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 480797861412739 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 494071930978948 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 236155896849397 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 232060044089042 } + } + entries { + b: 1 + m: 512 + n: 256 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 77470550072150 } + flops { key: "bf16xbf16->f32" value: 69796010400416 } + flops { key: "f16xf16->f16" value: 74451658854527 } + flops { key: "f16xf16->f32" value: 85353086168521 } + flops { key: "f32xf32->f32" value: 61617228509124 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 89943191824426 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 96058492037931 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 89344468630387 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 88170621120052 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 96058492037931 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 89958262734584 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 95733044222539 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 89344468630387 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 98544587371512 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 89344468630387 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 91788495811249 } + } + entries { + b: 1 + m: 512 + n: 512 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 144494929888305 } + flops { key: "bf16xbf16->f32" value: 124955408355638 } + flops { key: "f16xf16->f16" value: 122113251904924 } + flops { key: "f16xf16->f32" value: 121012264623013 } + flops { key: "f32xf32->f32" value: 98184146305779 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 118855636927164 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 110535497632283 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 116030022044521 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 121012264623013 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 122113251904924 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 106142924476077 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 123802816095929 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 115035550032140 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 115779795557472 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 116281332466969 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 115035550032140 } + } + entries { + b: 1 + m: 512 + n: 1024 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 217466698531645 } + flops { key: "bf16xbf16->f32" value: 214855792696348 } + flops { key: "f16xf16->f16" value: 225694550499211 } + flops { key: "f16xf16->f32" value: 218796092511462 } + flops { key: "f32xf32->f32" value: 153820188238664 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 472285825379371 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 474372354318533 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 450489542269771 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 299467807558220 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 296982941225280 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 339254920695102 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 351527852021607 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 478601214174281 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 462122584032709 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 460142200128562 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 480851690103000 } + } + entries { + b: 1 + m: 512 + n: 2048 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 191108271602740 } + flops { key: "bf16xbf16->f32" value: 192314838848341 } + flops { key: "f16xf16->f16" value: 193353770134605 } + flops { key: "f16xf16->f32" value: 192832905131773 } + flops { key: "f32xf32->f32" value: 97868686248148 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 480744044772778 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 436702317844433 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 458178717303179 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 443924268320413 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 435816062506341 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 182959203237486 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 440328818535985 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 438530457014498 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 403814149680330 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 178688937260775 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 455264712317150 } + } + entries { + b: 1 + m: 512 + n: 4096 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 297198719579282 } + flops { key: "bf16xbf16->f32" value: 285143056995850 } + flops { key: "f16xf16->f16" value: 281775777989175 } + flops { key: "f16xf16->f32" value: 272290062192918 } + flops { key: "f32xf32->f32" value: 134060625704252 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 648786600604229 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 635350191715976 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 606590960525386 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 594006956088790 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 638182361961367 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 274913095820265 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 581895040780382 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 604839782565835 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 634411712850812 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 273503823733562 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 646832424096385 } + } + entries { + b: 1 + m: 512 + n: 256 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 145276934650250 } + flops { key: "bf16xbf16->f32" value: 144884877074618 } + flops { key: "f16xf16->f16" value: 152282204509998 } + flops { key: "f16xf16->f32" value: 150152681303314 } + flops { key: "f32xf32->f32" value: 102300097560975 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 244811177382580 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 266701893691008 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 276310299536798 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 119132566736935 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 110981067080103 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 116281332466969 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 109845710895140 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 128238603129105 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 103683065276168 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 115282566459093 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 114789589908060 } + } + entries { + b: 1 + m: 512 + n: 512 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 222421921077162 } + flops { key: "bf16xbf16->f32" value: 229579179816121 } + flops { key: "f16xf16->f16" value: 220141839876986 } + flops { key: "f16xf16->f32" value: 217466698531645 } + flops { key: "f32xf32->f32" value: 133849641485913 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 316271524005891 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 387073476568132 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 341412344674085 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 335020849921996 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 339254920695102 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 338186401259842 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 365902819560402 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 339254920695102 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 356192344999170 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 353844726973142 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 348108874696060 } + } + entries { + b: 1 + m: 512 + n: 1024 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 359171039973239 } + flops { key: "bf16xbf16->f32" value: 355602524921344 } + flops { key: "f16xf16->f16" value: 339818600838673 } + flops { key: "f16xf16->f32" value: 355014654984294 } + flops { key: "f32xf32->f32" value: 216164240575771 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 696104910210696 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 757757109386026 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 736953894303363 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 659749200614439 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 752315168330705 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 785473170446232 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 834460325626578 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 680768314471390 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 837715485859176 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 806112480480480 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 812210154311649 } + } + entries { + b: 1 + m: 512 + n: 2048 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 483476928688017 } + flops { key: "bf16xbf16->f32" value: 498661011958667 } + flops { key: "f16xf16->f16" value: 454782644642100 } + flops { key: "f16xf16->f32" value: 462620346402412 } + flops { key: "f32xf32->f32" value: 246752113983683 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 932269871065769 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 959447625600357 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 955180094740353 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 904775078154624 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 990422528767439 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 955073892817433 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 922260531672750 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 916357434606358 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1001975340254286 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 916357434606358 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 813749014020462 } + } + entries { + b: 1 + m: 512 + n: 4096 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 327372788292236 } + flops { key: "bf16xbf16->f32" value: 330910283413910 } + flops { key: "f16xf16->f16" value: 309313117712721 } + flops { key: "f16xf16->f32" value: 301909693237733 } + flops { key: "f32xf32->f32" value: 144422048354013 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 742592141084936 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 686727792461126 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 697886386805865 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 691148134690429 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 699022223379582 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 307756107410923 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 730591927875824 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 688930873160364 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 657753711244687 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 302228365069312 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 684511482349191 } + } + entries { + b: 1 + m: 1024 + n: 256 + k: 256 + flops { key: "bf16xbf16->bf16" value: 24275226623259 } + flops { key: "bf16xbf16->f32" value: 30317986898576 } + flops { key: "f16xf16->f16" value: 25672863045141 } + flops { key: "f16xf16->f32" value: 25477928625664 } + flops { key: "f32xf32->f32" value: 18255947769314 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 26800664536741 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 28514495007435 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 34361937532002 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 26694058870326 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 27131135637760 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 31162695147434 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 31911014740846 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 26173503900156 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 27921308092365 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 34013615813482 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 33337736711376 } + } + entries { + b: 1 + m: 1024 + n: 512 + k: 256 + flops { key: "bf16xbf16->bf16" value: 37861136248236 } + flops { key: "bf16xbf16->f32" value: 37020473865673 } + flops { key: "f16xf16->f16" value: 41747349300155 } + flops { key: "f16xf16->f32" value: 40245195802098 } + flops { key: "f32xf32->f32" value: 34274189989785 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 54482536228942 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 41495664863193 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 41617900155038 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 41884140427523 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 35834395407822 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 59559675171954 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 54471480519480 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 36716653809328 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 46210269581683 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 45894247905624 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 39533940500736 } + } + entries { + b: 1 + m: 1024 + n: 1024 + k: 256 + flops { key: "bf16xbf16->bf16" value: 68200065040650 } + flops { key: "bf16xbf16->f32" value: 69443915664209 } + flops { key: "f16xf16->f16" value: 62924391936240 } + flops { key: "f16xf16->f32" value: 76357689091167 } + flops { key: "f32xf32->f32" value: 52250210413625 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 75498651666432 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 61056625952462 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 64280521072796 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 74658727854262 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 67176040040040 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 77920306531204 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 66019541564190 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 66510271555996 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 70160861474124 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 71468438764643 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 65376389673648 } + } + entries { + b: 1 + m: 1024 + n: 2048 + k: 256 + flops { key: "bf16xbf16->bf16" value: 108733349265822 } + flops { key: "bf16xbf16->f32" value: 109845710895140 } + flops { key: "f16xf16->f16" value: 104085093447072 } + flops { key: "f16xf16->f32" value: 116281332466969 } + flops { key: "f32xf32->f32" value: 82474984561026 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 118868794863279 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 112151851263839 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 117041838238500 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 115779795557472 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 169119833674594 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 108733349265822 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 113575399196107 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 124088966138911 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 166989397200622 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 117041838238500 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 122391636156388 } + } + entries { + b: 1 + m: 1024 + n: 4096 + k: 256 + flops { key: "bf16xbf16->bf16" value: 174606362143263 } + flops { key: "bf16xbf16->f32" value: 170178591647515 } + flops { key: "f16xf16->f16" value: 184856989584230 } + flops { key: "f16xf16->f32" value: 156282923222472 } + flops { key: "f32xf32->f32" value: 91091565132555 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 159783009523809 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 269378279979929 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 148697108987674 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 154929921939254 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 209388031201248 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 157209637481698 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 156294297525473 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 158369000589970 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 282861386722866 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 159072862814814 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 155378311844294 } + } + entries { + b: 1 + m: 1024 + n: 256 + k: 512 + flops { key: "bf16xbf16->bf16" value: 34898005200208 } + flops { key: "bf16xbf16->f32" value: 42676543084260 } + flops { key: "f16xf16->f16" value: 34812016080923 } + flops { key: "f16xf16->f32" value: 42147190453760 } + flops { key: "f32xf32->f32" value: 30321411498926 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 43094470380478 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 39073574381368 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 48037841088045 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 48913166180758 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 50193615557217 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 47519110639051 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 41617900155038 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 42541276703645 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 50382030030030 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 52758540880503 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 53176595879556 } + } + entries { + b: 1 + m: 1024 + n: 512 + k: 512 + flops { key: "bf16xbf16->bf16" value: 57517775016070 } + flops { key: "bf16xbf16->f32" value: 57641283229546 } + flops { key: "f16xf16->f16" value: 57641283229546 } + flops { key: "f16xf16->f32" value: 57394794954030 } + flops { key: "f32xf32->f32" value: 49453842299189 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 71659224773091 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 66675473422752 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 68900271047227 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 64582089738963 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 67008351472790 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 69987082779298 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 64126960344003 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 68732673409294 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 71860649444518 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 69255793601651 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 72053538048584 } + } + entries { + b: 1 + m: 1024 + n: 1024 + k: 512 + flops { key: "bf16xbf16->bf16" value: 107643290626566 } + flops { key: "bf16xbf16->f32" value: 97109688342226 } + flops { key: "f16xf16->f16" value: 101718626752557 } + flops { key: "f16xf16->f32" value: 102495401298205 } + flops { key: "f32xf32->f32" value: 64123130725589 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 119930953200044 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 89048086249792 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 113096884769328 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 121560265368504 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 89943191824426 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 118855636927164 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 116787233413095 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 114300811581860 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 89048086249792 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 114544679325794 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 119650303543570 } + } + entries { + b: 1 + m: 1024 + n: 2048 + k: 512 + flops { key: "bf16xbf16->bf16" value: 182330077092885 } + flops { key: "bf16xbf16->f32" value: 179585519986619 } + flops { key: "f16xf16->f16" value: 155153792934036 } + flops { key: "f16xf16->f32" value: 172641180802315 } + flops { key: "f32xf32->f32" value: 103788296747378 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 181712950414621 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 185159824797378 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 182036420106806 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 180188257090115 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 190430402411989 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 180795053712746 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 179585519986619 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 188756583282060 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 183263666837344 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 178096172499585 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 182330077092885 } + } + entries { + b: 1 + m: 1024 + n: 4096 + k: 512 + flops { key: "bf16xbf16->bf16" value: 233587170065807 } + flops { key: "bf16xbf16->f32" value: 252570849514848 } + flops { key: "f16xf16->f16" value: 273147245993385 } + flops { key: "f16xf16->f32" value: 242831870639452 } + flops { key: "f32xf32->f32" value: 112442529413304 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 222433440157439 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 482906149763885 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 224057973603213 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 222664072580227 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 486241061474017 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 223358848406053 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 223591404862304 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 281766535196483 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 403056240240240 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 218807239085027 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 218140448778505 } + } + entries { + b: 1 + m: 1024 + n: 256 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 70902127839408 } + flops { key: "bf16xbf16->f32" value: 69615004149377 } + flops { key: "f16xf16->f16" value: 68200065040650 } + flops { key: "f16xf16->f32" value: 74658727854262 } + flops { key: "f32xf32->f32" value: 59296544289816 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 80976004826546 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 93061347200554 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 86745986750686 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 93711103508465 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 90856475207310 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 91165038546442 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 79301464106351 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 93061347200554 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 84813730173775 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 79067881001472 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 91165038546442 } + } + entries { + b: 1 + m: 1024 + n: 512 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 98004912741876 } + flops { key: "bf16xbf16->f32" value: 97285659508924 } + flops { key: "f16xf16->f16" value: 73634743107941 } + flops { key: "f16xf16->f32" value: 97648401600582 } + flops { key: "f32xf32->f32" value: 58716127522283 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 86879344930819 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 154473000143864 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 88170621120052 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 90253158275195 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 172377881521913 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 88900631230336 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 89344468630387 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 88170621120052 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 141822985602958 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 88607181383066 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 91320107501275 } + } + entries { + b: 1 + m: 1024 + n: 1024 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 161708106024096 } + flops { key: "bf16xbf16->f32" value: 159545590490341 } + flops { key: "f16xf16->f16" value: 129179718960538 } + flops { key: "f16xf16->f32" value: 146266424737774 } + flops { key: "f32xf32->f32" value: 84089734826533 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 158135762002945 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 184222668611134 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 153820188238664 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 161222496096096 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 185816703988924 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 161952009653092 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 159545590490341 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 156979798830409 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 176341242240105 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 159545590490341 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 156294297525473 } + } + entries { + b: 1 + m: 1024 + n: 2048 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 252274143671071 } + flops { key: "bf16xbf16->f32" value: 254064909553386 } + flops { key: "f16xf16->f16" value: 238516537790859 } + flops { key: "f16xf16->f32" value: 239848511531803 } + flops { key: "f32xf32->f32" value: 121422800407101 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 384957183472259 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 409239380276322 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 239060853612378 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 239580927985719 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 412343250384024 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 236676436656196 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 232060044089042 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 238781747706677 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 428853449425861 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 234864510089134 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 235637641740275 } + } + entries { + b: 1 + m: 1024 + n: 4096 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 336899815350825 } + flops { key: "bf16xbf16->f32" value: 320759320089619 } + flops { key: "f16xf16->f16" value: 321961566416791 } + flops { key: "f16xf16->f32" value: 295359302410342 } + flops { key: "f32xf32->f32" value: 124705069423071 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 524288000000000 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 725623804020949 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 783967745915852 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 772684590447063 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 537408320320320 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 299687213201688 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 721964581610354 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 754959974687994 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 733117230690449 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 302005224202791 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 791188596481532 } + } + entries { + b: 1 + m: 1024 + n: 256 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 141449324726649 } + flops { key: "bf16xbf16->f32" value: 136400130081300 } + flops { key: "f16xf16->f16" value: 132691772614928 } + flops { key: "f16xf16->f32" value: 129788688988275 } + flops { key: "f32xf32->f32" value: 96943104369808 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 234083676477000 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 220571451109285 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 204600195121951 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 233067467766442 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 230071100064281 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 227150798392214 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 232060044089042 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 111453375960141 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 120469182542353 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 108076680825364 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 112386625915846 } + } + entries { + b: 1 + m: 1024 + n: 512 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 211866973954222 } + flops { key: "bf16xbf16->f32" value: 228577290899414 } + flops { key: "f16xf16->f16" value: 198546934911242 } + flops { key: "f16xf16->f32" value: 206568261639091 } + flops { key: "f32xf32->f32" value: 136573622996692 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 288989859776611 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 268704160160160 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 325870052807283 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 301147615762165 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 280643445896497 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 297806635418111 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 409200390243902 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 300305362606628 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 310779109696092 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 345866266387502 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 365902819560402 } + } + entries { + b: 1 + m: 1024 + n: 1024 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 206181522538524 } + flops { key: "bf16xbf16->f32" value: 199840279918109 } + flops { key: "f16xf16->f16" value: 198546934911242 } + flops { key: "f16xf16->f32" value: 196188895304220 } + flops { key: "f32xf32->f32" value: 94295409150785 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 186462068941564 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 360376514180231 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 460142200128562 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 427147418796618 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 397829501296776 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 188260160252476 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 186130760390032 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 183741916406417 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 387737410490204 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 188756583282060 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 189255631268176 } + } + entries { + b: 1 + m: 1024 + n: 2048 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 293542514164644 } + flops { key: "bf16xbf16->f32" value: 293342027524502 } + flops { key: "f16xf16->f16" value: 292134899741531 } + flops { key: "f16xf16->f32" value: 289574386192017 } + flops { key: "f32xf32->f32" value: 135032140597981 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 516687795007518 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 568042229334744 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 548422051458852 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 546990231278655 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 581107738601001 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 287635098848111 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 584269799483063 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 560590915094955 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 545600520325203 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 292134899741531 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 549791000512032 } + } + entries { + b: 1 + m: 1024 + n: 4096 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 395995509496588 } + flops { key: "bf16xbf16->f32" value: 385319813035482 } + flops { key: "f16xf16->f16" value: 359780301648133 } + flops { key: "f16xf16->f32" value: 361445565715007 } + flops { key: "f32xf32->f32" value: 138454656834538 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 727498165742113 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 791954509934080 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 734339353879034 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 978018284413070 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 748447729546048 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 362368048597342 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 903823084175084 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 745815896852615 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 753040641009906 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 360997461315402 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 759029300344614 } + } + entries { + b: 1 + m: 1024 + n: 256 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 203823429005315 } + flops { key: "bf16xbf16->f32" value: 210228453059226 } + flops { key: "f16xf16->f16" value: 203823429005315 } + flops { key: "f16xf16->f32" value: 217908031253170 } + flops { key: "f32xf32->f32" value: 133350946845504 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 450395060402684 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 376223484232655 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 400052840536512 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 458178717303179 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 423733947908445 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 427189904117764 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 385613871072005 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 378811721291233 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 376157584165352 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 377479987343997 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 430530001603849 } + } + entries { + b: 1 + m: 1024 + n: 512 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 355014654984294 } + flops { key: "bf16xbf16->f32" value: 327860098931297 } + flops { key: "f16xf16->f16" value: 349241120182143 } + flops { key: "f16xf16->f32" value: 315342679588839 } + flops { key: "f32xf32->f32" value: 182803460140455 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 831069523219814 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 731805639120804 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 719545534595409 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 752315168330705 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 670041699843993 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 714755749043102 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 741918689929176 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 754959974687994 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 616119250609668 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 726851801658487 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 741918689929176 } + } + entries { + b: 1 + m: 1024 + n: 1024 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 508129819106773 } + flops { key: "bf16xbf16->f32" value: 505736508213129 } + flops { key: "f16xf16->f16" value: 485663741278905 } + flops { key: "f16xf16->f32" value: 482390890773291 } + flops { key: "f32xf32->f32" value: 251970742776685 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 906685095207937 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 610037255308571 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 836003366618004 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 574885195556150 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 407666204356698 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 528806611179512 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 542842175935288 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 559860170240500 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 435396350144457 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 509334989149125 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 491246402379046 } + } + entries { + b: 1 + m: 1024 + n: 2048 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 339556659432750 } + flops { key: "bf16xbf16->f32" value: 344051531701846 } + flops { key: "f16xf16->f16" value: 313839155002648 } + flops { key: "f16xf16->f32" value: 327123446894398 } + flops { key: "f32xf32->f32" value: 144860443724914 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 651764831139269 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 666454697183645 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 688378778859638 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 670617112342883 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 641518640179238 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 318972691867805 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 698453843314225 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 679126741668972 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 627919195321637 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 319684949460364 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 680202287840994 } + } + entries { + b: 1 + m: 1024 + n: 4096 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 433851514173516 } + flops { key: "bf16xbf16->f32" value: 418709720427486 } + flops { key: "f16xf16->f16" value: 384285536259115 } + flops { key: "f16xf16->f32" value: 410099044781819 } + flops { key: "f32xf32->f32" value: 154127925214192 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1068134119870678 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1026583160083657 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1057580669395795 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1019274350875111 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 995617002347077 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 403439575986003 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1039031672200550 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1060878670124737 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1004935169138077 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 397737398342362 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1015658834407330 } + } + entries { + b: 1 + m: 2048 + n: 256 + k: 256 + flops { key: "bf16xbf16->bf16" value: 38507453163104 } + flops { key: "bf16xbf16->f32" value: 37538170325828 } + flops { key: "f16xf16->f16" value: 39187657810218 } + flops { key: "f16xf16->f32" value: 39181937819296 } + flops { key: "f32xf32->f32" value: 30253066155753 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 50571864355689 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 49272293685756 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 53398738014720 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 52143639471639 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 49627557034572 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 43655140022767 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 49272293685756 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 48735558460421 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 49272293685756 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 61766096640589 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 53388117740652 } + } + entries { + b: 1 + m: 2048 + n: 512 + k: 256 + flops { key: "bf16xbf16->bf16" value: 65857570166830 } + flops { key: "bf16xbf16->f32" value: 63213341810903 } + flops { key: "f16xf16->f16" value: 61901408047964 } + flops { key: "f16xf16->f32" value: 69086464032942 } + flops { key: "f32xf32->f32" value: 49362901066568 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 75498651666432 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 87027218674015 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 81715511719939 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 86466566596875 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 70902127839408 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 88461181743285 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 83235800310077 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 73232971218114 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 86452642834138 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 81965024732824 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 62332626494833 } + } + entries { + b: 1 + m: 2048 + n: 1024 + k: 256 + flops { key: "bf16xbf16->bf16" value: 93393217708967 } + flops { key: "bf16xbf16->f32" value: 99090238464378 } + flops { key: "f16xf16->f16" value: 94047632828238 } + flops { key: "f16xf16->f32" value: 89493400900150 } + flops { key: "f32xf32->f32" value: 72053538048584 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 116533733883221 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 100199871593878 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 112151851263839 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 115530646008177 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 114057980029742 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 129491295706705 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 123503775477340 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 117825285196971 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 102888254503641 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 124955408355638 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 104500420827250 } + } + entries { + b: 1 + m: 2048 + n: 2048 + k: 256 + flops { key: "bf16xbf16->bf16" value: 192495845105772 } + flops { key: "bf16xbf16->f32" value: 166471600620155 } + flops { key: "f16xf16->f16" value: 192134172676031 } + flops { key: "f16xf16->f32" value: 163930049465648 } + flops { key: "f32xf32->f32" value: 92747846937894 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 140147728773738 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 233067467766442 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 155153792934036 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 146866615237313 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 306345741512125 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 151862219645003 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 160499525261584 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 315342679588839 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 295349147022417 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 157209637481698 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 161708106024096 } + } + entries { + b: 1 + m: 2048 + n: 4096 + k: 256 + flops { key: "bf16xbf16->bf16" value: 240398930706369 } + flops { key: "bf16xbf16->f32" value: 206578197104516 } + flops { key: "f16xf16->f16" value: 258966975942116 } + flops { key: "f16xf16->f32" value: 199654485682409 } + flops { key: "f32xf32->f32" value: 126882342570162 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 198363536670977 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 405338551906379 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 488453007619697 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 440283679753972 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 396360953857512 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 193179836099491 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 487344524679450 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 200399743187756 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 300305362606628 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 188425344213389 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 502159160060797 } + } + entries { + b: 1 + m: 2048 + n: 256 + k: 512 + flops { key: "bf16xbf16->bf16" value: 54147343620776 } + flops { key: "bf16xbf16->f32" value: 55611240107727 } + flops { key: "f16xf16->f16" value: 52867642737567 } + flops { key: "f16xf16->f32" value: 54810710770801 } + flops { key: "f32xf32->f32" value: 39709386982248 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 62477704177819 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 62332626494833 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 74658727854262 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 72247464944152 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 68900271047227 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 67008351472790 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 66345886307464 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 68909114619432 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 67684179525970 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 65696391581008 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 75936479773691 } + } + entries { + b: 1 + m: 2048 + n: 512 + k: 512 + flops { key: "bf16xbf16->bf16" value: 101334637976594 } + flops { key: "bf16xbf16->f32" value: 96412123911286 } + flops { key: "f16xf16->f16" value: 97109688342226 } + flops { key: "f16xf16->f32" value: 94544494496786 } + flops { key: "f32xf32->f32" value: 64276673091888 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 118084441218519 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 90245572701294 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 115779795557472 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 122377686801914 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 93222940093766 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 125834035392007 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 119663638025186 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 118868794863279 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 90101688680036 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 124955408355638 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 110992539177175 } + } + entries { + b: 1 + m: 2048 + n: 1024 + k: 512 + flops { key: "bf16xbf16->bf16" value: 176341242240105 } + flops { key: "bf16xbf16->f32" value: 168575527749430 } + flops { key: "f16xf16->f16" value: 145473760195095 } + flops { key: "f16xf16->f32" value: 161222496096096 } + flops { key: "f32xf32->f32" value: 101048543572369 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 174620560091071 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 262144000000000 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 184222668611134 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 174890760485381 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 261473718251552 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 177507327492147 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 180188257090115 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 179886383648852 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 316271524005891 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 178392062468848 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 178096172499585 } + } + entries { + b: 1 + m: 2048 + n: 2048 + k: 512 + flops { key: "bf16xbf16->bf16" value: 269716609897010 } + flops { key: "bf16xbf16->f32" value: 250801009985401 } + flops { key: "f16xf16->f16" value: 268368363909022 } + flops { key: "f16xf16->f32" value: 233080115916861 } + flops { key: "f32xf32->f32" value: 110133014410995 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 212097150419753 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 339818600838673 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 544217853015712 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 433178748966212 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 345866266387502 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 218584523181841 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 217687141206284 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 521740439261418 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 508099762924405 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 221744400640198 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 220832294513856 } + } + entries { + b: 1 + m: 2048 + n: 4096 + k: 512 + flops { key: "bf16xbf16->bf16" value: 349795764629229 } + flops { key: "bf16xbf16->f32" value: 297404514489492 } + flops { key: "f16xf16->f16" value: 340370669730950 } + flops { key: "f16xf16->f32" value: 288020875536480 } + flops { key: "f32xf32->f32" value: 167067344639800 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 637235503857566 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 594788435950699 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 693967894005493 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 627873298150720 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 602337465254891 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 286665596262306 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 751065366092506 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 516687795007518 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 588271099301465 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 285522173574871 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 708798959650136 } + } + entries { + b: 1 + m: 2048 + n: 256 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 111685232369461 } + flops { key: "bf16xbf16->f32" value: 106153418091942 } + flops { key: "f16xf16->f16" value: 105735285475135 } + flops { key: "f16xf16->f32" value: 99641965850037 } + flops { key: "f32xf32->f32" value: 60707967659863 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 87452502361948 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 193536738284066 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 91327874797992 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 91953568896120 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 188078792082676 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 84686633330704 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 89792759993309 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 90397526856373 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 183576991622499 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 88900631230336 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 91475704890100 } + } + entries { + b: 1 + m: 2048 + n: 512 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 123234457018248 } + flops { key: "bf16xbf16->f32" value: 157903209411764 } + flops { key: "f16xf16->f16" value: 149744344745833 } + flops { key: "f16xf16->f32" value: 151220593479332 } + flops { key: "f32xf32->f32" value: 78144305083512 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 161708106024096 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 275601084188911 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 159545590490341 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 160021136214605 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 261505558694593 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 155378311844294 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 159783009523809 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 160259973731343 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 314419274963396 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 158591215419836 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 155378311844294 } + } + entries { + b: 1 + m: 2048 + n: 1024 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 251963351871406 } + flops { key: "bf16xbf16->f32" value: 254969860255268 } + flops { key: "f16xf16->f16" value: 242571291991415 } + flops { key: "f16xf16->f32" value: 245904459864880 } + flops { key: "f32xf32->f32" value: 120740112897784 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 235121656320140 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 342528694154238 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 233828794425087 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 239313940825764 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 354399479825068 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 232575258352737 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 235896484648761 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 236676436656196 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 419635300048852 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 233067467766442 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 242010891756353 } + } + entries { + b: 1 + m: 2048 + n: 2048 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 342269378491453 } + flops { key: "bf16xbf16->f32" value: 319566019047619 } + flops { key: "f16xf16->f16" value: 329128878194566 } + flops { key: "f16xf16->f32" value: 316504590714812 } + flops { key: "f32xf32->f32" value: 139241292765557 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 643923132833583 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 438956236496499 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 759029300344614 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 786912293147673 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 664907081972288 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 301168732627445 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 747145741671740 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 768536690704124 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 418388514538989 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 302015842486463 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 459158359632242 } + } + entries { + b: 1 + m: 2048 + n: 4096 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 440080669706439 } + flops { key: "bf16xbf16->f32" value: 400052840536512 } + flops { key: "f16xf16->f16" value: 395986382021436 } + flops { key: "f16xf16->f32" value: 364057410129264 } + flops { key: "f32xf32->f32" value: 194805184079827 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 822357435450672 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 820002347572908 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 819963210385643 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 829504571676886 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 806907575219576 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 396727073341954 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 794922690357209 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 766513594074867 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 812978855953057 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 386359672198983 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 921271406263406 } + } + entries { + b: 1 + m: 2048 + n: 256 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 220616770906102 } + flops { key: "bf16xbf16->f32" value: 216153361650729 } + flops { key: "f16xf16->f16" value: 208574557886557 } + flops { key: "f16xf16->f32" value: 210640867876410 } + flops { key: "f32xf32->f32" value: 139049705257705 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 404574914845516 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 409200390243902 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 422068327044025 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 372245388802218 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 444889920861818 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 448607405055358 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 400052840536512 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 434010438156831 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 454301596784429 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 464120088178085 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 374844414033862 } + } + entries { + b: 1 + m: 2048 + n: 512 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 198730672589302 } + flops { key: "bf16xbf16->f32" value: 196368292611558 } + flops { key: "f16xf16->f16" value: 196000880573175 } + flops { key: "f16xf16->f32" value: 194580133919267 } + flops { key: "f32xf32->f32" value: 90898778751322 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 388438753368906 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 328864264624808 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 340897475672672 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 337681208900070 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 333486085565649 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 183115211937753 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 337681208900070 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 329899938244104 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 334525063945790 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 188425344213389 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 331401797530864 } + } + entries { + b: 1 + m: 2048 + n: 1024 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 299061191101208 } + flops { key: "bf16xbf16->f32" value: 298240906603708 } + flops { key: "f16xf16->f16" value: 291936330614464 } + flops { key: "f16xf16->f32" value: 291540001086071 } + flops { key: "f32xf32->f32" value: 135117101204895 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 585863769744918 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 503336141568030 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 438956236496499 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 432306723301459 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 589077944863530 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 286102271249666 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 567254480089810 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 431438201506780 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 464145166261414 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 288601484746673 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 459649753424657 } + } + entries { + b: 1 + m: 2048 + n: 2048 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 385665810263547 } + flops { key: "bf16xbf16->f32" value: 381715492790010 } + flops { key: "f16xf16->f16" value: 369865210962561 } + flops { key: "f16xf16->f32" value: 362215247396162 } + flops { key: "f32xf32->f32" value: 149403158396382 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 768571072518230 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 940486625280560 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 927238189982728 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 932269871065769 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 964835964506346 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 372430991003490 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 962673382494676 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 970230371265601 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 954066151163436 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 367334541769120 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 939458040356537 } + } + entries { + b: 1 + m: 2048 + n: 4096 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 497232183844172 } + flops { key: "bf16xbf16->f32" value: 473613860726691 } + flops { key: "f16xf16->f16" value: 459532952187345 } + flops { key: "f16xf16->f32" value: 420760685859835 } + flops { key: "f32xf32->f32" value: 217309905308827 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1139059783457649 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 991565807687868 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1339143283498324 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1122647140037901 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1143647262947676 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 501440973234873 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1076196898173959 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1034651400764852 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 930275845891430 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 496944525295768 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 941001762830695 } + } + entries { + b: 1 + m: 2048 + n: 256 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 337681208900070 } + flops { key: "bf16xbf16->f32" value: 349212724286527 } + flops { key: "f16xf16->f16" value: 339281720199067 } + flops { key: "f16xf16->f32" value: 337681208900070 } + flops { key: "f32xf32->f32" value: 185327607162891 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 592327581850779 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 771366252873563 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 800105681073025 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 532082172447968 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 636291451259259 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 747210733472512 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 741918689929176 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 749688828067725 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 782610658892128 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 774007442061632 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 760440385269121 } + } + entries { + b: 1 + m: 2048 + n: 512 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 503336141568030 } + flops { key: "bf16xbf16->f32" value: 492372726814169 } + flops { key: "f16xf16->f16" value: 496930151104940 } + flops { key: "f16xf16->f32" value: 482390890773291 } + flops { key: "f32xf32->f32" value: 218024178075585 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 655720197862595 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 718342079946479 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 696217749392121 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 632543048011782 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 728145680427227 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 740639299189515 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 728083962705543 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 619764400577200 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 741982775503152 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 704208443351369 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 718342079946479 } + } + entries { + b: 1 + m: 2048 + n: 1024 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 341996838475932 } + flops { key: "bf16xbf16->f32" value: 324890205639289 } + flops { key: "f16xf16->f16" value: 323178938354747 } + flops { key: "f16xf16->f32" value: 322209140906618 } + flops { key: "f32xf32->f32" value: 139624921238916 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 778320535677071 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 891580735066687 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 865484593652393 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 893481858955689 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 870792700288914 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 319566019047619 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 883329178055427 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 844178132966439 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 814520632656931 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 321846965735588 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 848346708014419 } + } + entries { + b: 1 + m: 2048 + n: 2048 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 426834350339755 } + flops { key: "bf16xbf16->f32" value: 428965884318156 } + flops { key: "f16xf16->f16" value: 411277151776309 } + flops { key: "f16xf16->f32" value: 391474744992594 } + flops { key: "f32xf32->f32" value: 164820204386284 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1076196898173959 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1015658834407330 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1153630753693258 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1007882971106743 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1166160004344284 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 415861665250596 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1072133623564653 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1047904430388240 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1162215477202002 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 417382210927820 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1174973100160722 } + } + entries { + b: 1 + m: 2048 + n: 4096 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 483769635593101 } + flops { key: "bf16xbf16->f32" value: 477109250907778 } + flops { key: "f16xf16->f16" value: 456477396730502 } + flops { key: "f16xf16->f32" value: 448540058456859 } + flops { key: "f32xf32->f32" value: 220239909288156 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1439724219815214 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1389029909971095 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1437315193909351 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1354478697861437 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1375655137446450 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 578661092795311 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1451308906779303 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1415962184455617 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1369623245824530 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 577688193416053 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1420058619937179 } + } + entries { + b: 1 + m: 4096 + n: 256 + k: 256 + flops { key: "bf16xbf16->bf16" value: 63966509233885 } + flops { key: "bf16xbf16->f32" value: 63362553050867 } + flops { key: "f16xf16->f16" value: 62917017696003 } + flops { key: "f16xf16->f32" value: 61758991372368 } + flops { key: "f32xf32->f32" value: 43510082826809 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 72442438537309 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 85353086168521 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 72053538048584 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 65376389673648 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 83768280855047 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 71860649444518 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 85353086168521 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 82468650076804 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 75498651666432 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 87027218674015 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 90245572701294 } + } + entries { + b: 1 + m: 4096 + n: 512 + k: 256 + flops { key: "bf16xbf16->bf16" value: 124955408355638 } + flops { key: "bf16xbf16->f32" value: 112859136430523 } + flops { key: "f16xf16->f16" value: 120740112897784 } + flops { key: "f16xf16->f32" value: 113816178079287 } + flops { key: "f32xf32->f32" value: 60231212430582 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 110535497632283 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 108954015626585 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 115543078015710 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 110535497632283 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 107213362356465 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 108076680825364 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 105735285475135 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 115779795557472 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 105735285475135 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 111441808406850 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 104898576006252 } + } + entries { + b: 1 + m: 4096 + n: 1024 + k: 256 + flops { key: "bf16xbf16->bf16" value: 178096172499585 } + flops { key: "bf16xbf16->f32" value: 153380733376187 } + flops { key: "f16xf16->f16" value: 166743042782824 } + flops { key: "f16xf16->f32" value: 154929921939254 } + flops { key: "f32xf32->f32" value: 85635588308011 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 132201652794878 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 267365992031872 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 136235719596523 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 135890884515598 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 291342239587572 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 152293003900432 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 155614757101449 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 139058709318137 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 273495115639327 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 145671119793786 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 150584366313722 } + } + entries { + b: 1 + m: 4096 + n: 2048 + k: 256 + flops { key: "bf16xbf16->bf16" value: 245342585170798 } + flops { key: "bf16xbf16->f32" value: 216371148413098 } + flops { key: "f16xf16->f16" value: 254064909553386 } + flops { key: "f16xf16->f32" value: 205000586893227 } + flops { key: "f32xf32->f32" value: 117754216592641 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 467148933652382 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 397057159656096 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 446694466562662 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 486186019470228 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 390593606402328 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 168575527749430 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 500987670127143 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 438485686166411 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 389142638035698 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 166226770493072 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 465125329867879 } + } + entries { + b: 1 + m: 4096 + n: 4096 + k: 256 + flops { key: "bf16xbf16->bf16" value: 299896470062493 } + flops { key: "bf16xbf16->f32" value: 252274143671071 } + flops { key: "f16xf16->f16" value: 310543168793608 } + flops { key: "f16xf16->f32" value: 239320608252305 } + flops { key: "f32xf32->f32" value: 128825186220549 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 526860561334641 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 490685170341597 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 519186134300392 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 562794640110070 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 426723029905613 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 199561718055942 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 641039894925373 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 609172015601730 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 524896705896730 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 200119620538626 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 577202969493347 } + } + entries { + b: 1 + m: 4096 + n: 256 + k: 512 + flops { key: "bf16xbf16->bf16" value: 127024940731101 } + flops { key: "bf16xbf16->f32" value: 122391636156388 } + flops { key: "f16xf16->f16" value: 119930953200044 } + flops { key: "f16xf16->f32" value: 118593088579633 } + flops { key: "f32xf32->f32" value: 68552756432356 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 127628886722928 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 92103433178932 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 139248064323693 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 121546504867557 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 93719282883826 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 134352080080080 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 137800542094455 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 118868794863279 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 183576991622499 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 134352080080080 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 134352080080080 } + } + entries { + b: 1 + m: 4096 + n: 512 + k: 512 + flops { key: "bf16xbf16->bf16" value: 185479672482294 } + flops { key: "bf16xbf16->f32" value: 180491145402588 } + flops { key: "f16xf16->f16" value: 184856989584230 } + flops { key: "f16xf16->f32" value: 175190377549355 } + flops { key: "f32xf32->f32" value: 84890842708621 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 166226770493072 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 289730659471127 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 172377881521913 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 176052110837842 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 279184041601664 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 178392062468848 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 154706696059361 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 176922363486571 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 233067467766442 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 171537954149692 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 169373266661408 } + } + entries { + b: 1 + m: 4096 + n: 1024 + k: 512 + flops { key: "bf16xbf16->bf16" value: 255881280667262 } + flops { key: "bf16xbf16->f32" value: 248752884049577 } + flops { key: "f16xf16->f16" value: 263753825595676 } + flops { key: "f16xf16->f32" value: 246186363407084 } + flops { key: "f32xf32->f32" value: 112796893032539 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 490685170341597 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 441188217360041 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 440283679753972 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 495211264383719 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 503336141568030 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 211679019024149 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 450489542269771 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 473326790390125 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 489566544625555 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 207576593494756 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 467148933652382 } + } + entries { + b: 1 + m: 4096 + n: 2048 + k: 512 + flops { key: "bf16xbf16->bf16" value: 339549948296308 } + flops { key: "bf16xbf16->f32" value: 306334816589993 } + flops { key: "f16xf16->f16" value: 335046984632186 } + flops { key: "f16xf16->f32" value: 282703129570511 } + flops { key: "f32xf32->f32" value: 150318218426809 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 645859743759398 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 512985045804717 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 693967894005493 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 578758562996900 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 517933951884232 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 269894573538190 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 683966445736125 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 553332555526926 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 524288000000000 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 270574687120042 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 692848410388772 } + } + entries { + b: 1 + m: 4096 + n: 4096 + k: 512 + flops { key: "bf16xbf16->bf16" value: 423358038048299 } + flops { key: "bf16xbf16->f32" value: 354721448298645 } + flops { key: "f16xf16->f16" value: 393276009156670 } + flops { key: "f16xf16->f32" value: 334655391616019 } + flops { key: "f32xf32->f32" value: 173067274965497 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 775509826389202 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 606590960525386 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 995011536198308 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 650777271260275 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 708272970976253 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 304478044520062 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 858564177111444 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 663341024132205 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 699022223379582 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 306547993219492 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 967008284588539 } + } + entries { + b: 1 + m: 4096 + n: 256 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 155840613062409 } + flops { key: "bf16xbf16->f32" value: 161222496096096 } + flops { key: "f16xf16->f16" value: 150373478607940 } + flops { key: "f16xf16->f32" value: 159545590490341 } + flops { key: "f32xf32->f32" value: 81405748597422 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 155614757101449 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 292931884872459 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 166484506395844 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 149733903779110 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 323904019306184 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 172377881521913 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 170719743063836 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 153831206876790 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 305430756364670 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 166484506395844 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 168840604450035 } + } + entries { + b: 1 + m: 4096 + n: 512 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 243949068272179 } + flops { key: "bf16xbf16->f32" value: 249330505979333 } + flops { key: "f16xf16->f16" value: 242845600814203 } + flops { key: "f16xf16->f32" value: 239047548060332 } + flops { key: "f32xf32->f32" value: 99090238464378 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 224538231702216 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 466134935532884 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 227391322321050 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 225955771043771 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 433178748966212 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 229334007689021 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 224526493596110 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 225008764459346 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 473326790390125 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 226910782755705 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 230565132918187 } + } + entries { + b: 1 + m: 4096 + n: 1024 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 340897475672672 } + flops { key: "bf16xbf16->f32" value: 325142306370415 } + flops { key: "f16xf16->f16" value: 325635338413131 } + flops { key: "f16xf16->f32" value: 304802164218295 } + flops { key: "f32xf32->f32" value: 123697631035525 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 562794640110070 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 543563538062393 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 502776388176763 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 633476002359882 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 638182361961367 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 290357442942130 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 503956268231152 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 512373074381151 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 652780195455581 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 290367257952202 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 506930338861020 } + } + entries { + b: 1 + m: 4096 + n: 2048 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 422317334906588 } + flops { key: "bf16xbf16->f32" value: 414952639582628 } + flops { key: "f16xf16->f16" value: 403444313082685 } + flops { key: "f16xf16->f32" value: 375861319331408 } + flops { key: "f32xf32->f32" value: 169008363754414 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 854294837593237 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 675362417800141 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 672191454104390 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 912463840237943 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 679126741668972 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 391474744992594 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 834338749162255 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 711794381173351 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 691148134690429 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 388456319450097 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 697886386805865 } + } + entries { + b: 1 + m: 4096 + n: 4096 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 502034429187183 } + flops { key: "bf16xbf16->f32" value: 464509103258077 } + flops { key: "f16xf16->f16" value: 444418066171715 } + flops { key: "f16xf16->f32" value: 418195009469097 } + flops { key: "f32xf32->f32" value: 200496801526494 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1101061922963532 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1025970091609435 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1110312750210043 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1066807574764033 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1006701777504321 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 432649664026593 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1110312750210043 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1088470186207115 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 884693814511560 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 428324192124060 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1139059783457649 } + } + entries { + b: 1 + m: 4096 + n: 256 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 189430922065893 } + flops { key: "bf16xbf16->f32" value: 191287012693181 } + flops { key: "f16xf16->f16" value: 188922639922582 } + flops { key: "f16xf16->f32" value: 182337817703247 } + flops { key: "f32xf32->f32" value: 92948565096952 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 438485686166411 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 462122584032709 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 459158359632242 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 469190222416430 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 444889920861818 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 195643752380084 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 437592185022924 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 473326790390125 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 438485686166411 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 188590818301571 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 457154581798829 } + } + entries { + b: 1 + m: 4096 + n: 512 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 299061191101208 } + flops { key: "bf16xbf16->f32" value: 293944310714163 } + flops { key: "f16xf16->f16" value: 284953875999336 } + flops { key: "f16xf16->f32" value: 280121786792760 } + flops { key: "f32xf32->f32" value: 112502908752766 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 617980905899280 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 504548287342143 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 547025064764694 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 514213384735109 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 528156332513526 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 271773170247097 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 571823631473838 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 574885195556150 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 504548287342143 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 270736718103883 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 530111984201431 } + } + entries { + b: 1 + m: 4096 + n: 1024 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 383077333690101 } + flops { key: "bf16xbf16->f32" value: 385492734012475 } + flops { key: "f16xf16->f16" value: 366707276227881 } + flops { key: "f16xf16->f32" value: 362827226694825 } + flops { key: "f32xf32->f32" value: 135630189267922 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 749754263070611 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 723789567913717 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 668529425791890 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 687277240628875 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 692820469572932 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 356347497127211 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 699022223379582 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 681794951345344 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 688930873160364 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 353699027917318 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 669545546747729 } + } + entries { + b: 1 + m: 4096 + n: 2048 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 493369590166994 } + flops { key: "bf16xbf16->f32" value: 482811150942866 } + flops { key: "f16xf16->f16" value: 437274754291968 } + flops { key: "f16xf16->f32" value: 424508751766740 } + flops { key: "f32xf32->f32" value: 185755425754028 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1218344031203460 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1090543002126511 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1193751115867004 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1176542198602931 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1124116285022574 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 488314171565004 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1079578294152763 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1048544000976532 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1149770391112301 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 490832369584160 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 821570904500023 } + } + entries { + b: 1 + m: 4096 + n: 4096 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 543464666903920 } + flops { key: "bf16xbf16->f32" value: 531592365928940 } + flops { key: "f16xf16->f16" value: 488730916704597 } + flops { key: "f16xf16->f32" value: 468445003892376 } + flops { key: "f32xf32->f32" value: 220934531687242 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1596493744447542 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1336019067112528 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1407839808571662 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1394668007549773 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1336019067112528 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 507679349408983 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1439724219815214 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1391843249063253 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1382296269380858 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 507154809859778 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1437916694272980 } + } + entries { + b: 1 + m: 4096 + n: 256 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 469215851422953 } + flops { key: "bf16xbf16->f32" value: 458178717303179 } + flops { key: "f16xf16->f16" value: 468703802695476 } + flops { key: "f16xf16->f32" value: 453342547603968 } + flops { key: "f32xf32->f32" value: 212727453987122 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1194539645668196 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1429511498086204 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1336122972779592 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1283996202092675 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1520880770538243 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 1149770391112301 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1218430438581560 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1253822010217486 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1484093744298548 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1242936563738966 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1374389534720000 } + } + entries { + b: 1 + m: 4096 + n: 512 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 332962559528654 } + flops { key: "bf16xbf16->f32" value: 339020605505673 } + flops { key: "f16xf16->f16" value: 320286902887824 } + flops { key: "f16xf16->f32" value: 305996530065545 } + flops { key: "f32xf32->f32" value: 117641329425621 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 817660710294607 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 691148134690429 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 683422276394303 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 661807819407527 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 669050127891580 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 299587918458453 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 677493066645634 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 676426064414520 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 674302110997723 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 299478248160931 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 681281246143474 } + } + entries { + b: 1 + m: 4096 + n: 1024 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 420863761688367 } + flops { key: "bf16xbf16->f32" value: 418806688866678 } + flops { key: "f16xf16->f16" value: 387934407063260 } + flops { key: "f16xf16->f32" value: 400430481988648 } + flops { key: "f32xf32->f32" value: 154516764333157 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1098948965905456 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1038403649792982 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1037776386118578 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1017463380752146 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1025357754938824 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 358429183284304 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1051110109455780 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 969163071333878 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1029073598131121 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 370587253340811 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1024135271773472 } + } + entries { + b: 1 + m: 4096 + n: 2048 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 527665620357359 } + flops { key: "bf16xbf16->f32" value: 520858579876454 } + flops { key: "f16xf16->f16" value: 464512243127234 } + flops { key: "f16xf16->f32" value: 454064454490792 } + flops { key: "f32xf32->f32" value: 207957889828687 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1504103413062511 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1428323011639507 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1384524252246444 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1369077513965812 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1359301290396597 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 529866736082410 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1475648537353174 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1506741728117874 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1360916461748688 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 529621714778962 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1461183855751648 } + } + entries { + b: 1 + m: 4096 + n: 4096 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 587080012780535 } + flops { key: "bf16xbf16->f32" value: 573920147790574 } + flops { key: "f16xf16->f16" value: 514069134566400 } + flops { key: "f16xf16->f32" value: 497374338096978 } + flops { key: "f32xf32->f32" value: 233958953835992 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1869688792828089 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1674410388050973 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1762150823411757 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1741563332007045 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1717578993389070 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 573056282327433 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1785965219569878 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1780435700598492 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1726663401995025 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 578028335851151 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1777672264686861 } + } + entries { + b: 2 + m: 256 + n: 256 + k: 256 + flops { key: "bf16xbf16->bf16" value: 16921044881492 } + flops { key: "bf16xbf16->f32" value: 17185368501920 } + flops { key: "f16xf16->f16" value: 16260931427186 } + flops { key: "f16xf16->f32" value: 16668868355688 } + flops { key: "f32xf32->f32" value: 15023251399149 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 19367637518037 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 20428877929984 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 17819666489644 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 17093444727457 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 19819510927347 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 18010967257112 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 17180968766001 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 18206419967444 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 19146608844507 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 19037975602836 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 17914806193272 } + } + entries { + b: 2 + m: 256 + n: 512 + k: 256 + flops { key: "bf16xbf16->bf16" value: 28393849799026 } + flops { key: "bf16xbf16->f32" value: 27241268114471 } + flops { key: "f16xf16->f16" value: 28274221192332 } + flops { key: "f16xf16->f32" value: 29779837585977 } + flops { key: "f32xf32->f32" value: 19480076632801 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 28636169831448 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 30046502798298 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 28636169831448 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 29388598204510 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 31315382174521 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 31759992427827 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 28037962815959 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 28630061433447 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 29388598204510 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 32688194836824 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 29007505511130 } + } + entries { + b: 2 + m: 256 + n: 1024 + k: 256 + flops { key: "bf16xbf16->bf16" value: 45894247905624 } + flops { key: "bf16xbf16->f32" value: 44821415261312 } + flops { key: "f16xf16->f16" value: 47184998417999 } + flops { key: "f16xf16->f32" value: 45428237603655 } + flops { key: "f32xf32->f32" value: 39296655833699 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 51345726090283 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 44821415261312 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 51941845201238 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 44672234315193 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 42273300157480 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 52551968676585 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 53388117740652 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 49092073152889 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 42819501674908 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 55381773468124 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 51345726090283 } + } + entries { + b: 2 + m: 256 + n: 2048 + k: 256 + flops { key: "bf16xbf16->bf16" value: 65536000000000 } + flops { key: "bf16xbf16->f32" value: 70344721174004 } + flops { key: "f16xf16->f16" value: 68200065040650 } + flops { key: "f16xf16->f32" value: 66675473422752 } + flops { key: "f32xf32->f32" value: 51350637207077 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 79067881001472 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 80732467969924 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 76141102254999 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 87027218674015 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 77908998984182 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 84827130984357 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 78135775287439 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 74245735306320 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 80976004826546 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 87310280045535 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 77908998984182 } + } + entries { + b: 2 + m: 256 + n: 4096 + k: 256 + flops { key: "bf16xbf16->bf16" value: 129475681176896 } + flops { key: "bf16xbf16->f32" value: 125539790015199 } + flops { key: "f16xf16->f16" value: 105114226529613 } + flops { key: "f16xf16->f32" value: 100953537420082 } + flops { key: "f32xf32->f32" value: 78375315620437 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 118855636927164 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 121836131169862 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 104500420827250 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 111673616640665 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 115047875709846 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 103883690402476 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 104704224670892 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 108954015626585 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 116281332466969 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 125539790015199 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 119917559079740 } + } + entries { + b: 2 + m: 256 + n: 256 + k: 512 + flops { key: "bf16xbf16->bf16" value: 39886397622585 } + flops { key: "bf16xbf16->f32" value: 33009770782095 } + flops { key: "f16xf16->f16" value: 31911014740846 } + flops { key: "f16xf16->f32" value: 41877606240249 } + flops { key: "f32xf32->f32" value: 26908125100240 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 37861136248236 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 32688194836824 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 32848195790504 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 33337736711376 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 33172943153732 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 32688194836824 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 35080430737062 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 34717467149508 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 34013615813482 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 32529745031507 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 32372823926676 } + } + entries { + b: 2 + m: 256 + n: 512 + k: 512 + flops { key: "bf16xbf16->bf16" value: 37962870315372 } + flops { key: "bf16xbf16->f32" value: 37122867653160 } + flops { key: "f16xf16->f16" value: 39768215703703 } + flops { key: "f16xf16->f32" value: 42147190453760 } + flops { key: "f32xf32->f32" value: 28454044519821 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 43226321417069 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 45894247905624 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 44971595912213 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 43094470380478 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 46210269581683 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 45737852445050 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 38735275036075 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 45130372562205 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 47857988233196 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 44524043124896 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 46051716589466 } + } + entries { + b: 2 + m: 256 + n: 1024 + k: 512 + flops { key: "bf16xbf16->bf16" value: 59825151771785 } + flops { key: "bf16xbf16->f32" value: 60099732676592 } + flops { key: "f16xf16->f16" value: 65217554907677 } + flops { key: "f16xf16->f32" value: 62188221012394 } + flops { key: "f32xf32->f32" value: 49545119232189 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 62188221012394 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 60370056448892 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 59566283368467 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 59698755921272 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 59165848798765 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 64745647853352 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 62630764349043 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 61056625952462 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 61901408047964 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 65217554907677 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 66345886307464 } + } + entries { + b: 2 + m: 256 + n: 2048 + k: 512 + flops { key: "bf16xbf16->bf16" value: 91788495811249 } + flops { key: "bf16xbf16->f32" value: 91320107501275 } + flops { key: "f16xf16->f16" value: 108524542551041 } + flops { key: "f16xf16->f32" value: 90710638168454 } + flops { key: "f32xf32->f32" value: 72344820374612 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 101143728711379 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 80369897005988 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 102888254503641 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 106363726993561 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 81715511719939 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 111673616640665 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 109621421541602 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 108733349265822 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 81597524431947 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 107643290626566 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 110082204633996 } + } + entries { + b: 2 + m: 256 + n: 4096 + k: 512 + flops { key: "bf16xbf16->bf16" value: 185175790980425 } + flops { key: "bf16xbf16->f32" value: 176341242240105 } + flops { key: "f16xf16->f16" value: 175190377549355 } + flops { key: "f16xf16->f32" value: 166226770493072 } + flops { key: "f32xf32->f32" value: 104191142981902 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 182966997358779 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 234109195246920 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 175749541533677 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 177507327492147 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 273495115639327 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 175190377549355 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 171537954149692 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 182966997358779 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 299467807558220 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 175763926010803 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 178392062468848 } + } + entries { + b: 2 + m: 256 + n: 256 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 48735558460421 } + flops { key: "bf16xbf16->f32" value: 47519110639051 } + flops { key: "f16xf16->f16" value: 48735558460421 } + flops { key: "f16xf16->f32" value: 47687947415171 } + flops { key: "f32xf32->f32" value: 37329363927131 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 55381773468124 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 51542906298003 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 59035728172421 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 50571864355689 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 52977196763370 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 56075925631919 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 51941845201238 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 52551968676585 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 56075925631919 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 54471480519480 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 55370349834983 } + } + entries { + b: 2 + m: 256 + n: 512 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 73634743107941 } + flops { key: "bf16xbf16->f32" value: 81715511719939 } + flops { key: "f16xf16->f16" value: 80976004826546 } + flops { key: "f16xf16->f32" value: 70911492801479 } + flops { key: "f32xf32->f32" value: 69615004149377 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 82722790755007 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 88753663746073 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 74866951889555 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 76794580460592 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 76357689091167 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 93385095146982 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 74866951889555 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 66337688372667 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 47523316986810 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 72247464944152 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 65536000000000 } + } + entries { + b: 2 + m: 256 + n: 1024 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 99273467455621 } + flops { key: "bf16xbf16->f32" value: 101535869881796 } + flops { key: "f16xf16->f16" value: 98544587371512 } + flops { key: "f16xf16->f32" value: 91639653836306 } + flops { key: "f32xf32->f32" value: 58780414080035 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 81846316335086 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 113563386991010 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 83242253197922 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 80976004826546 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 110992539177175 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 82595524923076 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 81840078048780 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 80249762630792 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 123517982744737 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 82348479484623 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 81971282082601 } + } + entries { + b: 2 + m: 256 + n: 2048 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 146866615237313 } + flops { key: "bf16xbf16->f32" value: 144494929888305 } + flops { key: "f16xf16->f16" value: 148491470612640 } + flops { key: "f16xf16->f32" value: 137456547910132 } + flops { key: "f32xf32->f32" value: 87094279433832 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 138342050376860 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 263430280667320 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 135710543983822 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 139965042560125 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 288950975242195 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 136400130081300 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 135882286003543 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 136408794257765 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 291342239587572 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 137280805983507 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 136921936240754 } + } + entries { + b: 2 + m: 256 + n: 4096 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 221515668471813 } + flops { key: "bf16xbf16->f32" value: 225955771043771 } + flops { key: "f16xf16->f16" value: 222203285012157 } + flops { key: "f16xf16->f32" value: 218129370035551 } + flops { key: "f32xf32->f32" value: 118403465181672 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 230812945829750 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 394903208532548 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 229334007689021 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 231559591114945 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 398567863400148 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 225706411056808 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 225244771134885 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 229824876712328 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 403056240240240 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 228115960059485 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 224057973603213 } + } + entries { + b: 2 + m: 256 + n: 256 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 81467513201820 } + flops { key: "bf16xbf16->f32" value: 81715511719939 } + flops { key: "f16xf16->f16" value: 78604818740849 } + flops { key: "f16xf16->f32" value: 78147148762736 } + flops { key: "f32xf32->f32" value: 56311192783721 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 92739836241147 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 93727463687150 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 93711103508465 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 96058492037931 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 94369996835999 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 90549993590824 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 93711103508465 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 93385095146982 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 85096039308923 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 91475704890100 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 93061347200554 } + } + entries { + b: 2 + m: 256 + n: 512 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 133350946845504 } + flops { key: "bf16xbf16->f32" value: 121012264623013 } + flops { key: "f16xf16->f16" value: 125246917531785 } + flops { key: "f16xf16->f32" value: 130103213861626 } + flops { key: "f32xf32->f32" value: 100575292618958 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 110992539177175 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 106574870868486 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 110752122124806 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 106574870868486 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 74663919338015 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 108733349265822 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 108733349265822 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 113816178079287 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 105114226529613 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 119397511842544 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 108087560297966 } + } + entries { + b: 2 + m: 256 + n: 1024 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 181405951005237 } + flops { key: "bf16xbf16->f32" value: 178971884990415 } + flops { key: "f16xf16->f16" value: 168575527749430 } + flops { key: "f16xf16->f32" value: 177214362766133 } + flops { key: "f32xf32->f32" value: 139058709318137 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 158357322321362 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 157671339794419 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 159072862814814 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 158837547928994 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 160259973731343 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 149535801685119 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 154484112509891 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 150163180756590 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 159308875964391 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 161708106024096 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 159308875964391 } + } + entries { + b: 2 + m: 256 + n: 2048 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 191116775508387 } + flops { key: "bf16xbf16->f32" value: 189933546897802 } + flops { key: "f16xf16->f16" value: 186949042221641 } + flops { key: "f16xf16->f32" value: 179893918157068 } + flops { key: "f32xf32->f32" value: 93842145079531 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 369682156653468 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 392019650967506 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 367185371975720 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 386342295223531 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 376850688426779 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 152509313827142 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 367814275584482 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 385648495645146 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 406105077155824 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 153600146484514 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 393420105889896 } + } + entries { + b: 2 + m: 256 + n: 4096 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 275972967679753 } + flops { key: "bf16xbf16->f32" value: 275256660108309 } + flops { key: "f16xf16->f16" value: 271087025972796 } + flops { key: "f16xf16->f32" value: 265876395691469 } + flops { key: "f32xf32->f32" value: 131390773391253 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 489566544625555 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 441210878422106 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 265383545229856 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 275609926909872 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 436724520412832 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 267532533698766 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 441664589027713 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 270404337583026 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 433616082382635 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 266867608798309 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 269555797282455 } + } + entries { + b: 2 + m: 256 + n: 256 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 117297555604107 } + flops { key: "bf16xbf16->f32" value: 118868794863279 } + flops { key: "f16xf16->f16" value: 112622385567442 } + flops { key: "f16xf16->f32" value: 114789589908060 } + flops { key: "f32xf32->f32" value: 93883170761563 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 124088966138911 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 114789589908060 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 117812357252578 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 127024940731101 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 115779795557472 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 122671292585399 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 120740112897784 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 125246917531785 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 111906391245440 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 127628886722928 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 118071456344842 } + } + entries { + b: 2 + m: 256 + n: 512 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 167002383389066 } + flops { key: "bf16xbf16->f32" value: 172364045910586 } + flops { key: "f16xf16->f16" value: 168311282075397 } + flops { key: "f16xf16->f32" value: 162688155151515 } + flops { key: "f32xf32->f32" value: 135719120773557 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 159783009523809 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 161708106024096 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 161222496096096 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 157903209411764 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 159297058675172 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 159061080512554 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 160021136214605 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 160259973731343 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 158837547928994 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 158135762002945 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 159308875964391 } + } + entries { + b: 2 + m: 256 + n: 1024 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 270055790744466 } + flops { key: "bf16xbf16->f32" value: 289769754149237 } + flops { key: "f16xf16->f16" value: 270055790744466 } + flops { key: "f16xf16->f32" value: 273164618457037 } + flops { key: "f32xf32->f32" value: 206181522538524 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 323904019306184 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 348674078259457 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 323416212048192 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 314857216919580 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 340897475672672 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 334525063945790 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 319091180980683 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 321479588023952 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 330916657369597 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 337151055498861 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 325870052807283 } + } + entries { + b: 2 + m: 256 + n: 2048 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 349226921657112 } + flops { key: "bf16xbf16->f32" value: 358287157122002 } + flops { key: "f16xf16->f16" value: 337151055498861 } + flops { key: "f16xf16->f32" value: 336095727052195 } + flops { key: "f32xf32->f32" value: 243810586739327 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1307448187519026 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1315457058499234 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1265086096023564 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1303480211229135 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1235961811798561 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 1235784001150913 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1307448187519026 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1331979313381919 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1311440395725190 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1276364723922734 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1207978426662916 } + } + entries { + b: 2 + m: 256 + n: 4096 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 311223876089201 } + flops { key: "bf16xbf16->f32" value: 308197785982096 } + flops { key: "f16xf16->f16" value: 294852387052483 } + flops { key: "f16xf16->f32" value: 293136812735680 } + flops { key: "f32xf32->f32" value: 137323601646616 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 614862359400164 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 615721782811268 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 623339834693951 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 617936450039565 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 626065711307897 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 296378380153883 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 641039894925373 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 630685359177679 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 624699799425475 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 295867963765370 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 635820473131014 } + } + entries { + b: 2 + m: 512 + n: 256 + k: 256 + flops { key: "bf16xbf16->bf16" value: 27921308092365 } + flops { key: "bf16xbf16->f32" value: 28758887508035 } + flops { key: "f16xf16->f16" value: 28037962815959 } + flops { key: "f16xf16->f32" value: 21070286970172 } + flops { key: "f32xf32->f32" value: 22561393175323 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 31025827092001 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 32529745031507 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 30875943869335 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 32063480172001 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 30883048320294 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 35080430737062 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 34717467149508 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 30883048320294 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 32848195790504 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 36021934514224 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 31454822591985 } + } + entries { + b: 2 + m: 512 + n: 512 + k: 256 + flops { key: "bf16xbf16->bf16" value: 43513609337007 } + flops { key: "bf16xbf16->f32" value: 40488002413273 } + flops { key: "f16xf16->f16" value: 37329363927131 } + flops { key: "f16xf16->f32" value: 43940981502700 } + flops { key: "f32xf32->f32" value: 35362331181662 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 52347007800312 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 43513609337007 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 52966743488555 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 52143639471639 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 43933789852700 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 48210390804597 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 48550453246518 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 50955857251328 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 42548019654461 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 53601329073482 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 53176595879556 } + } + entries { + b: 2 + m: 512 + n: 1024 + k: 256 + flops { key: "bf16xbf16->bf16" value: 76586435378031 } + flops { key: "bf16xbf16->f32" value: 67513947686116 } + flops { key: "f16xf16->f16" value: 76805566809728 } + flops { key: "f16xf16->f32" value: 70715346680716 } + flops { key: "f32xf32->f32" value: 48913166180758 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 68900271047227 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 87310280045535 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 65696391581008 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 87310280045535 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 86466566596875 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 82481320018436 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 93061347200554 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 79772795245170 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 80010568107302 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 86175106260032 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 70911492801479 } + } + entries { + b: 2 + m: 512 + n: 2048 + k: 256 + flops { key: "bf16xbf16->bf16" value: 122391636156388 } + flops { key: "bf16xbf16->f32" value: 122671292585399 } + flops { key: "f16xf16->f16" value: 103095710417666 } + flops { key: "f16xf16->f32" value: 111918055451323 } + flops { key: "f32xf32->f32" value: 80490391604197 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 111222480215454 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 106564293767368 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 117554392818042 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 116030022044521 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 113096884769328 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 117041838238500 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 118084441218519 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 118084441218519 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 106786854699154 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 117041838238500 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 117297555604107 } + } + entries { + b: 2 + m: 512 + n: 4096 + k: 256 + flops { key: "bf16xbf16->bf16" value: 183592685987860 } + flops { key: "bf16xbf16->f32" value: 180795053712746 } + flops { key: "f16xf16->f16" value: 194219376684453 } + flops { key: "f16xf16->f32" value: 167262531972895 } + flops { key: "f32xf32->f32" value: 94212672106694 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 152943782351684 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 264078166256763 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 148081895462694 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 151862219645003 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 287442597778075 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 149953470288387 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 147674573511208 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 146866615237313 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 279911841501564 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 152077306706323 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 148697108987674 } + } + entries { + b: 2 + m: 512 + n: 256 + k: 512 + flops { key: "bf16xbf16->bf16" value: 39886397622585 } + flops { key: "bf16xbf16->f32" value: 41753842899362 } + flops { key: "f16xf16->f16" value: 40610507715582 } + flops { key: "f16xf16->f32" value: 41495664863193 } + flops { key: "f32xf32->f32" value: 29717198715819 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 55611240107727 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 51150048780487 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 48913166180758 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 53827041507920 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 54928474728872 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 52357217866198 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 51941845201238 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 54471480519480 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 52551968676585 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 46855551754232 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 51150048780487 } + } + entries { + b: 2 + m: 512 + n: 512 + k: 512 + flops { key: "bf16xbf16->bf16" value: 61188843400957 } + flops { key: "bf16xbf16->f32" value: 59427818463582 } + flops { key: "f16xf16->f16" value: 59831819012593 } + flops { key: "f16xf16->f32" value: 56311192783721 } + flops { key: "f32xf32->f32" value: 49182018321729 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 67344569994982 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 68027231626964 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 71668790815645 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 64745647853352 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 69077574884199 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 67344569994982 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 69805085424522 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 69255793601651 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 76586435378031 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 65857570166830 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 64427086523460 } + } + entries { + b: 2 + m: 512 + n: 1024 + k: 512 + flops { key: "bf16xbf16->bf16" value: 104694015600624 } + flops { key: "bf16xbf16->f32" value: 94544494496786 } + flops { key: "f16xf16->f16" value: 98184146305779 } + flops { key: "f16xf16->f32" value: 97826332361516 } + flops { key: "f32xf32->f32" value: 69891415999479 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 122391636156388 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 89642830522624 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 124955408355638 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 118855636927164 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 91165038546442 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 121285645995707 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 122671292585399 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 121285645995707 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 89344468630387 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 125554469597754 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 118331697597531 } + } + entries { + b: 2 + m: 512 + n: 2048 + k: 512 + flops { key: "bf16xbf16->bf16" value: 188756583282060 } + flops { key: "bf16xbf16->f32" value: 184856989584230 } + flops { key: "f16xf16->f16" value: 180188257090115 } + flops { key: "f16xf16->f32" value: 174890760485381 } + flops { key: "f32xf32->f32" value: 103488200472266 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 173758689861639 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 312543101149759 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 178688937260775 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 175190377549355 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 320999050523168 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 176341242240105 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 178406882778100 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 176341242240105 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 319091180980683 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 176922363486571 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 171812436834946 } + } + entries { + b: 2 + m: 512 + n: 4096 + k: 512 + flops { key: "bf16xbf16->bf16" value: 269040797795038 } + flops { key: "bf16xbf16->f32" value: 255576750728949 } + flops { key: "f16xf16->f16" value: 266371080129000 } + flops { key: "f16xf16->f32" value: 246186363407084 } + flops { key: "f32xf32->f32" value: 116410551456836 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 219254035223850 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 437592185022924 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 218807239085027 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 216382049272003 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 444843842154324 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 221515668471813 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 223824446088905 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 225244771134885 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 441188217360041 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 221973605664375 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 506900424406939 } + } + entries { + b: 2 + m: 512 + n: 256 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 77683535233685 } + flops { key: "bf16xbf16->f32" value: 70715346680716 } + flops { key: "f16xf16->f16" value: 71668790815645 } + flops { key: "f16xf16->f32" value: 74245735306320 } + flops { key: "f32xf32->f32" value: 59296544289816 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 92103433178932 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 84546600314960 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 85899345920000 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 92420539163367 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 81727951286344 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 88170621120052 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 90856475207310 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 90245572701294 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 95733044222539 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 88170621120052 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 103085812596006 } + } + entries { + b: 2 + m: 512 + n: 512 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 97109688342226 } + flops { key: "bf16xbf16->f32" value: 94878662543076 } + flops { key: "f16xf16->f16" value: 98364036643459 } + flops { key: "f16xf16->f32" value: 95384367415830 } + flops { key: "f32xf32->f32" value: 58844841562996 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 91172779485437 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 158602928212703 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 92111334305567 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 91945694810755 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 163431023439878 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 92103433178932 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 86182022955293 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 86886375141608 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 161464935939849 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 88607181383066 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 88607181383066 } + } + entries { + b: 2 + m: 512 + n: 1024 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 156510724291232 } + flops { key: "bf16xbf16->f32" value: 154929921939254 } + flops { key: "f16xf16->f16" value: 149744344745833 } + flops { key: "f16xf16->f32" value: 156522131778425 } + flops { key: "f32xf32->f32" value: 85909655078609 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 152726239101059 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 267365992031872 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 149327838676030 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 142189210620406 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 234083676477000 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 153820188238664 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 153820188238664 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 149953470288387 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 267365992031872 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 153611133619456 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 150785258250245 } + } + entries { + b: 2 + m: 512 + n: 2048 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 226193769538656 } + flops { key: "bf16xbf16->f32" value: 226910782755705 } + flops { key: "f16xf16->f16" value: 213573709398309 } + flops { key: "f16xf16->f32" value: 220379049515111 } + flops { key: "f32xf32->f32" value: 121491494003168 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 228358533390046 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 492937828072994 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 220605439211053 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 231809547495682 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 494071930978948 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 228358533390046 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 225955771043771 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 230812945829750 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 478601214174281 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 233587170065807 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 223126775209101 } + } + entries { + b: 2 + m: 512 + n: 4096 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 325882415569634 } + flops { key: "bf16xbf16->f32" value: 323172858991723 } + flops { key: "f16xf16->f16" value: 318145725629629 } + flops { key: "f16xf16->f32" value: 307431179700082 } + flops { key: "f32xf32->f32" value: 130910199978664 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 661833314739194 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 661833314739194 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 653724093759513 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 658737315337423 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 658787835876984 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 293532483324220 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 583476062491509 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 641998101046337 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 652730592097264 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 295969906350136 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 612647784894087 } + } + entries { + b: 2 + m: 512 + n: 256 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 120998627901735 } + flops { key: "bf16xbf16->f32" value: 111918055451323 } + flops { key: "f16xf16->f16" value: 121822308146131 } + flops { key: "f16xf16->f32" value: 122391636156388 } + flops { key: "f32xf32->f32" value: 98364036643459 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 117297555604107 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 108954015626585 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 117567264206722 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 110524119814719 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 112859136430523 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 114544679325794 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 111441808406850 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 115282566459093 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 111673616640665 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 110070919938493 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 106574870868486 } + } + entries { + b: 2 + m: 512 + n: 512 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 212306836183885 } + flops { key: "bf16xbf16->f32" value: 197451604266274 } + flops { key: "f16xf16->f16" value: 187438565767652 } + flops { key: "f16xf16->f32" value: 190093267947242 } + flops { key: "f32xf32->f32" value: 132039083128381 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 163182648024316 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 163182648024316 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 162935026403641 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 130593751398686 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 165957005255023 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 163942564165203 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 163182648024316 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 168311282075397 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 161708106024096 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 164180707033639 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 165445581510015 } + } + entries { + b: 2 + m: 512 + n: 1024 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 188425344213389 } + flops { key: "bf16xbf16->f32" value: 189757325086153 } + flops { key: "f16xf16->f16" value: 192314838848341 } + flops { key: "f16xf16->f32" value: 187438565767652 } + flops { key: "f32xf32->f32" value: 96897175318668 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 338746533322817 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 478654552100746 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 460142200128562 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 453342547603968 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 441188217360041 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 175047574828822 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 443924268320413 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 403056240240240 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 460142200128562 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 173765719788000 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 428853449425861 } + } + entries { + b: 2 + m: 512 + n: 2048 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 295562556928052 } + flops { key: "bf16xbf16->f32" value: 282889332850321 } + flops { key: "f16xf16->f16" value: 278297628199313 } + flops { key: "f16xf16->f32" value: 269725079034131 } + flops { key: "f32xf32->f32" value: 133020543111992 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 621513247377179 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 644889984384384 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 630685359177679 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 629760600586510 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 628838549926793 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 274737241476364 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 655770256660813 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 660815031310100 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 650752620606060 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 273329767142902 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 666972171131299 } + } + entries { + b: 2 + m: 512 + n: 4096 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 376355353662811 } + flops { key: "bf16xbf16->f32" value: 373086109798471 } + flops { key: "f16xf16->f16" value: 351671767460902 } + flops { key: "f16xf16->f32" value: 345157495559930 } + flops { key: "f32xf32->f32" value: 141281818947368 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 669050127891580 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 729351270812990 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 717142644180998 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 728114820258529 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 705944657462195 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 354436037713271 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 718372117248588 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 726267984950327 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 720783267631634 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 358279685178619 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 758392671345958 } + } + entries { + b: 2 + m: 512 + n: 256 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 170991611434031 } + flops { key: "bf16xbf16->f32" value: 162208901578669 } + flops { key: "f16xf16->f16" value: 165957005255023 } + flops { key: "f16xf16->f32" value: 168311282075397 } + flops { key: "f32xf32->f32" value: 128399620209267 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 175476683118156 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 164444723792020 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 169106516103630 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 168311282075397 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 169106516103630 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 174905004723896 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 173198132752641 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 168047863526097 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 173758689861639 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 169373266661408 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 172655060942273 } + } + entries { + b: 2 + m: 512 + n: 512 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 258966975942116 } + flops { key: "bf16xbf16->f32" value: 257414881390470 } + flops { key: "f16xf16->f16" value: 261808430112770 } + flops { key: "f16xf16->f32" value: 255881280667262 } + flops { key: "f32xf32->f32" value: 179743347813350 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 667957588802488 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 647808038612368 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 647808038612368 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 657728529249617 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 682824689348171 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 703055704043214 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 647808038612368 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 685002758532695 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 640084544858420 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 689511526087654 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 687304736117778 } + } + entries { + b: 2 + m: 512 + n: 1024 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 364985536095177 } + flops { key: "bf16xbf16->f32" value: 355308346790205 } + flops { key: "f16xf16->f16" value: 348943193402932 } + flops { key: "f16xf16->f32" value: 345852340942948 } + flops { key: "f32xf32->f32" value: 241473437494729 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1162215477202002 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1064164344895936 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1110958948784273 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1137589007018938 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1149770391112301 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 1168539598966127 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1165368958350291 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1191226541672445 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1140610090559022 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1122720506077636 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1128621021153593 } + } + entries { + b: 2 + m: 512 + n: 2048 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 320525927424019 } + flops { key: "bf16xbf16->f32" value: 318027937504627 } + flops { key: "f16xf16->f16" value: 306766944342267 } + flops { key: "f16xf16->f32" value: 302654308787259 } + flops { key: "f32xf32->f32" value: 144155443914882 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 726882554855087 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 693379714412560 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 693379714412560 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 679664089251097 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 673271512481874 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 301591692718208 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 721388586353138 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 651764831139269 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 721994922630804 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 304586007800865 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 717741860962566 } + } + entries { + b: 2 + m: 512 + n: 4096 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 420657660508563 } + flops { key: "bf16xbf16->f32" value: 420143289614947 } + flops { key: "f16xf16->f16" value: 403539078383012 } + flops { key: "f16xf16->f32" value: 399778216435710 } + flops { key: "f32xf32->f32" value: 154322446397693 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 971354942131003 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 964808872265745 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 958885339435715 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1002589313647106 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 958885339435715 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 394626541800181 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 971931952025345 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 985903944449226 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 953034098909938 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 399778216435710 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 991022421274263 } + } + entries { + b: 2 + m: 1024 + n: 256 + k: 256 + flops { key: "bf16xbf16->bf16" value: 40245195802098 } + flops { key: "bf16xbf16->f32" value: 36616485609057 } + flops { key: "f16xf16->f16" value: 38178844545583 } + flops { key: "f16xf16->f32" value: 41108033078101 } + flops { key: "f32xf32->f32" value: 31532415834605 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 51150048780487 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 47687947415171 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 57028990014871 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 48559235890014 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 47866522111269 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 52153770351661 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 47527524079320 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 50184231819031 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 42548019654461 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 54693450692746 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 57272339662897 } + } + entries { + b: 2 + m: 1024 + n: 512 + k: 256 + flops { key: "bf16xbf16->bf16" value: 60642822997853 } + flops { key: "bf16xbf16->f32" value: 62917017696003 } + flops { key: "f16xf16->f16" value: 72053538048584 } + flops { key: "f16xf16->f32" value: 61758991372368 } + flops { key: "f32xf32->f32" value: 51647033381433 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 66675473422752 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 71468438764643 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 90245572701294 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 82468650076804 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 72247464944152 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 87027218674015 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 80732467969924 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 87580899184339 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 74658727854262 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 87310280045535 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 84827130984357 } + } + entries { + b: 2 + m: 1024 + n: 1024 + k: 256 + flops { key: "bf16xbf16->bf16" value: 94212672106694 } + flops { key: "bf16xbf16->f32" value: 101334637976594 } + flops { key: "f16xf16->f16" value: 91788495811249 } + flops { key: "f16xf16->f32" value: 93883170761563 } + flops { key: "f32xf32->f32" value: 78604818740849 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 126129663338423 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 103483213569776 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 121836131169862 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 117041838238500 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 102300097560975 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 117297555604107 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 118606188445819 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 117554392818042 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 107643290626566 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 120998627901735 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 115530646008177 } + } + entries { + b: 2 + m: 1024 + n: 2048 + k: 256 + flops { key: "bf16xbf16->bf16" value: 198546934911242 } + flops { key: "bf16xbf16->f32" value: 176341242240105 } + flops { key: "f16xf16->f16" value: 167785268224080 } + flops { key: "f16xf16->f32" value: 163431023439878 } + flops { key: "f32xf32->f32" value: 91796342993930 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 146465942436229 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 269378279979929 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 152077306706323 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 142377752966916 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 267365992031872 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 156055784318000 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 155614757101449 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 157891599735313 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 286675163262581 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 153161946223521 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 147471751682461 } + } + entries { + b: 2 + m: 1024 + n: 4096 + k: 256 + flops { key: "bf16xbf16->bf16" value: 256799240418535 } + flops { key: "bf16xbf16->f32" value: 199099170035230 } + flops { key: "f16xf16->f16" value: 251373480978578 } + flops { key: "f16xf16->f32" value: 193528017663227 } + flops { key: "f32xf32->f32" value: 119660304126152 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 198546934911242 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 303724439290007 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 502159160060797 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 502159160060797 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 400799486375513 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 184690057880025 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 485142583982830 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 488453007619697 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 384991690211545 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 184698000172013 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 495211264383719 } + } + entries { + b: 2 + m: 1024 + n: 256 + k: 512 + flops { key: "bf16xbf16->bf16" value: 54147343620776 } + flops { key: "bf16xbf16->f32" value: 56787699598053 } + flops { key: "f16xf16->f16" value: 57889897778736 } + flops { key: "f16xf16->f32" value: 57028990014871 } + flops { key: "f32xf32->f32" value: 43869170779539 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 70160861474124 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 64119301564552 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 69434934299017 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 68200065040650 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 70353939457476 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 74451658854527 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 68732673409294 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 72053538048584 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 79067881001472 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 74866951889555 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 72247464944152 } + } + entries { + b: 2 + m: 1024 + n: 512 + k: 512 + flops { key: "bf16xbf16->bf16" value: 101334637976594 } + flops { key: "bf16xbf16->f32" value: 104908825012213 } + flops { key: "f16xf16->f16" value: 101334637976594 } + flops { key: "f16xf16->f32" value: 97648401600582 } + flops { key: "f32xf32->f32" value: 62696591381525 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 112610574095437 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 90397526856373 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 116787233413095 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 118084441218519 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 89344468630387 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 121560265368504 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 118344739777361 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 126426683621806 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 93231034470782 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 120726537440971 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 118331697597531 } + } + entries { + b: 2 + m: 1024 + n: 1024 + k: 512 + flops { key: "bf16xbf16->bf16" value: 185175790980425 } + flops { key: "bf16xbf16->f32" value: 166743042782824 } + flops { key: "f16xf16->f16" value: 151851481261490 } + flops { key: "f16xf16->f32" value: 169373266661408 } + flops { key: "f32xf32->f32" value: 100481173872356 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 184222668611134 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 294538972431765 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 182345558970875 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 179585519986619 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 282118188124014 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 176052110837842 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 177801262460672 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 172655060942273 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 255288117926771 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 175190377549355 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 176341242240105 } + } + entries { + b: 2 + m: 1024 + n: 2048 + k: 512 + flops { key: "bf16xbf16->bf16" value: 264403305589756 } + flops { key: "bf16xbf16->f32" value: 247320470805021 } + flops { key: "f16xf16->f16" value: 259295296788215 } + flops { key: "f16xf16->f32" value: 240398930706369 } + flops { key: "f32xf32->f32" value: 110989670930563 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 217477710061268 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 504518653353694 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 218584523181841 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 218362260206416 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 350380755098711 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 217477710061268 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 218140448778505 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 217257691132581 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 453342547603968 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 212306836183885 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 521740439261418 } + } + entries { + b: 2 + m: 1024 + n: 4096 + k: 512 + flops { key: "bf16xbf16->bf16" value: 332453540986144 } + flops { key: "bf16xbf16->f32" value: 284963329087048 } + flops { key: "f16xf16->f16" value: 326377696417037 } + flops { key: "f16xf16->f32" value: 281397320055035 } + flops { key: "f32xf32->f32" value: 158778827948244 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 710029309968589 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 636291451259259 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 712384689998341 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 681794951345344 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 630639056750605 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 266205980909879 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 704208443351369 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 715947207201200 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 635350191715976 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 279939207821411 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 782610658892128 } + } + entries { + b: 2 + m: 1024 + n: 256 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 106153418091942 } + flops { key: "bf16xbf16->f32" value: 103294066762866 } + flops { key: "f16xf16->f16" value: 94544494496786 } + flops { key: "f16xf16->f32" value: 99081094767924 } + flops { key: "f32xf32->f32" value: 60298861346661 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 91327874797992 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 148903317709055 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 91327874797992 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 90702975502618 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 162935026403641 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 99457375324194 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 88026055418921 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 93719282883826 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 156750631240875 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 97639522051468 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 89344468630387 } + } + entries { + b: 2 + m: 1024 + n: 512 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 163182648024316 } + flops { key: "bf16xbf16->f32" value: 124232537776235 } + flops { key: "f16xf16->f16" value: 153820188238664 } + flops { key: "f16xf16->f32" value: 144300742373336 } + flops { key: "f32xf32->f32" value: 77635792198402 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 155165003468208 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 277058914720681 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 155378311844294 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 153611133619456 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 281378884696016 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 156055784318000 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 149327838676030 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 159308875964391 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 271421087967644 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 153380733376187 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 150795846359104 } + } + entries { + b: 2 + m: 1024 + n: 1024 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 243396083871698 } + flops { key: "bf16xbf16->f32" value: 252570849514848 } + flops { key: "f16xf16->f16" value: 237987881420734 } + flops { key: "f16xf16->f32" value: 239580927985719 } + flops { key: "f32xf32->f32" value: 120940706107622 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 233574466826191 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 352104221675684 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 236155896849397 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 237987881420734 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 360376514180231 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 234864510089134 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 235379366251986 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 235896484648761 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 359772767297704 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 243382291380971 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 231822059480757 } + } + entries { + b: 2 + m: 1024 + n: 2048 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 336095727052195 } + flops { key: "bf16xbf16->f32" value: 315806418823529 } + flops { key: "f16xf16->f16" value: 317440302734663 } + flops { key: "f16xf16->f32" value: 293733230474627 } + flops { key: "f32xf32->f32" value: 127636472392273 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 507499385088030 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 513598480837070 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 471792969297522 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 739427958336920 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 718342079946479 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 296174002413543 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 792721907715024 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 721964581610354 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 487898136544359 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 296583040154680 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 741982775503152 } + } + entries { + b: 2 + m: 1024 + n: 4096 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 419830140612399 } + flops { key: "bf16xbf16->f32" value: 399680559836218 } + flops { key: "f16xf16->f16" value: 396360953857512 } + flops { key: "f16xf16->f32" value: 363287569972510 } + flops { key: "f32xf32->f32" value: 186867703445875 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 774810318134668 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 797876146386773 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 978018284413070 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 891580735066687 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 733085947685086 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 373410476091114 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 945663520889525 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 976906015239395 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 840872653516714 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 378019873346975 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 926288304523642 } + } + entries { + b: 2 + m: 1024 + n: 256 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 159545590490341 } + flops { key: "bf16xbf16->f32" value: 161708106024096 } + flops { key: "f16xf16->f16" value: 157671339794419 } + flops { key: "f16xf16->f32" value: 159308875964391 } + flops { key: "f32xf32->f32" value: 135376892643257 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 173212102597193 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 174040331307237 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 169373266661408 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 169909300419336 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 173772750283217 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 168575527749430 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 175476683118156 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 176922363486571 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 175763926010803 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 172087799342896 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 173198132752641 } + } + entries { + b: 2 + m: 1024 + n: 512 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 194403987507355 } + flops { key: "bf16xbf16->f32" value: 197633319344745 } + flops { key: "f16xf16->f16" value: 192487218034329 } + flops { key: "f16xf16->f32" value: 194228159725048 } + flops { key: "f32xf32->f32" value: 90553811849040 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 400052840536512 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 348080662614474 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 341439486127673 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 335046984632186 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 335570536448160 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 183584838469758 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 325870052807283 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 343624873669893 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 344175598685792 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 184531355359828 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 408422146823887 } + } + entries { + b: 2 + m: 1024 + n: 1024 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 299906940576775 } + flops { key: "bf16xbf16->f32" value: 299061191101208 } + flops { key: "f16xf16->f16" value: 286665596262306 } + flops { key: "f16xf16->f32" value: 288214152194336 } + flops { key: "f32xf32->f32" value: 134018793852874 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 625131692889891 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 486241061474017 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 582684479175145 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 601451798907716 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 575655715855783 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 287635098848111 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 580322563977840 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 584309543024284 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 486764582761942 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 282703129570511 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 497534583955980 } + } + entries { + b: 2 + m: 1024 + n: 2048 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 378177977987144 } + flops { key: "bf16xbf16->f32" value: 373410476091114 } + flops { key: "f16xf16->f16" value: 360535333655117 } + flops { key: "f16xf16->f32" value: 352104221675684 } + flops { key: "f32xf32->f32" value: 137986483839876 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 765148050772725 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 695625751467789 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 784003522292703 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 779733544410656 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 759700591845759 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 362520978771892 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 763753409086867 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 796396680140923 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 794922690357209 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 352097005390117 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 681822009921816 } + } + entries { + b: 2 + m: 1024 + n: 4096 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 474667251965131 } + flops { key: "bf16xbf16->f32" value: 471146039491004 } + flops { key: "f16xf16->f16" value: 424409125211526 } + flops { key: "f16xf16->f32" value: 410589101476984 } + flops { key: "f32xf32->f32" value: 206829384732070 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1051785795518550 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1021091779138187 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1057613222359024 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1105312306761886 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1035274891319413 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 470887764060958 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1116808761879997 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 964267346785283 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 989880394341851 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 467295058657128 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1081583302946361 } + } + entries { + b: 2 + m: 1024 + n: 256 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 284755505933832 } + flops { key: "bf16xbf16->f32" value: 267033529967669 } + flops { key: "f16xf16->f16" value: 280661785009475 } + flops { key: "f16xf16->f32" value: 262785566324033 } + flops { key: "f32xf32->f32" value: 182959203237486 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 329899938244104 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 319566019047619 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 328864264624808 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 324884061724659 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 322929871879699 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 330916657369597 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 330407515655050 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 341439486127673 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 321479588023952 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 337681208900070 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 322929871879699 } + } + entries { + b: 2 + m: 1024 + n: 512 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 330649162477385 } + flops { key: "bf16xbf16->f32" value: 331926836121952 } + flops { key: "f16xf16->f16" value: 323428389321887 } + flops { key: "f16xf16->f32" value: 316259879680424 } + flops { key: "f32xf32->f32" value: 213679964975124 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1016199525848811 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 916357434606358 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1048448015623092 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1088435706031424 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 891627007681129 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 1053721122669283 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1088435706031424 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1077513119919719 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 916357434606358 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1152856608777345 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1168539598966127 } + } + entries { + b: 2 + m: 1024 + n: 1024 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 332447107688139 } + flops { key: "bf16xbf16->f32" value: 335177719369439 } + flops { key: "f16xf16->f16" value: 318735977439703 } + flops { key: "f16xf16->f32" value: 307866408329301 } + flops { key: "f32xf32->f32" value: 142573894869624 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 786912293147673 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 869866794126582 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 623792497875894 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 820785876642300 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 857706898851722 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 319929033762267 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 829544625012071 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 842563471505640 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 847551513764183 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 318381563825055 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 846674347444679 } + } + entries { + b: 2 + m: 1024 + n: 2048 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 422733001574803 } + flops { key: "bf16xbf16->f32" value: 420554685597483 } + flops { key: "f16xf16->f16" value: 376606986003178 } + flops { key: "f16xf16->f32" value: 401365990725057 } + flops { key: "f32xf32->f32" value: 155751604072418 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1031514210987691 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 965893749978916 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1009066939825555 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1025970091609435 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 965893749978916 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 399401803691821 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 991594423479841 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1010283398059394 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1045353931303051 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 399035367252372 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 985310230786877 } + } + entries { + b: 2 + m: 1024 + n: 4096 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 514144134552365 } + flops { key: "bf16xbf16->f32" value: 506702330288082 } + flops { key: "f16xf16->f16" value: 446265142322778 } + flops { key: "f16xf16->f32" value: 443154187722884 } + flops { key: "f32xf32->f32" value: 222078337941687 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1352319677581864 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1313019025469553 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1351787645290738 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1326195587085319 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1346516640266483 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 528883938152740 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1295640504836064 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1342806720650304 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1288353301261741 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 532581137370089 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1329788430752559 } + } + entries { + b: 2 + m: 2048 + n: 256 + k: 256 + flops { key: "bf16xbf16->bf16" value: 66841498007968 } + flops { key: "bf16xbf16->f32" value: 62332626494833 } + flops { key: "f16xf16->f16" value: 64582089738963 } + flops { key: "f16xf16->f32" value: 61758991372368 } + flops { key: "f32xf32->f32" value: 44821415261312 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 76141102254999 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 78604818740849 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 87595188774677 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 73033724935382 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 72053538048584 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 87013113776337 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 87013113776337 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 68373778909831 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 74040947731347 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 96420781609195 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 90245572701294 } + } + entries { + b: 2 + m: 2048 + n: 512 + k: 256 + flops { key: "bf16xbf16->bf16" value: 135368359051941 } + flops { key: "bf16xbf16->f32" value: 125246917531785 } + flops { key: "f16xf16->f16" value: 120726537440971 } + flops { key: "f16xf16->f32" value: 118071456344842 } + flops { key: "f32xf32->f32" value: 61901408047964 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 115779795557472 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 110308385453051 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 110752122124806 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 113816178079287 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 111453375960141 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 114300811581860 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 110070919938493 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 115035550032140 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 111441808406850 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 114544679325794 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 111685232369461 } + } + entries { + b: 2 + m: 2048 + n: 1024 + k: 256 + flops { key: "bf16xbf16->bf16" value: 174606362143263 } + flops { key: "bf16xbf16->f32" value: 162442030862329 } + flops { key: "f16xf16->f16" value: 174054437348030 } + flops { key: "f16xf16->f32" value: 166226770493072 } + flops { key: "f32xf32->f32" value: 86742482853334 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 140698660027517 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 240398930706369 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 152293003900432 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 264078166256763 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 247605632191859 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 152943782351684 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 151220593479332 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 142566795990174 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 316224951848034 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 151862219645003 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 151220593479332 } + } + entries { + b: 2 + m: 2048 + n: 2048 + k: 256 + flops { key: "bf16xbf16->bf16" value: 246752113983683 } + flops { key: "bf16xbf16->f32" value: 224303702527679 } + flops { key: "f16xf16->f16" value: 258966975942116 } + flops { key: "f16xf16->f32" value: 204609942165690 } + flops { key: "f32xf32->f32" value: 119660304126152 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 454301596784429 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 374223864773024 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 432306723301459 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 479723812800178 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 394903208532548 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 178096172499585 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 450442296381751 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 436702317844433 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 386342295223531 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 167523492316093 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 492937828072994 } + } + entries { + b: 2 + m: 2048 + n: 4096 + k: 256 + flops { key: "bf16xbf16->bf16" value: 295562556928052 } + flops { key: "bf16xbf16->f32" value: 253009766781538 } + flops { key: "f16xf16->f16" value: 292742207408922 } + flops { key: "f16xf16->f32" value: 239587610297604 } + flops { key: "f32xf32->f32" value: 143096413266921 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 514213384735109 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 418388514538989 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 619719687757016 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 616163445376945 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 542156942186316 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 207676964170011 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 649768123449319 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 604031684972927 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 536066811782326 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 208488497657823 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 607448878580015 } + } + entries { + b: 2 + m: 2048 + n: 256 + k: 512 + flops { key: "bf16xbf16->bf16" value: 87168519564864 } + flops { key: "bf16xbf16->f32" value: 129491295706705 } + flops { key: "f16xf16->f16" value: 125246917531785 } + flops { key: "f16xf16->f32" value: 122391636156388 } + flops { key: "f32xf32->f32" value: 66758382491917 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 113563386991010 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 90702975502618 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 137447750128008 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 121560265368504 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 89048086249792 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 142955907868459 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 126725106101734 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 120469182542353 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 91639653836306 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 134352080080080 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 135027895372233 } + } + entries { + b: 2 + m: 2048 + n: 512 + k: 512 + flops { key: "bf16xbf16->bf16" value: 189422567522272 } + flops { key: "bf16xbf16->f32" value: 183263666837344 } + flops { key: "f16xf16->f16" value: 195652664723032 } + flops { key: "f16xf16->f32" value: 174322887247341 } + flops { key: "f32xf32->f32" value: 87595188774677 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 173491973501373 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 253450212203469 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 179285661045249 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 174905004723896 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 264078166256763 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 174606362143263 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 175476683118156 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 172364045910586 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 262144000000000 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 171551657453267 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 173212102597193 } + } + entries { + b: 2 + m: 2048 + n: 1024 + k: 512 + flops { key: "bf16xbf16->bf16" value: 255881280667262 } + flops { key: "bf16xbf16->f32" value: 243949068272179 } + flops { key: "f16xf16->f16" value: 260870219630709 } + flops { key: "f16xf16->f32" value: 243120530737008 } + flops { key: "f32xf32->f32" value: 106839982487562 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 445767233627400 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 330916657369597 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 346955916956135 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 355014654984294 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 329899938244104 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 212727453987122 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 339281720199067 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 346955916956135 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 329393917938492 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 210847682670594 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 351527852021607 } + } + entries { + b: 2 + m: 2048 + n: 2048 + k: 512 + flops { key: "bf16xbf16->bf16" value: 337694484097967 } + flops { key: "bf16xbf16->f32" value: 314419274963396 } + flops { key: "f16xf16->f16" value: 330903909703763 } + flops { key: "f16xf16->f32" value: 284764945864412 } + flops { key: "f32xf32->f32" value: 153328714849258 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 667957588802488 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 501572731052201 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 725685105347638 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 538081595590077 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 518559287171747 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 266041086223984 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 691676833239391 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 551945935359506 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 524288000000000 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 270064281195963 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 752381062625908 } + } + entries { + b: 2 + m: 2048 + n: 4096 + k: 512 + flops { key: "bf16xbf16->bf16" value: 428425665436409 } + flops { key: "bf16xbf16->f32" value: 325635338413131 } + flops { key: "f16xf16->f16" value: 404775090921942 } + flops { key: "f16xf16->f32" value: 321245146393911 } + flops { key: "f32xf32->f32" value: 166937472636815 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 696782494484101 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 618849075465581 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 970285167965661 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 789806417065097 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 626088527113702 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 327997807934629 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 942550566961101 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 836777029077979 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 614862359400164 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 320645573526941 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1024746148762302 } + } + entries { + b: 2 + m: 2048 + n: 256 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 156055784318000 } + flops { key: "bf16xbf16->f32" value: 158369000589970 } + flops { key: "f16xf16->f16" value: 154484112509891 } + flops { key: "f16xf16->f32" value: 147674573511208 } + flops { key: "f32xf32->f32" value: 80671812471825 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 150584366313722 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 296982941225280 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 159308875964391 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 150163180756590 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 249910816711276 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 169106516103630 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 163182648024316 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 156055784318000 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 255257773445857 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 168840604450035 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 163930049465648 } + } + entries { + b: 2 + m: 2048 + n: 512 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 241738464344008 } + flops { key: "bf16xbf16->f32" value: 246186363407084 } + flops { key: "f16xf16->f16" value: 233320691873098 } + flops { key: "f16xf16->f32" value: 232814792714657 } + flops { key: "f32xf32->f32" value: 99317083963463 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 228845231031543 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 334004766778132 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 226671273801984 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 231310173201206 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 442096479258878 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 200399743187756 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 477590047370176 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 226671273801984 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 339281720199067 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 228358533390046 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 336622564150795 } + } + entries { + b: 2 + m: 2048 + n: 1024 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 337694484097967 } + flops { key: "bf16xbf16->f32" value: 326625901821362 } + flops { key: "f16xf16->f16" value: 322699372328036 } + flops { key: "f16xf16->f32" value: 313718804718600 } + flops { key: "f32xf32->f32" value: 127560656251856 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 577979719553223 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 649768123449319 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 445328145160454 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 670093969264373 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 656722828134556 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 295969906350136 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 644889984384384 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 427147418796618 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 540791651473180 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 292134899741531 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 681794951345344 } + } + entries { + b: 2 + m: 2048 + n: 2048 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 405348115612391 } + flops { key: "bf16xbf16->f32" value: 397093869822485 } + flops { key: "f16xf16->f16" value: 395084840033115 } + flops { key: "f16xf16->f32" value: 357831938180833 } + flops { key: "f32xf32->f32" value: 170015232055735 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 906685095207937 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 741982775503152 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 727467360433604 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 811481233007415 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 743910504200225 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 389336653764220 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 749754263070611 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 779733544410656 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 692820469572932 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 387754913194601 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 908603193568859 } + } + entries { + b: 2 + m: 2048 + n: 4096 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 503948876783854 } + flops { key: "bf16xbf16->f32" value: 439405319555987 } + flops { key: "f16xf16->f16" value: 470243312640280 } + flops { key: "f16xf16->f32" value: 396452420362763 } + flops { key: "f32xf32->f32" value: 194649579188878 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 900035057837384 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1106736403014881 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1266018362859248 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1009689637613870 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1010877857252133 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 435722109235705 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1235917354339772 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1101061922963532 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1124889126469143 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 439635830951314 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1288812391897974 } + } + entries { + b: 2 + m: 2048 + n: 256 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 199840279918109 } + flops { key: "bf16xbf16->f32" value: 189422567522272 } + flops { key: "f16xf16->f16" value: 190261685833259 } + flops { key: "f16xf16->f32" value: 188260160252476 } + flops { key: "f32xf32->f32" value: 91362843990640 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 408422146823887 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 456231920118971 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 456231920118971 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 418001683309002 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 440283679753972 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 180955015630924 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 430573162506265 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 439382843580562 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 472285825379371 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 185816703988924 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 460142200128562 } + } + entries { + b: 2 + m: 2048 + n: 512 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 295969906350136 } + flops { key: "bf16xbf16->f32" value: 292931884872459 } + flops { key: "f16xf16->f16" value: 283262476240725 } + flops { key: "f16xf16->f32" value: 281960761267027 } + flops { key: "f32xf32->f32" value: 111683780271215 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 592327581850779 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 545600520325203 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 530767090459713 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 553368201507440 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 586664020762191 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 267707625892105 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 522375005594745 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 534731984063745 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 592327581850779 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 270064281195963 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 587466460949254 } + } + entries { + b: 2 + m: 2048 + n: 1024 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 387938787038500 } + flops { key: "bf16xbf16->f32" value: 382055044454822 } + flops { key: "f16xf16->f16" value: 373898084443283 } + flops { key: "f16xf16->f32" value: 359780301648133 } + flops { key: "f32xf32->f32" value: 147172343587503 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 823935023931705 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 769259355393364 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 717741860962566 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 763074939326641 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 781862703499749 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 350659669422162 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 722602279032597 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 742592141084936 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 730591927875824 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 347538469928994 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 767849699830160 } + } + entries { + b: 2 + m: 2048 + n: 2048 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 484725095125908 } + flops { key: "bf16xbf16->f32" value: 478641216504610 } + flops { key: "f16xf16->f16" value: 439292962667484 } + flops { key: "f16xf16->f32" value: 420451761089560 } + flops { key: "f32xf32->f32" value: 192789626357841 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1074144628235588 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1118991023513319 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1340135667069698 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1149001416800428 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1148195100016708 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 480918992917728 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 940486625280560 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 787977029423231 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1040920305613620 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 484451721790623 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1223550258813474 } + } + entries { + b: 2 + m: 2048 + n: 4096 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 544325621488035 } + flops { key: "bf16xbf16->f32" value: 508280153372781 } + flops { key: "f16xf16->f16" value: 489218019306888 } + flops { key: "f16xf16->f32" value: 438900165649030 } + flops { key: "f32xf32->f32" value: 216419529353224 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1390716546981563 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1343331705684572 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1416545941952506 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1444566579134346 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1323131423378323 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 548238290300448 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1418885793194582 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1294176476694476 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1342282145792640 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 540638486452465 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1447030464013476 } + } + entries { + b: 2 + m: 2048 + n: 256 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 333227348591822 } + flops { key: "bf16xbf16->f32" value: 329381287319299 } + flops { key: "f16xf16->f16" value: 330140842922479 } + flops { key: "f16xf16->f32" value: 314880300293255 } + flops { key: "f32xf32->f32" value: 211054903980343 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 924245168065418 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 803097848915482 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 812210154311649 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 912463840237943 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 806112480480480 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 804602340951667 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 869866794126582 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 876971372332822 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 827945502843373 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 834298231546231 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 812286959054373 } + } + entries { + b: 2 + m: 2048 + n: 512 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 329893603394972 } + flops { key: "bf16xbf16->f32" value: 334264712895945 } + flops { key: "f16xf16->f16" value: 313495541760186 } + flops { key: "f16xf16->f32" value: 311218238179776 } + flops { key: "f32xf32->f32" value: 118111231542401 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 845882283801083 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 691148134690429 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 664392806249516 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 704208443351369 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 687277240628875 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 299797036628566 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 613544844255562 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 676426064414520 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 711205049842689 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 297822123324954 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 707689453946284 } + } + entries { + b: 2 + m: 2048 + n: 1024 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 417078225437595 } + flops { key: "bf16xbf16->f32" value: 413758394663005 } + flops { key: "f16xf16->f16" value: 384109402345365 } + flops { key: "f16xf16->f32" value: 402122256957610 } + flops { key: "f32xf32->f32" value: 153000990185775 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1078900316136527 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1042815817414792 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1011473016426258 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 995617002347077 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1024135271773472 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 358130311730003 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1036524129476002 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 963726428855916 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1031545179020685 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 356865648490891 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1047904430388240 } + } + entries { + b: 2 + m: 2048 + n: 2048 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 522680941137098 } + flops { key: "bf16xbf16->f32" value: 517325700382426 } + flops { key: "f16xf16->f16" value: 462632804200888 } + flops { key: "f16xf16->f32" value: 449776005236081 } + flops { key: "f32xf32->f32" value: 211378853759293 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1386787414202974 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1344382908208780 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1352878762397873 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1413050599111696 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1329814163944577 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 527341682994022 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1491696551532517 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1392407284987741 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1322113179598668 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 522684916683146 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1352878762397873 } + } + entries { + b: 2 + m: 2048 + n: 4096 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 548987231763531 } + flops { key: "bf16xbf16->f32" value: 549821792503100 } + flops { key: "f16xf16->f16" value: 500495085584437 } + flops { key: "f16xf16->f32" value: 475194063735405 } + flops { key: "f32xf32->f32" value: 228118231791399 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1745101431898117 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1595381825138134 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1749566595447833 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1683042743439340 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1589477650367766 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 618067057332631 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1726663401995025 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1746010385080542 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1664272522728924 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 609234122831825 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1728400531602907 } + } + entries { + b: 2 + m: 4096 + n: 256 + k: 256 + flops { key: "bf16xbf16->bf16" value: 121822308146131 } + flops { key: "bf16xbf16->f32" value: 101911714502657 } + flops { key: "f16xf16->f16" value: 130419266852909 } + flops { key: "f16xf16->f32" value: 100387231114435 } + flops { key: "f32xf32->f32" value: 62627111344415 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 98716725567711 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 103095710417666 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 114057980029742 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 100575292618958 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 102115247170708 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 126129663338423 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 123802816095929 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 103294066762866 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 96594262684418 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 127933018467770 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 114057980029742 } + } + entries { + b: 2 + m: 4096 + n: 512 + k: 256 + flops { key: "bf16xbf16->bf16" value: 183592685987860 } + flops { key: "bf16xbf16->f32" value: 170448737836336 } + flops { key: "f16xf16->f16" value: 188425344213389 } + flops { key: "f16xf16->f32" value: 157209637481698 } + flops { key: "f32xf32->f32" value: 81968153288293 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 135539235546579 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 282898649453299 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 128553346183777 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 134520398897519 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 279948331117194 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 135882286003543 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 130752779347296 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 127333747287281 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 293733230474627 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 131392783162016 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 131064000488251 } + } + entries { + b: 2 + m: 4096 + n: 1024 + k: 256 + flops { key: "bf16xbf16->bf16" value: 252570849514848 } + flops { key: "bf16xbf16->f32" value: 218362260206416 } + flops { key: "f16xf16->f16" value: 238251916347700 } + flops { key: "f16xf16->f32" value: 205786368453835 } + flops { key: "f32xf32->f32" value: 114179266695023 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 475422547708656 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 409981605192821 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 525571132648066 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 468167352954000 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 426299483473945 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 177360724149322 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 510515546891715 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 476530266947742 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 433178748966212 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 178251392239053 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 506900424406939 } + } + entries { + b: 2 + m: 4096 + n: 2048 + k: 256 + flops { key: "bf16xbf16->bf16" value: 290161281988920 } + flops { key: "bf16xbf16->f32" value: 252126052010566 } + flops { key: "f16xf16->f16" value: 290750561603032 } + flops { key: "f16xf16->f32" value: 242017710309075 } + flops { key: "f32xf32->f32" value: 124092551385397 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 482390890773291 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 429711585392696 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 481876730169415 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 473875136095327 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 431005247967887 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 201438327322186 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 501572731052201 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 490685170341597 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 438060818603702 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 201911820793079 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 491808919729760 } + } + entries { + b: 2 + m: 4096 + n: 4096 + k: 256 + flops { key: "bf16xbf16->bf16" value: 329261344730436 } + flops { key: "bf16xbf16->f32" value: 262865982985494 } + flops { key: "f16xf16->f16" value: 321605967614519 } + flops { key: "f16xf16->f32" value: 253017219204712 } + flops { key: "f32xf32->f32" value: 141118186839273 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 624699799425475 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 535749187139426 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 781187212804656 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 652259735904931 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 540468404819580 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 230015653822466 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 763787364246654 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 650777271260275 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 540451402541839 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 227873901528013 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 682363632839496 } + } + entries { + b: 2 + m: 4096 + n: 256 + k: 512 + flops { key: "bf16xbf16->bf16" value: 186462068941564 } + flops { key: "bf16xbf16->f32" value: 187111932386512 } + flops { key: "f16xf16->f16" value: 185816703988924 } + flops { key: "f16xf16->f32" value: 175763926010803 } + flops { key: "f32xf32->f32" value: 85295454104937 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 179285661045249 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 291342239587572 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 164949969122052 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 174054437348030 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 281378884696016 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 174054437348030 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 167785268224080 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 176922363486571 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 289769754149237 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 178986801800300 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 173212102597193 } + } + entries { + b: 2 + m: 4096 + n: 512 + k: 512 + flops { key: "bf16xbf16->bf16" value: 273147245993385 } + flops { key: "bf16xbf16->f32" value: 249041360083497 } + flops { key: "f16xf16->f16" value: 271078471093158 } + flops { key: "f16xf16->f32" value: 241466649575532 } + flops { key: "f32xf32->f32" value: 110700739625753 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 208584687290563 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 508099762924405 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 442096479258878 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 436746725238966 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 502159160060797 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 216600297342276 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 466134935532884 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 457203246327443 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 491752610029768 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 218140448778505 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 425454907974244 } + } + entries { + b: 2 + m: 4096 + n: 1024 + k: 512 + flops { key: "bf16xbf16->bf16" value: 344741926877232 } + flops { key: "bf16xbf16->f32" value: 295969906350136 } + flops { key: "f16xf16->f16" value: 302654308787259 } + flops { key: "f16xf16->f32" value: 280854490501880 } + flops { key: "f32xf32->f32" value: 152185078874636 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 729320308371540 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 643923132833583 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 708857451064532 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 752381062625908 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 658787835876984 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 265219667531184 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 759029300344614 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 752381062625908 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 633429289285450 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 259444096529644 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 744555308312386 } + } + entries { + b: 2 + m: 4096 + n: 2048 + k: 512 + flops { key: "bf16xbf16->bf16" value: 423566794477317 } + flops { key: "bf16xbf16->f32" value: 345018861388922 } + flops { key: "f16xf16->f16" value: 400052840536512 } + flops { key: "f16xf16->f32" value: 319209758156819 } + flops { key: "f32xf32->f32" value: 161469488650995 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 822357435450672 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 548772413722609 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 883374598107774 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 811442904968826 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 566898834647747 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 316971756162361 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 883329178055427 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 820002347572908 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 547356204288399 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 313381171157038 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 608740315498547 } + } + entries { + b: 2 + m: 4096 + n: 4096 + k: 512 + flops { key: "bf16xbf16->bf16" value: 427790913333084 } + flops { key: "bf16xbf16->f32" value: 360312269879720 } + flops { key: "f16xf16->f16" value: 403733486493155 } + flops { key: "f16xf16->f32" value: 341110686773421 } + flops { key: "f32xf32->f32" value: 175529572912249 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 912463840237943 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 812613541328666 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1063505582765878 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 918832420590988 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 806131393097623 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 348808583923821 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1047904430388240 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 929772381761602 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 811462068535531 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 348529070020794 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 975796273088719 } + } + entries { + b: 2 + m: 4096 + n: 256 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 232562664933939 } + flops { key: "bf16xbf16->f32" value: 218140448778505 } + flops { key: "f16xf16->f16" value: 229824876712328 } + flops { key: "f16xf16->f32" value: 223824446088905 } + flops { key: "f32xf32->f32" value: 103738159895657 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 232575258352737 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 478601214174281 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 454301596784429 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 438485686166411 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 462122584032709 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 204609942165690 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 482960451591139 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 489566544625555 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 457203246327443 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 205196469160575 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 440328818535985 } + } + entries { + b: 2 + m: 4096 + n: 512 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 329899938244104 } + flops { key: "bf16xbf16->f32" value: 313718804718600 } + flops { key: "f16xf16->f16" value: 315574378839088 } + flops { key: "f16xf16->f32" value: 306105573088161 } + flops { key: "f32xf32->f32" value: 130472752282151 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 583476062491509 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 717142644180998 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 479188585964520 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 680714366590062 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 721964581610354 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 293934252395291 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 542191162784826 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 731805639120804 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 718342079946479 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 293743275040180 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 495782903843934 } + } + entries { + b: 2 + m: 4096 + n: 1024 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 429078378181273 } + flops { key: "bf16xbf16->f32" value: 382403712415972 } + flops { key: "f16xf16->f16" value: 390762406095758 } + flops { key: "f16xf16->f32" value: 368437435587295 } + flops { key: "f32xf32->f32" value: 174832027517427 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 892507100836407 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 836777029077979 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 878810639111975 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 861146325012531 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 851795784818285 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 361301139516298 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 891580735066687 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 900931836173894 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 833529143855223 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 376025853265627 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 833529143855223 } + } + entries { + b: 2 + m: 4096 + n: 2048 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 502916209774447 } + flops { key: "bf16xbf16->f32" value: 438956236496499 } + flops { key: "f16xf16->f16" value: 474012421096196 } + flops { key: "f16xf16->f32" value: 416370645015874 } + flops { key: "f32xf32->f32" value: 186521789276544 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1086405235020710 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1016259638213546 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1117535236063227 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1066145537048529 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1070797131887309 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 441329887200565 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1164578984815618 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1086405235020710 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1054367815392168 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 439186276832619 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1151311431711566 } + } + entries { + b: 2 + m: 4096 + n: 4096 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 509565373731082 } + flops { key: "bf16xbf16->f32" value: 464829588711968 } + flops { key: "f16xf16->f16" value: 464955390032341 } + flops { key: "f16xf16->f32" value: 417030135001790 } + flops { key: "f32xf32->f32" value: 204232315242943 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1300569225481661 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1202966769995623 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1326195587085319 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1264597205351392 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1186741904742168 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 475853813271658 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1297132332968402 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1303035320565816 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1173368110098009 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 475985653383943 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1383437214100215 } + } + entries { + b: 2 + m: 4096 + n: 256 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 272290062192918 } + flops { key: "bf16xbf16->f32" value: 269894573538190 } + flops { key: "f16xf16->f16" value: 266205980909879 } + flops { key: "f16xf16->f32" value: 263591953848042 } + flops { key: "f32xf32->f32" value: 116442111861190 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 681794951345344 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 612647784894087 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 711205049842689 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 738093709572091 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 604882373917329 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 224063818034796 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 700761510197422 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 721964581610354 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 570305045279511 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 229089358651589 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 721964581610354 } + } + entries { + b: 2 + m: 4096 + n: 512 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 367012800341807 } + flops { key: "bf16xbf16->f32" value: 371955252100112 } + flops { key: "f16xf16->f16" value: 353699027917318 } + flops { key: "f16xf16->f32" value: 351527852021607 } + flops { key: "f32xf32->f32" value: 147502139432653 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 858564177111444 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 859423170785392 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 855997468061783 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 877016140895400 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 827108429252323 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 325019281546785 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 885149630789839 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 869030764530325 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 834379270713938 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 325142306370415 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 916357434606358 } + } + entries { + b: 2 + m: 4096 + n: 1024 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 485279622168239 } + flops { key: "bf16xbf16->f32" value: 477835793010416 } + flops { key: "f16xf16->f16" value: 436164595859197 } + flops { key: "f16xf16->f32" value: 412066324090952 } + flops { key: "f32xf32->f32" value: 191862737627383 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1198790676435698 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1080936809639160 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1138305064369720 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1124153062915099 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1078223189129820 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 410785452250011 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1140572227983402 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1143609198468963 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1099617191026338 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 435280519502894 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1138305064369720 } + } + entries { + b: 2 + m: 4096 + n: 2048 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 543722667173047 } + flops { key: "bf16xbf16->f32" value: 513069306216309 } + flops { key: "f16xf16->f16" value: 488314171565004 } + flops { key: "f16xf16->f32" value: 465585419423027 } + flops { key: "f32xf32->f32" value: 206967673812607 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1546134111866084 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1353411654081733 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1449472194389369 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1415378907892568 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1289320188671457 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 480045523192131 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1422410099685378 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1413631957870484 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1303035320565816 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 482750100007024 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1463673625899893 } + } + entries { + b: 2 + m: 4096 + n: 4096 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 552969673631144 } + flops { key: "bf16xbf16->f32" value: 536959006837059 } + flops { key: "f16xf16->f16" value: 497774245028195 } + flops { key: "f16xf16->f32" value: 471893402478969 } + flops { key: "f32xf32->f32" value: 224623736803827 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1680573158459789 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1549987633747223 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1637269530544172 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1620264703471853 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1564473004803642 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 569112467119674 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1664272522728924 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1593550540563729 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1563778783146924 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 569395400025686 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1678930790877218 } + } + entries { + b: 2 + m: 4096 + n: 256 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 310094747193242 } + flops { key: "bf16xbf16->f32" value: 301269078193774 } + flops { key: "f16xf16->f16" value: 298028782791222 } + flops { key: "f16xf16->f32" value: 295257779947066 } + flops { key: "f32xf32->f32" value: 102097648313117 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 909565289284201 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 806150306602224 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 797876146386773 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 803135392641765 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 793454146683909 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 231568954750704 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 806150306602224 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 816883133659835 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 810677103812759 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 230385801045997 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 823145473815341 } + } + entries { + b: 2 + m: 4096 + n: 512 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 413658769464141 } + flops { key: "bf16xbf16->f32" value: 409025026998714 } + flops { key: "f16xf16->f16" value: 395353051674740 } + flops { key: "f16xf16->f32" value: 393087042306372 } + flops { key: "f32xf32->f32" value: 158808916513757 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1144370969791840 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1059570074256815 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1115358643381159 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1096809090177801 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1057613222359024 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 361986287062789 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1085718657945460 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1079578294152763 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1052397879506263 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 359934825405139 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1082298748480171 } + } + entries { + b: 2 + m: 4096 + n: 1024 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 518496685700488 } + flops { key: "bf16xbf16->f32" value: 514918488621803 } + flops { key: "f16xf16->f16" value: 453581930087654 } + flops { key: "f16xf16->f32" value: 451552234030949 } + flops { key: "f32xf32->f32" value: 200122534446557 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1451308906779303 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1399211547573962 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1360377644976739 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1413050599111696 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1348075108600125 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 494295822593058 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1408994438120233 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1405536217295263 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1396936083101254 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 492023718816900 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1424178826494238 } + } + entries { + b: 2 + m: 4096 + n: 2048 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 584580439850791 } + flops { key: "bf16xbf16->f32" value: 567889666725891 } + flops { key: "f16xf16->f16" value: 511311337075934 } + flops { key: "f16xf16->f32" value: 499912534543840 } + flops { key: "f32xf32->f32" value: 221048950672126 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1806671926596821 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1680162265400178 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1739799656594554 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1729292165934798 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1671966052796769 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 550795716200185 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1676473249557824 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1764413036420823 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1712442884561233 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 547105634195954 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1738919157761554 } + } + entries { + b: 2 + m: 4096 + n: 4096 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 563134769747665 } + flops { key: "bf16xbf16->f32" value: 555386320404258 } + flops { key: "f16xf16->f16" value: 507530307375013 } + flops { key: "f16xf16->f32" value: 497556198039300 } + flops { key: "f32xf32->f32" value: 234635561748512 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1865374848627153 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1832006417829674 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1865121707066183 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1831518149704828 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1790887221354251 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 647890490739300 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1875314046160038 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1863857029143329 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1790653891640120 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 648287776455993 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1904998211583375 } + } + entries { + b: 4 + m: 256 + n: 256 + k: 256 + flops { key: "bf16xbf16->bf16" value: 23513967764540 } + flops { key: "bf16xbf16->f32" value: 22262021562448 } + flops { key: "f16xf16->f16" value: 25191015015015 } + flops { key: "f16xf16->f32" value: 21341664493560 } + flops { key: "f32xf32->f32" value: 18769085162914 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 30875943869335 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 30734538126860 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 32529745031507 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 29007505511130 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 31602949846950 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 35451063919704 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 33009770782095 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 28882661502044 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 31903429522224 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 34898005200208 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 34898005200208 } + } + entries { + b: 4 + m: 256 + n: 512 + k: 256 + flops { key: "bf16xbf16->bf16" value: 40488002413273 } + flops { key: "bf16xbf16->f32" value: 42279958418648 } + flops { key: "f16xf16->f16" value: 49820982925018 } + flops { key: "f16xf16->f32" value: 42548019654461 } + flops { key: "f32xf32->f32" value: 31458508848001 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 45582519273221 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 46051716589466 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 52347007800312 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 48913166180758 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 38618250035966 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 52966743488555 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 45274996795412 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 39533940500736 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 40245195802098 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 52977196763370 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 42279958418648 } + } + entries { + b: 4 + m: 256 + n: 1024 + k: 256 + flops { key: "bf16xbf16->bf16" value: 69624032161846 } + flops { key: "bf16xbf16->f32" value: 69077574884199 } + flops { key: "f16xf16->f16" value: 70160861474124 } + flops { key: "f16xf16->f32" value: 66182311637080 } + flops { key: "f32xf32->f32" value: 50193615557217 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 77236500071932 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 80249762630792 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 82735538912004 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 77459372673495 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 80490391604197 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 88461181743285 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 79772795245170 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 84017357120500 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 73033724935382 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 77694777424023 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 80010568107302 } + } + entries { + b: 4 + m: 256 + n: 2048 + k: 256 + flops { key: "bf16xbf16->bf16" value: 100013210134128 } + flops { key: "bf16xbf16->f32" value: 102309845069080 } + flops { key: "f16xf16->f16" value: 121836131169862 } + flops { key: "f16xf16->f32" value: 100013210134128 } + flops { key: "f32xf32->f32" value: 52761133310402 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 105114226529613 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 119930953200044 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 117054597623460 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 117812357252578 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 122671292585399 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 121285645995707 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 118606188445819 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 105320433938205 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 118855636927164 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 120469182542353 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 118855636927164 } + } + entries { + b: 4 + m: 256 + n: 4096 + k: 256 + flops { key: "bf16xbf16->bf16" value: 174905004723896 } + flops { key: "bf16xbf16->f32" value: 176631324888962 } + flops { key: "f16xf16->f16" value: 183891389621510 } + flops { key: "f16xf16->f32" value: 166743042782824 } + flops { key: "f32xf32->f32" value: 89946959078534 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 148913643159281 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 258982591413410 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 148697108987674 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 148296640287272 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 264078166256763 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 146876660146364 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 148491470612640 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 149733903779110 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 258951362353792 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 149120453301854 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 146067449870765 } + } + entries { + b: 4 + m: 256 + n: 256 + k: 512 + flops { key: "bf16xbf16->bf16" value: 34721957832104 } + flops { key: "bf16xbf16->f32" value: 37020473865673 } + flops { key: "f16xf16->f16" value: 36417779948446 } + flops { key: "f16xf16->f32" value: 38070551127499 } + flops { key: "f32xf32->f32" value: 29517864086210 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 45894247905624 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 44971595912213 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 39528118981004 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 48550453246518 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 45130372562205 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 52551968676585 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 43226321417069 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 43797594387338 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 52551968676585 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 47184998417999 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 43233283298437 } + } + entries { + b: 4 + m: 256 + n: 512 + k: 512 + flops { key: "bf16xbf16->bf16" value: 61195818078194 } + flops { key: "bf16xbf16->f32" value: 64126960344003 } + flops { key: "f16xf16->f16" value: 67513947686116 } + flops { key: "f16xf16->f32" value: 63966509233885 } + flops { key: "f32xf32->f32" value: 50382030030030 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 63519984855655 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 62917017696003 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 66841498007968 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 61335646292699 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 63814443361464 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 66345886307464 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 65368429562888 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 62623458765892 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 66019541564190 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 65857570166830 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 65059490063015 } + } + entries { + b: 4 + m: 256 + n: 1024 + k: 512 + flops { key: "bf16xbf16->bf16" value: 89048086249792 } + flops { key: "bf16xbf16->f32" value: 91796342993930 } + flops { key: "f16xf16->f16" value: 118071456344842 } + flops { key: "f16xf16->f32" value: 90702975502618 } + flops { key: "f32xf32->f32" value: 67176040040040 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 111222480215454 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 79536431407407 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 111906391245440 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 110535497632283 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 79536431407407 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 112386625915846 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 111222480215454 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 104908825012213 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 79184500294985 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 113335636900992 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 110981067080103 } + } + entries { + b: 4 + m: 256 + n: 2048 + k: 512 + flops { key: "bf16xbf16->bf16" value: 177214362766133 } + flops { key: "bf16xbf16->f32" value: 174054437348030 } + flops { key: "f16xf16->f16" value: 171812436834946 } + flops { key: "f16xf16->f32" value: 168840604450035 } + flops { key: "f32xf32->f32" value: 100669587849240 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 176341242240105 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 255866036935541 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 172641180802315 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 175190377549355 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 277023174406604 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 171537954149692 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 170733315948481 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 170991611434031 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 228601623163721 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 174054437348030 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 174905004723896 } + } + entries { + b: 4 + m: 256 + n: 4096 + k: 512 + flops { key: "bf16xbf16->bf16" value: 256492522902358 } + flops { key: "bf16xbf16->f32" value: 232072583130707 } + flops { key: "f16xf16->f16" value: 247035965489474 } + flops { key: "f16xf16->f32" value: 227632356158575 } + flops { key: "f32xf32->f32" value: 97380507788232 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 219030409301851 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 292931884872459 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 212097150419753 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 218807239085027 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 374223864773024 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 218796092511462 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 213786326331508 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 215070971256885 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 303295480262693 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 215936012870789 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 215936012870789 } + } + entries { + b: 4 + m: 256 + n: 256 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 74245735306320 } + flops { key: "bf16xbf16->f32" value: 71851032119914 } + flops { key: "f16xf16->f16" value: 69615004149377 } + flops { key: "f16xf16->f32" value: 53393427349577 } + flops { key: "f32xf32->f32" value: 62623458765892 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 91165038546442 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 90856475207310 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 88170621120052 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 89943191824426 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 85082553407290 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 87296083252032 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 91165038546442 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 85639003349816 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 85082553407290 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 89048086249792 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 95375894830342 } + } + entries { + b: 4 + m: 256 + n: 512 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 101334637976594 } + flops { key: "bf16xbf16->f32" value: 93393217708967 } + flops { key: "f16xf16->f16" value: 96759648914120 } + flops { key: "f16xf16->f32" value: 94544494496786 } + flops { key: "f32xf32->f32" value: 57893019032727 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 78720075073313 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 100953537420082 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 78375315620437 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 80732467969924 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 163431023439878 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 82984915681273 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 81840078048780 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 80490391604197 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 105310104354648 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 83242253197922 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 84023931763048 } + } + entries { + b: 4 + m: 256 + n: 1024 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 144884877074618 } + flops { key: "bf16xbf16->f32" value: 154262168522376 } + flops { key: "f16xf16->f16" value: 143913928963945 } + flops { key: "f16xf16->f32" value: 141635908719166 } + flops { key: "f32xf32->f32" value: 84486727830671 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 135368359051941 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 275601084188911 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 136408794257765 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 136747557819663 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 273495115639327 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 137632740370441 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 132527996050357 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 138520521705476 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 270055790744466 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 139428882482794 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 136054463253928 } + } + entries { + b: 4 + m: 256 + n: 2048 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 230317851565851 } + flops { key: "bf16xbf16->f32" value: 223836110902647 } + flops { key: "f16xf16->f16" value: 215719100753390 } + flops { key: "f16xf16->f32" value: 212306836183885 } + flops { key: "f32xf32->f32" value: 117496506428845 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 221287407697459 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 391305329446064 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 225244771134885 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 225481273414531 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 306323892447043 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 221973605664375 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 221755849648905 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 232060044089042 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 380860804823978 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 223370464738922 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 225244771134885 } + } + entries { + b: 4 + m: 256 + n: 4096 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 308092772569133 } + flops { key: "bf16xbf16->f32" value: 296993209279811 } + flops { key: "f16xf16->f16" value: 299697669108924 } + flops { key: "f16xf16->f32" value: 287442597778075 } + flops { key: "f32xf32->f32" value: 126135219629667 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 288795541689080 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 449546503663387 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 285341967579059 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 293532483324220 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 433178748966212 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 286292980669244 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 283636605316163 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 289379281498450 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 440758099030222 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 285332489353927 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 286474390261797 } + } + entries { + b: 4 + m: 256 + n: 256 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 126725106101734 } + flops { key: "bf16xbf16->f32" value: 125246917531785 } + flops { key: "f16xf16->f16" value: 120998627901735 } + flops { key: "f16xf16->f32" value: 123802816095929 } + flops { key: "f32xf32->f32" value: 92587895490212 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 126426683621806 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 110981067080103 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 112140138276762 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 130118980126030 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 117297555604107 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 110524119814719 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 110752122124806 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 124376442024788 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 108954015626585 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 110297054340010 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 119397511842544 } + } + entries { + b: 4 + m: 256 + n: 512 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 162935026403641 } + flops { key: "bf16xbf16->f32" value: 164432132312404 } + flops { key: "f16xf16->f16" value: 158837547928994 } + flops { key: "f16xf16->f32" value: 161222496096096 } + flops { key: "f32xf32->f32" value: 140147728773738 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 166471600620155 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 160499525261584 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 164949969122052 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 171812436834946 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 156968324537680 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 159794899025225 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 155829304694869 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 162442030862329 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 157891599735313 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 156979798830409 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 157659764187651 } + } + entries { + b: 4 + m: 256 + n: 1024 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 190599418478743 } + flops { key: "bf16xbf16->f32" value: 188922639922582 } + flops { key: "f16xf16->f16" value: 184698000172013 } + flops { key: "f16xf16->f32" value: 185175790980425 } + flops { key: "f32xf32->f32" value: 90592012149335 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 353844726973142 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 379514650172307 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 378845135044544 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 372277654156193 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 344175598685792 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 154823809379618 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 354428725532266 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 357973603600600 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 372277654156193 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 155721956999383 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 356192344999170 } + } + entries { + b: 4 + m: 256 + n: 2048 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 270574687120042 } + flops { key: "bf16xbf16->f32" value: 268704160160160 } + flops { key: "f16xf16->f16" value: 265055992100715 } + flops { key: "f16xf16->f32" value: 258351667478721 } + flops { key: "f32xf32->f32" value: 128248176174621 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 461650700919009 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 444866880314879 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 263915896276268 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 266041086223984 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 450017528918692 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 266205980909879 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 262777527363945 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 266205980909879 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 449993954214469 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 268376748586246 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 266041086223984 } + } + entries { + b: 4 + m: 256 + n: 4096 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 344741926877232 } + flops { key: "bf16xbf16->f32" value: 340498844197800 } + flops { key: "f16xf16->f16" value: 335570536448160 } + flops { key: "f16xf16->f32" value: 326129867952465 } + flops { key: "f32xf32->f32" value: 136732320837909 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 344603626268704 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 624245818974601 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 343363896230563 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 345018861388922 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 635796942526183 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 338486241434341 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 345991645869416 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 345296241186638 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 616605742014212 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 343501203343063 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 341175040889683 } + } + entries { + b: 4 + m: 256 + n: 256 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 161222496096096 } + flops { key: "bf16xbf16->f32" value: 167510424960998 } + flops { key: "f16xf16->f16" value: 164684328834355 } + flops { key: "f16xf16->f32" value: 168840604450035 } + flops { key: "f32xf32->f32" value: 128707440695235 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 164180707033639 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 167262531972895 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 172919208309847 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 168311282075397 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 159072862814814 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 165445581510015 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 103488200472266 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 174337039129728 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 168840604450035 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 169640860099533 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 168047863526097 } + } + entries { + b: 4 + m: 256 + n: 512 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 268368363909022 } + flops { key: "bf16xbf16->f32" value: 279930085120250 } + flops { key: "f16xf16->f16" value: 270395825736590 } + flops { key: "f16xf16->f32" value: 273495115639327 } + flops { key: "f32xf32->f32" value: 193006214712623 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 313478380848113 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 325870052807283 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 327885128330406 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 319091180980683 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 323416212048192 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 313959597660818 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 328864264624808 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 313959597660818 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 351527852021607 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 311206962973697 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 327860098931297 } + } + entries { + b: 4 + m: 256 + n: 1024 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 350953366236313 } + flops { key: "bf16xbf16->f32" value: 347531439576000 } + flops { key: "f16xf16->f16" value: 346131063061611 } + flops { key: "f16xf16->f32" value: 345005004096714 } + flops { key: "f32xf32->f32" value: 229089358651589 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1250354380203784 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1257677099853587 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1280169089716840 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1323564652080123 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1194539645668196 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 1214811850091924 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1140610090559022 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1295616077224736 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1168539598966127 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1250354380203784 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1235961811798561 } + } + entries { + b: 4 + m: 256 + n: 2048 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 306329354421125 } + flops { key: "bf16xbf16->f32" value: 305457909144249 } + flops { key: "f16xf16->f16" value: 296174002413543 } + flops { key: "f16xf16->f32" value: 294751212709741 } + flops { key: "f32xf32->f32" value: 135909159967406 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 639607936857781 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 644889984384384 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 649276991080876 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 630199522541359 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 626088527113702 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 289476800970546 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 660789614369783 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 597706195734613 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 615280752954659 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 289769754149237 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 635820473131014 } + } + entries { + b: 4 + m: 256 + n: 4096 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 379690790196035 } + flops { key: "bf16xbf16->f32" value: 384888188547360 } + flops { key: "f16xf16->f16" value: 357831938180833 } + flops { key: "f16xf16->f32" value: 352537740786341 } + flops { key: "f32xf32->f32" value: 145871492723351 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 382399456534562 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 725961089541517 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 381380777285693 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 383081604673720 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 726267984950327 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 381465459882539 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 380110830010841 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 382740226660577 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 756023111424045 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 382574025386362 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 381550180093944 } + } + entries { + b: 4 + m: 512 + n: 256 + k: 256 + flops { key: "bf16xbf16->bf16" value: 45122786350647 } + flops { key: "bf16xbf16->f32" value: 39768215703703 } + flops { key: "f16xf16->f16" value: 43233283298437 } + flops { key: "f16xf16->f32" value: 42819501674908 } + flops { key: "f32xf32->f32" value: 31606670905451 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 50763134644478 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 43648041626016 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 50382030030030 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 48037841088045 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 41617900155038 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 58520919119250 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 57272339662897 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 51542906298003 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 40245195802098 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 58520919119250 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 44230590871642 } + } + entries { + b: 4 + m: 512 + n: 512 + k: 256 + flops { key: "bf16xbf16->bf16" value: 74451658854527 } + flops { key: "bf16xbf16->f32" value: 65059490063015 } + flops { key: "f16xf16->f16" value: 71668790815645 } + flops { key: "f16xf16->f32" value: 70353939457476 } + flops { key: "f32xf32->f32" value: 51052768352985 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 77920306531204 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 82468650076804 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 81965024732824 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 83235800310077 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 70911492801479 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 79067881001472 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 82216066156202 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 84813730173775 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 78593311667398 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 79289752178407 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 79067881001472 } + } + entries { + b: 4 + m: 512 + n: 1024 + k: 256 + flops { key: "bf16xbf16->bf16" value: 110992539177175 } + flops { key: "bf16xbf16->f32" value: 103683065276168 } + flops { key: "f16xf16->f16" value: 130103213861626 } + flops { key: "f16xf16->f32" value: 99457375324194 } + flops { key: "f32xf32->f32" value: 77920306531204 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 112151851263839 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 120998627901735 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 114544679325794 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 117297555604107 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 114544679325794 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 119917559079740 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 120469182542353 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 111685232369461 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 121012264623013 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 123234457018248 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 117812357252578 } + } + entries { + b: 4 + m: 512 + n: 2048 + k: 256 + flops { key: "bf16xbf16->bf16" value: 185175790980425 } + flops { key: "bf16xbf16->f32" value: 172641180802315 } + flops { key: "f16xf16->f16" value: 192134172676031 } + flops { key: "f16xf16->f32" value: 169909300419336 } + flops { key: "f32xf32->f32" value: 85772402763909 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 141822985602958 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 282898649453299 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 144107076097168 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 139601095234999 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 206171625192012 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 147888137731561 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 146465942436229 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 143529183798957 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 287442597778075 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 146666005190547 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 144689640749225 } + } + entries { + b: 4 + m: 512 + n: 4096 + k: 256 + flops { key: "bf16xbf16->bf16" value: 253749692544015 } + flops { key: "bf16xbf16->f32" value: 214426724712930 } + flops { key: "f16xf16->f16" value: 257106692367554 } + flops { key: "f16xf16->f32" value: 208797632280019 } + flops { key: "f32xf32->f32" value: 120128864598774 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 195643752380084 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 374223864773024 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 446740929477844 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 201150585237916 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 394903208532548 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 182337817703247 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 485142583982830 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 442141990529133 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 399308971364819 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 182337817703247 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 449546503663387 } + } + entries { + b: 4 + m: 512 + n: 256 + k: 512 + flops { key: "bf16xbf16->bf16" value: 57517775016070 } + flops { key: "bf16xbf16->f32" value: 59296544289816 } + flops { key: "f16xf16->f16" value: 59296544289816 } + flops { key: "f16xf16->f32" value: 59566283368467 } + flops { key: "f32xf32->f32" value: 50104611479234 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 70724662363324 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 63064831669211 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 73232971218114 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 73644843895747 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 77247613237410 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 81715511719939 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 70538813822099 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 74451658854527 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 71477953934229 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 75936479773691 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 69987082779298 } + } + entries { + b: 4 + m: 512 + n: 512 + k: 512 + flops { key: "bf16xbf16->bf16" value: 96943104369808 } + flops { key: "bf16xbf16->f32" value: 99827242841204 } + flops { key: "f16xf16->f16" value: 99827242841204 } + flops { key: "f16xf16->f32" value: 97118471780028 } + flops { key: "f32xf32->f32" value: 60776692364295 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 118868794863279 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 87445380242690 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 109175579461108 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 116787233413095 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 87738341559078 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 120740112897784 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 116281332466969 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 116030022044521 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 87310280045535 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 118855636927164 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 114789589908060 } + } + entries { + b: 4 + m: 512 + n: 1024 + k: 512 + flops { key: "bf16xbf16->bf16" value: 182655749595985 } + flops { key: "bf16xbf16->f32" value: 189422567522272 } + flops { key: "f16xf16->f16" value: 182036420106806 } + flops { key: "f16xf16->f32" value: 181405951005237 } + flops { key: "f32xf32->f32" value: 101435154125926 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 176341242240105 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 323904019306184 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 176631324888962 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 173198132752641 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 302889089985895 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 176341242240105 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 170719743063836 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 173212102597193 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 320042272429210 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 176341242240105 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 179285661045249 } + } + entries { + b: 4 + m: 512 + n: 2048 + k: 512 + flops { key: "bf16xbf16->bf16" value: 271421087967644 } + flops { key: "bf16xbf16->f32" value: 253166359917477 } + flops { key: "f16xf16->f16" value: 266041086223984 } + flops { key: "f16xf16->f32" value: 242297602166309 } + flops { key: "f32xf32->f32" value: 112859136430523 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 215936012870789 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 288214152194336 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 217919087523466 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 220153123994054 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 438485686166411 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 216153361650729 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 312588595050946 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 213786326331508 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 470217571272169 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 218362260206416 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 218140448778505 } + } + entries { + b: 4 + m: 512 + n: 4096 + k: 512 + flops { key: "bf16xbf16->bf16" value: 333227348591822 } + flops { key: "bf16xbf16->f32" value: 293332010381095 } + flops { key: "f16xf16->f16" value: 323172858991723 } + flops { key: "f16xf16->f32" value: 283075781578513 } + flops { key: "f32xf32->f32" value: 153657846484088 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 535398565943654 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 533403787382016 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 585065698951096 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 577202969493347 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 547722667346808 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 268200780317222 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 528806611179512 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 610037255308571 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 536736727818045 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 265219667531184 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 589077944863530 } + } + entries { + b: 4 + m: 512 + n: 256 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 103085812596006 } + flops { key: "bf16xbf16->f32" value: 105103937353171 } + flops { key: "f16xf16->f16" value: 93719282883826 } + flops { key: "f16xf16->f32" value: 105943939220522 } + flops { key: "f32xf32->f32" value: 60366662393883 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 93719282883826 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 138887831328418 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 94047632828238 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 91483498679389 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 143721298889037 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 100199871593878 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 94711283761136 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 86459604154923 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 140321722948248 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 98004912741876 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 88607181383066 } + } + entries { + b: 4 + m: 512 + n: 512 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 165713685315224 } + flops { key: "bf16xbf16->f32" value: 159545590490341 } + flops { key: "f16xf16->f16" value: 158135762002945 } + flops { key: "f16xf16->f32" value: 146465942436229 } + flops { key: "f32xf32->f32" value: 78087474928184 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 154262168522376 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 274930693637178 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 147067774825366 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 153820188238664 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 270089755753993 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 155378311844294 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 151423187702721 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 149744344745833 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 275601084188911 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 151220593479332 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 147674573511208 } + } + entries { + b: 4 + m: 512 + n: 1024 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 230825350459504 } + flops { key: "bf16xbf16->f32" value: 226432269928300 } + flops { key: "f16xf16->f16" value: 217698175072228 } + flops { key: "f16xf16->f32" value: 220832294513856 } + flops { key: "f32xf32->f32" value: 119258268895429 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 226193769538656 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 453294701424802 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 230565132918187 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 225943884265348 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 432306723301459 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 232072583130707 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 471249429010313 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 233574466826191 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 436702317844433 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 230071100064281 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 229579179816121 } + } + entries { + b: 4 + m: 512 + n: 2048 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 324896349786300 } + flops { key: "bf16xbf16->f32" value: 318381563825055 } + flops { key: "f16xf16->f16" value: 314880300293255 } + flops { key: "f16xf16->f32" value: 299687213201688 } + flops { key: "f32xf32->f32" value: 125104637091841 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 610037255308571 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 589077944863530 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 629714433839161 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 647808038612368 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 601493914431762 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 292941874705862 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 643923132833583 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 604031684972927 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 626956761696226 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 291540001086071 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 642959176047904 } + } + entries { + b: 4 + m: 512 + n: 4096 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 402122256957610 } + flops { key: "bf16xbf16->f32" value: 372924137883129 } + flops { key: "f16xf16->f16" value: 380531800208208 } + flops { key: "f16xf16->f32" value: 350659669422162 } + flops { key: "f32xf32->f32" value: 180269558388684 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 714161505819753 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 644889984384384 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 704786231703314 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 714755749043102 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 642959176047904 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 365918406474973 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 749100426615505 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 711205049842689 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 654246893788796 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 365451375962561 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 718973391253400 } + } + entries { + b: 4 + m: 512 + n: 256 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 165700898765432 } + flops { key: "bf16xbf16->f32" value: 160739794011976 } + flops { key: "f16xf16->f16" value: 167002383389066 } + flops { key: "f16xf16->f32" value: 165700898765432 } + flops { key: "f32xf32->f32" value: 133350946845504 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 176052110837842 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 175749541533677 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 168575527749430 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 184206866357865 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 180188257090115 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 174905004723896 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 177214362766133 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 177507327492147 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 181099987181649 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 172087799342896 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 175190377549355 } + } + entries { + b: 4 + m: 512 + n: 512 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 200774462228870 } + flops { key: "bf16xbf16->f32" value: 192142768129557 } + flops { key: "f16xf16->f16" value: 188756583282060 } + flops { key: "f16xf16->f32" value: 187766341523126 } + flops { key: "f32xf32->f32" value: 90020483662048 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 417189635356969 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 444889920861818 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 443970156708703 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 357377874521551 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 475475179453116 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 176776724399078 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 445813503840564 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 356784124937697 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 353262649777924 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 176776724399078 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 356784124937697 } + } + entries { + b: 4 + m: 512 + n: 1024 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 283075781578513 } + flops { key: "bf16xbf16->f32" value: 281406538640458 } + flops { key: "f16xf16->f16" value: 272462796713927 } + flops { key: "f16xf16->f32" value: 273852602799120 } + flops { key: "f32xf32->f32" value: 130391550927472 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 586664020762191 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 624223137272000 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 560590915094955 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 557679321690579 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 599772000558581 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 273164618457037 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 551237540396586 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 528806611179512 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 593186561149091 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 272117546551778 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 530767090459713 } + } + entries { + b: 4 + m: 512 + n: 2048 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 369865210962561 } + flops { key: "bf16xbf16->f32" value: 365295963937912 } + flops { key: "f16xf16->f16" value: 348242944560436 } + flops { key: "f16xf16->f32" value: 339288420736644 } + flops { key: "f32xf32->f32" value: 140932963503170 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 673245128301591 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 750409241897440 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 736227520205699 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 739427958336920 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 733712115481528 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 349802886893490 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 755690559690331 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 731836812949946 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 739427958336920 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 351527852021607 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 713568249875394 } + } + entries { + b: 4 + m: 512 + n: 4096 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 452739229810390 } + flops { key: "bf16xbf16->f32" value: 428644798063848 } + flops { key: "f16xf16->f16" value: 418098324040836 } + flops { key: "f16xf16->f32" value: 397553320312861 } + flops { key: "f32xf32->f32" value: 199191508023374 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 970806045489221 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 954596276268266 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1044718245249171 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1015028754482880 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 912948729089170 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 448712857732389 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 999672350760815 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 987008455934735 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 956722681071448 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 450720007975548 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1020485250014850 } + } + entries { + b: 4 + m: 512 + n: 256 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 258655061487503 } + flops { key: "bf16xbf16->f32" value: 251094258754750 } + flops { key: "f16xf16->f16" value: 259279643585873 } + flops { key: "f16xf16->f32" value: 250508445377661 } + flops { key: "f32xf32->f32" value: 179136106773440 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 330407515655050 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 323904019306184 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 331939662725094 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 334004766778132 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 317205856425406 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 321479588023952 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 329874600307219 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 321961566416791 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 322444992192192 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 325870052807283 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 336095727052195 } + } + entries { + b: 4 + m: 512 + n: 512 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 322699372328036 } + flops { key: "bf16xbf16->f32" value: 329899938244104 } + flops { key: "f16xf16->f16" value: 322942012556863 } + flops { key: "f16xf16->f32" value: 322457096437553 } + flops { key: "f32xf32->f32" value: 213044012698412 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1174932921898509 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1111102650627344 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1152856608777345 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1131594597813199 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1152856608777345 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 1143647262947676 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1143495020234291 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1178317502331961 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1125515538784067 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1122573783585990 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1194539645668196 } + } + entries { + b: 4 + m: 512 + n: 1024 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 326253735120969 } + flops { key: "bf16xbf16->f32" value: 330267776231304 } + flops { key: "f16xf16->f16" value: 309982844069142 } + flops { key: "f16xf16->f32" value: 309865432678606 } + flops { key: "f32xf32->f32" value: 137433456133754 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 691704681885896 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 659799876488209 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 663879325450189 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 686727792461126 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 693939862826675 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 299274787631739 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 642959176047904 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 690592482373276 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 658282978925588 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 298546688400382 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 664907081972288 } + } + entries { + b: 4 + m: 512 + n: 2048 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 413858067860713 } + flops { key: "bf16xbf16->f32" value: 414957650906368 } + flops { key: "f16xf16->f16" value: 376112291259372 } + flops { key: "f16xf16->f32" value: 390851306654533 } + flops { key: "f32xf32->f32" value: 150662280507590 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 978575369332422 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 937893772840180 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 967525648860980 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 963186117455778 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 942550566961101 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 390762406095758 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 944104477880969 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 988143861957897 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 939432354559125 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 388460711218640 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 979691445255474 } + } + entries { + b: 4 + m: 512 + n: 4096 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 488036736094540 } + flops { key: "bf16xbf16->f32" value: 473421354662257 } + flops { key: "f16xf16->f16" value: 439015126307249 } + flops { key: "f16xf16->f32" value: 431178325067764 } + flops { key: "f32xf32->f32" value: 211495953588718 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1187562242698648 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1099282976916801 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1194601942390265 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1168957026825658 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1136798622597187 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 508807024552050 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1177388834869615 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1177772237407236 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1091235696255597 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 511385534465950 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1192942917038451 } + } + entries { + b: 4 + m: 1024 + n: 256 + k: 256 + flops { key: "bf16xbf16->bf16" value: 62917017696003 } + flops { key: "bf16xbf16->f32" value: 62477704177819 } + flops { key: "f16xf16->f16" value: 67513947686116 } + flops { key: "f16xf16->f32" value: 63213341810903 } + flops { key: "f32xf32->f32" value: 46454175997231 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 73033724935382 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 75297463113604 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 83248707086369 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 81467513201820 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 70715346680716 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 89344468630387 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 94702930322808 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 78147148762736 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 62332626494833 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 88461181743285 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 82722790755007 } + } + entries { + b: 4 + m: 1024 + n: 512 + k: 256 + flops { key: "bf16xbf16->bf16" value: 136054463253928 } + flops { key: "bf16xbf16->f32" value: 121546504867557 } + flops { key: "f16xf16->f16" value: 118593088579633 } + flops { key: "f16xf16->f32" value: 118071456344842 } + flops { key: "f32xf32->f32" value: 62044483069455 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 104287278943278 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 97109688342226 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 106999683507722 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 105320433938205 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 110070919938493 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 106574870868486 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 109175579461108 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 105103937353171 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 107859550376695 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 99457375324194 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 103284130819545 } + } + entries { + b: 4 + m: 1024 + n: 1024 + k: 256 + flops { key: "bf16xbf16->bf16" value: 195634840849048 } + flops { key: "bf16xbf16->f32" value: 158135762002945 } + flops { key: "f16xf16->f16" value: 186462068941564 } + flops { key: "f16xf16->f32" value: 173758689861639 } + flops { key: "f32xf32->f32" value: 86672464301570 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 138164038345235 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 233067467766442 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 146465942436229 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 249910816711276 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 234620741614771 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 152077306706323 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 145869015622877 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 227632356158575 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 247605632191859 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 151862219645003 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 144884877074618 } + } + entries { + b: 4 + m: 1024 + n: 2048 + k: 256 + flops { key: "bf16xbf16->bf16" value: 243949068272179 } + flops { key: "bf16xbf16->f32" value: 205589358862668 } + flops { key: "f16xf16->f16" value: 257106692367554 } + flops { key: "f16xf16->f32" value: 203052538577912 } + flops { key: "f32xf32->f32" value: 118534174973781 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 457203246327443 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 369078568015811 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 499821633422553 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 461130265836375 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 373572870835870 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 184372925348787 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 514182604573207 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 479670236318963 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 367153983244999 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 182959203237486 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 502159160060797 } + } + entries { + b: 4 + m: 1024 + n: 4096 + k: 256 + flops { key: "bf16xbf16->bf16" value: 292532849475548 } + flops { key: "bf16xbf16->f32" value: 242154162095114 } + flops { key: "f16xf16->f16" value: 290947520390191 } + flops { key: "f16xf16->f32" value: 234864510089134 } + flops { key: "f32xf32->f32" value: 141958925665179 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 578758562996900 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 521708751412086 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 507529370280649 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 483476928688017 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 385665810263547 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 210842507351316 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 650752620606060 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 595613270836222 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 379514650172307 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 210946062031875 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 641039894925373 } + } + entries { + b: 4 + m: 1024 + n: 256 + k: 512 + flops { key: "bf16xbf16->bf16" value: 128869638022083 } + flops { key: "bf16xbf16->f32" value: 123517982744737 } + flops { key: "f16xf16->f16" value: 120998627901735 } + flops { key: "f16xf16->f32" value: 125246917531785 } + flops { key: "f32xf32->f32" value: 65612088237091 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 118331697597531 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 169627460347551 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 122113251904924 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 124376442024788 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 175763926010803 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 135027895372233 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 132039083128381 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 117310370807385 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 88315662444481 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 138172928065885 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 138529457360340 } + } + entries { + b: 4 + m: 1024 + n: 512 + k: 512 + flops { key: "bf16xbf16->bf16" value: 193519297828241 } + flops { key: "bf16xbf16->f32" value: 183576991622499 } + flops { key: "f16xf16->f16" value: 186138827078096 } + flops { key: "f16xf16->f32" value: 177507327492147 } + flops { key: "f32xf32->f32" value: 92345028940012 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 174890760485381 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 242024529246027 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 149733903779110 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 174606362143263 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 239835118159481 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 156067125581395 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 150584366313722 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 175176086793376 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 222883616813700 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 155378311844294 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 146465942436229 } + } + entries { + b: 4 + m: 1024 + n: 1024 + k: 512 + flops { key: "bf16xbf16->bf16" value: 257106692367554 } + flops { key: "bf16xbf16->f32" value: 257106692367554 } + flops { key: "f16xf16->f16" value: 263107528546924 } + flops { key: "f16xf16->f32" value: 247320470805021 } + flops { key: "f32xf32->f32" value: 103738159895657 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 364691117941750 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 478601214174281 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 340357183295031 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 335570536448160 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 325894779270050 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 209612849975597 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 359772767297704 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 343624873669893 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 429711585392696 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 213786326331508 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 341439486127673 } + } + entries { + b: 4 + m: 1024 + n: 2048 + k: 512 + flops { key: "bf16xbf16->bf16" value: 332711077232938 } + flops { key: "bf16xbf16->f32" value: 283262476240725 } + flops { key: "f16xf16->f16" value: 327372788292236 } + flops { key: "f16xf16->f32" value: 268368363909022 } + flops { key: "f32xf32->f32" value: 156288610167024 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 643923132833583 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 625177190101892 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 720813509440295 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 725623804020949 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 612647784894087 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 274377442488900 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 614400585938058 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 730560860010205 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 638182361961367 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 276505974119616 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 604882373917329 } + } + entries { + b: 4 + m: 1024 + n: 4096 + k: 512 + flops { key: "bf16xbf16->bf16" value: 377521462280528 } + flops { key: "bf16xbf16->f32" value: 317675095857988 } + flops { key: "f16xf16->f16" value: 384276940613326 } + flops { key: "f16xf16->f32" value: 301798316802810 } + flops { key: "f32xf32->f32" value: 165232357935637 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 787633833852925 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 753040641009906 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 868108599494694 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 763074939326641 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 741310428651564 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 325382472849864 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 747796168886567 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 753701376853558 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 728732521060445 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 322814580957928 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 922260531672750 } + } + entries { + b: 4 + m: 1024 + n: 256 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 154262168522376 } + flops { key: "bf16xbf16->f32" value: 155603481486848 } + flops { key: "f16xf16->f16" value: 143337581631290 } + flops { key: "f16xf16->f32" value: 145473760195095 } + flops { key: "f32xf32->f32" value: 79654437982195 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 148707405858320 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 321961566416791 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 164684328834355 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 150795846359104 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 325870052807283 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 161952009653092 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 163182648024316 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 148501739022197 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 308103823242467 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 165458328684798 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 166743042782824 } + } + entries { + b: 4 + m: 1024 + n: 512 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 238781747706677 } + flops { key: "bf16xbf16->f32" value: 240938365084707 } + flops { key: "f16xf16->f16" value: 236676436656196 } + flops { key: "f16xf16->f32" value: 229824876712328 } + flops { key: "f32xf32->f32" value: 100342669812863 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 502159160060797 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 333486085565649 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 462122584032709 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 329874600307219 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 427998734030891 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 196000880573175 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 431438201506780 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 420456906118453 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 321961566416791 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 197451604266274 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 334525063945790 } + } + entries { + b: 4 + m: 1024 + n: 1024 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 326377696417037 } + flops { key: "bf16xbf16->f32" value: 320042272429210 } + flops { key: "f16xf16->f16" value: 318145725629629 } + flops { key: "f16xf16->f32" value: 318145725629629 } + flops { key: "f32xf32->f32" value: 127371509371293 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 665886402480620 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 597269822834098 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 532082172447968 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 521708751412086 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 591511816003305 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 282145987584168 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 452840665928620 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 454301596784429 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 729320308371540 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 286474390261797 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 457227582477244 } + } + entries { + b: 4 + m: 1024 + n: 2048 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 429722333825258 } + flops { key: "bf16xbf16->f32" value: 403633888212766 } + flops { key: "f16xf16->f16" value: 394169305586784 } + flops { key: "f16xf16->f32" value: 363895473173624 } + flops { key: "f32xf32->f32" value: 180003239496238 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 840050324385115 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 696782494484101 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 757022525072706 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 892507100836407 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 801598972751026 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 366394446117426 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 901877746023413 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 935315177700348 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 814520632656931 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 364211769853720 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 900931836173894 } + } + entries { + b: 4 + m: 1024 + n: 4096 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 492097709465362 } + flops { key: "bf16xbf16->f32" value: 409605273505394 } + flops { key: "f16xf16->f16" value: 461266456812995 } + flops { key: "f16xf16->f32" value: 395171173538511 } + flops { key: "f32xf32->f32" value: 180819791224174 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1016861153240603 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 942033732741130 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1039660454718751 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1014459355417773 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 917826113046265 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 443952947451385 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1044718245249171 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1006112218324500 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 930779855560070 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 451193496881278 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1007292028026149 } + } + entries { + b: 4 + m: 1024 + n: 256 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 187930659665704 } + flops { key: "bf16xbf16->f32" value: 189088988993572 } + flops { key: "f16xf16->f16" value: 181874541435528 } + flops { key: "f16xf16->f32" value: 178986801800300 } + flops { key: "f32xf32->f32" value: 90898778751322 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 427998734030891 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 440328818535985 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 403814149680330 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 421281735752820 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 425454907974244 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 187930659665704 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 460142200128562 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 436702317844433 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 440328818535985 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 185969573327560 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 445813503840564 } + } + entries { + b: 4 + m: 1024 + n: 512 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 287442597778075 } + flops { key: "bf16xbf16->f32" value: 290750561603032 } + flops { key: "f16xf16->f16" value: 277937442308936 } + flops { key: "f16xf16->f32" value: 269040797795038 } + flops { key: "f32xf32->f32" value: 113876532400042 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 655770256660813 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 567291942411834 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 542156942186316 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 567291942411834 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 604031684972927 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 222785346162823 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 568756842481626 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 595654572637126 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 616163445376945 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 222900967693385 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 602337465254891 } + } + entries { + b: 4 + m: 1024 + n: 1024 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 380194949520879 } + flops { key: "bf16xbf16->f32" value: 376520320504953 } + flops { key: "f16xf16->f16" value: 364985536095177 } + flops { key: "f16xf16->f32" value: 361141644783586 } + flops { key: "f32xf32->f32" value: 141841720475561 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 741342417536894 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 770639626070964 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 678027831083747 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 718342079946479 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 733712115481528 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 347531439576000 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 740671230178917 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 705336009524982 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 810677103812759 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 344880338539366 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 682878972255346 } + } + entries { + b: 4 + m: 1024 + n: 2048 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 474005881911488 } + flops { key: "bf16xbf16->f32" value: 468953286765207 } + flops { key: "f16xf16->f16" value: 422213545932661 } + flops { key: "f16xf16->f32" value: 410785452250011 } + flops { key: "f32xf32->f32" value: 200097477611158 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1175737009581166 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1010253693452118 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1088470186207115 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1094015294934250 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 964808872265745 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 450123645662483 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1102475080793172 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1088470186207115 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1016861153240603 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 455264712317150 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1064823923639519 } + } + entries { + b: 4 + m: 1024 + n: 4096 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 542003002934031 } + flops { key: "bf16xbf16->f32" value: 456538048909469 } + flops { key: "f16xf16->f16" value: 497228586056944 } + flops { key: "f16xf16->f32" value: 428324192124060 } + flops { key: "f32xf32->f32" value: 201946829087382 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1289320188671457 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1304519471809863 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1356617841002862 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1300052530997559 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1297597702675654 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 549557973017713 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1366328198349736 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1316011274579646 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1309990406344123 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 546055740192455 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1368504963377476 } + } + entries { + b: 4 + m: 1024 + n: 256 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 323672127510456 } + flops { key: "bf16xbf16->f32" value: 323659931876412 } + flops { key: "f16xf16->f16" value: 329128878194566 } + flops { key: "f16xf16->f32" value: 321720396704119 } + flops { key: "f32xf32->f32" value: 210429303348766 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1307448187519026 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1295811523910092 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1287846265667166 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1280169089716840 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1261370718355359 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 1239349962775934 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1361320854516640 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1344277713928012 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1323768622592079 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1361536628942780 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1323564652080123 } + } + entries { + b: 4 + m: 1024 + n: 512 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 326377696417037 } + flops { key: "bf16xbf16->f32" value: 334909822874632 } + flops { key: "f16xf16->f16" value: 311669917346975 } + flops { key: "f16xf16->f32" value: 310992889178523 } + flops { key: "f32xf32->f32" value: 120212922525750 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 826312788418065 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 759700591845759 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 605735462379239 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 729971072190354 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 773415080538423 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 242773534713488 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 619742043360629 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 754363273206287 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 767163936054300 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 243465069780624 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 788320524205020 } + } + entries { + b: 4 + m: 1024 + n: 1024 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 414657185571364 } + flops { key: "bf16xbf16->f32" value: 411770029816403 } + flops { key: "f16xf16->f16" value: 398383016046748 } + flops { key: "f16xf16->f32" value: 374386967921896 } + flops { key: "f32xf32->f32" value: 155342485625285 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1071498374278853 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1059537400721576 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1101026640433236 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1085718657945460 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1047904430388240 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 355091702076206 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1075489494428446 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1117535236063227 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1096809090177801 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 355088032408747 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1045353931303051 } + } + entries { + b: 4 + m: 1024 + n: 2048 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 509482260184903 } + flops { key: "bf16xbf16->f32" value: 498820277692285 } + flops { key: "f16xf16->f16" value: 443037049422990 } + flops { key: "f16xf16->f32" value: 441213711218547 } + flops { key: "f32xf32->f32" value: 212162632713800 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1326707661370349 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1323131423378323 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1302541353652526 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1322113179598668 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1332883541245611 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 518731519188381 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1363076003887731 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1290773243975281 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1318536335546260 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 522601442914179 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1353411654081733 } + } + entries { + b: 4 + m: 1024 + n: 4096 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 565825251016879 } + flops { key: "bf16xbf16->f32" value: 514259561888227 } + flops { key: "f16xf16->f16" value: 503393291720538 } + flops { key: "f16xf16->f32" value: 459350185232099 } + flops { key: "f32xf32->f32" value: 216487026229404 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1514061729242633 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1524490909687867 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1555249498953276 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1513061633423240 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1451293581609486 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 619404087052535 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1547178420749279 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1512062857934980 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1451922179083034 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 621591952674711 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1555249498953276 } + } + entries { + b: 4 + m: 2048 + n: 256 + k: 256 + flops { key: "bf16xbf16->bf16" value: 88900631230336 } + flops { key: "bf16xbf16->f32" value: 100764060060060 } + flops { key: "f16xf16->f16" value: 120199465353184 } + flops { key: "f16xf16->f32" value: 109621421541602 } + flops { key: "f32xf32->f32" value: 65217554907677 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 101526269288956 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 97826332361516 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 123234457018248 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 105114226529613 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 98004912741876 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 116799937343631 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 123234457018248 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 101143728711379 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 96239295868064 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 116787233413095 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 117297555604107 } + } + entries { + b: 4 + m: 2048 + n: 512 + k: 256 + flops { key: "bf16xbf16->bf16" value: 192478591736129 } + flops { key: "bf16xbf16->f32" value: 172087799342896 } + flops { key: "f16xf16->f16" value: 191125280170879 } + flops { key: "f16xf16->f32" value: 159783009523809 } + flops { key: "f32xf32->f32" value: 80671812471825 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 131707062128181 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 293733230474627 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 133350946845504 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 131224176474182 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 285911815736919 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 136573622996692 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 134360486016392 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 304564409019997 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 292134899741531 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 132527996050357 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 133185540064500 } + } + entries { + b: 4 + m: 2048 + n: 1024 + k: 256 + flops { key: "bf16xbf16->bf16" value: 247334713273826 } + flops { key: "bf16xbf16->f32" value: 221515668471813 } + flops { key: "f16xf16->f16" value: 253465169430510 } + flops { key: "f16xf16->f32" value: 204220783414958 } + flops { key: "f32xf32->f32" value: 117303962855738 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 478601214174281 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 398567863400148 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 517902724707584 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 479723812800178 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 443054187744996 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 175047574828822 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 513015682752030 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 477536946408716 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 339818600838673 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 174755555844895 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 514182604573207 } + } + entries { + b: 4 + m: 2048 + n: 2048 + k: 256 + flops { key: "bf16xbf16->bf16" value: 286866637456585 } + flops { key: "bf16xbf16->f32" value: 247605632191859 } + flops { key: "f16xf16->f16" value: 301803618579158 } + flops { key: "f16xf16->f32" value: 239187330270375 } + flops { key: "f32xf32->f32" value: 123697631035525 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 512373074381151 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 435838175046932 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 499240648145995 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 478121707224757 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 438060818603702 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 202101842034679 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 491246402379046 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 483476928688017 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 436280897557011 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 191885238618594 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 475975762841469 } + } + entries { + b: 4 + m: 2048 + n: 4096 + k: 256 + flops { key: "bf16xbf16->bf16" value: 303402606385984 } + flops { key: "bf16xbf16->f32" value: 261262970999285 } + flops { key: "f16xf16->f16" value: 320042272429210 } + flops { key: "f16xf16->f32" value: 254365845188036 } + flops { key: "f32xf32->f32" value: 143097605170877 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 645884025113726 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 597290588047143 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 686727792461126 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 661807819407527 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 502776388176763 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 223946987303490 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 693379714412560 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 668529425791890 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 501587375083939 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 223949906586888 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 782575009520338 } + } + entries { + b: 4 + m: 2048 + n: 256 + k: 512 + flops { key: "bf16xbf16->bf16" value: 179585519986619 } + flops { key: "bf16xbf16->f32" value: 166484506395844 } + flops { key: "f16xf16->f16" value: 177801262460672 } + flops { key: "f16xf16->f32" value: 164180707033639 } + flops { key: "f32xf32->f32" value: 88900631230336 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 177507327492147 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 307178321842368 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 162442030862329 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 174620560091071 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 306302046498359 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 170178591647515 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 168047863526097 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 176341242240105 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 284397251754734 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 135368359051941 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 162935026403641 } + } + entries { + b: 4 + m: 2048 + n: 512 + k: 512 + flops { key: "bf16xbf16->bf16" value: 272800260162601 } + flops { key: "bf16xbf16->f32" value: 239861906400089 } + flops { key: "f16xf16->f16" value: 260537900879587 } + flops { key: "f16xf16->f32" value: 232060044089042 } + flops { key: "f32xf32->f32" value: 108683822460650 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 468167352954000 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 512954412516421 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 441233541812204 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 436702317844433 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 486241061474017 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 203446890057316 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 418001683309002 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 405338551906379 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 486241061474017 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 217477710061268 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 409200390243902 } + } + entries { + b: 4 + m: 2048 + n: 1024 + k: 512 + flops { key: "bf16xbf16->bf16" value: 337946911322684 } + flops { key: "bf16xbf16->f32" value: 295766091381744 } + flops { key: "f16xf16->f16" value: 324160707649345 } + flops { key: "f16xf16->f32" value: 281960761267027 } + flops { key: "f32xf32->f32" value: 152783284278676 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 703055704043214 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 624268502325581 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 728083962705543 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 710029309968589 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 662854741260899 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 266701893691008 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 712384689998341 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 689456183642346 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 621513247377179 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 263260737135676 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 747145741671740 } + } + entries { + b: 4 + m: 2048 + n: 2048 + k: 512 + flops { key: "bf16xbf16->bf16" value: 398383016046748 } + flops { key: "bf16xbf16->f32" value: 326625901821362 } + flops { key: "f16xf16->f16" value: 395630738393515 } + flops { key: "f16xf16->f32" value: 321726421543474 } + flops { key: "f32xf32->f32" value: 155301060213518 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 688378778859638 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 587466460949254 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1015058740561299 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 850067747847600 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 759700591845759 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 306323892447043 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 955126990826708 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 855145305326032 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 593575966002142 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 309871021680314 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 969190408665237 } + } + entries { + b: 4 + m: 2048 + n: 4096 + k: 512 + flops { key: "bf16xbf16->bf16" value: 425454907974244 } + flops { key: "bf16xbf16->f32" value: 346064825888585 } + flops { key: "f16xf16->f16" value: 397461345178604 } + flops { key: "f16xf16->f32" value: 327313535298880 } + flops { key: "f32xf32->f32" value: 176504296381531 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 876121637207404 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 731525194123908 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 930275845891430 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 974136379224313 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 796766032093497 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 338886856376368 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1007912536462305 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 830707856680044 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 793454146683909 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 342675586352711 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1033406669914884 } + } + entries { + b: 4 + m: 2048 + n: 256 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 227150798392214 } + flops { key: "bf16xbf16->f32" value: 229334007689021 } + flops { key: "f16xf16->f16" value: 226193769538656 } + flops { key: "f16xf16->f32" value: 220832294513856 } + flops { key: "f32xf32->f32" value: 106786854699154 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 231809547495682 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 464120088178085 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 404574914845516 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 233080115916861 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 427147418796618 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 198730672589302 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 469190222416430 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 402301170475833 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 477590047370176 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 199469036596693 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 496355864555645 } + } + entries { + b: 4 + m: 2048 + n: 512 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 327372788292236 } + flops { key: "bf16xbf16->f32" value: 318381563825055 } + flops { key: "f16xf16->f16" value: 316738001179941 } + flops { key: "f16xf16->f32" value: 305235398763414 } + flops { key: "f32xf32->f32" value: 129526442172562 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 704208443351369 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 700761510197422 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 734370743951440 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 734307966489998 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 718342079946479 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 288407688423314 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 711205049842689 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 725623804020949 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 704208443351369 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 289379281498450 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 515447620282028 } + } + entries { + b: 4 + m: 2048 + n: 1024 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 421488449067713 } + flops { key: "bf16xbf16->f32" value: 401183223594797 } + flops { key: "f16xf16->f16" value: 388640859269313 } + flops { key: "f16xf16->f32" value: 362980544770758 } + flops { key: "f32xf32->f32" value: 184775473332114 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 968043567025412 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 990422528767439 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 973584335486795 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 933282767492394 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 880612495976216 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 361597718086337 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 931309653819049 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 900979084539542 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 885149630789839 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 366074348689537 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 923251783319002 } + } + entries { + b: 4 + m: 2048 + n: 2048 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 483361305029190 } + flops { key: "bf16xbf16->f32" value: 440532057643981 } + flops { key: "f16xf16->f16" value: 474143242689776 } + flops { key: "f16xf16->f32" value: 395717310668094 } + flops { key: "f32xf32->f32" value: 188884213359426 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1102475080793172 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1031514210987691 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1211470924758479 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1088470186207115 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1013860677722041 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 428864154971417 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1234097348179010 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1106736403014881 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1009066939825555 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 429073019992757 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1241275183989017 } + } + entries { + b: 4 + m: 2048 + n: 4096 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 498530779257711 } + flops { key: "bf16xbf16->f32" value: 434952667118163 } + flops { key: "f16xf16->f16" value: 460398072745057 } + flops { key: "f16xf16->f32" value: 400197285812455 } + flops { key: "f32xf32->f32" value: 196107713769594 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1327220131255190 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1252154238005867 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1304024379217427 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1283540535609555 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1194186753601529 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 469344038465741 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1291768050227452 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1268355052344038 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1187993374293370 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 468317307400314 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1288836563626474 } + } + entries { + b: 4 + m: 2048 + n: 256 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 265383545229856 } + flops { key: "bf16xbf16->f32" value: 270745251426230 } + flops { key: "f16xf16->f16" value: 263915896276268 } + flops { key: "f16xf16->f32" value: 257422595582726 } + flops { key: "f32xf32->f32" value: 113274360660925 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 709970625010331 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 708857451064532 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 733117230690449 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 691676833239391 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 699563041941526 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 215508030607892 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 738157136031623 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 723180214850985 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 706525299555848 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 216158800976370 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 693967894005493 } + } + entries { + b: 4 + m: 2048 + n: 512 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 367334541769120 } + flops { key: "bf16xbf16->f32" value: 366550794427020 } + flops { key: "f16xf16->f16" value: 353699027917318 } + flops { key: "f16xf16->f32" value: 343913784361612 } + flops { key: "f32xf32->f32" value: 144422048354013 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 896231894412854 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 892507100836407 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 929244330592817 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 925240692804825 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 899093007326774 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 321005048375343 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 946705746624786 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 936385740666049 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 904727430828374 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 319447177091855 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 939406670166229 } + } + entries { + b: 4 + m: 2048 + n: 1024 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 483905899133863 } + flops { key: "bf16xbf16->f32" value: 468058935116947 } + flops { key: "f16xf16->f16" value: 428757123561855 } + flops { key: "f16xf16->f32" value: 412665149802433 } + flops { key: "f32xf32->f32" value: 201036424192425 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1244872952719104 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1110312750210043 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 992138437514437 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1243071465142361 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1219208656873181 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 440086306346461 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1308493787577592 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1214039232845735 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1233255747029898 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 431016061215785 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1285918352095808 } + } + entries { + b: 4 + m: 2048 + n: 2048 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 547190584428200 } + flops { key: "bf16xbf16->f32" value: 510019198123780 } + flops { key: "f16xf16->f16" value: 488730916704597 } + flops { key: "f16xf16->f32" value: 450188519424026 } + flops { key: "f32xf32->f32" value: 207668805429891 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1479460843850244 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1350724835600283 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1426543982728556 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1396368372909597 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1341234224685767 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 491531015871880 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1396936083101254 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1347572835297578 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1342806720650304 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 494434523880103 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1437315193909351 } + } + entries { + b: 4 + m: 2048 + n: 4096 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 530853193378189 } + flops { key: "bf16xbf16->f32" value: 485928176100806 } + flops { key: "f16xf16->f16" value: 488558923171533 } + flops { key: "f16xf16->f32" value: 455239076769182 } + flops { key: "f32xf32->f32" value: 216624194938041 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1534721935300883 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1512412279331822 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1608846775281819 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1607717588311673 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1541279252141928 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 552300816048350 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1624842804624878 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1615294566344639 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1540950919621935 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 554981519879182 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1629871965277201 } + } + entries { + b: 4 + m: 2048 + n: 256 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 317440302734663 } + flops { key: "bf16xbf16->f32" value: 315336891466749 } + flops { key: "f16xf16->f16" value: 298132220112798 } + flops { key: "f16xf16->f32" value: 293036812117283 } + flops { key: "f32xf32->f32" value: 94028072814843 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 934348680263229 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 835962687168507 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 860283885027541 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 835149928734626 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 826312788418065 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 228604665061010 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 862876403013561 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 848388601679012 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 875228956340109 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 228361568821363 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 860326965997295 } + } + entries { + b: 4 + m: 2048 + n: 512 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 409020157942979 } + flops { key: "bf16xbf16->f32" value: 407661367598030 } + flops { key: "f16xf16->f16" value: 393541769668648 } + flops { key: "f16xf16->f32" value: 387234882600218 } + flops { key: "f32xf32->f32" value: 155738190903116 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1159079016596950 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1091963972796033 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1162215477202002 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1100321464373779 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1084348103891185 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 355238550996143 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1143609198468963 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1137551344744247 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1118991023513319 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 352393115851657 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1162215477202002 } + } + entries { + b: 4 + m: 2048 + n: 1024 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 511690159539534 } + flops { key: "bf16xbf16->f32" value: 507604348766435 } + flops { key: "f16xf16->f16" value: 448130558380666 } + flops { key: "f16xf16->f32" value: 448598619569545 } + flops { key: "f32xf32->f32" value: 209981778429647 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1504762125251817 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1417714902129064 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1501474321272504 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1399810085879573 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1428946720509035 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 492305707093067 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1453150279890040 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1482045305728088 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1411889314924391 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 491460710277700 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1491049226176011 } + } + entries { + b: 4 + m: 2048 + n: 2048 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 554086554397168 } + flops { key: "bf16xbf16->f32" value: 515809367775930 } + flops { key: "f16xf16->f16" value: 508846583926634 } + flops { key: "f16xf16->f32" value: 476315573503011 } + flops { key: "f32xf32->f32" value: 220863523609950 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1663466794219457 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1678930790877218 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1673207697398376 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1709460981753504 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1679341081756088 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 566107255866446 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1681395547791194 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1728400531602907 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1674838881709947 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 567090640589541 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1661455882014458 } + } + entries { + b: 4 + m: 2048 + n: 4096 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 549273551709599 } + flops { key: "bf16xbf16->f32" value: 500879035815091 } + flops { key: "f16xf16->f16" value: 485379023273225 } + flops { key: "f16xf16->f32" value: 469792442286427 } + flops { key: "f32xf32->f32" value: 219675795874494 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1768954932389471 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1714803813820595 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1763507454571117 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1733425236916285 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1726457349772320 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 639020601745882 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1750457912680218 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1778822653137295 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1719964878009711 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 621454231482611 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1758982197234291 } + } + entries { + b: 4 + m: 4096 + n: 256 + k: 256 + flops { key: "bf16xbf16->bf16" value: 182020990676385 } + flops { key: "bf16xbf16->f32" value: 170719743063836 } + flops { key: "f16xf16->f16" value: 190430402411989 } + flops { key: "f16xf16->f32" value: 172933133193751 } + flops { key: "f32xf32->f32" value: 83696455218645 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 134352080080080 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 279948331117194 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 187766341523126 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 297806635418111 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 285911815736919 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 184856989584230 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 183592685987860 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 133849641485913 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 272800260162601 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 190093267947242 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 148092107302944 } + } + entries { + b: 4 + m: 4096 + n: 512 + k: 256 + flops { key: "bf16xbf16->bf16" value: 257414881390470 } + flops { key: "bf16xbf16->f32" value: 214212832718204 } + flops { key: "f16xf16->f16" value: 248767291977990 } + flops { key: "f16xf16->f32" value: 207176079108581 } + flops { key: "f32xf32->f32" value: 129020616299678 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 208797632280019 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 430573162506265 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 504577924812030 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 488453007619697 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 417189635356969 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 189757325086153 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 510515546891715 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 210434458402743 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 422068327044025 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 191962424957540 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 514244168582375 } + } + entries { + b: 4 + m: 4096 + n: 1024 + k: 256 + flops { key: "bf16xbf16->bf16" value: 295349147022417 } + flops { key: "bf16xbf16->f32" value: 260387844190487 } + flops { key: "f16xf16->f16" value: 294145621751189 } + flops { key: "f16xf16->f32" value: 250940217697408 } + flops { key: "f32xf32->f32" value: 142193918093030 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 562794640110070 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 511762561334524 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 618826784237446 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 594006956088790 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 514213384735109 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 208084459969477 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 610037255308571 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 580322563977840 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 491246402379046 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 211783397238658 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 618871368299711 } + } + entries { + b: 4 + m: 4096 + n: 2048 + k: 256 + flops { key: "bf16xbf16->bf16" value: 330655526377581 } + flops { key: "bf16xbf16->f32" value: 260155203658555 } + flops { key: "f16xf16->f16" value: 317675095857988 } + flops { key: "f16xf16->f32" value: 254064909553386 } + flops { key: "f32xf32->f32" value: 131633394251913 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 592756760307766 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 477298138134133 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 699050666666666 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 629760600586510 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 487344524679450 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 221404332547200 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 657753711244687 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 627919195321637 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 491541563445967 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 220266028821990 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 699050666666666 } + } + entries { + b: 4 + m: 4096 + n: 4096 + k: 256 + flops { key: "bf16xbf16->bf16" value: 336033274667240 } + flops { key: "bf16xbf16->f32" value: 276061659339246 } + flops { key: "f16xf16->f16" value: 331936455981374 } + flops { key: "f16xf16->f32" value: 259836492089899 } + flops { key: "f32xf32->f32" value: 147097366560352 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 736243295720928 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 591735927530740 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 800105681073025 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 742287333232517 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 593176320552438 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 246472450023671 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 790515089566317 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 745508437327778 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 600012893879332 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 242843884457449 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 803849390978850 } + } + entries { + b: 4 + m: 4096 + n: 256 + k: 512 + flops { key: "bf16xbf16->bf16" value: 251963351871406 } + flops { key: "bf16xbf16->f32" value: 241466649575532 } + flops { key: "f16xf16->f16" value: 256186537190575 } + flops { key: "f16xf16->f32" value: 228358533390046 } + flops { key: "f32xf32->f32" value: 104294876180762 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 490685170341597 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 443924268320413 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 250493835063571 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 492937828072994 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 455216459565447 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 244783272312777 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 249620324072997 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 478601214174281 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 466185530880277 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 252853367243612 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 244504571103267 } + } + entries { + b: 4 + m: 4096 + n: 512 + k: 512 + flops { key: "bf16xbf16->bf16" value: 335570536448160 } + flops { key: "bf16xbf16->f32" value: 299687213201688 } + flops { key: "f16xf16->f16" value: 322215184065418 } + flops { key: "f16xf16->f32" value: 281029071255643 } + flops { key: "f32xf32->f32" value: 163686394146118 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 707689453946284 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 682878972255346 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 785473170446232 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 769914366944519 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 706525299555848 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 277757698764793 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 804602340951667 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 723241103982487 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 674302110997723 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 281222281617285 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 785473170446232 } + } + entries { + b: 4 + m: 4096 + n: 1024 + k: 512 + flops { key: "bf16xbf16->bf16" value: 415363970503614 } + flops { key: "bf16xbf16->f32" value: 346556980291691 } + flops { key: "f16xf16->f16" value: 381893682123327 } + flops { key: "f16xf16->f32" value: 335964275344180 } + flops { key: "f32xf32->f32" value: 162601926856969 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 750409241897440 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 831109727831261 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1012665439669908 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 940486625280560 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 822357435450672 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 317088763086009 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 983617839459521 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 758359194137900 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 646345717983446 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 317910236565507 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 984745453628338 } + } + entries { + b: 4 + m: 4096 + n: 2048 + k: 512 + flops { key: "bf16xbf16->bf16" value: 425560296854099 } + flops { key: "bf16xbf16->f32" value: 350663248129815 } + flops { key: "f16xf16->f16" value: 402404824772210 } + flops { key: "f16xf16->f32" value: 332579040082080 } + flops { key: "f32xf32->f32" value: 166612866374105 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 943585938595045 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 758375932372481 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1031545179020685 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 923773043903750 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 792703619056407 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 339623785390926 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1040920305613620 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 878810639111975 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 820393925027458 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 331420976985550 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1035899133769483 } + } + entries { + b: 4 + m: 4096 + n: 4096 + k: 512 + flops { key: "bf16xbf16->bf16" value: 432211558451523 } + flops { key: "bf16xbf16->f32" value: 382784997833170 } + flops { key: "f16xf16->f16" value: 415010277114472 } + flops { key: "f16xf16->f32" value: 351597996080819 } + flops { key: "f32xf32->f32" value: 185293626670405 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1073506994344987 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 907403432313949 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1068150722561591 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1013546654710107 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 916870937104736 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 369350335846927 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1118280853623212 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1098931392001023 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 857075752204442 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 369270946215642 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1073171701533560 } + } + entries { + b: 4 + m: 4096 + n: 256 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 306761466752374 } + flops { key: "bf16xbf16->f32" value: 287818213838163 } + flops { key: "f16xf16->f16" value: 292144835288916 } + flops { key: "f16xf16->f32" value: 287818213838163 } + flops { key: "f32xf32->f32" value: 116633417860391 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 711205049842689 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 719545534595409 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 809149829691032 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 763074939326641 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 720753028360463 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 295359302410342 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 624268502325581 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 755026333128241 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 733117230690449 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 299061191101208 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 803097848915482 } + } + entries { + b: 4 + m: 4096 + n: 512 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 394531385555172 } + flops { key: "bf16xbf16->f32" value: 373735406891750 } + flops { key: "f16xf16->f16" value: 375532683046253 } + flops { key: "f16xf16->f32" value: 360089481953468 } + flops { key: "f32xf32->f32" value: 184574971357356 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 998481296291991 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 967008284588539 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1061534180919426 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1048512003906011 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 968098116984109 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 378853489403929 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1044686481240498 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1025970091609435 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 995011536198308 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 382055044454822 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1039628997518910 } + } + entries { + b: 4 + m: 4096 + n: 1024 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 495933177951301 } + flops { key: "bf16xbf16->f32" value: 441216544051364 } + flops { key: "f16xf16->f16" value: 445455160733269 } + flops { key: "f16xf16->f32" value: 410099044781819 } + flops { key: "f32xf32->f32" value: 179854369028799 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1178196288722010 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1129325829679539 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1240378988772968 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1196286413480955 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1116119485723566 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 415464418853232 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1275417162880475 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1200424077420256 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1149770391112301 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 416976995315647 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1205520257104764 } + } + entries { + b: 4 + m: 4096 + n: 2048 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 499912534543840 } + flops { key: "bf16xbf16->f32" value: 454181493787342 } + flops { key: "f16xf16->f16" value: 458368196368778 } + flops { key: "f16xf16->f32" value: 417994055680249 } + flops { key: "f32xf32->f32" value: 192628043784530 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1267887024649446 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1172967547468678 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1300569225481661 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1225754539286160 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1152064187765092 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 463509646874726 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1331876051166757 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1308493787577592 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1155551240747280 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 466914054654907 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1328246259659431 } + } + entries { + b: 4 + m: 4096 + n: 4096 + k: 1024 + flops { key: "bf16xbf16->bf16" value: 509374630667225 } + flops { key: "bf16xbf16->f32" value: 470921646566227 } + flops { key: "f16xf16->f16" value: 465934243485041 } + flops { key: "f16xf16->f32" value: 423594209043361 } + flops { key: "f32xf32->f32" value: 213324424268011 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1446421316270259 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1288353301261741 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1454072719763013 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1404659956788798 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1298100186744996 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 473194789694576 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1454380460021164 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1417714902129064 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1280896872030494 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 495543369287903 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1400937296488456 } + } + entries { + b: 4 + m: 4096 + n: 256 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 341046356930162 } + flops { key: "bf16xbf16->f32" value: 333745224648379 } + flops { key: "f16xf16->f16" value: 329387602507812 } + flops { key: "f16xf16->f32" value: 321125052505654 } + flops { key: "f32xf32->f32" value: 131593063231024 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 995011536198308 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 968098116984109 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1015058740561299 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1023525122669049 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 973529165523885 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 329387602507812 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1006731273600937 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1061534180919426 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 976906015239395 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 331171817102320 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 995011536198308 } + } + entries { + b: 4 + m: 4096 + n: 512 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 438284330425021 } + flops { key: "bf16xbf16->f32" value: 427471582975652 } + flops { key: "f16xf16->f16" value: 417179504723051 } + flops { key: "f16xf16->f32" value: 404489185694441 } + flops { key: "f32xf32->f32" value: 191477825339240 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1323615638815054 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1192922208381071 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1263225675294117 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1242172675174433 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1197078297320837 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 450365542946272 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1258598475018315 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1229724718800329 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1206366770872832 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 451549266923370 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1249399598850950 } + } + entries { + b: 4 + m: 4096 + n: 1024 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 542949400207005 } + flops { key: "bf16xbf16->f32" value: 490828863813952 } + flops { key: "f16xf16->f16" value: 480045523192131 } + flops { key: "f16xf16->f32" value: 457818528307417 } + flops { key: "f32xf32->f32" value: 194022515863268 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1632950995318774 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1398072889467580 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1448250300021074 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1441566535263268 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1387319351071991 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 494150092301497 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1487144857841546 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1476282556789619 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1408994438120233 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 494363385292721 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1496862853383868 } + } + entries { + b: 4 + m: 4096 + n: 2048 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 540001231639661 } + flops { key: "bf16xbf16->f32" value: 525808396287482 } + flops { key: "f16xf16->f16" value: 494829715470747 } + flops { key: "f16xf16->f32" value: 466979098829485 } + flops { key: "f32xf32->f32" value: 215427297391936 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1669528843711280 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1525167604057083 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1620245602433216 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1582504732029154 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1497874291294302 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 556151556791097 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1623307507996126 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1595030040177794 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1510069257507004 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 556151556791097 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1632194685256220 } + } + entries { + b: 4 + m: 4096 + n: 4096 + k: 2048 + flops { key: "bf16xbf16->bf16" value: 545387261920020 } + flops { key: "bf16xbf16->f32" value: 537336883828945 } + flops { key: "f16xf16->f16" value: 491955913599226 } + flops { key: "f16xf16->f32" value: 470970058604418 } + flops { key: "f32xf32->f32" value: 234210926868171 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1681807044358243 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1636879537325520 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1794394478278182 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1726663401995025 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1632020251644619 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 594299770269218 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1731688906875653 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1772833969326023 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1655841130953887 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 594325469496480 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1797221940711100 } + } + entries { + b: 4 + m: 4096 + n: 256 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 385579252715683 } + flops { key: "bf16xbf16->f32" value: 379187966186240 } + flops { key: "f16xf16->f16" value: 379774723876472 } + flops { key: "f16xf16->f32" value: 375126790414323 } + flops { key: "f32xf32->f32" value: 139569339875865 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1101732720941417 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1108164173643810 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1119720340481001 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1095410411196480 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1120450608752364 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 347749512863591 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1107449828144137 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1106736403014881 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1133049904962902 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 349305027834821 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1114671155490673 } + } + entries { + b: 4 + m: 4096 + n: 512 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 460401157282594 } + flops { key: "bf16xbf16->f32" value: 455750825597050 } + flops { key: "f16xf16->f16" value: 436222738956282 } + flops { key: "f16xf16->f32" value: 427631188539994 } + flops { key: "f32xf32->f32" value: 204963900595330 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1485890778758000 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1439724219815214 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1438518698289757 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1425389988508846 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1433118740714479 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 500203640450419 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1461805503850244 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1466171895370172 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1437946782506800 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 500054406333682 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1475648537353174 } + } + entries { + b: 4 + m: 4096 + n: 1024 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 538391447220078 } + flops { key: "bf16xbf16->f32" value: 529907595009330 } + flops { key: "f16xf16->f16" value: 503692158599736 } + flops { key: "f16xf16->f32" value: 486547460234071 } + flops { key: "f32xf32->f32" value: 205985608282650 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1749099017167873 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1659429789696099 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1746431928434375 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1725362844560496 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1687609939489194 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 559185925332812 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1745101431898117 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1722335816336249 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1685519597159711 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 558958506743017 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1745123590228046 } + } + entries { + b: 4 + m: 4096 + n: 2048 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 570271916350630 } + flops { key: "bf16xbf16->f32" value: 553348150078308 } + flops { key: "f16xf16->f16" value: 503581425794088 } + flops { key: "f16xf16->f32" value: 496529804919815 } + flops { key: "f32xf32->f32" value: 226286315076127 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1819865249922207 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1757171850669939 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1850531216803554 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1809311938495563 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1751573337139652 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 621369942501141 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1839866580170146 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1830054905687008 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1775135176488062 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 622074457918904 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1842579865693352 } + } + entries { + b: 4 + m: 4096 + n: 4096 + k: 4096 + flops { key: "bf16xbf16->bf16" value: 588276135222360 } + flops { key: "bf16xbf16->f32" value: 579017627741154 } + flops { key: "f16xf16->f16" value: 511549701343740 } + flops { key: "f16xf16->f32" value: 492900703536474 } + flops { key: "f32xf32->f32" value: 244524907867903 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->bf16" value: 1857044750633364 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f32" value: 1807634281024561 } + flops { key: "f8e4m3fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 1894736200669311 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->bf16" value: 1853913541900195 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f32" value: 1797692091507200 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e4m3fnuz" value: 656710276332638 } + flops { key: "f8e4m3fnuzxf8e5m2fnuz->f8e5m2fnuz" value: 1899850065964446 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->bf16" value: 1892381721414065 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f32" value: 1813729145677448 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e4m3fnuz" value: 657322735638890 } + flops { key: "f8e5m2fnuzxf8e4m3fnuz->f8e5m2fnuz" value: 1902091548152940 } + } + } +} entries { key: "gfx950" value { diff --git a/third_party/xla/xla/service/gpu/model/gpu_dot_fusion_cost_model.cc b/third_party/xla/xla/service/gpu/model/gpu_dot_fusion_cost_model.cc index 4fd754936e868d..b5302bcb434ea7 100644 --- a/third_party/xla/xla/service/gpu/model/gpu_dot_fusion_cost_model.cc +++ b/third_party/xla/xla/service/gpu/model/gpu_dot_fusion_cost_model.cc @@ -535,6 +535,22 @@ int64_t CalculateSharedMemoryPerBlockBytes(const DotProblemInfo& dot_info, return (lhs_tile_bytes + rhs_tile_bytes) * num_stages; } +WarpGrid FactorWarpGrid(int64_t num_warps, int64_t tile_m, int64_t tile_n) { + if (num_warps <= 1 || tile_m <= 0 || tile_n <= 0) { + return {1, 1}; + } + int64_t warps_m = 1; + int64_t warps_n = 1; + while (warps_m * warps_n < num_warps) { + if (tile_m * warps_n >= 2 * tile_n * warps_m) { + warps_m *= 2; + } else { + warps_n *= 2; + } + } + return {warps_m, warps_n}; +} + namespace { int CalculateAccumulatorRegisters(const DotProblemInfo& dot_info, diff --git a/third_party/xla/xla/service/gpu/model/gpu_dot_fusion_cost_model.h b/third_party/xla/xla/service/gpu/model/gpu_dot_fusion_cost_model.h index 9d87b3fde181cf..818aaad410f91a 100644 --- a/third_party/xla/xla/service/gpu/model/gpu_dot_fusion_cost_model.h +++ b/third_party/xla/xla/service/gpu/model/gpu_dot_fusion_cost_model.h @@ -146,6 +146,16 @@ int64_t CalculateSharedMemoryPerBlockBytes(const DotProblemInfo& dot_info, const DotTileSize& dot_tile, int64_t num_stages); +// Represents a 2D warp grid factorization (warps_m x warps_n). +struct WarpGrid { + int64_t warps_m = 1; + int64_t warps_n = 1; +}; + +// Heuristic to factor `num_warps` into a 2D warp grid (warps_m x warps_n) +// matching the tile aspect ratio to balance per-warp tile dimensions. +WarpGrid FactorWarpGrid(int64_t num_warps, int64_t tile_m, int64_t tile_n); + // Estimates physical PTX register usage per thread for a GPU dot fusion kernel, // accounting for output accumulator registers and base state overhead. int CalculateRegistersPerThread(const DotProblemInfo& dot_info, diff --git a/third_party/xla/xla/service/gpu/model/gpu_dot_fusion_cost_model_test.cc b/third_party/xla/xla/service/gpu/model/gpu_dot_fusion_cost_model_test.cc index c1467e9e6903eb..36c56cb7f6c7a3 100644 --- a/third_party/xla/xla/service/gpu/model/gpu_dot_fusion_cost_model_test.cc +++ b/third_party/xla/xla/service/gpu/model/gpu_dot_fusion_cost_model_test.cc @@ -51,12 +51,14 @@ using gpu_dot_fusion_cost_model::detail::CalculateSmOccupancy; using gpu_dot_fusion_cost_model::detail::ComputeAndFlops; using gpu_dot_fusion_cost_model::detail::DotProblemInfo; using gpu_dot_fusion_cost_model::detail::DotTileSize; +using gpu_dot_fusion_cost_model::detail::FactorWarpGrid; using gpu_dot_fusion_cost_model::detail::GetEffectiveFlopsPerNsForTileSize; using gpu_dot_fusion_cost_model::detail::GetEffectiveHbmBandwidth; using gpu_dot_fusion_cost_model::detail::HbmEstimates; using gpu_dot_fusion_cost_model::detail::kLoopLatencyTax; using gpu_dot_fusion_cost_model::detail::LaunchConfig; using gpu_dot_fusion_cost_model::detail::SmOccupancy; +using ::testing::FieldsAre; using ::xla::xtile::BlockLevelParameters; class GpuDotFusionCostModelTest : public HloHardwareIndependentTestBase { @@ -835,6 +837,25 @@ BlockLevelParameters CreateBlockParams(int64_t num_warps) { return params; } +TEST_F(GpuDotFusionCostModelTest, FactorWarpGrid) { + // Non-positive inputs fall back to 1x1. + EXPECT_THAT(FactorWarpGrid(0, 128, 128), FieldsAre(1, 1)); + EXPECT_THAT(FactorWarpGrid(4, 0, 128), FieldsAre(1, 1)); + EXPECT_THAT(FactorWarpGrid(4, 128, 0), FieldsAre(1, 1)); + + // Square tiles factor evenly. + EXPECT_THAT(FactorWarpGrid(1, 64, 64), FieldsAre(1, 1)); + EXPECT_THAT(FactorWarpGrid(2, 64, 64), FieldsAre(1, 2)); + EXPECT_THAT(FactorWarpGrid(4, 64, 64), FieldsAre(2, 2)); + EXPECT_THAT(FactorWarpGrid(8, 64, 64), FieldsAre(2, 4)); + EXPECT_THAT(FactorWarpGrid(16, 64, 64), FieldsAre(4, 4)); + + // Asymmetric tiles allocate warps along the larger dimension. + EXPECT_THAT(FactorWarpGrid(4, 256, 32), FieldsAre(4, 1)); + EXPECT_THAT(FactorWarpGrid(4, 32, 256), FieldsAre(1, 4)); + EXPECT_THAT(FactorWarpGrid(16, 32, 128), FieldsAre(2, 8)); +} + TEST_F(GpuDotFusionCostModelTest, CalculateRegistersPerThreadIncreasesWithTileSize) { const DotProblemInfo dot_info = CreateDotInfo(PrimitiveType::F32); diff --git a/third_party/xla/xla/service/gpu/model/matmul_interpolator_test.cc b/third_party/xla/xla/service/gpu/model/matmul_interpolator_test.cc index 5f6af382fa7c25..6accee94d58dad 100644 --- a/third_party/xla/xla/service/gpu/model/matmul_interpolator_test.cc +++ b/third_party/xla/xla/service/gpu/model/matmul_interpolator_test.cc @@ -333,6 +333,12 @@ class MatmulInterpolatorDefaultTableTest return GetMatmulInterpolator(TestGpuDeviceInfo::B200SXMDeviceInfo()); } + std::unique_ptr GetMatmulInterpolatorGfx942() { + se::DeviceDescription device_info = TestGpuDeviceInfo::AMDMI210DeviceInfo(); + device_info.set_rocm_compute_capability("gfx942"); + return GetMatmulInterpolator(device_info); + } + std::unique_ptr GetMatmulInterpolatorGfx950() { se::DeviceDescription device_info = TestGpuDeviceInfo::AMDMI210DeviceInfo(); device_info.set_rocm_compute_capability("gfx950"); @@ -648,6 +654,105 @@ INSTANTIATE_TEST_SUITE_P( [](const TestParamInfo& info) { return info.param.test_name; }); +using Gfx942DefaultTableTest = MatmulInterpolatorDefaultTableTest; + +TEST_P(Gfx942DefaultTableTest, EstimatesExactRuntime) { + const auto& [_, spec, expected_duration] = GetParam(); + ASSERT_OK_AND_ASSIGN(DotContext context, + Dot(spec.b, spec.m, spec.n, spec.k, spec.lhs_type, + spec.rhs_type, spec.result_type)); + std::unique_ptr interpolator = + GetMatmulInterpolatorGfx942(); + std::optional runtime = + interpolator->EstimatedRuntime(*context.dot); + ASSERT_TRUE(runtime.has_value()); + EXPECT_NEAR(absl::ToDoubleNanoseconds(*runtime), + absl::ToDoubleNanoseconds(expected_duration), 1.0); +} + +INSTANTIATE_TEST_SUITE_P( + MatmulInterpolatorDefaultTableTestInstantiationGfx942, + Gfx942DefaultTableTest, + ValuesIn({ + { + /*test_name=*/"bf16_bf16_bf16", + /*spec=*/ + {/*b=*/1, /*m=*/1024, /*n=*/4096, /*k=*/512, + /*lhs_type=*/"bf16", + /*rhs_type=*/"bf16", + /*result_type=*/"bf16", + /*clock_cycles=*/0}, + /*expected_duration=*/absl::Nanoseconds(18387), + }, + { + /*test_name=*/"f16_f16_f16", + /*spec=*/ + {/*b=*/1, /*m=*/1024, /*n=*/4096, /*k=*/512, + /*lhs_type=*/"f16", + /*rhs_type=*/"f16", + /*result_type=*/"f16", + /*clock_cycles=*/0}, + /*expected_duration=*/absl::Nanoseconds(15724), + }, + { + /*test_name=*/"f32_f32_f32", + /*spec=*/ + {/*b=*/1, /*m=*/1024, /*n=*/4096, /*k=*/512, + /*lhs_type=*/"f32", + /*rhs_type=*/"f32", + /*result_type=*/"f32", + /*clock_cycles=*/0}, + /*expected_duration=*/absl::Nanoseconds(38197), + }, + { + /*test_name=*/"f8e4m3fnuz_f8e4m3fnuz_bf16", + /*spec=*/ + {/*b=*/1, /*m=*/1024, /*n=*/4096, /*k=*/512, + /*lhs_type=*/"f8e4m3fnuz", + /*rhs_type=*/"f8e4m3fnuz", + /*result_type=*/"bf16", + /*clock_cycles=*/0}, + /*expected_duration=*/absl::Nanoseconds(19309), + }, + { + /*test_name=*/"f8e4m3fnuz_f8e4m3fnuz_f8e4m3fnuz", + /*spec=*/ + {/*b=*/1, /*m=*/1024, /*n=*/4096, /*k=*/512, + /*lhs_type=*/"f8e4m3fnuz", + /*rhs_type=*/"f8e4m3fnuz", + /*result_type=*/"f8e4m3fnuz", + /*clock_cycles=*/0}, + /*expected_duration=*/absl::Nanoseconds(19169), + }, + { + /*test_name=*/"f8e5m2fnuz_f8e4m3fnuz_f32", + /*spec=*/ + {/*b=*/1, /*m=*/1024, /*n=*/4096, /*k=*/512, + /*lhs_type=*/"f8e5m2fnuz", + /*rhs_type=*/"f8e4m3fnuz", + /*result_type=*/"f32", + /*clock_cycles=*/0}, + /*expected_duration=*/absl::Nanoseconds(10656), + }, + }), + [](const TestParamInfo& + info) { return info.param.test_name; }); + +TEST(DefaultMatmulPerfTableTest, Gfx942InterpolatesBetweenGridPoints) { + se::DeviceDescription device_info = TestGpuDeviceInfo::AMDMI210DeviceInfo(); + device_info.set_rocm_compute_capability("gfx942"); + ASSERT_OK_AND_ASSIGN(std::unique_ptr interpolator, + MatmulInterpolator::Create(device_info)); + ASSERT_OK_AND_ASSIGN( + DotContext context, + Dot(/*b=*/1, /*m=*/1024, /*n=*/4096, /*k=*/768, /*lhs_type=*/"bf16", + /*rhs_type=*/"bf16", /*result_type=*/"bf16")); + ASSERT_TRUE(interpolator->EstimatedRuntime(*context.dot).has_value()); + absl::Duration runtime = *interpolator->EstimatedRuntime(*context.dot); + EXPECT_GT(runtime, absl::Nanoseconds(18387)); + EXPECT_LT(runtime, absl::Nanoseconds(25497)); +} + using Gfx950DefaultTableTest = MatmulInterpolatorDefaultTableTest; TEST_P(Gfx950DefaultTableTest, EstimatesExactRuntime) { diff --git a/third_party/xla/xla/service/gpu/model/sol_latency_estimator.cc b/third_party/xla/xla/service/gpu/model/sol_latency_estimator.cc index dc7ff7d5161e94..9805455775b9f3 100644 --- a/third_party/xla/xla/service/gpu/model/sol_latency_estimator.cc +++ b/third_party/xla/xla/service/gpu/model/sol_latency_estimator.cc @@ -443,7 +443,7 @@ SolLatencyEstimator::Create( bool is_supported_device = gpu_device_info.cuda_compute_capability().IsHopper() || gpu_device_info.cuda_compute_capability().IsBlackwell() || - (cc.IsRocm() && cc.rocm_compute_capability()->gfx9_mi350()); + (cc.IsRocm() && cc.rocm_compute_capability()->gfx9_mi300_series()); if (IsPassEnabledAtOptimizationEffort(module)) { // If the user enabled opt effort we turn the estimator on if we're // compiling for a supported device. @@ -457,8 +457,8 @@ SolLatencyEstimator::Create( return false; } // Otherwise we are more conservative and we turn it on only for supported - // devices (Hopper/Blackwell/gfx950) and if `module` contains only supported - // collectives. + // devices (Hopper/Blackwell/gfx942/gfx950) and if `module` contains only + // supported collectives. return is_supported_device && HasOnlySupportedCollectives(module); } diff --git a/third_party/xla/xla/service/gpu/model/sol_latency_estimator.h b/third_party/xla/xla/service/gpu/model/sol_latency_estimator.h index 3854b89efdabfd..4eb8363ae515c4 100644 --- a/third_party/xla/xla/service/gpu/model/sol_latency_estimator.h +++ b/third_party/xla/xla/service/gpu/model/sol_latency_estimator.h @@ -46,8 +46,8 @@ namespace gpu { // therefore in the case of algorithmic improvements at lower levels of // abstractions performance tables need to be updated. // -// The estimator is enabled for Hopper, Blackwell, and ROCm gfx950 when a module -// contains only supported collective operations. +// The estimator is enabled for Hopper, Blackwell, and ROCm gfx942/gfx950 when a +// module contains only supported collective operations. class SolLatencyEstimator : public LatencyEstimator { public: TimeCost GetLatencyBetween(const HloGraphNode& from, diff --git a/third_party/xla/xla/service/gpu/model/sol_latency_estimator_test.cc b/third_party/xla/xla/service/gpu/model/sol_latency_estimator_test.cc index 00fabca5273259..04d0e81405ba0e 100644 --- a/third_party/xla/xla/service/gpu/model/sol_latency_estimator_test.cc +++ b/third_party/xla/xla/service/gpu/model/sol_latency_estimator_test.cc @@ -892,6 +892,19 @@ TEST_F(IsSolLatencyEstimatorEnabledTest, EnabledBySolEstimatorFlagOnGfx950) { SolLatencyEstimator::IsSupportedForModule(*module, gpu_device_info_)); } +TEST_F(IsSolLatencyEstimatorEnabledTest, EnabledBySolEstimatorFlagOnGfx942) { + HloModuleConfig config; + config.mutable_debug_options() + .set_xla_gpu_enable_analytical_sol_latency_estimator(true); + gpu_device_info_.set_rocm_compute_capability("gfx942"); + + auto module = CreateTestModule(config); + AddAllReduce(module.get()); + + EXPECT_TRUE( + SolLatencyEstimator::IsSupportedForModule(*module, gpu_device_info_)); +} + TEST_F(IsSolLatencyEstimatorEnabledTest, DisabledIfFlagIsOffOnGfx950) { HloModuleConfig config; config.mutable_debug_options() @@ -912,11 +925,9 @@ TEST_F(IsSolLatencyEstimatorEnabledTest, DisabledForUnsupportedRocmArch) { auto module = CreateTestModule(config); AddAllReduce(module.get()); - for (absl::string_view architecture : {"gfx942", "gfx90a"}) { - gpu_device_info_.set_rocm_compute_capability(std::string(architecture)); - EXPECT_FALSE( - SolLatencyEstimator::IsSupportedForModule(*module, gpu_device_info_)); - } + gpu_device_info_.set_rocm_compute_capability("gfx90a"); + EXPECT_FALSE( + SolLatencyEstimator::IsSupportedForModule(*module, gpu_device_info_)); } TEST_F(IsSolLatencyEstimatorEnabledTest, @@ -996,6 +1007,56 @@ TEST_F(IsSolLatencyEstimatorEnabledTest, CreatesEstimatorWithGfx950Profiles) { 0); } +TEST_F(IsSolLatencyEstimatorEnabledTest, CreatesEstimatorWithGfx942Profiles) { + constexpr absl::string_view kHlo = R"( + HloModule m, num_partitions=8 + + add { + x = f32[] parameter(0) + y = f32[] parameter(1) + ROOT sum = f32[] add(x, y) + } + + ENTRY main { + lhs = f32[256,256] parameter(0) + rhs = f32[256,256] parameter(1) + dot = f32[256,256] dot(lhs, rhs), + lhs_contracting_dims={1}, rhs_contracting_dims={0} + p = f32[256] parameter(2) + ar-start = f32[256] all-reduce-start(p), to_apply=add, + replica_groups=[1,8]<=[8], channel_id=1, use_global_device_ids=true + ar-done = f32[256] all-reduce-done(ar-start) + ROOT result = (f32[256,256], f32[256]) tuple(dot, ar-done) + } + )"; + ASSERT_OK_AND_ASSIGN(auto module, ParseAndReturnVerifiedModule(kHlo)); + gpu_device_info_ = TestGpuDeviceInfo::AMDMI210DeviceInfo(); + gpu_device_info_.set_rocm_compute_capability("gfx942"); + + SchedulerConfig scheduler_config; + ASSERT_OK_AND_ASSIGN( + std::unique_ptr estimator, + SolLatencyEstimator::Create( + scheduler_config, std::make_unique(), + gpu_device_info_, HloCostAnalysis::DefaultShapeSize, + module->entry_computation())); + + HloInstruction* dot = + module->entry_computation()->GetInstructionWithName("dot"); + HloInstruction* all_reduce_start = + module->entry_computation()->GetInstructionWithName("ar-start"); + HloInstruction* all_reduce_done = + module->entry_computation()->GetInstructionWithName("ar-done"); + ASSERT_NE(dot, nullptr); + ASSERT_NE(all_reduce_start, nullptr); + ASSERT_NE(all_reduce_done, nullptr); + EXPECT_GT(estimator->NodeCost(dot), 0); + EXPECT_GT(estimator->GetLatencyBetween( + HloGraphNode(all_reduce_start, /*original_position=*/-1), + HloGraphNode(all_reduce_done, /*original_position=*/-1)), + 0); +} + // ---- Triton collective scheduler integration tests ----------------------- // // These tests verify that SolLatencyEstimator correctly uses the NVLink-based diff --git a/third_party/xla/xla/service/xla_transform.cc b/third_party/xla/xla/service/xla_transform.cc index e4158a5f5420ec..6b55a787a24243 100644 --- a/third_party/xla/xla/service/xla_transform.cc +++ b/third_party/xla/xla/service/xla_transform.cc @@ -120,21 +120,28 @@ absl::StatusOr ApplyXlaTransformsToModule( } bool changed = false; for (auto& transform : transforms) { - auto status_or_bool = transform->Transform(module); - if (!status_or_bool.status().ok()) { - return status_or_bool.status(); - } - changed |= status_or_bool.value(); + ABSL_ASSIGN_OR_RETURN(bool transform_changed, transform->Transform(module)); + changed |= transform_changed; } return changed; } -ApplyXlaTransforms::ApplyXlaTransforms(HloXlaTransform::PipelineStage stage) +ApplyXlaTransforms::ApplyXlaTransforms( + HloXlaTransform::PipelineStage stage, + std::unique_ptr target_metadata) : stage_(stage) { static std::atomic next_id{0}; name_ = absl::StrCat("apply-xla-transforms-", next_id.fetch_add(1)); + if (target_metadata == nullptr) { + target_metadata = std::make_unique( + HloVerifierOpts{}.WithLayoutSensitive(false).WithAllowMixedPrecision( + true)); + } + verifier_ = std::make_unique(std::move(target_metadata), name_); } +ApplyXlaTransforms::~ApplyXlaTransforms() = default; + absl::StatusOr ApplyXlaTransforms::RunImpl( HloModule* module, const absl::flat_hash_set& execution_threads) { @@ -142,12 +149,7 @@ absl::StatusOr ApplyXlaTransforms::RunImpl( XLA_VLOG_LINES(1, module->ToString()); ABSL_ASSIGN_OR_RETURN(bool changed, ApplyXlaTransformsToModule(stage_, module)); if (changed) { - HloVerifier verifier(/*layout_sensitive=*/false, - /*allow_mixed_precision=*/true); - auto verifier_status = verifier.Run(module); - if (!verifier_status.status().ok()) { - return verifier_status.status(); - } + ABSL_RETURN_IF_ERROR(verifier_->Run(module, execution_threads).status()); } VLOG(1) << "ApplyXlaTransforms EXIT"; XLA_VLOG_LINES(1, module->ToString()); diff --git a/third_party/xla/xla/service/xla_transform.h b/third_party/xla/xla/service/xla_transform.h index c8f3cd294441de..14294ce1421c74 100644 --- a/third_party/xla/xla/service/xla_transform.h +++ b/third_party/xla/xla/service/xla_transform.h @@ -93,13 +93,18 @@ bool ClearHloXlaTransform(HloXlaTransform::PipelineStage stage, absl::StatusOr ApplyXlaTransformsToModule( HloXlaTransform::PipelineStage stage, xla::HloModule* module); +class TargetVerifierMetadata; +class HloVerifier; + // HloPass that applies all registered HloXlaTransforms for the specified stage. // HloXlaTransforms which are registered at the same stage, are applied in the // order in which they were registered. class ApplyXlaTransforms : public HloModulePass { public: - explicit ApplyXlaTransforms(HloXlaTransform::PipelineStage stage); - ~ApplyXlaTransforms() override = default; + explicit ApplyXlaTransforms( + HloXlaTransform::PipelineStage stage, + std::unique_ptr target_metadata = nullptr); + ~ApplyXlaTransforms() override; absl::string_view name() const override { return name_; } @@ -110,6 +115,7 @@ class ApplyXlaTransforms : public HloModulePass { private: HloXlaTransform::PipelineStage stage_; std::string name_; + std::unique_ptr verifier_; }; // Replaces the contents of `module` with the HloModule described by diff --git a/third_party/xla/xla/service/xla_transform_test.cc b/third_party/xla/xla/service/xla_transform_test.cc index 4ca60e0ffc615d..10cf5e269242ce 100644 --- a/third_party/xla/xla/service/xla_transform_test.cc +++ b/third_party/xla/xla/service/xla_transform_test.cc @@ -40,6 +40,7 @@ limitations under the License. #include "xla/service/computation_layout.h" #include "xla/service/hlo.pb.h" #include "xla/service/hlo_cse.h" +#include "xla/service/hlo_verifier.h" #include "xla/shape.h" #include "xla/shape_layout.h" #include "xla/shape_util.h" @@ -838,6 +839,49 @@ TEST_F(XlaTransformTest, GetHloPassPipelineTraceValidationAndErrorHandling) { extension.destroy_hlo_pass_pipeline_trace(&destroy_args); } +TEST_F(XlaTransformTest, ApplyTransformsCustomVerifierMetadata) { + absl::string_view hlo_text = R"( + HloModule test_module, num_partitions=2 + ENTRY main { + ROOT p0 = f32[4] parameter(0), sharding={devices=[4]0,1,2,3} + } + )"; + + ASSERT_OK_AND_ASSIGN(auto module, + xla::ParseAndReturnUnverifiedModule(hlo_text)); + module->mutable_config().set_use_spmd_partitioning(true); + + auto transform = std::make_shared("trivial_transform"); + RegisterHloXlaTransform(HloXlaTransform::PipelineStage::kPreScheduler, + transform); + + // Default verifier should reject this module because + // verify_sharding_device_numbers is true and num_partitions (2) != sharding + // device count (4). + { + ASSERT_OK_AND_ASSIGN(auto clone, + xla::ParseAndReturnUnverifiedModule(hlo_text)); + clone->mutable_config().set_use_spmd_partitioning(true); + HloPassPipeline default_pipeline("default_pipeline"); + default_pipeline.AddPass( + HloXlaTransform::PipelineStage::kPreScheduler); + EXPECT_FALSE(default_pipeline.Run(clone.get()).ok()); + } + + // With custom TargetVerifierMetadata (with + // verify_sharding_device_numbers=false), ApplyXlaTransforms succeeds. + { + HloPassPipeline custom_pipeline("custom_pipeline"); + auto verifier_metadata = std::make_unique( + HloVerifierOpts{}.WithVerifyShardingDeviceNumbers(false)); + custom_pipeline.AddPass( + HloXlaTransform::PipelineStage::kPreScheduler, + std::move(verifier_metadata)); + ASSERT_OK_AND_ASSIGN(bool changed, custom_pipeline.Run(module.get())); + EXPECT_TRUE(changed); + } +} + } // namespace } // namespace xla diff --git a/third_party/xla/xla/tests/BUILD b/third_party/xla/xla/tests/BUILD index 6b44cb146095dd..27a2b4fdc7f22a 100644 --- a/third_party/xla/xla/tests/BUILD +++ b/third_party/xla/xla/tests/BUILD @@ -487,7 +487,6 @@ cc_library( "//xla/hlo/parser:hlo_parser", "//xla/hlo/testlib:test_helpers", "//xla/hlo/testlib:verified_hlo_module", - "//xla/service:computation_placer", "//xla/service:hlo_module_config", "//xla/service:platform_util", "//xla/service:shaped_buffer", @@ -1926,7 +1925,6 @@ xla_test( "//xla/hlo/builder:xla_builder", "//xla/hlo/testlib:test_helpers", "//xla/service", - "//xla/service:computation_placer", "//xla/service:platform_util", "//xla/service:shaped_buffer", "//xla/service:transfer_manager", diff --git a/third_party/xla/xla/tests/batch_norm_training_test.cc b/third_party/xla/xla/tests/batch_norm_training_test.cc index fdc14558fd48f0..6a7d92d7e07f6e 100644 --- a/third_party/xla/xla/tests/batch_norm_training_test.cc +++ b/third_party/xla/xla/tests/batch_norm_training_test.cc @@ -13,6 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ +#include #include #include "xla/tests/xla_test_backend_predicates.h" @@ -54,11 +55,11 @@ TEST_F(BatchNormTrainingTest, CorrectComputation) { auto result_tuple = result.DecomposeTuple(); auto expected_output = - LiteralUtil::CreateR2({{-0.399003029}, {0.599003}}); - auto expected_scale = LiteralUtil::CreateR1({1.5}); - auto expected_mean = LiteralUtil::CreateR1({0.25}); + LiteralUtil::CreateR2({{-0.399003029f}, {0.599003f}}); + auto expected_mean = LiteralUtil::CreateR1({1.5f}); + auto expected_var = LiteralUtil::CreateR1({0.25f}); - const float tolerance = 1e-5; // for floating-point comparison + const float tolerance = 1e-5f; // for floating-point comparison // Compare each element using EXPECT_NEAR instead of EXPECT_EQ to avoid // floating-point comparison issues, otherwise the test will be flaky. @@ -67,17 +68,71 @@ TEST_F(BatchNormTrainingTest, CorrectComputation) { expected_output.data()[i], tolerance); } - for (int i = 0; i < expected_scale.element_count(); ++i) { + for (int i = 0; i < expected_mean.element_count(); ++i) { EXPECT_NEAR(result_tuple[1].data()[i], - expected_scale.data()[i], tolerance); + expected_mean.data()[i], tolerance); } - for (int i = 0; i < expected_mean.element_count(); ++i) { - EXPECT_NEAR(result_tuple[2].data()[i], - expected_mean.data()[i], tolerance); + for (int i = 0; i < expected_var.element_count(); ++i) { + EXPECT_NEAR(result_tuple[2].data()[i], expected_var.data()[i], + tolerance); } } +TEST_F(BatchNormTrainingTest, LargeOffset) { + ASSERT_OK_AND_ASSIGN(auto module, ParseAndReturnVerifiedModule(kModuleStr)); + + auto input = + LiteralUtil::CreateR2({{10000.0f + 1.0f}, {10000.0f + 2.0f}}); + auto scale = LiteralUtil::CreateR1({0.5f}); + auto offset = LiteralUtil::CreateR1({0.1f}); + + ASSERT_OK_AND_ASSIGN(auto result, + Execute(std::move(module), {&input, &scale, &offset})); + + auto result_tuple = result.DecomposeTuple(); + + for (int i = 0; i < result_tuple[0].element_count(); ++i) { + EXPECT_FALSE(std::isnan(result_tuple[0].data()[i])); + } + + for (int i = 0; i < result_tuple[1].element_count(); ++i) { + EXPECT_FALSE(std::isnan(result_tuple[1].data()[i])); + EXPECT_NEAR(result_tuple[1].data()[i], 10000.0f + 1.5f, 1e-4f); + } + + for (int i = 0; i < result_tuple[2].element_count(); ++i) { + EXPECT_FALSE(std::isnan(result_tuple[2].data()[i])); + EXPECT_GE(result_tuple[2].data()[i], 0.0f); + } +} + +TEST_F(BatchNormTrainingTest, ExtremeOffset) { + ASSERT_OK_AND_ASSIGN(auto module, ParseAndReturnVerifiedModule(kModuleStr)); + + auto input = LiteralUtil::CreateR2({{1e8f + 1.0f}, {1e8f + 2.0f}}); + auto scale = LiteralUtil::CreateR1({0.5f}); + auto offset = LiteralUtil::CreateR1({0.1f}); + + ASSERT_OK_AND_ASSIGN(auto result, + Execute(std::move(module), {&input, &scale, &offset})); + + auto result_tuple = result.DecomposeTuple(); + + for (int i = 0; i < result_tuple[0].element_count(); ++i) { + EXPECT_FALSE(std::isnan(result_tuple[0].data()[i])); + } + + for (int i = 0; i < result_tuple[1].element_count(); ++i) { + EXPECT_FALSE(std::isnan(result_tuple[1].data()[i])); + EXPECT_NEAR(result_tuple[1].data()[i], 1e8f, 1e2f); + } + + for (int i = 0; i < result_tuple[2].element_count(); ++i) { + EXPECT_FALSE(std::isnan(result_tuple[2].data()[i])); + EXPECT_GE(result_tuple[2].data()[i], 0.0f); + } +} TEST_F(BatchNormTrainingTest, ReturnsErrorWhenHloPassesDisabled) { if (test::DeviceTypeIsOneOf({test::kGpu, test::kInterpreter, test::kTpu})) { GTEST_SKIP(); diff --git a/third_party/xla/xla/tsl/python/lib/core/numpy.h b/third_party/xla/xla/tsl/python/lib/core/numpy.h index 307c253d111fc9..d6b345670db1a1 100644 --- a/third_party/xla/xla/tsl/python/lib/core/numpy.h +++ b/third_party/xla/xla/tsl/python/lib/core/numpy.h @@ -20,8 +20,9 @@ limitations under the License. #error "Numpy cannot be included before numpy.h." #endif -// Disallow Numpy 1.7 deprecated symbols. -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION +// Disallow Numpy 2.0 deprecated symbols. +#define NPY_NO_DEPRECATED_API NPY_2_0_API_VERSION +#define NPY_TARGET_VERSION NPY_2_0_API_VERSION // We import_array in the XLA init function only. #define PY_ARRAY_UNIQUE_SYMBOL _xla_numpy_api