Skip to content
Akshay Dixit edited this page Apr 4, 2015 · 2 revisions

##Motivation snametize started out as a simple C++ program to convert a graph from an ASCIIGraph format to a METIS or SNAP format. But now, I would like to evolve it into a general graph format converter library which can read graphs in a format and write them in another format. Having a single graph format converter library would make life a lot easier. For research experiments, I find myself continually downloading graph datasets each of which are implemented in different formats. Some of them, such as WebGraph or SNAP based datasets store them in their own format. This library would aim to provide efficient and fast transformations of these graphs from one format to another.

Potential Workflow

The workflow of what would happen is :

  • The graph is read from the input file by a Reader object. It would have subclasses with specific read implementations like MetisReader, GMLReader etc.
  • The graph would be stored as a Graph object in memory(can we do anything else, because large graphs would be very RAM heavy)
  • A Writer object would generate the output file from the Graph object. Like the Reader object, there would be implementations like MetisWriter, SnapWriter etc.

##Notes A few things to keep in mind going forward :

  • Check out folly::fbvector as opposed to std::vector, it could improve performance because of its dynamic reallocation strategy and in-place memory re-allocation. For more details, refer to folly/docs/FBVector.md

  • Investigate faster methods of reading graph files. The current implementation only utilizes a single-core process to run through the file. Maybe there might be a way that we first split the file into temporary blocks and read the blocks asynchronously and concurrently update the Graph object.

  • Change the buildsystem to CMake to support other platforms

  • Start writing tests to keep the sanity of the project in check!

Clone this wiki locally