mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-07-24 19:43:35 +00:00
Add some helper functions to dump 4D tensors to help debugging.
Example to use it:
(1) Change DUMP_TENSOR_LEVEL from 0 to 2 in
contrib_ops/cpu/utils/debug_macros.h to enable dumping. Without
enabling, the dumping code will not be built into ORT binary.
(2) Add a few lines to dump tensors like
```
DUMP_CPU_TENSOR_INIT();
DUMP_CPU_TENSOR("tensor name", tensor_data, dim0, dim1, dim2, dim3);
```
Changes:
- [x] Add functions to dump 4D int32/int64/float/half tensors in CPU
- [x] Add functions to dump 4D int32/int64 tensors in CUDA
- [x] Change namespace (remove .transformers from namespace, and move
files to utils directory)
41 lines
1.1 KiB
C
41 lines
1.1 KiB
C
#pragma once
|
|
|
|
// #define DEBUG_GENERATION 1 // uncomment it for debugging generation (like beam search etc)
|
|
|
|
#ifdef DEBUG_GENERATION
|
|
#define DUMP_TENSOR_LEVEL 2
|
|
#else
|
|
#define DUMP_TENSOR_LEVEL 0 // change it to 1 or 2 if want to enable dumping for code not in generation.
|
|
#endif
|
|
|
|
#define DUMP_CPU_TENSOR_LEVEL DUMP_TENSOR_LEVEL
|
|
|
|
// For CPU tensor dumping.
|
|
#if DUMP_CPU_TENSOR_LEVEL > 0
|
|
#define DUMP_CPU_TENSOR_INIT() onnxruntime::contrib::CpuTensorConsoleDumper cpu_dumper
|
|
#define DUMP_CPU_TENSOR(...) cpu_dumper.Print(__VA_ARGS__)
|
|
#else
|
|
#define DUMP_CPU_TENSOR_INIT()
|
|
#define DUMP_CPU_TENSOR(...)
|
|
#endif
|
|
|
|
#if DUMP_CPU_TENSOR_LEVEL > 1
|
|
#define DUMP_CPU_TENSOR_D(...) cpu_dumper.Print(__VA_ARGS__)
|
|
#else
|
|
#define DUMP_CPU_TENSOR_D(...)
|
|
#endif
|
|
|
|
// For GPU tensor dumping.
|
|
#if DUMP_TENSOR_LEVEL > 0
|
|
#define DUMP_TENSOR_INIT() onnxruntime::contrib::cuda::CudaTensorConsoleDumper dumper
|
|
#define DUMP_TENSOR(...) dumper.Print(__VA_ARGS__)
|
|
#else
|
|
#define DUMP_TENSOR_INIT()
|
|
#define DUMP_TENSOR(...)
|
|
#endif
|
|
|
|
#if DUMP_TENSOR_LEVEL > 1
|
|
#define DUMP_TENSOR_D(...) dumper.Print(__VA_ARGS__)
|
|
#else
|
|
#define DUMP_TENSOR_D(...)
|
|
#endif
|