From 21cad4e91eeea839a65980abbc2ef45d36c5d568 Mon Sep 17 00:00:00 2001 From: Jose G Aguirre Date: Mon, 19 Mar 2018 11:02:04 -0700 Subject: [PATCH] Add more information in design --- .../diagrams/all-reduce-pytorch-operator.jpeg | Bin 0 -> 27211 bytes proposals/pytorch-operator-proposal.md | 6 ++++-- 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 proposals/diagrams/all-reduce-pytorch-operator.jpeg diff --git a/proposals/diagrams/all-reduce-pytorch-operator.jpeg b/proposals/diagrams/all-reduce-pytorch-operator.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..76c403621df21d059ae12fe7d626ba7419f70657 GIT binary patch literal 27211 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 GgZv*F2