| // Tests iree-run-trace usage by running two calls of @mul and passing the |
| // result between them. The outputs of both calls are produced as outputs from |
| // the trace and both are written to a .npy file for processing. Inputs can |
| // also come from an .npy file. See iree-run-module usage for more information |
| // on the `--input=` and `--output=` flags. |
| |
| // RUN: (iree-compile --iree-hal-target-backends=vmvx %s | \ |
| // RUN: iree-run-trace %S/iree-run-trace.yml \ |
| // RUN: --device=local-sync \ |
| // RUN: --input=4xf32=4,4,4,4 \ |
| // RUN: --output=@%t \ |
| // RUN: --output=+%t) && \ |
| // RUN: python3 %S/echo_npy.py %t | \ |
| // RUN: FileCheck %s --check-prefix=RUN-TRACE |
| // RUN-TRACE{LITERAL}: [ 0. 4. 8. 12.] |
| // RUN-TRACE-NEXT{LITERAL}: [ 0. 12. 24. 36.] |
| |
| // Tests iree-run-benchmark usage by running the same sequence as above but with |
| // benchmarking enabled. The tools are mostly interchangable except benchmarking |
| // doesn't yield any output values or feature I/O printing. All traces that can |
| // run with iree-run-trace *should* run with iree-benchmark-trace. |
| // RUN: (iree-compile --iree-hal-target-backends=vmvx %s | \ |
| // RUN: iree-benchmark-trace %S/iree-run-trace.yml \ |
| // RUN: --capture_stdin=true \ |
| // RUN: --device=local-sync \ |
| // RUN: --input=4xf32=4,4,4,4) | \ |
| // RUN: FileCheck %s --check-prefix=BENCHMARK-TRACE |
| // BENCHMARK-TRACE{LITERAL}: BM_iree-run-trace/process_time/real_time |
| |
| func.func @mul(%arg0: tensor<4xf32>, %arg1: tensor<4xf32>) -> tensor<4xf32> { |
| %0 = arith.mulf %arg0, %arg1 : tensor<4xf32> |
| return %0 : tensor<4xf32> |
| } |