Skip to content

32-bit nodes #50

Description

@IanChenUIUC

Motivation

NetworKit, in Globals.hpp, defines all nodes as uint64_t, and so all graphs and algorithms are forced to use this data type. It would be nice to provide a knob so that they can instead of uint32_t, which would cut in half the memory usage the graph, and any node-sized memory allocations, on graphs of <2^32 ~ 4 billion nodes.

Proposed API

This can be a build option, e.g. cmake .. -DNETWORKIT_32_BIT_NODES. From the python side, pip install icebug[rt32], which would configure the 32-bit node build. Keeping the default as 64-bit would not break backwards compatibility.

Potential Challenges

There are a lot of implicit type conversions between, say, node and count and index and omp_index.
The CSR indices and indptr are also both hard-coded as Arrow::UInt64Array, where the indices would have to be changed to also allow Arrow::UInt32Array.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions