All Projects → pnnl → ripples

pnnl / ripples

Licence: other
A C++ Library for Influence Maximization

Programming Languages

C++
36643 projects - #6 most used programming language
Cuda
1817 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to ripples

dislib
The Distributed Computing library for python implemented using PyCOMPSs programming model for HPC.
Stars: ✭ 39 (+116.67%)
Mutual labels:  hpc
LvArray
Portable HPC Containers (C++)
Stars: ✭ 37 (+105.56%)
Mutual labels:  hpc
GPUGraphLayout
An experimental GPU accelerated implementation of ForceAtlas2
Stars: ✭ 40 (+122.22%)
Mutual labels:  graph-algorithms
jsgraph
Deprecated: Use the @encapsule/arccore package that includes the graph library
Stars: ✭ 42 (+133.33%)
Mutual labels:  graph-algorithms
community datasets
Example datasets and dashboards known to work well in OmniSci
Stars: ✭ 14 (-22.22%)
Mutual labels:  hpc
Laghos
High-order Lagrangian Hydrodynamics Miniapp
Stars: ✭ 131 (+627.78%)
Mutual labels:  hpc
DGFraud-TF2
A Deep Graph-based Toolbox for Fraud Detection in TensorFlow 2.X
Stars: ✭ 84 (+366.67%)
Mutual labels:  graph-algorithms
RamaNet
Preforms De novo protein design using machine learning and PyRosetta to generate a novel protein structure
Stars: ✭ 41 (+127.78%)
Mutual labels:  hpc
awesome-aws-research
A curated list of awesome Amazon Web Services (AWS) libraries, open source repos, guides, blogs, and other resources for Academic Researchers new to AWS
Stars: ✭ 41 (+127.78%)
Mutual labels:  hpc
CARE
CHAI and RAJA provide an excellent base on which to build portable codes. CARE expands that functionality, adding new features such as loop fusion capability and a portable interface for many numerical algorithms. It provides all the basics for anyone wanting to write portable code.
Stars: ✭ 22 (+22.22%)
Mutual labels:  hpc
slurmR
slurmR: A Lightweight Wrapper for Slurm
Stars: ✭ 43 (+138.89%)
Mutual labels:  hpc
PowerWalk
Personalized PageRank (PPR) on GraphLab PowerGraph
Stars: ✭ 14 (-22.22%)
Mutual labels:  graph-algorithms
pcluster-manager
Manage AWS ParallelCluster through an easy to use web interface
Stars: ✭ 67 (+272.22%)
Mutual labels:  hpc
PathFinder-Visualization
📟 React and p5, maze generation and path finding visualization
Stars: ✭ 12 (-33.33%)
Mutual labels:  graph-algorithms
HPC
A collection of various resources, examples, and executables for the general NREL HPC user community's benefit. Use the following website for accessing documentation.
Stars: ✭ 64 (+255.56%)
Mutual labels:  hpc
F2x
A versatile, template-based FORTRAN wrapper written in Python.
Stars: ✭ 36 (+100%)
Mutual labels:  hpc
hpc
Learning and practice of high performance computing (CUDA, Vulkan, OpenCL, OpenMP, TBB, SSE/AVX, NEON, MPI, coroutines, etc. )
Stars: ✭ 39 (+116.67%)
Mutual labels:  hpc
jgrapht
Master repository for the JGraphT project
Stars: ✭ 2,259 (+12450%)
Mutual labels:  graph-algorithms
luna
Provisioning tool for clusters
Stars: ✭ 58 (+222.22%)
Mutual labels:  hpc
waldur-mastermind
Waldur MasterMind is a hybrid cloud orchestrator.
Stars: ✭ 37 (+105.56%)
Mutual labels:  hpc

Ripples

Ripples is a software framework to study the Influence Maximization problem. The problem of Influence Maximization was introduced in 2001 by Domingos and Richardson [DR01] and later formulated as an optimization problem under the framework of submodular functions by Kempe et al. [KTR03].

Given a graph G, a network diffusion model M, and positive integer k, the influence maximization problem is the problem of selecting a set of seeds S of cardinality k such that \mathop{\mathbb{E}}[I(S)] is maximized, where I(S) is the influence function.

Our goal with Ripples is to provide tools implementing fast and scalable state-of-the-art approximation algorithms to solve the influence maximization problem.

