diff --git a/mlir/include/mlir/ExecutionEngine/CRunnerUtils.h b/mlir/include/mlir/ExecutionEngine/CRunnerUtils.h index 272058d7b38718..15335370531e98 100644 --- a/mlir/include/mlir/ExecutionEngine/CRunnerUtils.h +++ b/mlir/include/mlir/ExecutionEngine/CRunnerUtils.h @@ -209,6 +209,12 @@ extern "C" MLIR_CRUNNERUTILS_EXPORT void printClose(); extern "C" MLIR_CRUNNERUTILS_EXPORT void printComma(); extern "C" MLIR_CRUNNERUTILS_EXPORT void printNewline(); +//===----------------------------------------------------------------------===// +// Small runtime support library for timing execution and printing GFLOPS +//===----------------------------------------------------------------------===// +extern "C" MLIR_CRUNNERUTILS_EXPORT void print_flops(double flops); +extern "C" MLIR_CRUNNERUTILS_EXPORT double rtclock(); + //===----------------------------------------------------------------------===// // Small runtime support library for sparse tensors. //===----------------------------------------------------------------------===// diff --git a/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul.mlir b/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul.mlir index 3e7560ef086777..7791ed0d5eee06 100644 --- a/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul.mlir +++ b/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul.mlir @@ -9,7 +9,7 @@ // RUN: mlir-cpu-runner -O3 -e main -entry-point-result=void \ // Activate to dump assembly // R_UN: -dump-object-file -object-filename=/tmp/a.o \ -// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext | \ +// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \ // Use tee to both print to stderr and FileCheck // RUN: tee -a /dev/stderr | FileCheck %s diff --git a/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul_column_major.mlir b/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul_column_major.mlir index 03e51b4b1a91f6..e454c7cb81609d 100644 --- a/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul_column_major.mlir +++ b/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul_column_major.mlir @@ -11,7 +11,7 @@ // RUN: mlir-cpu-runner -O3 -e main -entry-point-result=void \ // Activate to dump assembly // R_UN: -dump-object-file -object-filename=/tmp/a.o \ -// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext | \ +// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \ // Use tee to both print to stderr and FileCheck // RUN: tee -a /dev/stderr | FileCheck %s diff --git a/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul_column_major_as_row_major.mlir b/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul_column_major_as_row_major.mlir index f672829ac432fa..287cb1c24059e4 100644 --- a/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul_column_major_as_row_major.mlir +++ b/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul_column_major_as_row_major.mlir @@ -12,7 +12,7 @@ // RUN: mlir-cpu-runner -O3 -e main -entry-point-result=void \ // Activate to dump assembly // R_UN: -dump-object-file -object-filename=/tmp/a.o \ -// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext | \ +// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \ // Use tee to both print to stderr and FileCheck // RUN: tee -a /dev/stderr | FileCheck %s diff --git a/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul_i8_i8_i32.mlir b/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul_i8_i8_i32.mlir index 9243ebbae4eb05..961a83fd3f5747 100644 --- a/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul_i8_i8_i32.mlir +++ b/mlir/integration_test/Dialect/Linalg/CPU/benchmark_matmul_i8_i8_i32.mlir @@ -10,7 +10,7 @@ // RUN: mlir-cpu-runner -O3 -e main -entry-point-result=void \ // Activate to dump assembly // R_UN: -dump-object-file -object-filename=/tmp/a.o \ -// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_runner_utils%shlibext | \ +// RUN: -shared-libs=%mlir_integration_test_dir/libmlir_c_runner_utils%shlibext | \ // Use tee to both print to stderr and FileCheck // RUN: tee -a /dev/stderr | FileCheck %s diff --git a/mlir/lib/ExecutionEngine/CRunnerUtils.cpp b/mlir/lib/ExecutionEngine/CRunnerUtils.cpp index c3baa8dc56cbe3..e5b682a7b6de5f 100644 --- a/mlir/lib/ExecutionEngine/CRunnerUtils.cpp +++ b/mlir/lib/ExecutionEngine/CRunnerUtils.cpp @@ -14,6 +14,10 @@ #include "mlir/ExecutionEngine/CRunnerUtils.h" +#ifndef _WIN32 +#include +#endif // _WIN32 + #include #include @@ -32,4 +36,23 @@ extern "C" void printClose() { fputs(" )", stdout); } extern "C" void printComma() { fputs(", ", stdout); } extern "C" void printNewline() { fputc('\n', stdout); } +/// Prints GFLOPS rating. +extern "C" void print_flops(double flops) { + fprintf(stderr, "%lf GFLOPS\n", flops / 1.0E9); +} + +/// Returns the number of seconds since Epoch 1970-01-01 00:00:00 +0000 (UTC). +extern "C" double rtclock() { +#ifndef _WIN32 + struct timeval tp; + int stat = gettimeofday(&tp, NULL); + if (stat != 0) + fprintf(stderr, "Error returning time from gettimeofday: %d\n", stat); + return (tp.tv_sec + tp.tv_usec * 1.0e-6); +#else + fprintf(stderr, "Timing utility not implemented on Windows\n"); + return 0.0; +#endif // _WIN32 +} + #endif // MLIR_CRUNNERUTILS_DEFINE_FUNCTIONS diff --git a/mlir/lib/ExecutionEngine/RunnerUtils.cpp b/mlir/lib/ExecutionEngine/RunnerUtils.cpp index 19315d7d1e6d2d..b571e6907568c7 100644 --- a/mlir/lib/ExecutionEngine/RunnerUtils.cpp +++ b/mlir/lib/ExecutionEngine/RunnerUtils.cpp @@ -15,10 +15,6 @@ #include "mlir/ExecutionEngine/RunnerUtils.h" -#ifndef _WIN32 -#include -#endif // _WIN32 - extern "C" void _mlir_ciface_print_memref_vector_4x4xf32( StridedMemRefType, 2> *M) { impl::printMemRef(*M); @@ -84,22 +80,3 @@ extern "C" void _mlir_ciface_print_memref_4d_f32(StridedMemRefType *M) { impl::printMemRef(*M); } - -/// Prints GFLOPS rating. -extern "C" void print_flops(double flops) { - fprintf(stderr, "%lf GFLOPS\n", flops / 1.0E9); -} - -/// Returns the number of seconds since Epoch 1970-01-01 00:00:00 +0000 (UTC). -extern "C" double rtclock() { -#ifndef _WIN32 - struct timeval tp; - int stat = gettimeofday(&tp, NULL); - if (stat != 0) - fprintf(stderr, "Error returning time from gettimeofday: %d\n", stat); - return (tp.tv_sec + tp.tv_usec * 1.0e-6); -#else - fprintf(stderr, "Timing utility not implemented on Windows\n"); - return 0.0; -#endif // _WIN32 -}