A method comprising: a) generating, by a central processing unit, an initial graph from a plurality of initial known data sets; b) determining, by the central processing unit, a plurality of subgraphs from the initial graph; c) inputting, the plurality of subgraphs into a plurality of graphics processing units (220A, 220B, 220C); d) executing (203A, 203B, 203C), in each of the plurality of graphics processing units (220A, 220B, 220C), a learning process on a subgraph to identify communities within the subgraph, each community comprising a plurality of nodes and edges, wherein the nodes in each community share one or more common characteristics; e) distributing, by the central processing unit, the communities identified in step d) to the plurality of graphics processing units in sample groups; and f) executing, in each of the plurality of graphics processing units (220A, 220B, 220C), a merge process (305A, 305B, 305C) for a sample group of communities received by the respective one of the graphics processing unit based on an overlap score calculated between the communities in the sample group to produce a set of merged communities, wherein the merged communities are represented as a single new community with a new community ID and wherein the merged communities are overlapping communities so that the single new community comprises all of the overlapping nodes as well as all of the non-overlapping nodes between the merged communities, the merged communities or derivatives of the merged communities being used to classify an unknown data set; g) gathering, at the central processing unit, an output from the plurality of graphics processing units (220A, 220B, 220C) comprising the merged communities; and h) outputting, by the CPU, once a stop criteria for the merge process is satisfied, a resulting set of new communities. a) generating, by a central processing unit, an initial graph from a plurality of initial known data sets; b) determining, by the central processing unit, a plurality of subgraphs from the initial graph; c) inputting, the plurality of subgraphs into a plurality of graphics processing units (220A, 220B, 220C); d) executing (203A, 203B, 203C), in each of the plurality of graphics processing units (220A, 220B, 220C), a learning process on a subgraph to identify communities within the subgraph, each community comprising a plurality of nodes and edges, wherein the nodes in each community share one or more common characteristics; e) distributing, by the central processing unit, the communities identified in step d) to the plurality of graphics processing units in sample groups; and f) executing, in each of the plurality of graphics processing units (220A, 220B, 220C), a merge process (305A, 305B, 305C) for a sample group of communities received by the respective one of the graphics processing unit based on an overlap score calculated between the communities in the sample group to produce a set of merged communities, wherein the merged communities are represented as a single new community with a new community ID and wherein the merged communities are overlapping communities so that the single new community comprises all of the overlapping nodes as well as all of the non-overlapping nodes between the merged communities, the merged communities or derivatives of the merged communities being used to classify an unknown data set; g) gathering, at the central processing unit, an output from the plurality of graphics processing units (220A, 220B, 220C) comprising the merged communities; and h) outputting, by the CPU, once a stop criteria for the merge process is satisfied, a resulting set of new communities.