[DR01]Pedro M. Domingos and Matthew Richardson. 2001. Mining the network value of customers. In Proceedings of the seventh ACM SIGKDD international conference on Knowledge discovery and data mining, San Francisco, CA, USA, August 26-29, 2001. ACM, 57–66.
[KTR03]Kempe, D., Kleinberg, J., & Tardos, É. (2003, August). Maximizing the spread of influence through a social network. In Proceedings of the ninth ACM SIGKDD international conference on Knowledge discovery and data mining (pp. 137-146). ACM.

Publications

[Cluster19]Marco Minutoli, Mahantesh Halappanavar, Ananth Kalyanaraman, Arun Sathanur, Ryan Mcclure, Jason McDermott. 2019. Fast and Scalable Implementations of Influence Maximization Algorithms. In Proceedings of the IEEE Cluster 2019.
[ICS2020]Minutoli, Marco, Maurizio Drocco, Mahantesh Halappanavar, Antonino Tumeo, and Ananth Kalyanaraman. "cuRipples: influence maximization on multi-CPU systems." In Proceedings of the 34th ACM International Conference on Supercomputing.

Quickstart with Conan

First of all we need to set up the Python environment needed.

$ pip install --user pipenv
$ pipenv --three
$ pipenv install
$ pipenv shell

Then we need to install dependencies:

$ conan create conan/waf-generator user/stable
$ conan create conan/trng user/stable
$ conan create conan/metall user/stable
$ conan create conan/memkind user/stable
$ conan install --install-folder build .

To enable Memkind or Metall please replace the conan install command with one of:

$ conan install --install-folder build . -o memkind=True
$ conan install --install-folder build . -o metall=True

Now we are ready to configure and build ripples:

$ ./waf configure --enable-mpi build_release
# or without MPI support
$ ./waf configure build_release

To enable Memkind or Metal configure and build ripples with:

$ ./waf configure --enable-mpi --enable-metall build_release
# or without MPI support
$ ./waf configure --enable-metall build_release

For Memkind just replace --enable-metall with --enable-memkind.

In the case you are a Mac OS user, you will need to install the LLVM toolchain through brew that comes with OpenMP support. Compiling Ripples than is as simple as:

$ ./waf configure --openmp-root=/usr/local/opt/llvm --enable-mpi build_release
# or without MPI support
$ ./waf configure --openmp-root=/usr/local/opt/llvm build_release

Build Instructions

This project uses WAF as its build system. Building Ripples is a two-step process: configure the project and build the tools. Before attempting to build, be sure to have the following dependencies installed:

  • A compiler with C++14 support and OpenMP support.
  • Spdlog
  • JSON
  • TRNG4
  • An MPI library (optional)

The configure step can be invoked with:

$ ./waf configure

or optionally to enable the MPI implementations:

$ ./waf configure --enable-mpi

The build system offers options that can be used to help the configuration step locate dependencies (e.g., they are installed in unconventional paths). A complete list of the options can be obtained with:

$ ./waf configure --help

After the configuration step succeeds, the build step can be executed by running:

$ ./waf build_release

For more detailed instruction, please read :ref:`build:Step By Step Build Instructions`.

The tools compiled can be found under build/release/tools/. A complete set of command line options can be obtained through:

$ ./build/release/tools/<tool_name> --help

Ripples Team

Disclamer Notice

This material was prepared as an account of work sponsored by an agency of the United States Government. Neither the United States Government nor the United States Department of Energy, nor Battelle, nor any of their employees, nor any jurisdiction or organization that has cooperated in the development of these materials, makes any warranty, express or implied, or assumes any legal liability or responsibility for the accuracy, completeness, or usefulness or any information, apparatus, product, software, or process disclosed, or represents that its use would not infringe privately owned rights.

Reference herein to any specific commercial product, process, or service by trade name, trademark, manufacturer, or otherwise does not necessarily constitute or imply its endorsement, recommendation, or favoring by the United States Government or any agency thereof, or Battelle Memorial Institute. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States Government or any agency thereof.

PACIFIC NORTHWEST NATIONAL LABORATORY
operated by
BATTELLE
for the
UNITED STATES DEPARTMENT OF ENERGY
under Contract DE-AC05-76RL01830
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].