From 8ebd6b06d0a2404c18b4aaa5872f982d961071e1 Mon Sep 17 00:00:00 2001 From: dumerrill Date: Tue, 5 Dec 2017 20:20:25 -0500 Subject: [PATCH] Replace svg with png+text --- README.md | 2 +- media/fig-09-complete-hierarchy.png | Bin 0 -> 38236 bytes media/fig-09-complete-hierarchy.svg | 2261 --------------------------- 3 files changed, 1 insertion(+), 2262 deletions(-) create mode 100644 media/fig-09-complete-hierarchy.png delete mode 100644 media/fig-09-complete-hierarchy.svg diff --git a/README.md b/README.md index 46a35c3b..8a3d53dc 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![ALT](/media/fig-09-complete-hierarchy.svg "Complete CUDA GEMM decomposition") +![ALT](/media/fig-09-complete-hierarchy.png "Complete CUDA GEMM decomposition") # Introduction diff --git a/media/fig-09-complete-hierarchy.png b/media/fig-09-complete-hierarchy.png new file mode 100644 index 0000000000000000000000000000000000000000..0419523bd451ee6fcde87e43eb6986e34adcddf1 GIT binary patch literal 38236 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�4szfCd`Nzp+ja`? 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 Z*@I`SYdw>?`v(IMc)I$ztaD0e0sx;|uU7y7 literal 0 HcmV?d00001 diff --git a/media/fig-09-complete-hierarchy.svg b/media/fig-09-complete-hierarchy.svg deleted file mode 100644 index 7251bc75..00000000 --- a/media/fig-09-complete-hierarchy.svg +++ /dev/null @@ -1,2261 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - -   - - - - - - - - - - - - - - - - - Thread Block Tile - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Warp Tile Thread Tile Blocked GEMM - - Global memory Shared memory Register File - SM CUDA Cores - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - -