Giter VIP home page Giter VIP logo

mpedm's Introduction

mpEDM

This project has been superseded by kEDM and will no longer be maintained. kEDM has generally higher performance than mpEDM, and provides Python bindings for ease of use.


GPU-accelerated implementation of Empirical Dynamic Modeling

Requirements

  • CMake 3.10+
  • C++ compiler that supports C++11 (Intel C++ Compiler is strongly recommended for building the CPU backend)
  • HDF5 (parallel build if building the multi-node benchmarks)
  • (optional) MPI if building the multi-node benchmarks
  • (optional) ArrayFire 3.6.2+ if building the GPU backend

Installation

  1. Install dependencies:

  2. Clone the source code:

    $ git clone --recursive https://github.com/keichi/mpEDM.git
    
  3. Run cmake:

    $ cd mpEDM
    $ mkdir build
    $ cd build
    $ cmake -DCMAKE_BUILD_TYPE=Release ..
    
    • -DCMAKE_BUILD_TYPE can be either Release, RelWithDebInfo, Debug or MinSizeRel.
    • Add -DCMAKE_CXX_COMPILER=/path/to/c++ to select the C++ compiler to use.
    • Add -DCMAKE_CXX_FLAGS="..." to customize the C++ compiler flags.
    • Add -DHDF5_DIR=/path/to/hdf5 if HDF5 is not installed in a standard path.
    • Add -DArrayFire_DIR=/path/to/arrayfire if ArrayFire is not installed in a standard path.
  4. Run make:

    $ make
    

Literature

For a detailed description of the algorithm and performance measurements using up to 2,044 GPUs, please refer to the following paper:

Wassapon Watanakeesuntorn, Keichi Takahashi, Kohei Ichikawa, Joseph Park, George Sugihara, Ryousei Takano, Jason Haga, Gerald M. Pao, "Massively Parallel Causal Inference of Whole Brain Dynamics at Single Neuron Resolution", 26th International Conference on Parallel and Distributed Systems (ICPADS 2020), Dec. 2020. 10.1109/ICPADS51040.2020.00035

mpedm's People

Contributors

keichi avatar wassapon-w avatar koheiichikawa avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar Gio Wu avatar Mario Aburto avatar Martin Proks avatar  avatar  avatar  avatar

Watchers

 avatar James Cloos avatar  avatar  avatar  avatar

Forkers

lgtm-migrator

mpedm's Issues

Example test

Hi @keichi, awesome implementation! Could you please provide some example on how to run the tool? For example a Jupyter notebook tutorial or something along that line? Thank you.

Change binary name

cross_mapping_bench and cross_mapping_mpi_bench are apps rather than just benchmarks. We should change the binary name to something like edm-cm, edm-xmap, edm-crossmap, etc.

Investigate MPI scalability problem

Fix yet another scalability bug Boom has found on ABCI. Initial profiling results indicate that MPI-IO routine called from the workers is the bottleneck.

Write out cross mapping results to a file

Need to ask Gerald for desired file format and directory organization. -> we will use HDF5. We also need to write out the optimal embedding dimension for every column.

Normalize LUT before lookup

Convert distances to exponential scale, normalize and handle zero elements before doing lookups. This should greatly simplify the lookup loop.

Implement a better CSV parser

We need to find or implement a better CSV parser. Our current CSV parser impelemented in Dataset can't handle spaces after a comma. It's internally using std::stof(), which is not very fast. The new CSV parser should be able to parse:

  1. Parse faster than our current parser
  2. Handle at least 20,000 rows
  3. Handle at least 53,000 columns
  4. Parse without knowing the numbers of columns in advance

https://github.com/vincentlaucsb/csv-parser doesn't satisfy 2 and https://github.com/ben-strasser/fast-cpp-csv-parser doesn't satisfy 3 (not entirely sure).

We should also consider switching to a binary format such as HDF5.

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.