Code Monkey home page Code Monkey logo

rapidsai / cugraph Goto Github PK

View Code? Open in Web Editor NEW
1.6K 47.0 289.0 53.61 MB

cuGraph - RAPIDS Graph Analytics Library

Home Page: https://docs.rapids.ai/api/cugraph/stable/

License: Apache License 2.0

CMake 0.83% C++ 17.33% Python 29.39% Cuda 32.68% Shell 0.85% Jupyter Notebook 7.94% Cython 3.70% C 7.23% HTML 0.02% Dockerfile 0.02% Makefile 0.01%
rapids nvidia gpu cuda graph graph-algorithms graph-analysis graph-framework graphml complex-networks

cugraph's Introduction


cuGraph


RAPIDS cuGraph is a monorepo that represents a collection of packages focused on GPU-accelerated graph analytics, including support for property graphs, remote (graph as a service) operations, and graph neural networks (GNNs). cuGraph supports the creation and manipulation of graphs followed by the execution of scalable fast graph algorithms.


News

NEW! nx-cugraph, a NetworkX backend that provides GPU acceleration to NetworkX with zero code change.

> pip install nx-cugraph-cu11 --extra-index-url https://pypi.nvidia.com
> export NETWORKX_AUTOMATIC_BACKENDS=cugraph

That's it. NetworkX now leverages cuGraph for accelerated graph algorithms.


Table of contents




Stack

RAPIDS cuGraph is a collection of GPU-accelerated graph algorithms and services. At the Python layer, cuGraph operates on GPU DataFrames, thereby allowing for seamless passing of data between ETL tasks in cuDF and machine learning tasks in cuML. Data scientists familiar with Python will quickly pick up how cuGraph integrates with the Pandas-like API of cuDF. Likewise, users familiar with NetworkX will quickly recognize the NetworkX-like API provided in cuGraph, with the goal to allow existing code to be ported with minimal effort into RAPIDS. To simplify integration, cuGraph also supports data found in Pandas DataFrame, NetworkX Graph Objects and several other formats.

While the high-level cugraph python API provides an easy-to-use and familiar interface for data scientists that's consistent with other RAPIDS libraries in their workflow, some use cases require access to lower-level graph theory concepts. For these users, we provide an additional Python API called pylibcugraph, intended for applications that require a tighter integration with cuGraph at the Python layer with fewer dependencies. Users familiar with C/C++/CUDA and graph structures can access libcugraph and libcugraph_c for low level integration outside of python.

NOTE: For the latest stable README.md ensure you are on the latest branch.

As an example, the following Python snippet loads graph data and computes PageRank:

import cudf
import cugraph

# read data into a cuDF DataFrame using read_csv
gdf = cudf.read_csv("graph_data.csv", names=["src", "dst"], dtype=["int32", "int32"])

# We now have data as edge pairs
# create a Graph using the source (src) and destination (dst) vertex pairs
G = cugraph.Graph()
G.from_cudf_edgelist(gdf, source='src', destination='dst')

# Let's now get the PageRank score of each vertex by calling cugraph.pagerank
df_page = cugraph.pagerank(G)

# Let's look at the top 10 PageRank Score
df_page.sort_values('pagerank', ascending=False).head(10)

Why cuGraph does not support Method Cascading


Projects that use cuGraph

(alphabetical order)

(please post an issue if you have a project to add to this list)



Open GPU Data Science

The RAPIDS suite of open source software libraries aims to enable execution of end-to-end data science and analytics pipelines entirely on GPUs. It relies on NVIDIA® CUDA® primitives for low-level compute optimization but exposing that GPU parallelism and high-bandwidth memory speed through user-friendly Python interfaces.

For more project details, see rapids.ai.



Apache Arrow on GPU

The GPU version of Apache Arrow is a common API that enables efficient interchange of tabular data between processes running on the GPU. End-to-end computation on the GPU avoids unnecessary copying and converting of data off the GPU, reducing compute time and cost for high-performance analytics common in artificial intelligence workloads. As the name implies, cuDF uses the Apache Arrow columnar data format on the GPU. Currently, a subset of the features in Apache Arrow are supported.

cugraph's People

Contributors

