From fbe278c76c56d97df98b5884e6856c168cd2a396 Mon Sep 17 00:00:00 2001 From: Stas Bekman Date: Wed, 1 Dec 2021 14:18:58 -0800 Subject: [PATCH] [doc] bf16/tf32 guide (#14579) * [doc] bf16/tf32 guide * expand * expand * Update docs/source/performance.md Co-authored-by: Sylvain Gugger <35901082+sgugger@users.noreply.github.com> Co-authored-by: Sylvain Gugger <35901082+sgugger@users.noreply.github.com> --- docs/source/imgs/tf32-bf16-fp16-fp32.png | Bin 0 -> 32559 bytes docs/source/performance.md | 100 ++++++++++++++++++++++- 2 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 docs/source/imgs/tf32-bf16-fp16-fp32.png diff --git a/docs/source/imgs/tf32-bf16-fp16-fp32.png b/docs/source/imgs/tf32-bf16-fp16-fp32.png new file mode 100644 index 0000000000000000000000000000000000000000..aa247bd99703cd80ef36a35c615d74dde3fef175 GIT binary patch literal 32559 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

OIg|uRt3Li!*4) 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