Giter VIP home page Giter VIP logo

oxford-mlmc-c's People

Contributors

davidwarne avatar haji-ali avatar

Watchers

 avatar  avatar

oxford-mlmc-c's Issues

Development

I created a new branch, 'dev', where active development should happen, leaving the master branch to contain valid user code (especially in the future). Every once in a while we will merge the dev branch to master as a way of "releasing" the code.

We can also use this thread to discuss and plan development. I will check boxes as tasks get completed.

Things to do:

  • Documentation in mlmc.c
  • Implement accessor functions
  • Finish implementing the algorithm. Marked by TODO
  • Provide more debugging output.
  • Test on a GBM example (scalar and vector quantities of interest).

Interface Finalisation

I have had a look at the interface header, Its about what I would expect.

Do you think that the user functions, instead of being a typedef could be an element of the mlmc_options structure? This could simplify the MLMC driver interface.

E.g.,

typedef struct s_mlmc_options{
unsigned int Lmin; // Minimum number of levels
unsigned int Lmax; // Maximum number of levels

unsigned long long N0;   // Initial number of samples to compute variance estimates

double alpha;             // Weak convergence rate. Must be positive
double beta;              // Variance convergence rate. Must be positive
double gamma;             // Work rate. Must be positive

// It will be difficult to support variable length vectors efficiently.
// I think we should focus on fixed length vectors for now.
unsigned int per_sample;  // Vector length for vector quantities

void *user_data;
void (*fn_mlmc_sample_levels)(unsigned int L,
                               const unsigned long long* M,
                               double *sums,
                               unsigned int sums_size,
                               void *user_data);
void (*fn_mlmc_sample_level)(unsigned int ell,
                              unsigned long long M,
                              double *sums,
                              unsigned int sums_size,
                              void *user_data);

} mlmc_options;

Also do you think we should have a flag in the options to make the driver ignore alpha, beta and gamma and perform trial simulations to approximate the compute time and variance of each level?
Just thoughts...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.