acostadon avatar afender avatar ajschmidt8 avatar alexbarghi-nv avatar aschaffer avatar bdice avatar bradreeswork avatar chuckhastings avatar dillon-cullinan avatar eriknw avatar galipremsagar avatar gputester avatar hlinsen avatar iroy30 avatar jnke2016 avatar jwyles avatar kaatish avatar mike-wendt avatar naimnv avatar nv-rliu avatar ogreen avatar pgera avatar raydouglass avatar rlratzel avatar seunghwak avatar tingyu66 avatar trxcllnt avatar vibhujawa avatar vyasr avatar xcadet 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  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  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

cugraph's Issues

[BUG] CMake build fails when using -DNVG_PLUGIN=FALSE

When trying to build cuGraph from source, I used the -DNVG_PLUGIN=FALSE argument, but CMake fails with an error:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.              
Please set them or make sure they are set and tested correctly in the CMake files:                        
NVGRAPH_INCLUDE

It looks like the nvgraph plugin is now required? If so, the README should suggest how to set the -DNVGRAPH_INCLUDE switch

[FEA] [NV] Renumbering support for String vertex labels

Update Renumbering to accept a string column (nvString) so that users can specify a vertices with string labels

  • add nvStrings as a third party library
  • accept a string column

Blocked until cuDF has string as a column type

[BUG] Remove cuda toolkit dependency from setup.py

Python bindings currently request the whole cuda toolkit only because some nvgraph functions use cuda data types.

A possible solution is to wrap the nvGraph function (a) into a C++ cuGraph function (b) so that b exposes only simple types and do the proper cast before calling a. Then, the existing python bindings should be updated to call the b function from cugraph.

[BUG][NV] Successful build depends on the installation of libgdf

Related to issue #1

A successful build for cugraph requires <gdf/utils.h>, <gdf/errorutils.h>, gdf.h. Notably, CMakeLists.txt does not properly add include_directories for the locations of these headers; additionally, <gdf/utils.h> and <gdf/errorutils.h> are no longer a part of the list of install targets in cuDF.

Meaning any functions which require gdf/utils.h and gdf/errorutils.h will fail to build on a clean system.

[BUG][NV]Small improvements of existing python bindings

  • Change PageRank to be 32bits (and update the test)
  • Add gdf error check
  • Remove .h files in python directory
  • Put general helper functions outside of Pagerank file/folder
  • Change transpose behaviour so that it can be called multiple times without returning an error

[BUG] gtests/PAGERANK_TEST and gtests/SSSP_TEST fail

gtests/PAGERANK_TEST
segmentation fault (core dumped)

gtests/SSSP_TEST
SSSP_TEST
home/seunghwak/RAPIDS/cugraph/cpp/src/tests/nvgraph_plugin/nvgraph_gdf_sssp.cpp:182: Failure
Value of: fpin != NULL
Actual: false
Expected: true
Cannot read file with reference data: /datasets/golden_data/results/sssp/dblp_T.sssp_100000.bin

[ FAILED ] golden_test/Tests_Sssp2.CheckFP32_manualT/1, where GetParam() = 72-byte object <B0-6C 33-46 2E-56 00-00 25-00 00-00 00-00 00-00 25-00 00-00 00-00 00-00 73-75 6C-74 73-2F 73-73 E0-6D 33-46 2E-56 00-00 39-00 00-00 00-00 00-00 39-00 00-00 00-00 00-00 6E-00 00-00 00-00 00-00 A0-86 01-00 00-00 00-00> (229 ms)
[ RUN ] golden_test/Tests_Sssp2.CheckFP32_manualT/2
0.899,0.178,2.248,0.296
/home/seunghwak/RAPIDS/cugraph/cpp/src/tests/nvgraph_plugin/nvgraph_gdf_sssp.cpp:182: Failure
Value of: fpin != NULL
Actual: false
Expected: true
Cannot read file with reference data: /datasets/golden_data/results/sssp/dblp_T.sssp_100.bin

[ FAILED ] golden_test/Tests_Sssp2.CheckFP32_manualT/2, where GetParam() = 72-byte object <B0-6C 33-46 2E-56 00-00 25-00 00-00 00-00 00-00 25-00 00-00 00-00 00-00 73-75 6C-74 73-2F 73-73 30-69 33-46 2E-56 00-00 36-00 00-00 00-00 00-00 36-00 00-00 00-00 00-00 6E-00 00-00 00-00 00-00 64-00 00-00 00-00 00-00> (225 ms)
[ RUN ] golden_test/Tests_Sssp2.CheckFP32_manualT/3
Segmentation fault (core dumped)

