GithubHelp home page GithubHelp logo

mlmcpy's Introduction

https://nasa.gov/ nasa | Twitter nasa | LinkedIn



Hi ๐Ÿ‘‹, welcome to the NASA org on github.com!

Github.com/nasa has one of the largest collections of NASA open-source code repositories. Members of the NASA org can find instructions for github.com/nasa in http://nasa.github.io/.

๐Ÿ”ญ Additional open-source code repositories resides in a variety of locations other than github.com/nasa. To discover code across all of these locations, we suggest you use code.nasa.gov & software.nasa.gov. These are two different sites holding metadata that describe code projects. Any code released through the NASA Software Release Authority process should be cataloged on those sites.

Is a page with short descriptions of all of NASA's open-source code. Code.nasa.gov feeds into code.gov, which covers open-source and government-source code from many different U.S. governmental agencies. To assist in discovery, code projects described on code.nasa.gov have both human and A.I.-generated tags. These can be useful for finding related code projects.

Contains metadata descriptions for all code projects in code.nasa.gov as well as government-source code projects only sharable with other government agencies. It is part of the large https://technology.nasa.gov/ that also includes patents and spinoffs. To help discoverability, software.nasa.gov puts each code project into one fo the following categories: Business Systems and Project Management, System Testing, Operations, Design and Integration Tools, Vehicle Management (Space/Air/Ground), Data Servers Processing and Handling, Propulsion, Structures and Mechanisms, Crew and Life Support, Data and Image Processing, Materials and Processes, Electronics and Electrical Power, Environmental Science (Earth, Air, Space, Exoplanet), Autonomous Systems, and Aeronautics.



NOTE - PROFILE READMES CURRENTLY DON'T WORK FOR ORG PROFILES ONLY USER PROFILES :(

https://github.community/t/readme-for-organization-front-page/2920

mlmcpy's People

Contributors

gbomarito avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

mlmcpy's Issues

Should cache be generated with the same inputs for each level?

Current, different inputs are used for each level of the cache. Which means more model evaluations are done up front (for example, level 1 with levels0-2 is evaluated for two sets of different sets of inputs for calculating differences with levels 2/0.), but more outputs are reused come simulation time (?). Is this the right strategy?

Cached input/outputs from initialization are used for fastest model

We need to restructure the cache implementation so that the stored initialization input/outputs are used for the most expensive high fidelity model on the highest level. Currently the lowest level model is evaluated first in the simulation loop so it generally uses all the cached input/outputs before MLMC gets to the higher levels.

Generalize initial_sample_size to be an array or a scalar

Let users optionally specify an initial sample size for each level in the event that you want to run less evaluations with the expensive models.

Can specify an array with size equal to the number of levels. Or a scalar where the same sample sizes will be used on each level (current implementation)

Error when initial_sample_size < # processors

MLMCPy/MLMCPy/mlmc/MLMCSimulator.py:237: RuntimeWarning: divide by zero encountered in divide

The costs being calculated there is for a particular processor and then the average cost across all processors is communicated/calculated for figuring out the optimal sample sizes later. The proper fix will be to rearrange how the average cost is being calculated by communicating/summing the total time for all processors then dividing by the total number of processors.

Fixed failing test with new pytest version

Error:

tests/input/test_RandomInput.py:93: in
@pytest.mark.parametrize('random_input', [uniform_distribution_input(),
E RemovedInPytest4Warning: Fixture "uniform_distribution_input" called directly. Fixtures are not meant to be called directly, are created automatically when test functions request them as parameters. See https://docs.pytest.org/en/latest/fixture.html for more information.

Defaults to 1 processor if mpi4py doesn't exist AND if it exists but not configured correctly

Not exactly sure how we want to handle this yet.

Current Behavior
Code checks if mpi4py module exists in the path using the MLMCSimulator.__detect_parallelization() method. If the module does not exist, an ImportError is raised, which is then caught in the try/except. The code then defaults to 1 processor and proceeds with no warning. This is fine in the case where the module doesn't exist and the user is trying to use a single processor. However, this is not ok if (1) the module doesn't exist and the user is trying to use multiple mpi processes and (2) the module exists and the user is trying to use multiple mpi processes but mpi4py is not configured properly.

Recommendations

  • Case 1: A print statement saying that mpi4py isn't installed; the current approach doesn't really leave many options, as we can't check for requested number of processes without mpi4py.
  • Case 2: Create a separate check for ImportError raised on from mpi4py import MPI. We still can't raise an error or else it won't work when called without mpiexec/mpirun (i.e., if user wants to use a single processor), so we would need to raise a more specific warning that mpi4py import failed.

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.