{"id":21677920,"url":"https://github.com/pnnl/ripples","last_synced_at":"2025-08-26T01:09:15.190Z","repository":{"id":38333770,"uuid":"191654750","full_name":"pnnl/ripples","owner":"pnnl","description":"A C++ Library for Influence Maximization","archived":false,"fork":false,"pushed_at":"2024-12-10T18:43:50.000Z","size":1852,"stargazers_count":33,"open_issues_count":0,"forks_count":12,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-12T05:13:23.555Z","etag":null,"topics":["cpp-library","graph-algorithms","hpc","influencemaximization"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pnnl.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.rst","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-12T22:48:21.000Z","updated_at":"2025-03-05T08:01:15.000Z","dependencies_parsed_at":"2024-08-22T21:05:26.953Z","dependency_job_id":"0b68d26f-1d6e-4d09-bb5c-368a8544d21c","html_url":"https://github.com/pnnl/ripples","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnnl%2Fripples","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnnl%2Fripples/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnnl%2Fripples/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnnl%2Fripples/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pnnl","download_url":"https://codeload.github.com/pnnl/ripples/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248519556,"owners_count":21117761,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp-library","graph-algorithms","hpc","influencemaximization"],"created_at":"2024-11-25T14:23:31.668Z","updated_at":"2025-04-12T05:13:35.753Z","avatar_url":"https://github.com/pnnl.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"Ripples\n*******\n\n.. image:: https://zenodo.org/badge/191654750.svg\n   :target: https://zenodo.org/badge/latestdoi/191654750\n\nRipples is a software framework to study the Influence Maximization problem.\nThe problem of Influence Maximization was introduced in 2001 by Domingos and\nRichardson [DR01]_ and later formulated as an optimization problem under the\nframework of submodular functions by Kempe et al. [KTR03]_.\n\nGiven a graph :math:`G`, a network diffusion model :math:`M`, and positive\ninteger :math:`k`, the influence maximization problem is the problem of\nselecting a set of seeds :math:`S` of cardinality :math:`k` such that\n:math:`\\mathop{\\mathbb{E}}[I(S)]` is maximized, where :math:`I(S)` is the\ninfluence function.\n\nOur goal with Ripples is to provide tools implementing fast and scalable\nstate-of-the-art approximation algorithms to solve the influence maximization\nproblem.\n\n.. [DR01] Pedro M. Domingos and Matthew Richardson. 2001. Mining the network\n          value of customers. In Proceedings of the seventh ACM SIGKDD\n          international conference on Knowledge discovery and data mining, San\n          Francisco, CA, USA, August 26-29, 2001. ACM, 57–66.\n\n.. [KTR03] Kempe, D., Kleinberg, J., \u0026 Tardos, É. (2003, August). Maximizing the\n           spread of influence through a social network. In Proceedings of the\n           ninth ACM SIGKDD international conference on Knowledge discovery and\n           data mining (pp. 137-146). ACM.\n\n\nPublications\n============\n\n.. [Cluster19] Marco Minutoli, Mahantesh Halappanavar, Ananth Kalyanaraman, Arun\n               Sathanur, Ryan Mcclure, Jason McDermott. 2019. Fast and Scalable\n               Implementations of Influence Maximization Algorithms. In\n               Proceedings of the IEEE Cluster 2019.\n.. [ICS2020] Minutoli, Marco, Maurizio Drocco, Mahantesh Halappanavar, Antonino\n               Tumeo, and Ananth Kalyanaraman. \"cuRipples: influence\n               maximization on multi-CPU systems.\" In Proceedings of the 34th\n               ACM International Conference on Supercomputing.\n.. [ICS2024] Reece Neff, Mostafa Eghbali Zarch, Marco Minutoli, Mahantesh Halappanavar, Antonino\n               Tumeo, Ananth Kalyanaraman, and Michela Becchi. \"FuseIM: Fusing Probabilistic\n               Traversals for Influence Maximization on Exascale Systems.\" In Proceedings of the 38th\n               ACM International Conference on Supercomputing.\n\n\nQuickstart with Conan\n=====================\n\nFirst of all we need to set up the Python environment needed.\n\n.. code-block:: shell\n\n   $ python -m venv --prompt ripples-dev .venv\n   $ source .venv/bin/activate\n   $ pip install conan\n\nThen, we set up the conan profile:\n\n.. code-block:: shell\n\n   $ conan profile detect\n\nYou can check that the conan has detected the correct compiler by:\n\n.. code-block:: shell\n\n   $ conan profile show\n\nIn many cases this will show the correct configuration. Notable exceptions are\nsystems where you want to use a provided compiler wrapper (e.g., many HPE\nmachines ship compiler wrappers) or you want to use hipcc to compile the\nframework. In that case you want to edit your conan profile file with:\n\n.. code-block:: shell\n\n   $ vim $(conan profile path default)\n\nHere as a reference you can find how to change the profile to use hipcc:\n\n.. code-block:: conf\n\n    [settings]\n    arch=x86_64\n    build_type=Release\n    compiler=clang\n    compiler.cppstd=gnu14\n    compiler.libcxx=libstdc++11\n    compiler.version=15\n    os=Linux\n    [buildenv]\n    *:CC=hipcc\n    *:CXX=hipcc\n\nThe next step is to install dependencies:\n\n.. code-block:: shell\n\n    $ conan create conan/trng\n    $ conan create conan/rocThrust # if compiling with AMD GPU support.\n    $ conan create conan/metall    # if compiling with Metall support.\n    $ conan install . --build missing\n    $ conan install . --build missing -o gpu=amd # for AMD GPU support.\n\nWe can now compile ripples:\n\n.. code-block:: shell\n\n    $ conan build .               # CPU only version\n    $ conan build . -o gpu=amd    # with AMD GPU support.\n\nTo enable Memkind or Metall please replace the conan install command with one of:\n\nAllocate RRRSets Using Metall\n=============================\n\nRipples + Metall has another mode that allocates intermediate data (called RRRSets) using Metall.\n\nTo enable the mode, define ENABLE_METALL_RRRSETS macro (e.g., insert ``#define ENABLE_METALL_RRRSETS`` at the beginning of tools/imm.cc).\n\nThe storage directory can be specified with ``--rr-store-dir=\u003cPATH\u003e`` argument when executing imm.\n\nRipples Team\n============\n\n- `Marco Mintutoli \u003cmarco.minutoli@pnnl.gov\u003e`_\n- `Mahantesh Halappanavar \u003cmahantesh.halappanavar@pnnl.gov\u003e`_\n- `Ananth Kalyanaraman \u003cananth@wsu.edu\u003e`_\n- `Maurizio Drocco \u003cmaurizio.drocco@ibm.com\u003e`_\n- `Reece Neff \u003creece.neff@pnnl.gov\u003e`_\n\nDisclamer Notice\n================\n\nThis material was prepared as an account of work sponsored by an agency of the\nUnited States Government.  Neither the United States Government nor the United\nStates Department of Energy, nor Battelle, nor any of their employees, nor any\njurisdiction or organization that has cooperated in the development of these\nmaterials, makes any warranty, express or implied, or assumes any legal\nliability or responsibility for the accuracy, completeness, or usefulness or any\ninformation, apparatus, product, software, or process disclosed, or represents\nthat its use would not infringe privately owned rights.\n\nReference herein to any specific commercial product, process, or service by\ntrade name, trademark, manufacturer, or otherwise does not necessarily\nconstitute or imply its endorsement, recommendation, or favoring by the United\nStates Government or any agency thereof, or Battelle Memorial Institute. The\nviews and opinions of authors expressed herein do not necessarily state or\nreflect those of the United States Government or any agency thereof.\n\n.. raw:: html\n\n   \u003cdiv align=center\u003e\n   \u003cpre style=\"align-text:center\"\u003e\n   PACIFIC NORTHWEST NATIONAL LABORATORY\n   operated by\n   BATTELLE\n   for the\n   UNITED STATES DEPARTMENT OF ENERGY\n   under Contract DE-AC05-76RL01830\n   \u003c/pre\u003e\n   \u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpnnl%2Fripples","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpnnl%2Fripples","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpnnl%2Fripples/lists"}