[BUG] python tests: missing, fail, take very long, and generate warnings.

cugraph/jaccard/test_jaccard.py
Aborted (core dumped)

cugraph/grmat & cugraph/nvgraph
no test

cugraph/luvain, cugraph/pagerank, & cugraph/sssp
deprecated API warning

cugraph/graph/test_graph.py
take very long (#83)

====================================== warnings summary =======================================
/home/seunghwak/Program/anaconda3/envs/cugraph_dev/lib/python3.7/site-packages/yaml/constructor.py:126: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
if not isinstance(key, collections.Hashable):

-- Docs: https://docs.pytest.org/en/latest/warnings.html

[FEA] OPG BFS

Start from graph500 benchmark.

  • Define API
  • Integrate in cugraph
  • Python bindings
  • Tests
  • Documentation and sample

[FEA][NV] Add BFS

The development path is the same as for SSSP.

The first step is to add the C++ code to access nvgraph bfs features using cugraph graph structure. There are helper functions provided in src/plugin/nvgraph/nvgraph_gdf.cu for this.

The second step consists of adding python bindings for gdf_error gdf_bfs_nvgraph

Subtasks checklist for python:

  • Python bindings and API (may include some adjustments of the C++/CUDA part)
  • Pytest testing against NetworkX
  • Documentation
    • Doxygen (C++)
    • Sphinx (Python)
    • python code example
  • Check headers and licenses
  • Validate everything in Jenkins

[BUG] gdf_add_transpose and gdf_add_adj_list should not rely on edgelist being present.

Noticed this when trying to run SSSP on a graph constructed from CSR. The graph doesn't have an edgelist, so when a call is made to gdf_add_transpose it causes a segfault.

What should happen is that gdf_add_transpose should check to see if it has an edgelist and if it doesn't it should use the adjacency list to generate an edgelist before trying to generate the transpose. The same should be done for gdf_add_adj_list for the case when there is a transpose but no edgelist (not likely to be a problem at the moment since there is no way to create a graph like that through the python api)

[FEA][NV] Return identifiers along with results at Python API level

Currently, we return a cuDF series that implicitly matches the adjacency list layout.
We should return a cuDF data frame containing enough cuDF series to explicitly identify whose this result belongs to.

For instance :

  • (vertex, pagerank) for PageRank
  • (source, destination, jaccard_similarity) for Jaccard
  • (vertex, cluster_assignment) for Louvain
  • etc.

[BUG][NV] CMakeLists.txt structure inconsistent with cuDF, cuML

  • The test infrastructure in cugraph places a CMakeLists.txt in every test directory.
  • Gunrock is added as an external project, and it cloned to a location along-side cugraph rather than in a directory inside of cugraph/build, meaning deleting build does not restore the the compiled project to its initial state
  • Locations for libraries like libcudf.so are hard-coded, rather than searched in system locations and Conda locations, etc.

[FEA] OPG SSSP

Start from graph500 benchmark.

  • Define API
  • Integrate in cugraph
  • Python bindings
  • Tests
  • Documentation and sample

[BUG] Fix README page

There are some errors in the README file that need to be addressed and the structure needs to be improved.

[FEA] [NV] Fix and Add Python bindings for Subgraph Extraction

Following Alex's CUDA/C++ method for accessing nvgraph features using cugraph graph structure, wrapper Subgraph Extraction [src/plugin/nvgraph/nvgraph_gdf.cu].

Subtasks checklist:

  • Pythion bindings and API
  • Pytest testing against NetworkX
  • Documentation
  • licenses info
  • Validate

[BUG] README.md needs updates

The README.md file has insufficient/outdated build instructions and this can waste new cugraph developers' time.

1. After submodule update (git submodule update --init --remote --recursive), downloaded thirdparty/rmm can be newer than the version cugraph has been tested, and this can lead to incompatibility. One often needs to rewind to a specific commit id to make cugraph work (currently, needs to execute git checkout 93211a0). This needs to be clearly specified.

2. To create a cugraph conda environment for CUDA10, cugraph_dev.yml needs to be updated before executing

conda env create --name cugraph_dev --file conda/environments/cugraph_dev.yml

In the file, one needs to replace nvidia and rapidsai with nvidia/labels/cuda10.0 and rapidsai/labels/cuda10.0, respectively.

3. One can configure a conda environment to set environmental variables on activation. Providing instructions to set PATH to include the CUDA toolkit bin directory and LD_LIBRARY_PATH to include the CUDA lib64 directory will be helpful.

under the anaconda3/envs/cugraph_dev

mkdir -p ./etc/conda/activate.d
mkdir -p ./etc/conda/deactivate.d
touch ./etc/conda/activate.d/env_vars.sh
touch ./etc/conda/deactivate.d/env_vars.sh

vi ./etc/conda/activate.d/env_vars.sh

#!/bin/bash
export PATH=/usr/local/cuda-10.0/bin:$PATH # or cuda-9.2 if using CUDA 9.2
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH # or cuda-9.2 if using CUDA 9.2

vi ./etc/conda/deactivate.d/env_vars.sh

#!/bin/bash
unset PATH
unset LD_LIBRARY_PATH
<= for unsets, need to check whether this resets to the value before activation (desirable) or null string.

4. It is unclear where one needs to execute

python setup.py install

adding cd $CU_GRAPH_HOME/python will make this clearer.

5. Executing python setup.py install produces warnings.

cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
cugraph/cugraph.cpp: In function ‘PyObject* __pyx_f_7cugraph_nvLouvain(PyObject*, int)’:
cugraph/cugraph.cpp:9371:68: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
__pyx_v_tmp = (((float *)((void *)(&__pyx_v_final_modularity)))[0]);

6. "From the build directory : gtests/gdfgraph_test"
First, "cd $CU_GRAPH_HOME/cpp/build" will be clearer than saying "the build directory"
gdfgraph_test is renamed to GDFGRAPH_TEST
and there are more tests under gtests.

7. Before executing pytest, adding "cd $CU_GRAPH_HOME/python(/cugraph)" will make it clearer to find the directory path to execute this.

[FEA][NV] Add Python bindings for SSSP

I already implemented the CUDA/C++ part to access nvgraph features using cugraph graph structure and SSSP wrapper in src/plugin/nvgraph/nvgraph_gdf.cu. The task consist in adding python bindings for gdf_error gdf_sssp_nvgraph

Subtasks checklist:

  • Python bindings and API (may include some adjustments of the C++/CUDA part)
  • Pytest testing against NetworkX
  • Documentation
    • Doxygen (C++)
    • Sphinx (Python)
    • python code example
  • Check headers and licenses
  • Validate everything in Jenkins

[FEA] Fix and Add triangle counting

The first step is to add the C++ code to access nvgraph TC features when using cugraph graph structure. Since Triangle Counting code is quite self-contained, it can be refactored to get rid of nvgraph dependencies and moved inside cugraph. In this case, the CUDA code needs to be updated to support RMM. Alternatively, it is possible to just add a C++ driver in cugraph to call nvgraph API by using the helper functions provided in nvgraph_gdf.cu.

The second step consists of adding python bindings for the TC feature

Subtasks checklist for python:

  • Python bindings and API (may include some adjustments of the C++/CUDA part)
  • Pytest testing against NetworkX
  • Documentation
    • Doxygen (C++)
    • Sphinx (Python)
    • python code example
  • Check headers and licenses
  • Validate everything in Jenkins

Compilation failure Building NVCC (Device) object CMakeFiles/cugraph.dir/src/cugraph_generated_grmat.cu.o

I'm really keen to trying this as I use graphs extensively in my work. I've already implemented a simple GPU accelerated library using Numba, to use with Rapids, and would like to compare.

Unfortunately, the compile failed at the make stage due to missing header file:

[ 11%] Building NVCC (Device) object CMakeFiles/cugraph.dir/src/cugraph_generated_grmat.cu.o
/home/john/conda/cugraph/src/grmat.cu:35:10: fatal error: gdf/gdf.h: No such file or directory
 #include <gdf/gdf.h>
          ^~~~~~~~~~~
compilation terminated.
CMake Error at cugraph_generated_grmat.cu.o.cmake:219 (message):
  Error generating
  /home/john/conda/cugraph/build/CMakeFiles/cugraph.dir/src/./cugraph_generated_grmat.cu.o

I did also try

conda activate cugraph_dev

rather than

conda activate

In the README, as thae former activates the (base) environment.

[BUG] Improve testing on edge list input

Currently, several algorithms isolate the solver to test by directly running the algorithm on the adj_list where this adj_list is generated from networkX.

We want to add tests where the input graph object contains only the edge_list and let the algorithm API entry do the conversion automatically.

The following tests need to be upgraded :

  • bfs
  • jaccard
  • louvain
  • spectral clustering
  • weighted jaccard

Already properly tested:

  • Pagerank
  • SSSP

[BUG] Two different approaches to import submodules

rmm is checked out before build (git submodule update --init --remote --recursive) while gunrock is checked out during build (in CMakeLists.txt). This can be confusing to some people and also inconsistent with other RAPIDS projects (they checkout submodules before build). We need to fix the code base to checkout gunrock before build (git submodule update --init --remote --recursive) to be consistent.

[BUG] Dockerfile stopped building after refactor

After the recent cuGraph project structure refactor, the project's dev Dockerfile needs updating to build.

To Reproduce
docker build -t cugraph .

Expected behavior
docker image builds successfully

[FEA] Update the repo to match cudf/cuml

The repo needs to be updated to match cuDF and cuML.

At this point, Brad identified these missing files that need to be added:

  • .dockerignore
  • . gitattributes
  • . gitmodules
  • CHANGELOG.md
  • CONTRIBUTING.md
  • MANIFEST.in
  • print_env.sh
  • readthedocs.yml
  • setup.cfg
  • setup_pip.py

And directory changes that need to be done:

  • ci (AI : Mike or Ray)
  • create a cpp directory
    • src move under cpp
    • include under cpp
    • CMakeLists.txt under cpp

[FEA] OPG PageRank EPIC

Start from PRBench.

Python
(more details in the corresponding comment below)

  • Define API
  • Create function that accepts DASK MPI call
  • makes call into CUDA MNMG routine (MPI-based)
  • Validate that the data transit properly between the cuda device, the MPI rank and the dask worker

CUDA

  • API accepts cuDF columns
  • Refactor main.cpp as a set of library functions
  • Sort (pre-process with cuDF)
  • Dedup
  • Create adjacency matrix
  • run PageRank
  • Validate / fix (see details in the corresponding comment below)
    • Fix the size of the CSR matrix
    • Check the impact of omitting dangling nodes
  • return answer (vertex ID, pagerank)
  • (optional) post-process to match NetworkX output

Improvements

  • C++11 support
  • search for dead code
  • Fix the path for int64_t indices
  • Replace macros by templates for the index type (to deploy 32bit and 64bit at the same time)
  • Add namespace
  • Fix all warnings
  • double check the custom memory pool (host)
  • update MPI dependency in the conda env file to enable cuda-aware MPI once the package is available
  • Modularize the code
  • nvlink version

Other

  • cugraph integration (see details in the corresponding comment below)
  • Tests
    • smoke test (single GPU) at C++ level
    • multi-gpu test at C++ level
    • Dask/MPI test (multiGPU) at python level
  • Documentation and sample

[FEA][NV] Move nvgraph repo in cugraph repo

This task will result in open sourcing nvGraph. NvGraph contains the core CUDA code for Jaccard, Louvain, BFS, SSSP and more.

The goal is to open source all at once to facilitate the integration and minimize the refactoring effort.

Before moving nvGraph repo here, the following tasks must be done in nvGraph:

  • Use cmake infrastructure (see #34)
  • Review for IP
  • Integrate recent changes from perforce (if any)

Then :

  • Copy nvgraph code in cugraph repo: code should be in a nvgraph folder under cpp/nvgraph
  • Add build option to produce nvgraph library
  • rename nvgraph stand alone library nvgraph_st into nvgraph_rapids
  • Update cugraph infrastructure to build the newly added nvpraph code

Important improvement

  • Remove multiple CUB dependencies (3 versions of cub in cugraph after transferring nvgraph...)
  • Reduce build time (nvgraph takes minutes to build, this will negatively impact cugraph development)

[BUG] cpp/build/make produces multiple compiler warnings

/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/src/mgpucontext.cu: In constructor ‘mgpu::CudaContext::CudaContext(mgpu::CudaDevice&, bool, bool)’:
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/src/mgpucontext.cu:232:13: warning: variable ‘error’ set but not used [-Wunused-but-set-variable]
cudaError_t error = cudaMallocHost((void**)&_pageLocked, 4096);
^~~~~

/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/cub/cub/device/dispatch/dispatch_spmv_orig.cuh:666:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
dim3 spmv_grid_size(
~~~~~~~~~~~^
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/cub/cub/device/dispatch/dispatch_spmv_orig.cuh:671:41: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
dim3 segment_fixup_grid_size(
~~~~~~~~~~~^

/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/cub/cub/device/dispatch/dispatch_spmv_orig.cuh:666:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
dim3 spmv_grid_size(
~~~~~~~~~~~^
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/cub/cub/device/dispatch/dispatch_spmv_orig.cuh:671:41: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
dim3 segment_fixup_grid_size(
~~~~~~~~~~~^
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/gunrock/util/sort_omp.cuh:62:0: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
#pragma omp parallel

/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/gunrock/util/sort_omp.cuh:68:0: warning: ignoring #pragma omp single [-Wunknown-pragmas]
#pragma omp single

/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/gunrock/util/sort_omp.cuh:81:0: warning: ignoring #pragma omp barrier [-Wunknown-pragmas]
#pragma omp barrier

/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/gunrock/util/sort_omp.cuh:82:0: warning: ignoring #pragma omp single [-Wunknown-pragmas]
#pragma omp single

/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/gunrock/util/sort_omp.cuh:93:0: warning: ignoring #pragma omp barrier [-Wunknown-pragmas]
#pragma omp barrier

/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/gunrock/util/sort_omp.cuh:119:0: warning: ignoring #pragma omp barrier [-Wunknown-pragmas]
#pragma omp barrier

/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/gunrock/csr.cuh:566:0: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
#pragma omp parallel

/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/gunrock/csr.cuh:575:0: warning: ignoring #pragma omp barrier [-Wunknown-pragmas]
#pragma omp barrier

/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/gunrock/csr.cuh:600:0: warning: ignoring #pragma omp barrier [-Wunknown-pragmas]
#pragma omp barrier

/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/gunrock/csr.cuh:601:0: warning: ignoring #pragma omp single [-Wunknown-pragmas]
#pragma omp single

/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/gunrock/csr.cuh:633:0: warning: ignoring #pragma omp barrier [-Wunknown-pragmas]
#pragma omp barrier

/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/gunrock/csr.cuh:640:0: warning: ignoring #pragma omp barrier [-Wunknown-pragmas]
#pragma omp barrier

/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/include/kernels/../device/../device/intrinsics.cuh:42:40: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
return reinterpret_cast<uint2>(&x);
^
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/include/kernels/../device/../device/intrinsics.cuh:42:40: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/include/kernels/../device/../device/intrinsics.cuh: In function ‘mgpu::uint64 mgpu::uint2_as_ulonglong(uint2)’:
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/include/kernels/../device/../device/intrinsics.cuh:45:41: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
return reinterpret_cast<uint64>(&x);
^
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/include/kernels/../device/../device/intrinsics.cuh: In function ‘int2 mgpu::longlong_as_int2(mgpu::int64)’:
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/include/kernels/../device/../device/intrinsics.cuh:49:39: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
return reinterpret_cast<int2>(&x);
^
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/include/kernels/../device/../device/intrinsics.cuh:49:39: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/include/kernels/../device/../device/intrinsics.cuh: In function ‘mgpu::int64 mgpu::int2_as_longlong(int2)’:
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/include/kernels/../device/../device/intrinsics.cuh:52:40: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
return reinterpret_cast<int64>(&x);
^
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/include/kernels/../device/../device/intrinsics.cuh: In function ‘int2 mgpu::double_as_int2(double)’:
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/include/kernels/../device/../device/intrinsics.cuh:56:39: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
return reinterpret_cast<int2>(&x);
^
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/include/kernels/../device/../device/intrinsics.cuh:56:39: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/include/kernels/../device/../device/intrinsics.cuh: In function ‘double mgpu::int2_as_double(int2)’:
/home/seunghwak/RAPIDS/cugraph/cpp/build/gunrock/externals/moderngpu/include/kernels/../device/../device/intrinsics.cuh:59:41: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
return reinterpret_cast<double>(&x);
^
/home/seunghwak/RAPIDS/cugraph/cpp/src/tests/mmio.c:77:9: warning: ignoring return value of ‘fscanf’, declared with attribute warn_unused_result [-Wunused-result]
fscanf(f, "%d %d %lg\n", &I[i], &J[i], &val[i]);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/seunghwak/RAPIDS/cugraph/cpp/src/tests/mmio.c:77:9: warning: ignoring return value of ‘fscanf’, declared with attribute warn_unused_result [-Wunused-result]
fscanf(f, "%d %d %lg\n", &I[i], &J[i], &val[i]);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/seunghwak/RAPIDS/cugraph/cpp/src/tests/mmio.c: In function ‘mm_read_unsymmetric_sparse’:
/home/seunghwak/RAPIDS/cugraph/cpp/src/tests/mmio.c:77:9: warning: ignoring return value of ‘fscanf’, declared with attribute warn_unused_result [-Wunused-result]
fscanf(f, "%d %d %lg\n", &I[i], &J[i], &val[i]);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/seunghwak/RAPIDS/cugraph/cpp/src/tests/mmio.c: In function ‘mm_read_unsymmetric_sparse’:
/home/seunghwak/RAPIDS/cugraph/cpp/src/tests/mmio.c:77:9: warning: ignoring return value of ‘fscanf’, declared with attribute warn_unused_result [-Wunused-result]
fscanf(f, "%d %d %lg\n", &I[i], &J[i], &val[i]);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/seunghwak/RAPIDS/cugraph/cpp/src/tests/mmio.c: In function ‘mm_read_unsymmetric_sparse’:
/home/seunghwak/RAPIDS/cugraph/cpp/src/tests/mmio.c:77:9: warning: ignoring return value of ‘fscanf’, declared with attribute warn_unused_result [-Wunused-result]
fscanf(f, "%d %d %lg\n", &I[i], &J[i], &val[i]);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/seunghwak/RAPIDS/cugraph/cpp/src/tests/mmio.c: In function ‘mm_read_unsymmetric_sparse’:
/home/seunghwak/RAPIDS/cugraph/cpp/src/tests/mmio.c:77:9: warning: ignoring return value of ‘fscanf’, declared with attribute warn_unused_result [-Wunused-result]
fscanf(f, "%d %d %lg\n", &I[i], &J[i], &val[i]);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[FEA][NV] Add Python bindings for Jaccard

Expose a feature to compute the Jaccard similarity between each pair of vertices connected by an edge. Jaccard similarity is defined between two sets as the ratio of the volume of their intersection divided by the volume of their union. In the context of graphs, the neighbourhood of a vertex is seen as a set. The Jaccard similarity weight of each edge represents the strength of the connection between vertices based on the relative similarity of their neighbours.

[BUG] Readme.md : add a note on how to set the ABI flag

CuDF flag is OFF by default for custom builds but conda packages are built with this flag ON
Cugraph is ON by default and releases conda packages with the flag ON

Every time there is a mismatch this creates cryptic bugs. This happened to several devs so we should document this in the Readme.

We should also double check with cudf team if this flag should be turned ON by default there for consistency.

[FEA] Provide access to C++ test data

Problem: Open source contributors may want to run large scale C++ tests which need particular datasets and golden test results. This is too big to be deployed in the gitHub repo.

If/when an external contributors request it, we should consider providing access to that.

This would lead to the following tasks:

  • Review data set licences
  • Upload data sets and golden data on the most appropriate file sharing service
  • Set access properties so that it is publicly available
  • Document how to run C++ tests in the main read me

[BUG] Python tests take too long

Python tests take more than 30 min to run. This is blocking the testing platform for too long. Users may also think that something is not working correctly.

We should identify what takes so long (afaik, most of the time is spent in NextworkX to get the reference result) and try to reduce the total time as much as possible.

[QST] Java API

I am interested in generating Java API, can someone identify what are core API files, so I just focus on whats important?

[BUG] Copyright / license check

Add/update/verify the copyright and license in all files. Here is the one we should use :

/*
 * Copyright (c) 2019, NVIDIA CORPORATION.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

[FEA] Add new test data to CI

Is your feature request related to a problem? Please describe.
This is in relation to Issue #83 to make tests run faster we need a new dataset which is large enough to require more than a single SM on the GPU but small enough to not take too long for NetworkX to process.

Describe the solution you'd like
Add netscience.mtx to /datasets/networks/netscience.mtx. MTX file is available at: https://sparse.tamu.edu/Newman/netscience

[FEA] [NV] Add Python bindings for Spectral Clustering

Following Alex's CUDA/C++ method for accessing nvgraph features using cugraph graph structure, wrapperSpectral Clustering [src/plugin/nvgraph/nvgraph_gdf.cu].

This should cover both Modularity and min cut

Subtasks checklist:

  • Pythion bindings and API
  • Pytest testing against NetworkX
  • Documentation
  • licenses info
  • Validate

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.