From 6a7c9316fcc0e752ff992a1770a430c4b9687b59 Mon Sep 17 00:00:00 2001 From: Marcin Junczys-Dowmunt Date: Tue, 3 May 2016 22:57:28 +0100 Subject: [PATCH] very cool --- src/a.out | Bin 0 -> 183120 bytes src/mad.h | 134 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/test.cpp | 23 +++++++++ 3 files changed, 157 insertions(+) create mode 100755 src/a.out create mode 100644 src/mad.h create mode 100644 src/test.cpp diff --git a/src/a.out b/src/a.out new file mode 100755 index 0000000000000000000000000000000000000000..765a2aa923605359d269da2a2a5b1b8b2b5af3b1 GIT binary patch literal 183120 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 z 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 literal 0 HcmV?d00001 diff --git a/src/mad.h b/src/mad.h new file mode 100644 index 00000000..0c4b079e --- /dev/null +++ b/src/mad.h @@ -0,0 +1,134 @@ +#pragma once + +#include +#include +#include +#include + +#include + +namespace mad { + +typedef float Tensor; + +boost::pool<> p(sizeof(char)); + +struct Chainable { + Chainable() { } + virtual ~Chainable() { } + + virtual void chain() { } + virtual void init_dependent() { } + virtual void set_zero_adjoint() { } + + static inline void* operator new(size_t nbytes) { + return p.ordered_malloc(nbytes); + } +}; + +std::vector stack; + +class Vimpl : public Chainable { + public: + Vimpl(const Tensor& t) : val_{std::move(t)}, adj_{0} { + stack.push_back(this); + } + + ~Vimpl() {}; + + virtual void init_dependent() { adj_ = 1; } + virtual void set_zero_adjoint() { adj_ = 0; } + + const Tensor& val() const { return val_; }; + Tensor& adj() { return adj_; }; + + protected: + const Tensor val_; + Tensor adj_; +}; + +typedef Vimpl* VimplPtr; + +static void set_zero_all_adjoints() { + for(auto&& v : stack) + v->set_zero_adjoint(); +} + +static void grad(Chainable* v) { + typedef std::vector::reverse_iterator It; + v->init_dependent(); + for(It it = stack.rbegin(); it != stack.rend(); ++it) { + (*it)->chain(); + } +} + +class Var { + public: + Var() : vimpl_{nullptr} {} + Var(const Tensor& t) : vimpl_{new Vimpl{t}} {} + Var(const VimplPtr& vimpl) : vimpl_{vimpl} {} + + const Tensor& val() const { + return vimpl_->val(); + } + + Tensor& adj() { + return vimpl_->adj(); + } + + VimplPtr vimpl() const { + return vimpl_; + } + + void grad() { + mad::grad(vimpl_); + } + + private: + VimplPtr vimpl_; +}; + +struct OpVimpl : public Vimpl { + OpVimpl(const Tensor& t, VimplPtr a) : Vimpl(t), a_(a) { } + + VimplPtr a_; +}; + + +struct LogVimpl : public OpVimpl { + LogVimpl(VimplPtr a) : OpVimpl(std::log(a->val()), a) { } + + void chain() { + a_->adj() += adj_ / a_->val(); + } +}; + +inline Var log(const Var& a) { + return Var(VimplPtr(new LogVimpl(a.vimpl()))); +} + +/////////////////////////////////////////////////// + + +struct OpVimplVV : public Vimpl { + VimplPtr a_; + VimplPtr b_; + + OpVimplVV(Tensor t, VimplPtr a, VimplPtr b) + : Vimpl(t), a_(a), b_(b) { } +}; + +struct PlusVimplVV : public OpVimplVV { + PlusVimplVV(VimplPtr a, VimplPtr b) : OpVimplVV(a->val() + b->val(), a, b) { } + + void chain() { + a_->adj() += adj_; + b_->adj() += adj_; + } +}; + +inline Var operator+(const Var& a, const Var& b) { + return Var(VimplPtr(new PlusVimplVV(a.vimpl(), b.vimpl()))); +} + +} \ No newline at end of file diff --git a/src/test.cpp b/src/test.cpp new file mode 100644 index 00000000..6f29902c --- /dev/null +++ b/src/test.cpp @@ -0,0 +1,23 @@ +#include + +#include "mad.h" + +int main(int argc, char** argv) { + + using namespace mad; + { + Var x0 = 1, x1 = 2, x2 = 3; + + auto y = x0 + x0 + log(x2) + x1; + + std::vector x = { x0, x1, x2 }; + + + set_zero_all_adjoints(); + y.grad(); + + std::cerr << "y = " << y.val() << std::endl; + for(int i = 0; i < x.size(); ++i) + std::cerr << "dy/dx_" << i << " = " << x[i].adj() << std::endl; + } +} \ No newline at end of file