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 ; d) executing , in each of the plurality of graphics processing units , 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 , a merge process 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 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 ; d) executing , in each of the plurality of graphics processing units , 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 , a merge process 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 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. <EOS>