From 82a854ff11df5ae6c0b151f396eaaca6e0821251 Mon Sep 17 00:00:00 2001 From: lucasdelimanogueira Date: Thu, 16 May 2024 19:33:22 -0300 Subject: [PATCH] batched matmul cuda --- build/cuda.cu.o | Bin 111744 -> 120000 bytes build/tensor.o | Bin 42400 -> 42568 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/build/cuda.cu.o b/build/cuda.cu.o index 5c6f27d9a8a860fca05738b383d55d171f2a3d60..376fab253a974037ef714cefd6ca16e3ecc6b68e 100644 GIT binary patch delta 29357 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 G)&B#JgJ~H6 delta 23073 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 diff --git a/build/tensor.o b/build/tensor.o index ae2223ff89bb2955c7d22928395091d452208758..d330a483d7b16c0a921697663d057ddf521cc8fc 100644 GIT binary patch delta 4870 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