GithubHelp home page GithubHelp logo

karlsruhegraphgeneration / kagen Goto Github PK

View Code? Open in Web Editor NEW
35.0 35.0 9.0 11.96 MB

KaGen: Communication-free Massively Distributed Graph Generators

License: Other

CMake 0.80% C++ 45.58% Shell 0.04% C 52.86% NASL 0.72%

kagen's People

Contributors

danielseemaier avatar dfunke avatar gzeit avatar hespian avatar lcavendishl avatar mschimek avatar niklas-uhl avatar sebalamm 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kagen's Issues

Allow 32 bit edge and vertex IDs

Currently, graphs are always generated with 64 bit edge and vertex IDs. Would be nice if we had a CMake flag to use 32 bit data types instead.

Restructure library headers

Currently, we have two header files that are required to use the KaGen library, library_definitions.h and kagen.h / ckagen.h, since the public library interface (library/ folder) is separate from the core library (kagen/ folder).

IMO it would be nicer if we merged the public library into the core library and moved all public declarations to kagen.h. This way, we would only have to install a single header file.

Readme

Readme says nodes are numbered from 0 to n-1, but they are numbered 1 to n in the output file.
Should I update the README?

Best
Christian

Implement edge weights

It would be nice to have an option for edge weights based on the distance between adjacent vertices.

RDG generator crashes

Hello,

I'm trying to use your RDG graph generator but it crashes with a segmentation fault.

Here's the output:

$ mpirun -n 2 ./build/app/kagen -gen rdg_3d -n 20
generate graph (n=1048576, k=2, s=1, P=2)
write output...
[danielpc:21924] *** Process received signal ***
[danielpc:21924] Signal: Segmentation fault (11)
[danielpc:21924] Signal code: Address not mapped (1)
[danielpc:21924] Failing at address: 0x7f77db6af000
[danielpc:21924] [ 0] /usr/lib/libpthread.so.0(+0x11a80)[0x7f7807949a80]
[danielpc:21924] [ 1] /usr/lib/libc.so.6(+0xa1104)[0x7f7806ce7104]
[danielpc:21924] [ 2] /usr/lib/openmpi/libopen-pal.so.40(+0x3ee7b)[0x7f7806710e7b]
[danielpc:21924] [ 3] /usr/lib/openmpi/libmpi.so.40(ompi_datatype_sndrcv+0x531)[0x7f7807baffc1]
[danielpc:21924] [ 4] /usr/lib/openmpi/openmpi/mca_coll_basic.so(mca_coll_basic_gatherv_intra+0x14c)[0x7f77f9b3a50c]
[danielpc:21924] [ 5] /usr/lib/openmpi/libmpi.so.40(PMPI_Gatherv+0x342)[0x7f7807bc9ff2]
[danielpc:21924] [ 6] ./build/app/kagen(+0x1df49)[0x5643ec1e2f49]
[danielpc:21924] [ 7] ./build/app/kagen(+0x2e14e)[0x5643ec1f314e]
[danielpc:21924] [ 8] ./build/app/kagen(+0xfdf8)[0x5643ec1d4df8]
[danielpc:21924] [ 9] /usr/lib/libc.so.6(__libc_start_main+0xeb)[0x7f7806c6906b]
[danielpc:21924] [10] ./build/app/kagen(+0x1063a)[0x5643ec1d563a]
[danielpc:21924] *** End of error message ***
-------------------------------------------------------
Primary job  terminated normally, but 1 process returned
a non-zero exit code. Per user-direction, the job has been aborted.
-------------------------------------------------------
--------------------------------------------------------------------------
mpirun noticed that process rank 0 with PID 0 on node danielpc exited on signal 11 (Segmentation fault).
--------------------------------------------------------------------------

Executing it on 16 threads or using smaller values for n also results in a segmentation fault. I'm using g++ 8.1.0, Open MPI 3.1.0, cgal 4.12 and sparsehash 2.0.3.

The RHG generator works fine for me.

Is there something wrong on my end?

Best regards

Long edges in random delaunay graphs

Hello,

I create some function to also store the coordinates of geometric graphs
and use them to visualize them. In the delaunay generator, it looks like
vertices on the one side of space are connected with vertices one the
opposite side; like creating a torus. This does not seem to happen in
the random geometric graphs.

Not sure if this is a bug. This could easily be a mistake on the way I print
the coordinates.

Can you verify/dismiss this behaviour?

Best,
Harry

Make library self-contained

Currently, using the library also requires one to link against the sampling library and tlx, which makes it hard to use the library without CMake. I think that it would be desirable to have a single self-contained library, either by manually merging the built libraries or just c&p'ing the sampling library + the few tlx headers that we actually need.

  • Remove dependency to libtlx, libsampling, libspooky
  • Remove dependency to xxhash (switch to spooky which is already included in KaGen or make features that depend on it optional via CMake flag?)

RMAT with hmetis output generates edges twice

I am using KaGen to generate RMAT graphs in hmetis hgr format. When generating a graph without weights, with the following command:

./KaGen  -f hmetis rmat  -N 16 -M 19 -a 0.45 -b 0.15  -c 0.25 -o graph  -s 1 

The hgr file contains every edge twice, e.g.

1 3
...
3 1

Is there a way to only have unique edges outputted?

RMAT generator generates same graph, ignoring seed

Hi,

I am using KaGen to produce some RMAT graphs in hmetis format. I set the number of nodes to 65536 and edges to 133056 and use the following probabilities 0.450 / 0.150 / 0.250 / 0.150. When I try to invoke with different seeds, it always outputs the exact same graph.

Example commands:

$ ./KaGen  -f hmetis rmat  -N 16 -m 133056 -a 0.45 -b 0.15  -c 0.25 -o a  -s 12234234
$ ./KaGen  -f hmetis rmat  -N 16 -m 133056 -a 0.45 -b 0.15 -c 0.25  -o b -s 1
$ diff a.hgr b.hgr

I tried to vary the number of edges, but the issue persists.

Implement hybrid execution

Currently, KaGen can only use one thread per MPI process. Since the generators are (mostly) communication free, we could implement additional OpenMPI parallelization without too much hustle.

Compile error on Mac/Clang: missing include

Hi,

Following build error occurs, when building on Mac with llvm 15:

KaGen/kagen/context.cpp:404:24: error: implicit instantiation of undefined template 'std::basic_istringstream<char>'
    std::istringstream toker(options);
                       ^
/opt/homebrew/opt/llvm/bin/../include/c++/v1/iosfwd:140:32: note: template is declared here
    class _LIBCPP_TEMPLATE_VIS basic_istringstream;

This can be fixed by
#include <sstream> in kagen/context.cpp.

Seed Ignored

Hi Sebastian,

for some graph classes the seed seems to be ignored (i.e. rhg). I use different seeds but get the same result as a graph.

Best
Christian

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.