From c49242ec699053f55b57a1db41297aa44119cb95 Mon Sep 17 00:00:00 2001 From: Marcin Junczys-Dowmunt Date: Tue, 3 May 2016 23:12:21 +0100 Subject: [PATCH] in loop --- src/a.out | Bin 183120 -> 183343 bytes src/mad.h | 6 +++--- src/test.cpp | 11 ++++++++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/a.out b/src/a.out index 765a2aa923605359d269da2a2a5b1b8b2b5af3b1..d848b3c9a9db3693c0a5e3a1d823b08070a58627 100755 GIT binary patch delta 44754 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Ύ(Mm3*QepU;}--kOXMuR`g+|DU3RtyimFTzv*! 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 delta 43565 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 diff --git a/src/mad.h b/src/mad.h index 0c4b079e..f55e7bee 100644 --- a/src/mad.h +++ b/src/mad.h @@ -9,9 +9,11 @@ namespace mad { -typedef float Tensor; +typedef float Tensor; // Now do this for cuDNN tensors! +struct Chainable; boost::pool<> p(sizeof(char)); +std::vector stack; struct Chainable { Chainable() { } @@ -26,8 +28,6 @@ struct Chainable { } }; -std::vector stack; - class Vimpl : public Chainable { public: Vimpl(const Tensor& t) : val_{std::move(t)}, adj_{0} { diff --git a/src/test.cpp b/src/test.cpp index 6f29902c..95e88f89 100644 --- a/src/test.cpp +++ b/src/test.cpp @@ -1,4 +1,5 @@ #include +#include #include "mad.h" @@ -6,13 +7,17 @@ int main(int argc, char** argv) { using namespace mad; { + srand(time(NULL)); + size_t max = rand() % 20 + 1; + Var x0 = 1, x1 = 2, x2 = 3; - auto y = x0 + x0 + log(x2) + x1; + Var y = 0.0; + for(int i = 0; i < max; i++) + y = y + x0 + log(x2) + x1; std::vector x = { x0, x1, x2 }; - - + set_zero_all_adjoints(); y.grad();