-
Notifications
You must be signed in to change notification settings - Fork 0
Next Steps
##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.
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 likeMetisReader
,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 theGraph
object. Like theReader
object, there would be implementations likeMetisWriter
,SnapWriter
etc.
##Notes A few things to keep in mind going forward :
-
Check out
folly::fbvector
as opposed tostd::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!