├── graphalytics-core ├── .gitignore └── src │ ├── main │ ├── resources │ │ ├── project │ │ │ └── build │ │ │ │ └── graphalytics-core.properties │ │ └── graphalytics │ │ │ └── report │ │ │ └── report.htm │ ├── java │ │ └── science │ │ │ └── atlarge │ │ │ └── graphalytics │ │ │ ├── execution │ │ │ ├── AbstractPlatform.java │ │ │ ├── PlatformExecutionException.java │ │ │ ├── BenchmarkFailure.java │ │ │ ├── RuntimeSetup.java │ │ │ ├── RunSpecification.java │ │ │ ├── BenchmarkFailures.java │ │ │ ├── Notification.java │ │ │ ├── BenchmarkStatus.java │ │ │ └── MircoService.java │ │ │ ├── validation │ │ │ ├── ValidatorException.java │ │ │ └── rule │ │ │ │ ├── MatchLongValidationRule.java │ │ │ │ ├── ValidationRule.java │ │ │ │ └── EpsilonValidationRule.java │ │ │ ├── configuration │ │ │ ├── InvalidConfigurationException.java │ │ │ ├── GraphalyticsLoaderException.java │ │ │ └── GraphalyticsExecutionException.java │ │ │ ├── report │ │ │ ├── BenchmarkReportGenerator.java │ │ │ ├── result │ │ │ │ ├── PlatformBenchmarkResult.java │ │ │ │ ├── BenchmarkMetric.java │ │ │ │ └── BenchmarkMetrics.java │ │ │ ├── BenchmarkReportFile.java │ │ │ └── html │ │ │ │ └── StaticResource.java │ │ │ ├── plugin │ │ │ ├── PluginFactory.java │ │ │ └── Plugin.java │ │ │ ├── domain │ │ │ ├── graph │ │ │ │ ├── GraphScale.java │ │ │ │ ├── PropertyType.java │ │ │ │ ├── LoadedGraph.java │ │ │ │ └── Property.java │ │ │ ├── algorithms │ │ │ │ ├── EmptyParameters.java │ │ │ │ └── ParameterFactory.java │ │ │ └── benchmark │ │ │ │ └── BenchmarkExp.java │ │ │ └── util │ │ │ ├── MemoryUtil.java │ │ │ ├── UuidUtil.java │ │ │ └── io │ │ │ ├── VertexListStreamWriter.java │ │ │ └── EdgeListStreamWriter.java │ └── assembly │ │ └── resources.xml │ └── test │ └── java │ └── science │ └── atlarge │ └── graphalytics │ └── util │ └── io │ ├── VertexListStreamUtility.java │ ├── MockEdgeListStream.java │ ├── EdgeListStreamUtility.java │ ├── MockVertexListStream.java │ ├── EdgeListStreamWriterTest.java │ └── VertexListStreamWriterTest.java ├── matching ├── exact_actual1.csv ├── exact_actual2.csv ├── exact_expected.csv ├── equivalence_expected.csv ├── equivalence_actual1.csv ├── equivalence_actual2.csv ├── epsilon_expected.csv ├── epsilon_actual2.csv └── epsilon_actual1.csv ├── config-template ├── pricing.properties ├── granula.properties ├── environment.properties ├── graphs │ ├── test-wcc-directed.properties │ ├── test-lcc-directed.properties │ ├── test-lcc-undirected.properties │ ├── test-wcc-undirected.properties │ ├── test-bfs-directed.properties │ ├── test-cdlp-directed.properties │ ├── test-bfs-undirected.properties │ ├── test-cdlp-undirected.properties │ ├── test-pr-directed.properties │ ├── test-pr-undirected.properties │ ├── test-sssp-directed.properties │ ├── test-sssp-undirected.properties │ ├── graph500-22.properties │ ├── graph500-23.properties │ ├── graph500-24.properties │ ├── graph500-27.properties │ ├── graph500-28.properties │ ├── graph500-29.properties │ ├── graph500-30.properties │ ├── graph500-25.properties │ ├── graph500-26.properties │ ├── wiki-Talk.properties │ ├── cit-Patents.properties │ ├── twitter_mpi.properties │ ├── com-friendster.properties │ ├── kgs.properties │ ├── dota-league.properties │ ├── example-directed.properties │ ├── datagen-7_5-fb.properties │ ├── datagen-7_6-fb.properties │ ├── datagen-7_7-zf.properties │ ├── datagen-7_8-zf.properties │ ├── datagen-7_9-fb.properties │ ├── datagen-8_0-fb.properties │ ├── datagen-8_1-fb.properties │ ├── datagen-8_2-zf.properties │ ├── datagen-8_3-zf.properties │ ├── datagen-8_4-fb.properties │ ├── datagen-8_5-fb.properties │ ├── datagen-8_6-fb.properties │ ├── datagen-8_7-zf.properties │ ├── datagen-8_8-zf.properties │ ├── datagen-8_9-fb.properties │ ├── datagen-9_0-fb.properties │ ├── datagen-9_1-fb.properties │ ├── datagen-9_4-fb.properties │ ├── datagen-9_2-zf.properties │ ├── datagen-9_3-zf.properties │ ├── datagen-sf3k-fb.properties │ ├── example-undirected.properties │ └── datagen-sf10k-fb.properties ├── benchmarks │ ├── 2xl.properties │ ├── l.properties │ ├── m.properties │ ├── s.properties │ ├── xl.properties │ ├── test.properties │ └── custom.properties └── benchmark.properties ├── graphalytics-plugins-granula ├── src │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── graphalytics │ │ │ └── plugins │ │ └── java │ │ └── science │ │ └── atlarge │ │ └── graphalytics │ │ └── granula │ │ ├── GranulaAwarePlatform.java │ │ ├── GranulaPluginFactory.java │ │ ├── GranulaHtmlGenerator.java │ │ └── FailedJobArchiver.java └── pom.xml ├── graphalytics-validation ├── src │ └── main │ │ ├── resources │ │ └── validation-graphs │ │ │ ├── cdlp │ │ │ ├── dir-output │ │ │ ├── undir-output │ │ │ ├── dir-input │ │ │ └── undir-input │ │ │ ├── wcc │ │ │ ├── dir-input │ │ │ ├── dir-output │ │ │ ├── undir-output │ │ │ └── undir-input │ │ │ ├── sssp │ │ │ ├── dir-input.v │ │ │ ├── undir-input.v │ │ │ ├── dir-output │ │ │ ├── undir-output │ │ │ ├── dir-input.e │ │ │ └── undir-input.e │ │ │ ├── bfs │ │ │ ├── dir-input │ │ │ ├── dir-output │ │ │ ├── undir-input │ │ │ └── undir-output │ │ │ ├── example │ │ │ ├── example-undirected.v │ │ │ ├── example-directed.v │ │ │ ├── example-undirected-BFS │ │ │ ├── example-undirected-CDLP │ │ │ ├── example-undirected-WCC │ │ │ ├── example-directed-CDLP │ │ │ ├── example-directed-WCC │ │ │ ├── example-directed-input │ │ │ ├── example-undirected-input │ │ │ ├── example-directed-BFS │ │ │ ├── example-undirected.e │ │ │ ├── example-directed.e │ │ │ ├── example-directed-SSSP │ │ │ ├── example-undirected-PR │ │ │ ├── example-undirected-LCC │ │ │ ├── example-undirected-SSSP │ │ │ ├── example-directed-LCC │ │ │ └── example-directed-PR │ │ │ ├── lcc │ │ │ ├── undir-input │ │ │ ├── dir-input │ │ │ ├── undir-output │ │ │ └── dir-output │ │ │ ├── ffm │ │ │ ├── undir-input │ │ │ └── dir-input │ │ │ └── pr │ │ │ ├── undir-input │ │ │ ├── dir-input │ │ │ ├── dir-output │ │ │ └── undir-output │ │ └── java │ │ └── science │ │ └── atlarge │ │ └── graphalytics │ │ └── validation │ │ ├── io │ │ ├── LongParser.java │ │ ├── DoubleParser.java │ │ └── GraphValueParser.java │ │ ├── GraphValues.java │ │ └── algorithms │ │ ├── pr │ │ └── PageRankOutput.java │ │ ├── sssp │ │ └── SingleSourceShortestPathsOutput.java │ │ ├── bfs │ │ └── BreadthFirstSearchOutput.java │ │ ├── wcc │ │ └── WeaklyConnectedComponentsOutput.java │ │ └── lcc │ │ └── LocalClusteringCoefficientOutput.java └── pom.xml ├── .gitmodules ├── .circleci └── config.yml ├── .gitignore ├── CHANGELOG.md ├── bin ├── utils │ ├── graph500-generator │ │ ├── README │ │ ├── graph500-generate.job │ │ └── graph500-binary-to-text.py │ └── graph-format-conversion │ │ ├── graph-specific │ │ ├── kgs-to-multi-edge.py │ │ ├── datagen-to-graphalytics.sh │ │ └── dotaleague-to-multi-edge.py │ │ └── multi-edge-list-to-weighted-evlp.sh └── sh │ └── run-benchmark.sh ├── licenses └── LICENSE-HEADER └── scripts ├── build-local.sh ├── install-local.sh └── package-mvn-artifacts.sh /graphalytics-core/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /target 3 | -------------------------------------------------------------------------------- /matching/exact_actual1.csv: -------------------------------------------------------------------------------- 1 | 1 3 2 | 2 1 3 | 3 2 4 | 4 0 5 | 5 1 6 | -------------------------------------------------------------------------------- /matching/exact_actual2.csv: -------------------------------------------------------------------------------- 1 | 1 4 2 | 2 1 3 | 3 2 4 | 4 5 5 | 5 1 6 | -------------------------------------------------------------------------------- /matching/exact_expected.csv: -------------------------------------------------------------------------------- 1 | 1 3 2 | 2 1 3 | 3 2 4 | 4 0 5 | 5 1 6 | -------------------------------------------------------------------------------- /matching/equivalence_expected.csv: -------------------------------------------------------------------------------- 1 | 1 1 2 | 2 1 3 | 3 1 4 | 4 2 5 | 5 2 6 | 6 3 7 | -------------------------------------------------------------------------------- /matching/equivalence_actual1.csv: -------------------------------------------------------------------------------- 1 | 1 81 2 | 2 81 3 | 3 81 4 | 4 32 5 | 5 32 6 | 6 12 7 | -------------------------------------------------------------------------------- /matching/equivalence_actual2.csv: -------------------------------------------------------------------------------- 1 | 1 31 2 | 2 52 3 | 3 31 4 | 4 31 5 | 5 31 6 | 6 74 7 | -------------------------------------------------------------------------------- /matching/epsilon_expected.csv: -------------------------------------------------------------------------------- 1 | 1 0 2 | 2 0.3 3 | 3 0.45 4 | 4 0.23 5 | 5 +Infinity 6 | 6 0.001 7 | -------------------------------------------------------------------------------- /config-template/pricing.properties: -------------------------------------------------------------------------------- 1 | # The pricing of the system-under-test ($) 2 | system.pricing = 3 | -------------------------------------------------------------------------------- /matching/epsilon_actual2.csv: -------------------------------------------------------------------------------- 1 | 1 0.000001 2 | 2 0.3 3 | 3 0.46 4 | 4 0.22 5 | 5 1.79769e+308 6 | 6 0 7 | -------------------------------------------------------------------------------- /matching/epsilon_actual1.csv: -------------------------------------------------------------------------------- 1 | 1 0 2 | 2 0.30002 3 | 3 0.45 4 | 4 0.229997 5 | 5 +Infinity 6 | 6 0.001 7 | -------------------------------------------------------------------------------- /graphalytics-plugins-granula/src/main/resources/META-INF/graphalytics/plugins: -------------------------------------------------------------------------------- 1 | science.atlarge.graphalytics.granula.GranulaPluginFactory -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/cdlp/dir-output: -------------------------------------------------------------------------------- 1 | 1 1 2 | 2 1 3 | 3 1 4 | 4 5 5 | 5 4 6 | 6 4 7 | 7 4 8 | 8 4 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/cdlp/undir-output: -------------------------------------------------------------------------------- 1 | 1 1 2 | 2 1 3 | 3 1 4 | 4 4 5 | 5 4 6 | 6 4 7 | 7 4 8 | 8 4 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/wcc/dir-input: -------------------------------------------------------------------------------- 1 | 1 2 3 2 | 2 1 3 4 3 | 3 4 | 4 2 5 | 6 7 8 6 | 7 6 7 | 8 8 | 9 3 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/wcc/dir-output: -------------------------------------------------------------------------------- 1 | 1 1 2 | 2 1 3 | 3 1 4 | 4 1 5 | 6 6 6 | 7 6 7 | 8 6 8 | 9 1 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/wcc/undir-output: -------------------------------------------------------------------------------- 1 | 1 1 2 | 2 1 3 | 3 1 4 | 4 1 5 | 6 6 6 | 7 6 7 | 8 6 8 | 9 1 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/sssp/dir-input.v: -------------------------------------------------------------------------------- 1 | 1 2 | 2 3 | 3 4 | 4 5 | 5 6 | 6 7 | 7 8 | 8 9 | 9 10 | 10 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/wcc/undir-input: -------------------------------------------------------------------------------- 1 | 1 2 3 2 | 2 1 3 4 3 | 3 1 2 9 4 | 4 2 5 | 6 7 8 6 | 7 6 7 | 8 6 8 | 9 3 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/bfs/dir-input: -------------------------------------------------------------------------------- 1 | 1 2 3 2 | 2 3 4 5 3 | 3 1 4 | 4 6 7 8 5 | 5 2 1 6 | 6 4 8 7 | 7 8 | 8 1 2 3 9 | 9 10 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/cdlp/dir-input: -------------------------------------------------------------------------------- 1 | 1 2 3 7 2 | 2 1 3 3 | 3 1 2 4 | 4 5 6 5 | 5 4 6 7 6 | 6 5 7 7 | 7 5 6 8 8 | 8 6 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-undirected.v: -------------------------------------------------------------------------------- 1 | 2 2 | 3 3 | 4 4 | 5 5 | 6 6 | 7 7 | 8 8 | 9 9 | 10 10 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-directed.v: -------------------------------------------------------------------------------- 1 | 1 2 | 2 3 | 3 4 | 4 5 | 5 6 | 6 7 | 7 8 | 8 9 | 9 10 | 10 11 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/sssp/undir-input.v: -------------------------------------------------------------------------------- 1 | 1 2 | 2 3 | 3 4 | 4 5 | 5 6 | 6 7 | 7 8 | 8 9 | 9 10 | 10 11 | 11 12 | 12 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/cdlp/undir-input: -------------------------------------------------------------------------------- 1 | 1 2 3 7 2 | 2 1 3 3 | 3 1 2 4 | 4 5 6 8 5 | 5 4 6 7 8 6 | 6 4 5 7 8 7 | 7 1 5 6 8 8 | 8 4 5 6 7 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-undirected-BFS: -------------------------------------------------------------------------------- 1 | 2 0 2 | 3 1 3 | 4 1 4 | 5 2 5 | 6 3 6 | 7 4 7 | 8 2 8 | 9 4 9 | 10 4 10 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-undirected-CDLP: -------------------------------------------------------------------------------- 1 | 2 2 2 | 3 3 3 | 4 2 4 | 5 2 5 | 6 6 6 | 7 5 7 | 8 2 8 | 9 5 9 | 10 5 10 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-undirected-WCC: -------------------------------------------------------------------------------- 1 | 2 2 2 | 3 2 3 | 4 2 4 | 5 2 5 | 6 2 6 | 7 2 7 | 8 2 8 | 9 2 9 | 10 2 10 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/lcc/undir-input: -------------------------------------------------------------------------------- 1 | 2 3 4 2 | 3 2 4 5 8 3 | 4 3 2 4 | 5 3 6 8 5 | 6 5 7 8 9 10 6 | 7 6 9 7 | 8 3 5 6 8 | 9 6 7 9 | 10 6 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-directed-CDLP: -------------------------------------------------------------------------------- 1 | 1 1 2 | 2 2 3 | 3 3 4 | 4 4 5 | 5 1 6 | 6 1 7 | 7 2 8 | 8 3 9 | 9 2 10 | 10 1 11 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-directed-WCC: -------------------------------------------------------------------------------- 1 | 1 1 2 | 2 1 3 | 3 1 4 | 4 1 5 | 5 1 6 | 6 1 7 | 7 1 8 | 8 1 9 | 9 1 10 | 10 1 11 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/lcc/dir-input: -------------------------------------------------------------------------------- 1 | 1 3 5 2 | 2 4 5 10 3 | 3 1 5 8 10 4 | 4 5 | 5 3 4 8 6 | 6 3 4 7 | 7 4 8 | 8 1 9 | 9 4 10 | 10 11 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/sssp/dir-output: -------------------------------------------------------------------------------- 1 | 1 0.0 2 | 2 0.5 3 | 3 2.0 4 | 4 4.0 5 | 5 1.0 6 | 6 1.5 7 | 7 32.5 8 | 8 35.7 9 | 9 Infinity 10 | 10 24.5 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/bfs/dir-output: -------------------------------------------------------------------------------- 1 | 1 0 2 | 2 1 3 | 3 1 4 | 4 2 5 | 5 2 6 | 6 3 7 | 7 3 8 | 8 3 9 | 9 9223372036854775807 10 | 10 9223372036854775807 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/lcc/undir-output: -------------------------------------------------------------------------------- 1 | 2 1.0 2 | 3 0.333333333333 3 | 4 1.0 4 | 5 0.666666666667 5 | 6 0.2 6 | 7 1.0 7 | 8 0.666666666667 8 | 9 1.0 9 | 10 0.0 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/bfs/undir-input: -------------------------------------------------------------------------------- 1 | 1 2 3 5 8 2 | 2 1 3 4 5 8 3 | 3 1 2 8 4 | 4 2 6 7 8 5 | 5 1 2 6 | 6 4 8 7 | 7 4 8 | 8 1 2 3 4 6 9 | 9 10 10 | 10 9 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/bfs/undir-output: -------------------------------------------------------------------------------- 1 | 1 0 2 | 2 1 3 | 3 1 4 | 4 2 5 | 5 1 6 | 6 2 7 | 7 3 8 | 8 1 9 | 9 9223372036854775807 10 | 10 9223372036854775807 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-directed-input: -------------------------------------------------------------------------------- 1 | 1 3 5 2 | 2 4 5 10 3 | 3 1 5 8 10 4 | 4 5 | 5 3 4 8 6 | 6 3 4 7 | 7 4 8 | 8 1 9 | 9 4 10 | 10 11 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-undirected-input: -------------------------------------------------------------------------------- 1 | 2 3 4 2 | 3 2 4 5 8 3 | 4 2 3 4 | 5 3 6 8 5 | 6 5 7 8 9 10 6 | 7 6 9 7 | 8 3 5 6 8 | 9 6 7 9 | 10 6 10 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "utils/graph500-generator/graph500"] 2 | path = utils/graph500-generator/graph500 3 | url = https://gitorious.org/graph500/graph500-mpi-generator-only.git 4 | branch = mpi-generator-only 5 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/lcc/dir-output: -------------------------------------------------------------------------------- 1 | 1 0.666666666667 2 | 2 0.166666666667 3 | 3 0.15 4 | 4 0.05 5 | 5 0.25 6 | 6 0.0 7 | 7 0.0 8 | 8 0.833333333333 9 | 9 0.0 10 | 10 0.0 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/sssp/undir-output: -------------------------------------------------------------------------------- 1 | 1 0.0 2 | 2 0.5 3 | 3 2.0 4 | 4 4.0 5 | 5 1.0 6 | 6 1.5 7 | 7 1.0 8 | 8 4.2 9 | 9 4.5 10 | 10 4.4 11 | 11 Infinity 12 | 12 Infinity -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/sssp/dir-input.e: -------------------------------------------------------------------------------- 1 | 1 2 0.5 2 | 1 3 5.0 3 | 1 4 5.0 4 | 2 5 0.5 5 | 3 4 2.0 6 | 5 6 0.5 7 | 6 3 0.5 8 | 6 10 23.0 9 | 7 1 1.0 10 | 7 8 3.2 11 | 8 10 0.2 12 | 9 10 0.1 13 | 10 7 8.0 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-directed-BFS: -------------------------------------------------------------------------------- 1 | 1 0 2 | 2 9223372036854775807 3 | 3 1 4 | 4 2 5 | 5 1 6 | 6 9223372036854775807 7 | 7 9223372036854775807 8 | 8 2 9 | 9 9223372036854775807 10 | 10 2 11 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-undirected.e: -------------------------------------------------------------------------------- 1 | 2 3 0.9 2 | 2 4 0.69 3 | 3 4 0.13 4 | 3 5 0.5 5 | 3 8 0.32 6 | 5 6 0.63 7 | 5 8 0.12 8 | 6 7 0.53 9 | 6 8 0.64 10 | 6 9 0.23 11 | 6 10 0.63 12 | 7 9 0.36 13 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/sssp/undir-input.e: -------------------------------------------------------------------------------- 1 | 1 2 0.5 2 | 1 3 5.0 3 | 1 4 5.0 4 | 1 7 1.0 5 | 2 5 0.5 6 | 3 4 2.0 7 | 3 6 0.5 8 | 5 6 0.5 9 | 6 10 23.0 10 | 7 8 3.2 11 | 7 10 8.0 12 | 8 10 0.2 13 | 9 10 0.1 14 | 11 12 3.4 -------------------------------------------------------------------------------- /config-template/granula.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing Granula configurations 2 | 3 | benchmark.run.granula.enabled = false 4 | 5 | benchmark.run.granula.platform-logging = true 6 | benchmark.run.granula.environment-logging = false 7 | 8 | benchmark.run.granula.archiving = true 9 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-directed.e: -------------------------------------------------------------------------------- 1 | 1 3 0.5 2 | 1 5 0.3 3 | 2 4 0.1 4 | 2 5 0.3 5 | 2 10 0.12 6 | 3 1 0.53 7 | 3 5 0.62 8 | 3 8 0.21 9 | 3 10 0.52 10 | 5 3 0.69 11 | 5 4 0.53 12 | 5 8 0.1 13 | 6 3 0.23 14 | 6 4 0.39 15 | 7 4 0.83 16 | 8 1 0.39 17 | 9 4 0.69 18 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-directed-SSSP: -------------------------------------------------------------------------------- 1 | 1 0.000000000000000e+00 2 | 2 Infinity 3 | 3 5.000000000000000e-01 4 | 4 8.300000000000001e-01 5 | 5 3.000000000000000e-01 6 | 6 Infinity 7 | 7 Infinity 8 | 8 4.000000000000000e-01 9 | 9 Infinity 10 | 10 1.020000000000000e+00 11 | -------------------------------------------------------------------------------- /config-template/environment.properties: -------------------------------------------------------------------------------- 1 | # The environment 2 | environment.name = 3 | environment.acronym = 4 | environment.version = 5 | environment.link = 6 | 7 | environment.machine.quantity = 8 | environment.machine.cpu = 9 | environment.machine.memory = 10 | environment.machine.network = 11 | environment.machine.storage = 12 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-undirected-PR: -------------------------------------------------------------------------------- 1 | 2 9.084490740740739e-02 2 | 3 1.424089506172839e-01 3 | 4 9.084490740740739e-02 4 | 5 1.249891975308642e-01 5 | 6 1.686172839506173e-01 6 | 7 9.749537037037037e-02 7 | 8 1.249891975308642e-01 8 | 9 9.749537037037037e-02 9 | 10 6.231481481481481e-02 10 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-undirected-LCC: -------------------------------------------------------------------------------- 1 | 2 1.000000000000000e+00 2 | 3 3.333333333333333e-01 3 | 4 1.000000000000000e+00 4 | 5 6.666666666666666e-01 5 | 6 2.000000000000000e-01 6 | 7 1.000000000000000e+00 7 | 8 6.666666666666666e-01 8 | 9 1.000000000000000e+00 9 | 10 0.000000000000000e+00 10 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-undirected-SSSP: -------------------------------------------------------------------------------- 1 | 2 0.000000000000000e+00 2 | 3 8.200000000000000e-01 3 | 4 6.899999999999999e-01 4 | 5 1.260000000000000e+00 5 | 6 1.780000000000000e+00 6 | 7 2.310000000000000e+00 7 | 8 1.140000000000000e+00 8 | 9 2.010000000000000e+00 9 | 10 2.410000000000000e+00 10 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-directed-LCC: -------------------------------------------------------------------------------- 1 | 1 6.666666666666666e-01 2 | 2 1.666666666666667e-01 3 | 3 1.500000000000000e-01 4 | 4 5.000000000000000e-02 5 | 5 2.500000000000000e-01 6 | 6 0.000000000000000e+00 7 | 7 0.000000000000000e+00 8 | 8 8.333333333333334e-01 9 | 9 0.000000000000000e+00 10 | 10 0.000000000000000e+00 11 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/example/example-directed-PR: -------------------------------------------------------------------------------- 1 | 1 1.477629166666667e-01 2 | 2 4.753375000000000e-02 3 | 3 1.550469444444444e-01 4 | 4 1.597573611111111e-01 5 | 5 1.462400000000000e-01 6 | 6 4.753375000000000e-02 7 | 7 4.753375000000000e-02 8 | 8 1.135740277777778e-01 9 | 9 4.753375000000000e-02 10 | 10 8.748375000000001e-02 11 | -------------------------------------------------------------------------------- /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2.1 2 | 3 | orbs: 4 | maven: circleci/maven@1.4.0 5 | slack: circleci/slack@3.4.2 6 | 7 | workflows: 8 | test_and_notify: 9 | jobs: 10 | - maven/test 11 | - notify: 12 | requires: 13 | - maven/test 14 | 15 | jobs: 16 | notify: 17 | docker: 18 | - image: cimg/base:2023.03-22.04 19 | steps: 20 | - slack/status 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Java 2 | *.class 3 | *.jar 4 | target 5 | 6 | # Eclipse 7 | .classpath 8 | .project 9 | .settings 10 | 11 | # Maven 12 | /.m2 13 | .maven-classpath 14 | 15 | # Editors 16 | *~ 17 | *.swp 18 | 19 | # Project-specific 20 | /config-local 21 | /graphalytics-*.tar.gz 22 | /*-report-* 23 | /neo4j-data 24 | 25 | # Intellij 26 | *.iml 27 | *.ipr 28 | *.iws 29 | .idea/ 30 | out/ 31 | 32 | .DS_Store 33 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/resources/project/build/graphalytics-core.properties: -------------------------------------------------------------------------------- 1 | build.graphalytics-core.name=${project.artifactId} 2 | build.graphalytics-core.version=${project.version} 3 | build.graphalytics-core.link=${parent.scm.url} 4 | build.graphalytics-core.branch=${scmBranch} 5 | build.graphalytics-core.git-sha1=${buildNumber} 6 | build.graphalytics-core.timestamp=${timestamp} 7 | build.graphalytics-core.verification=${maven.buildNumber.doCheck} -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Graphalytics Changelog 2 | 3 | ## v0.1: Alpha release 4 | 5 | Changes since pre-alpha: 6 | 7 | - Added GraphX implementation of algorithms. 8 | - Added implementation of BFS using GraphLab Create 9 | - Reverted Giraph implementation to MapReduce-based implementation, available through Maven. 10 | - Refactored Giraph implementation: 11 | - Cleaned up codebase with respect to code duplication. 12 | - Removed MapReduce jobs for preprocessing. 13 | - Updated documentation of Giraph and MapReduce implementations. 14 | 15 | -------------------------------------------------------------------------------- /config-template/graphs/test-wcc-directed.properties: -------------------------------------------------------------------------------- 1 | # Filenames of graph on local filesystem 2 | graph.test-wcc-directed.vertex-file = test-wcc-directed.v 3 | graph.test-wcc-directed.edge-file = test-wcc-directed.e 4 | 5 | # Graph metadata for reporting purposes 6 | graph.test-wcc-directed.meta.vertices = 8 7 | graph.test-wcc-directed.meta.edges = 10 8 | 9 | # Properties describing the graph format 10 | graph.test-wcc-directed.directed = true 11 | 12 | # List of supported algorithms on the graph 13 | graph.test-wcc-directed.algorithms = wcc 14 | -------------------------------------------------------------------------------- /config-template/graphs/test-lcc-directed.properties: -------------------------------------------------------------------------------- 1 | # Filenames of graph on local filesystem 2 | graph.test-lcc-directed.vertex-file = test-lcc-directed.v 3 | graph.test-lcc-directed.edge-file = test-lcc-directed.e 4 | 5 | # Graph metadata for reporting purposes 6 | graph.test-lcc-directed.meta.vertices = 10 7 | graph.test-lcc-directed.meta.edges = 17 8 | 9 | # Properties describing the graph format 10 | graph.test-lcc-directed.directed = true 11 | 12 | # List of supported algorithms on the graph 13 | graph.test-lcc-directed.algorithms = lcc 14 | -------------------------------------------------------------------------------- /config-template/graphs/test-lcc-undirected.properties: -------------------------------------------------------------------------------- 1 | # Filenames of graph on local filesystem 2 | graph.test-lcc-undirected.vertex-file = test-lcc-undirected.v 3 | graph.test-lcc-undirected.edge-file = test-lcc-undirected.e 4 | 5 | # Graph metadata for reporting purposes 6 | graph.test-lcc-undirected.meta.vertices = 9 7 | graph.test-lcc-undirected.meta.edges = 12 8 | 9 | # Properties describing the graph format 10 | graph.test-lcc-undirected.directed = false 11 | 12 | # List of supported algorithms on the graph 13 | graph.test-lcc-undirected.algorithms = lcc 14 | -------------------------------------------------------------------------------- /config-template/graphs/test-wcc-undirected.properties: -------------------------------------------------------------------------------- 1 | # Filenames of graph on local filesystem 2 | graph.test-wcc-undirected.vertex-file = test-wcc-undirected.v 3 | graph.test-wcc-undirected.edge-file = test-wcc-undirected.e 4 | 5 | # Graph metadata for reporting purposes 6 | graph.test-wcc-undirected.meta.vertices = 8 7 | graph.test-wcc-undirected.meta.edges = 7 8 | 9 | # Properties describing the graph format 10 | graph.test-wcc-undirected.directed = false 11 | 12 | # List of supported algorithms on the graph 13 | graph.test-wcc-undirected.algorithms = wcc 14 | -------------------------------------------------------------------------------- /bin/utils/graph500-generator/README: -------------------------------------------------------------------------------- 1 | Graph 500 graph generator for DAS-4 2 | =================================== 3 | 4 | 5 | Usage 6 | ----- 7 | 8 | * Initialize and update submodule: 9 | cd ../.. && git submodule update --init && cd - 10 | 11 | * Compile generator: 12 | cd graph500/mpi && make && cd - 13 | 14 | * Modify TMPFILE in graph500-generate.job to point to output file. It must be available to all DAS-4 nodes used and it must not exist. 15 | 16 | * Submit the job (the Graph 500 generator binary is specified using a relative path, so the job may not work from another directory): 17 | qsub graph500-generate.job 18 | -------------------------------------------------------------------------------- /config-template/graphs/test-bfs-directed.properties: -------------------------------------------------------------------------------- 1 | # Filenames of graph on local filesystem 2 | graph.test-bfs-directed.vertex-file = test-bfs-directed.v 3 | graph.test-bfs-directed.edge-file = test-bfs-directed.e 4 | 5 | # Graph metadata for reporting purposes 6 | graph.test-bfs-directed.meta.vertices = 10 7 | graph.test-bfs-directed.meta.edges = 17 8 | 9 | # Properties describing the graph format 10 | graph.test-bfs-directed.directed = true 11 | 12 | # List of supported algorithms on the graph 13 | graph.test-bfs-directed.algorithms = bfs 14 | 15 | 16 | # Parameters for BFS 17 | graph.test-bfs-directed.bfs.source-vertex = 1 18 | -------------------------------------------------------------------------------- /config-template/graphs/test-cdlp-directed.properties: -------------------------------------------------------------------------------- 1 | # Filenames of graph on local filesystem 2 | graph.test-cdlp-directed.vertex-file = test-cdlp-directed.v 3 | graph.test-cdlp-directed.edge-file = test-cdlp-directed.e 4 | 5 | # Graph metadata for reporting purposes 6 | graph.test-cdlp-directed.meta.vertices = 8 7 | graph.test-cdlp-directed.meta.edges = 18 8 | 9 | # Properties describing the graph format 10 | graph.test-cdlp-directed.directed = true 11 | 12 | # List of supported algorithms on the graph 13 | graph.test-cdlp-directed.algorithms = cdlp 14 | 15 | 16 | # Parameters for CDLP 17 | graph.test-cdlp-directed.cdlp.max-iterations = 5 18 | -------------------------------------------------------------------------------- /config-template/graphs/test-bfs-undirected.properties: -------------------------------------------------------------------------------- 1 | # Filenames of graph on local filesystem 2 | graph.test-bfs-undirected.vertex-file = test-bfs-undirected.v 3 | graph.test-bfs-undirected.edge-file = test-bfs-undirected.e 4 | 5 | # Graph metadata for reporting purposes 6 | graph.test-bfs-undirected.meta.vertices = 10 7 | graph.test-bfs-undirected.meta.edges = 14 8 | 9 | # Properties describing the graph format 10 | graph.test-bfs-undirected.directed = false 11 | 12 | # List of supported algorithms on the graph 13 | graph.test-bfs-undirected.algorithms = bfs 14 | 15 | 16 | # Parameters for BFS 17 | graph.test-bfs-undirected.bfs.source-vertex = 1 18 | -------------------------------------------------------------------------------- /config-template/graphs/test-cdlp-undirected.properties: -------------------------------------------------------------------------------- 1 | # Filenames of graph on local filesystem 2 | graph.test-cdlp-undirected.vertex-file = test-cdlp-undirected.v 3 | graph.test-cdlp-undirected.edge-file = test-cdlp-undirected.e 4 | 5 | # Graph metadata for reporting purposes 6 | graph.test-cdlp-undirected.meta.vertices = 8 7 | graph.test-cdlp-undirected.meta.edges = 13 8 | 9 | # Properties describing the graph format 10 | graph.test-cdlp-undirected.directed = false 11 | 12 | # List of supported algorithms on the graph 13 | graph.test-cdlp-undirected.algorithms = cdlp 14 | 15 | 16 | # Parameters for CDLP 17 | graph.test-cdlp-undirected.cdlp.max-iterations = 5 18 | -------------------------------------------------------------------------------- /config-template/graphs/test-pr-directed.properties: -------------------------------------------------------------------------------- 1 | # Filenames of graph on local filesystem 2 | graph.test-pr-directed.vertex-file = test-pr-directed.v 3 | graph.test-pr-directed.edge-file = test-pr-directed.e 4 | 5 | # Graph metadata for reporting purposes 6 | graph.test-pr-directed.meta.vertices = 50 7 | graph.test-pr-directed.meta.edges = 246 8 | 9 | # Properties describing the graph format 10 | graph.test-pr-directed.directed = true 11 | 12 | # List of supported algorithms on the graph 13 | graph.test-pr-directed.algorithms = pr 14 | 15 | 16 | # Parameters for PR 17 | graph.test-pr-directed.pr.damping-factor = 0.85 18 | graph.test-pr-directed.pr.num-iterations = 14 19 | -------------------------------------------------------------------------------- /config-template/graphs/test-pr-undirected.properties: -------------------------------------------------------------------------------- 1 | # Filenames of graph on local filesystem 2 | graph.test-pr-undirected.vertex-file = test-pr-undirected.v 3 | graph.test-pr-undirected.edge-file = test-pr-undirected.e 4 | 5 | # Graph metadata for reporting purposes 6 | graph.test-pr-undirected.meta.vertices = 50 7 | graph.test-pr-undirected.meta.edges = 113 8 | 9 | # Properties describing the graph format 10 | graph.test-pr-undirected.directed = false 11 | 12 | # List of supported algorithms on the graph 13 | graph.test-pr-undirected.algorithms = pr 14 | 15 | 16 | # Parameters for PR 17 | graph.test-pr-undirected.pr.damping-factor = 0.85 18 | graph.test-pr-undirected.pr.num-iterations = 26 19 | -------------------------------------------------------------------------------- /licenses/LICENSE-HEADER: -------------------------------------------------------------------------------- 1 | Copyright 2015 - 2017 ${owner}, 2 | operating at Technische Universiteit Delft 3 | and Vrije Universiteit Amsterdam, the Netherlands. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | -------------------------------------------------------------------------------- /bin/utils/graph500-generator/graph500-generate.job: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #$ -pe openmpi 16 3 | #$ -l h_rt=0:15:00 4 | #$ -cwd 5 | 6 | APP=graph500/mpi/graph500_mpi_simple 7 | ARGS="10" 8 | 9 | # Get OpenMPI settings 10 | . /etc/bashrc 11 | module load openmpi/gcc 12 | 13 | # Make new hostfile specifying the cores per node wanted 14 | ncores=8 15 | HOSTFILE=$TMPDIR/hosts 16 | 17 | for host in `uniq $TMPDIR/machines`; do 18 | echo $host slots=$ncores 19 | done > $HOSTFILE 20 | 21 | nhosts=`wc -l < $HOSTFILE` 22 | totcores=`expr $nhosts \* $ncores` 23 | 24 | # Use regular ssh-based startup instead of OpenMPI/SGE native one 25 | unset PE_HOSTFILE 26 | PATH=/usr/bin:$PATH 27 | 28 | $MPI_RUN -np $totcores --hostfile $HOSTFILE -x TMPFILE=/var/scratch/mcapota/test -x GENERATE_ONLY=1 $APP $ARGS 29 | -------------------------------------------------------------------------------- /config-template/benchmarks/2xl.properties: -------------------------------------------------------------------------------- 1 | # Properties file for defining the benchmark type 2 | 3 | # Name and Type of the benchmark run 4 | benchmark.name = Benchmark for dataset size 2XL+ 5 | benchmark.type = custom 6 | 7 | # Select a subset of the graphs 8 | benchmark.custom.graphs = \ 9 | graph500-28, \ 10 | graph500-29, \ 11 | graph500-30, \ 12 | datagen-sf10k-fb 13 | 14 | # Select a subset of the algorithms 15 | benchmark.custom.algorithms = \ 16 | BFS, \ 17 | CDLP, \ 18 | LCC, \ 19 | PR, \ 20 | WCC, \ 21 | SSSP 22 | 23 | # Specify the duration before a benchmark run is timed out. 24 | benchmark.custom.timeout = 10800 25 | 26 | # Specify if output and validation is required. 27 | benchmark.custom.output-required = true 28 | benchmark.custom.validation-required = true 29 | 30 | benchmark.custom.repetitions = 3 31 | -------------------------------------------------------------------------------- /config-template/graphs/test-sssp-directed.properties: -------------------------------------------------------------------------------- 1 | # Filenames of graph on local filesystem 2 | graph.test-sssp-directed.vertex-file = test-sssp-directed.v 3 | graph.test-sssp-directed.edge-file = test-sssp-directed.e 4 | 5 | # Graph metadata for reporting purposes 6 | graph.test-sssp-directed.meta.vertices = 10 7 | graph.test-sssp-directed.meta.edges = 13 8 | 9 | # Properties describing the graph format 10 | graph.test-sssp-directed.directed = true 11 | 12 | # Description of graph properties 13 | graph.test-sssp-directed.edge-properties.names = weight 14 | graph.test-sssp-directed.edge-properties.types = real 15 | 16 | # List of supported algorithms on the graph 17 | graph.test-sssp-directed.algorithms = sssp 18 | 19 | 20 | # Parameters for SSSP 21 | graph.test-sssp-directed.sssp.weight-property = weight 22 | graph.test-sssp-directed.sssp.source-vertex = 1 23 | -------------------------------------------------------------------------------- /config-template/graphs/test-sssp-undirected.properties: -------------------------------------------------------------------------------- 1 | # Filenames of graph on local filesystem 2 | graph.test-sssp-undirected.vertex-file = test-sssp-undirected.v 3 | graph.test-sssp-undirected.edge-file = test-sssp-undirected.e 4 | 5 | # Graph metadata for reporting purposes 6 | graph.test-sssp-undirected.meta.vertices = 12 7 | graph.test-sssp-undirected.meta.edges = 14 8 | 9 | # Properties describing the graph format 10 | graph.test-sssp-undirected.directed = false 11 | 12 | # Description of graph properties 13 | graph.test-sssp-undirected.edge-properties.names = weight 14 | graph.test-sssp-undirected.edge-properties.types = real 15 | 16 | # List of supported algorithms on the graph 17 | graph.test-sssp-undirected.algorithms = sssp 18 | 19 | 20 | # Parameters for SSSP 21 | graph.test-sssp-undirected.sssp.weight-property = weight 22 | graph.test-sssp-undirected.sssp.source-vertex = 1 23 | -------------------------------------------------------------------------------- /config-template/benchmarks/l.properties: -------------------------------------------------------------------------------- 1 | # Properties file for defining the benchmark type 2 | 3 | # Name and Type of the benchmark run 4 | benchmark.name = Benchmark for dataset size L 5 | benchmark.type = custom 6 | 7 | # Select a subset of the graphs 8 | benchmark.custom.graphs = \ 9 | graph500-25, \ 10 | datagen-8_5-fb, \ 11 | datagen-8_6-fb, \ 12 | datagen-8_7-zf, \ 13 | datagen-8_8-zf, \ 14 | datagen-8_9-fb 15 | 16 | # Select a subset of the algorithms 17 | benchmark.custom.algorithms = \ 18 | BFS, \ 19 | CDLP, \ 20 | LCC, \ 21 | PR, \ 22 | WCC, \ 23 | SSSP 24 | 25 | # Specify the duration before a benchmark run is timed out. 26 | benchmark.custom.timeout = 3600 27 | 28 | # Specify if output and validation is required. 29 | benchmark.custom.output-required = true 30 | benchmark.custom.validation-required = true 31 | 32 | benchmark.custom.repetitions = 3 33 | -------------------------------------------------------------------------------- /config-template/benchmarks/m.properties: -------------------------------------------------------------------------------- 1 | # Properties file for defining the benchmark type 2 | 3 | # Name and Type of the benchmark run 4 | benchmark.name = Benchmark for dataset size M 5 | benchmark.type = custom 6 | 7 | # Select a subset of the graphs 8 | benchmark.custom.graphs = \ 9 | graph500-23, \ 10 | graph500-24, \ 11 | datagen-8_0-fb, \ 12 | datagen-8_1-fb, \ 13 | datagen-8_2-zf, \ 14 | datagen-8_3-zf, \ 15 | datagen-8_4-fb 16 | 17 | # Select a subset of the algorithms 18 | benchmark.custom.algorithms = \ 19 | BFS, \ 20 | CDLP, \ 21 | LCC, \ 22 | PR, \ 23 | WCC, \ 24 | SSSP 25 | 26 | # Specify the duration before a benchmark run is timed out. 27 | benchmark.custom.timeout = 1800 28 | 29 | # Specify if output and validation is required. 30 | benchmark.custom.output-required = true 31 | benchmark.custom.validation-required = true 32 | 33 | benchmark.custom.repetitions = 3 34 | -------------------------------------------------------------------------------- /config-template/benchmarks/s.properties: -------------------------------------------------------------------------------- 1 | # Properties file for defining the benchmark type 2 | 3 | # Name and Type of the benchmark run 4 | benchmark.name = Benchmark for dataset size S 5 | benchmark.type = custom 6 | 7 | # Select a subset of the graphs 8 | benchmark.custom.graphs = \ 9 | graph500-22, \ 10 | dota-league, \ 11 | datagen-7_5-fb, \ 12 | datagen-7_6-fb, \ 13 | datagen-7_7-zf, \ 14 | datagen-7_8-zf, \ 15 | datagen-7_9-fb 16 | 17 | # Select a subset of the algorithms 18 | benchmark.custom.algorithms = \ 19 | BFS, \ 20 | CDLP, \ 21 | LCC, \ 22 | PR, \ 23 | WCC, \ 24 | SSSP 25 | 26 | # Specify the duration before a benchmark run is timed out. 27 | benchmark.custom.timeout = 900 28 | 29 | # Specify if output and validation is required. 30 | benchmark.custom.output-required = true 31 | benchmark.custom.validation-required = true 32 | 33 | benchmark.custom.repetitions = 3 34 | -------------------------------------------------------------------------------- /scripts/build-local.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015 - 2017 Atlarge Research Team, 4 | # operating at Technische Universiteit Delft 5 | # and Vrije Universiteit Amsterdam, the Netherlands. 6 | # 7 | # Licensed under the Apache License, Version 2.0 (the "License"); 8 | # you may not use this file except in compliance with the License. 9 | # You may obtain a copy of the License at 10 | # 11 | # http://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, software 14 | # distributed under the License is distributed on an "AS IS" BASIS, 15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | # See the License for the specific language governing permissions and 17 | # limitations under the License. 18 | # 19 | 20 | set -eu 21 | set -o pipefail 22 | 23 | cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" 24 | cd .. 25 | 26 | mvn clean package -Dmaven.buildNumber.doCheck=false 27 | -------------------------------------------------------------------------------- /scripts/install-local.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015 - 2017 Atlarge Research Team, 4 | # operating at Technische Universiteit Delft 5 | # and Vrije Universiteit Amsterdam, the Netherlands. 6 | # 7 | # Licensed under the Apache License, Version 2.0 (the "License"); 8 | # you may not use this file except in compliance with the License. 9 | # You may obtain a copy of the License at 10 | # 11 | # http://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, software 14 | # distributed under the License is distributed on an "AS IS" BASIS, 15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | # See the License for the specific language governing permissions and 17 | # limitations under the License. 18 | # 19 | 20 | set -eu 21 | set -o pipefail 22 | 23 | cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" 24 | cd .. 25 | 26 | mvn clean install -Dmaven.buildNumber.doCheck=false 27 | -------------------------------------------------------------------------------- /config-template/benchmarks/xl.properties: -------------------------------------------------------------------------------- 1 | # Properties file for defining the benchmark type 2 | 3 | # Name and Type of the benchmark run 4 | benchmark.name = Benchmark for dataset size XL 5 | benchmark.type = custom 6 | 7 | # Select a subset of the graphs 8 | benchmark.custom.graphs = \ 9 | graph500-26, \ 10 | graph500-27, \ 11 | com-friendster, \ 12 | twitter_mpi, \ 13 | datagen-9_0-fb, \ 14 | datagen-9_1-fb, \ 15 | datagen-9_2-zf, \ 16 | datagen-9_3-zf, \ 17 | datagen-9_4-fb, \ 18 | datagen-sf3k-fb 19 | 20 | # Select a subset of the algorithms 21 | benchmark.custom.algorithms = \ 22 | BFS, \ 23 | CDLP, \ 24 | LCC, \ 25 | PR, \ 26 | WCC, \ 27 | SSSP 28 | 29 | # Specify the duration before a benchmark run is timed out. 30 | benchmark.custom.timeout = 7200 31 | 32 | # Specify if output and validation is required. 33 | benchmark.custom.output-required = true 34 | benchmark.custom.validation-required = true 35 | 36 | benchmark.custom.repetitions = 3 37 | -------------------------------------------------------------------------------- /config-template/graphs/graph500-22.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing a generated Graph 500 dataset with scale 22 2 | 3 | # Filename of graph on local filesystem 4 | graph.graph500-22.vertex-file = graph500-22.v 5 | graph.graph500-22.edge-file = graph500-22.e 6 | 7 | # Graph metadata for reporting purposes 8 | graph.graph500-22.meta.vertices = 2396657 9 | graph.graph500-22.meta.edges = 64155735 10 | 11 | # Properties describing the graph format 12 | graph.graph500-22.directed = false 13 | 14 | # List of supported algorithms on the graph 15 | graph.graph500-22.algorithms = bfs, cdlp, lcc, pr, wcc 16 | 17 | 18 | # 19 | # Per-algorithm properties describing the input parameters to each algorithm 20 | # 21 | 22 | # Parameters for BFS 23 | graph.graph500-22.bfs.source-vertex = 248533 24 | 25 | # Parameters for CDLP 26 | graph.graph500-22.cdlp.max-iterations = 10 27 | 28 | # No parameters for LCC 29 | 30 | # Parameters for PR 31 | graph.graph500-22.pr.damping-factor = 0.85 32 | graph.graph500-22.pr.num-iterations = 10 33 | 34 | # No parameters for WCC 35 | -------------------------------------------------------------------------------- /config-template/graphs/graph500-23.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing a generated Graph 500 dataset with scale 23 2 | 3 | # Filename of graph on local filesystem 4 | graph.graph500-23.vertex-file = graph500-23.v 5 | graph.graph500-23.edge-file = graph500-23.e 6 | 7 | # Graph metadata for reporting purposes 8 | graph.graph500-23.meta.vertices = 4610222 9 | graph.graph500-23.meta.edges = 129333677 10 | 11 | # Properties describing the graph format 12 | graph.graph500-23.directed = false 13 | 14 | # List of supported algorithms on the graph 15 | graph.graph500-23.algorithms = bfs, cdlp, lcc, pr, wcc 16 | 17 | 18 | # 19 | # Per-algorithm properties describing the input parameters to each algorithm 20 | # 21 | 22 | # Parameters for BFS 23 | graph.graph500-23.bfs.source-vertex = 7348998 24 | 25 | # Parameters for CDLP 26 | graph.graph500-23.cdlp.max-iterations = 10 27 | 28 | # No parameters for LCC 29 | 30 | # Parameters for PR 31 | graph.graph500-23.pr.damping-factor = 0.85 32 | graph.graph500-23.pr.num-iterations = 10 33 | 34 | # No parameters for WCC 35 | -------------------------------------------------------------------------------- /config-template/graphs/graph500-24.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing a generated Graph 500 dataset with scale 24 2 | 3 | # Filename of graph on local filesystem 4 | graph.graph500-24.vertex-file = graph500-24.v 5 | graph.graph500-24.edge-file = graph500-24.e 6 | 7 | # Graph metadata for reporting purposes 8 | graph.graph500-24.meta.vertices = 8870942 9 | graph.graph500-24.meta.edges = 260379520 10 | 11 | # Properties describing the graph format 12 | graph.graph500-24.directed = false 13 | 14 | # List of supported algorithms on the graph 15 | graph.graph500-24.algorithms = bfs, cdlp, lcc, pr, wcc 16 | 17 | 18 | # 19 | # Per-algorithm properties describing the input parameters to each algorithm 20 | # 21 | 22 | # Parameters for BFS 23 | graph.graph500-24.bfs.source-vertex = 2592222 24 | 25 | # Parameters for CDLP 26 | graph.graph500-24.cdlp.max-iterations = 10 27 | 28 | # No parameters for LCC 29 | 30 | # Parameters for PR 31 | graph.graph500-24.pr.damping-factor = 0.85 32 | graph.graph500-24.pr.num-iterations = 10 33 | 34 | # No parameters for WCC 35 | -------------------------------------------------------------------------------- /config-template/graphs/graph500-27.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing a generated Graph 500 dataset with scale 27 2 | 3 | # Filename of graph on local filesystem 4 | graph.graph500-27.vertex-file = graph500-27.v 5 | graph.graph500-27.edge-file = graph500-27.e 6 | 7 | # Graph metadata for reporting purposes 8 | graph.graph500-27.meta.vertices = 63081040 9 | graph.graph500-27.meta.edges = 2111642032 10 | 11 | # Properties describing the graph format 12 | graph.graph500-27.directed = false 13 | 14 | # List of supported algorithms on the graph 15 | graph.graph500-27.algorithms = bfs, cdlp, lcc, pr, wcc 16 | 17 | 18 | # 19 | # Per-algorithm properties describing the input parameters to each algorithm 20 | # 21 | 22 | # Parameters for BFS 23 | graph.graph500-27.bfs.source-vertex = 0 24 | 25 | # Parameters for CDLP 26 | graph.graph500-27.cdlp.max-iterations = 10 27 | 28 | # No parameters for LCC 29 | 30 | # Parameters for PR 31 | graph.graph500-27.pr.damping-factor = 0.85 32 | graph.graph500-27.pr.num-iterations = 10 33 | 34 | # No parameters for WCC 35 | -------------------------------------------------------------------------------- /config-template/graphs/graph500-28.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing a generated Graph 500 dataset with scale 28 2 | 3 | # Filename of graph on local filesystem 4 | graph.graph500-28.vertex-file = graph500-28.v 5 | graph.graph500-28.edge-file = graph500-28.e 6 | 7 | # Graph metadata for reporting purposes 8 | graph.graph500-28.meta.vertices = 121242388 9 | graph.graph500-28.meta.edges = 4236163958 10 | 11 | # Properties describing the graph format 12 | graph.graph500-28.directed = false 13 | 14 | # List of supported algorithms on the graph 15 | graph.graph500-28.algorithms = bfs, cdlp, lcc, pr, wcc 16 | 17 | 18 | # 19 | # Per-algorithm properties describing the input parameters to each algorithm 20 | # 21 | 22 | # Parameters for BFS 23 | graph.graph500-28.bfs.source-vertex = 0 24 | 25 | # Parameters for CDLP 26 | graph.graph500-28.cdlp.max-iterations = 10 27 | 28 | # No parameters for LCC 29 | 30 | # Parameters for PR 31 | graph.graph500-28.pr.damping-factor = 0.85 32 | graph.graph500-28.pr.num-iterations = 10 33 | 34 | # No parameters for WCC 35 | -------------------------------------------------------------------------------- /config-template/graphs/graph500-29.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing a generated Graph 500 dataset with scale 29 2 | 3 | # Filename of graph on local filesystem 4 | graph.graph500-29.vertex-file = graph500-29.v 5 | graph.graph500-29.edge-file = graph500-29.e 6 | 7 | # Graph metadata for reporting purposes 8 | graph.graph500-29.meta.vertices = 232999630 9 | graph.graph500-29.meta.edges = 8493569115 10 | 11 | # Properties describing the graph format 12 | graph.graph500-29.directed = false 13 | 14 | # List of supported algorithms on the graph 15 | graph.graph500-29.algorithms = bfs, cdlp, lcc, pr, wcc 16 | 17 | 18 | # 19 | # Per-algorithm properties describing the input parameters to each algorithm 20 | # 21 | 22 | # Parameters for BFS 23 | graph.graph500-29.bfs.source-vertex = 0 24 | 25 | # Parameters for CDLP 26 | graph.graph500-29.cdlp.max-iterations = 10 27 | 28 | # No parameters for LCC 29 | 30 | # Parameters for PR 31 | graph.graph500-29.pr.damping-factor = 0.85 32 | graph.graph500-29.pr.num-iterations = 10 33 | 34 | # No parameters for WCC 35 | -------------------------------------------------------------------------------- /config-template/graphs/graph500-30.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing a generated Graph 500 dataset with scale 30 2 | 3 | # Filename of graph on local filesystem 4 | graph.graph500-30.vertex-file = graph500-30.v 5 | graph.graph500-30.edge-file = graph500-30.e 6 | 7 | # Graph metadata for reporting purposes 8 | graph.graph500-30.meta.vertices = 447797986 9 | graph.graph500-30.meta.edges = 17022117362 10 | 11 | # Properties describing the graph format 12 | graph.graph500-30.directed = false 13 | 14 | # List of supported algorithms on the graph 15 | graph.graph500-30.algorithms = bfs, cdlp, lcc, pr, wcc 16 | 17 | 18 | # 19 | # Per-algorithm properties describing the input parameters to each algorithm 20 | # 21 | 22 | # Parameters for BFS 23 | graph.graph500-30.bfs.source-vertex = 0 24 | 25 | # Parameters for CDLP 26 | graph.graph500-30.cdlp.max-iterations = 10 27 | 28 | # No parameters for LCC 29 | 30 | # Parameters for PR 31 | graph.graph500-30.pr.damping-factor = 0.85 32 | graph.graph500-30.pr.num-iterations = 10 33 | 34 | # No parameters for WCC 35 | -------------------------------------------------------------------------------- /config-template/graphs/graph500-25.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing a generated Graph 500 dataset with scale 25 2 | 3 | # Filename of graph on local filesystem 4 | graph.graph500-25.vertex-file = graph500-25.v 5 | graph.graph500-25.edge-file = graph500-25.e 6 | 7 | # Graph metadata for reporting purposes 8 | graph.graph500-25.meta.vertices = 17062472 9 | graph.graph500-25.meta.edges = 523602831 10 | 11 | # Properties describing the graph format 12 | graph.graph500-25.directed = false 13 | 14 | # List of supported algorithms on the graph 15 | graph.graph500-25.algorithms = bfs, cdlp, lcc, pr, wcc 16 | 17 | 18 | # 19 | # Per-algorithm properties describing the input parameters to each algorithm 20 | # 21 | 22 | # Parameters for BFS 23 | graph.graph500-25.bfs.source-vertex = 24460635 24 | 25 | # Parameters for CDLP 26 | graph.graph500-25.cdlp.max-iterations = 10 27 | 28 | # No parameters for LCC 29 | 30 | # Parameters for PR 31 | graph.graph500-25.pr.damping-factor = 0.85 32 | graph.graph500-25.pr.num-iterations = 10 33 | 34 | # No parameters for WCC 35 | -------------------------------------------------------------------------------- /config-template/graphs/graph500-26.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing a generated Graph 500 dataset with scale 26 2 | 3 | # Filename of graph on local filesystem 4 | graph.graph500-26.vertex-file = graph500-26.v 5 | graph.graph500-26.edge-file = graph500-26.e 6 | 7 | # Graph metadata for reporting purposes 8 | graph.graph500-26.meta.vertices = 32804978 9 | graph.graph500-26.meta.edges = 1051922853 10 | 11 | # Properties describing the graph format 12 | graph.graph500-26.directed = false 13 | 14 | # List of supported algorithms on the graph 15 | graph.graph500-26.algorithms = bfs, cdlp, lcc, pr, wcc 16 | 17 | 18 | # 19 | # Per-algorithm properties describing the input parameters to each algorithm 20 | # 21 | 22 | # Parameters for BFS 23 | graph.graph500-26.bfs.source-vertex = 62455266 24 | 25 | # Parameters for CDLP 26 | graph.graph500-26.cdlp.max-iterations = 10 27 | 28 | # No parameters for LCC 29 | 30 | # Parameters for PR 31 | graph.graph500-26.pr.damping-factor = 0.85 32 | graph.graph500-26.pr.num-iterations = 10 33 | 34 | # No parameters for WCC 35 | -------------------------------------------------------------------------------- /config-template/graphs/wiki-Talk.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing the wiki-Talk dataset 2 | # Link: http://snap.stanford.edu/data/wiki-Talk.html 3 | 4 | # Filenames of graph on local filesystem 5 | graph.wiki-Talk.vertex-file = wiki-Talk.v 6 | graph.wiki-Talk.edge-file = wiki-Talk.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.wiki-Talk.meta.vertices = 2394385 10 | graph.wiki-Talk.meta.edges = 5021410 11 | 12 | # Properties describing the graph format 13 | graph.wiki-Talk.directed = true 14 | 15 | # List of supported algorithms on the graph 16 | graph.wiki-Talk.algorithms = bfs, cdlp, lcc, pr, wcc 17 | 18 | 19 | # 20 | # Per-algorithm properties describing the input parameters to each algorithm 21 | # 22 | 23 | # Parameters for BFS 24 | graph.wiki-Talk.bfs.source-vertex = 2 25 | 26 | # Parameters for CDLP 27 | graph.wiki-Talk.cdlp.max-iterations = 10 28 | 29 | # No parameters for LCC 30 | 31 | # Parameters for PR 32 | graph.wiki-Talk.pr.damping-factor = 0.85 33 | graph.wiki-Talk.pr.num-iterations = 10 34 | 35 | # No parameters for WCC 36 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/ffm/undir-input: -------------------------------------------------------------------------------- 1 | 1 20 23 25 41 2 | 2 9 10 19 28 49 3 | 3 4 | 4 9 26 29 33 37 5 | 5 15 45 6 | 6 8 9 13 21 24 26 7 | 7 13 25 28 8 | 8 6 14 16 17 25 38 9 | 9 2 4 6 17 19 40 47 10 | 10 2 11 13 39 11 | 11 10 13 19 22 37 39 42 12 | 12 49 13 | 13 6 7 10 11 17 40 41 14 | 14 8 18 38 15 | 15 5 21 28 16 | 16 8 28 50 17 | 17 8 9 13 20 36 18 | 18 14 34 42 19 | 19 2 9 11 35 37 46 48 20 | 20 1 17 41 21 | 21 6 15 26 32 33 41 48 22 | 22 11 24 28 44 23 | 23 1 50 24 | 24 6 22 25 28 42 25 | 25 1 7 8 24 43 26 | 26 4 6 21 34 37 41 48 27 | 27 38 45 46 48 49 28 | 28 2 7 15 16 22 24 40 29 | 29 4 46 49 30 | 30 33 41 44 31 | 31 37 40 41 43 45 32 | 32 21 34 40 49 33 | 33 4 21 30 34 | 34 18 26 32 35 42 43 35 | 35 19 34 48 36 | 36 17 37 | 37 4 11 19 26 31 47 38 | 38 8 14 27 45 48 39 | 39 10 11 46 48 49 40 | 40 9 13 28 31 32 46 41 | 41 1 13 20 21 26 30 31 42 42 | 42 11 18 24 34 41 49 43 | 43 25 31 34 44 | 44 22 30 45 | 45 5 27 31 38 46 | 46 19 27 29 39 40 47 | 47 9 37 49 48 | 48 19 21 26 27 35 38 39 49 | 49 2 12 27 29 32 39 42 47 50 | 50 16 23 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/pr/undir-input: -------------------------------------------------------------------------------- 1 | 1 20 23 25 41 2 | 2 9 10 19 28 49 3 | 3 5 4 | 4 9 26 29 33 37 5 | 5 3 15 45 6 | 6 8 9 13 21 24 26 7 | 7 13 25 28 8 | 8 6 14 16 17 25 38 9 | 9 2 4 6 17 19 40 47 10 | 10 2 11 13 39 11 | 11 10 13 19 22 37 39 42 12 | 12 49 13 | 13 6 7 10 11 17 40 41 14 | 14 8 18 38 15 | 15 5 21 28 16 | 16 8 28 50 17 | 17 8 9 13 20 36 18 | 18 14 34 42 19 | 19 2 9 11 35 37 46 48 20 | 20 1 17 41 21 | 21 6 15 26 32 33 41 48 22 | 22 11 24 28 44 23 | 23 1 50 24 | 24 6 22 25 28 42 25 | 25 1 7 8 24 43 26 | 26 4 6 21 34 37 41 48 27 | 27 38 45 46 48 49 28 | 28 2 7 15 16 22 24 40 29 | 29 4 46 49 30 | 30 33 41 44 31 | 31 37 40 41 43 45 32 | 32 21 34 40 49 33 | 33 4 21 30 34 | 34 18 26 32 35 42 43 35 | 35 19 34 48 36 | 36 17 37 | 37 4 11 19 26 31 47 38 | 38 8 14 27 45 48 39 | 39 10 11 46 48 49 40 | 40 9 13 28 31 32 46 41 | 41 1 13 20 21 26 30 31 42 42 | 42 11 18 24 34 41 49 43 | 43 25 31 34 44 | 44 22 30 45 | 45 5 27 31 38 46 | 46 19 27 29 39 40 47 | 47 9 37 49 48 | 48 19 21 26 27 35 38 39 49 | 49 2 12 27 29 32 39 42 47 50 | 50 16 23 -------------------------------------------------------------------------------- /config-template/benchmarks/test.properties: -------------------------------------------------------------------------------- 1 | # Properties file for defining the benchmark type 2 | 3 | # Name and Type of the benchmark run 4 | benchmark.name = Test Benchmark 5 | benchmark.type = custom 6 | 7 | # Select a subset of the graphs 8 | benchmark.custom.graphs = \ 9 | test-bfs-directed, test-bfs-undirected, \ 10 | test-cdlp-directed, test-cdlp-undirected, \ 11 | test-lcc-directed, test-lcc-undirected, \ 12 | test-pr-directed, test-pr-undirected, \ 13 | test-sssp-directed, test-sssp-undirected, \ 14 | test-wcc-directed, test-wcc-undirected, \ 15 | example-directed, example-undirected 16 | 17 | # Select a subset of the algorithms 18 | benchmark.custom.algorithms = \ 19 | BFS, \ 20 | CDLP, \ 21 | LCC, \ 22 | PR, \ 23 | WCC, \ 24 | SSSP 25 | 26 | # Specify the duration before a benchmark run is timed out. 27 | benchmark.custom.timeout = 3600 28 | 29 | # Specify if output and validation is required. 30 | benchmark.custom.output-required = true 31 | benchmark.custom.validation-required = true 32 | 33 | benchmark.custom.repetitions = 1 34 | -------------------------------------------------------------------------------- /config-template/graphs/cit-Patents.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing the citation-Patents dataset 2 | # Link: http://snap.stanford.edu/data/cit-Patents.html 3 | 4 | # Filenames of graph on local filesystem 5 | graph.cit-Patents.vertex-file = cit-Patents.v 6 | graph.cit-Patents.edge-file = cit-Patents.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.cit-Patents.meta.vertices = 3774768 10 | graph.cit-Patents.meta.edges = 16518948 11 | 12 | # Properties describing the graph format 13 | graph.cit-Patents.directed = true 14 | 15 | # List of supported algorithms on the graph 16 | graph.cit-Patents.algorithms = bfs, cdlp, lcc, pr, wcc 17 | 18 | 19 | # 20 | # Per-algorithm properties describing the input parameters to each algorithm 21 | # 22 | 23 | # Parameters for BFS 24 | graph.cit-Patents.bfs.source-vertex = 6009541 25 | 26 | # Parameters for CDLP 27 | graph.cit-Patents.cdlp.max-iterations = 10 28 | 29 | # No parameters for LCC 30 | 31 | # Parameters for PR 32 | graph.cit-Patents.pr.damping-factor = 0.85 33 | graph.cit-Patents.pr.num-iterations = 10 34 | 35 | # No parameters for WCC 36 | -------------------------------------------------------------------------------- /config-template/graphs/twitter_mpi.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing the Twitter (MPI) dataset 2 | # Link: http://konect.uni-koblenz.de/networks/twitter_mpi 3 | 4 | # Filenames of graph on local filesystem 5 | graph.twitter_mpi.vertex-file = twitter_mpi.v 6 | graph.twitter_mpi.edge-file = twitter_mpi.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.twitter_mpi.meta.vertices = 52579678 10 | graph.twitter_mpi.meta.edges = 1963263508 11 | 12 | # Properties describing the graph format 13 | graph.twitter_mpi.directed = true 14 | 15 | # List of supported algorithms on the graph 16 | graph.twitter_mpi.algorithms = bfs, cdlp, lcc, pr, wcc 17 | 18 | 19 | # 20 | # Per-algorithm properties describing the input parameters to each algorithm 21 | # 22 | 23 | # Parameters for BFS 24 | graph.twitter_mpi.bfs.source-vertex = 420 25 | 26 | # Parameters for CDLP 27 | graph.twitter_mpi.cdlp.max-iterations = 10 28 | 29 | # No parameters for LCC 30 | 31 | # Parameters for PR 32 | graph.twitter_mpi.pr.damping-factor = 0.85 33 | graph.twitter_mpi.pr.num-iterations = 10 34 | 35 | # No parameters for WCC 36 | -------------------------------------------------------------------------------- /scripts/package-mvn-artifacts.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015 - 2017 Atlarge Research Team, 4 | # operating at Technische Universiteit Delft 5 | # and Vrije Universiteit Amsterdam, the Netherlands. 6 | # 7 | # Licensed under the Apache License, Version 2.0 (the "License"); 8 | # you may not use this file except in compliance with the License. 9 | # You may obtain a copy of the License at 10 | # 11 | # http://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, software 14 | # distributed under the License is distributed on an "AS IS" BASIS, 15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | # See the License for the specific language governing permissions and 17 | # limitations under the License. 18 | # 19 | 20 | set -eu 21 | set -o pipefail 22 | 23 | cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" 24 | cd .. 25 | 26 | git clean -xdf . 27 | mvn clean deploy $@ 28 | find . -type d -name graphalytics-mvn -print0 | xargs -0 -I {} bash -c "cp -r {}/* ../graphalytics-mvn/" 29 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/pr/dir-input: -------------------------------------------------------------------------------- 1 | 1 19 21 22 27 31 37 45 48 2 | 2 3 20 39 46 3 | 3 6 10 32 41 45 4 | 4 15 5 | 5 15 16 18 28 47 6 | 6 49 7 | 7 6 27 43 46 8 | 8 5 21 29 30 32 43 9 | 9 16 18 21 28 30 35 40 10 | 10 9 13 28 29 33 11 | 11 3 39 12 | 12 47 50 13 | 13 7 12 17 32 48 14 | 14 4 20 21 35 38 40 15 | 15 8 24 31 35 44 16 | 16 17 | 17 5 9 11 16 26 37 18 | 18 1 12 28 30 44 45 47 50 19 | 19 10 11 13 27 38 20 | 20 15 25 21 | 21 22 27 31 32 40 22 | 22 19 26 27 31 23 | 23 22 35 36 38 40 46 47 24 | 24 9 13 15 34 36 50 25 | 25 8 24 30 34 41 47 26 | 26 7 31 37 40 44 47 27 | 27 31 33 43 28 | 28 8 32 42 45 29 | 29 1 2 12 14 16 19 20 36 30 | 30 9 24 34 44 31 | 31 11 17 32 39 46 47 32 | 32 2 28 29 30 31 33 | 33 7 8 9 10 32 34 37 34 | 34 26 48 35 | 35 3 10 17 24 26 28 33 41 36 | 36 20 21 29 32 46 37 | 37 1 5 9 13 23 24 38 | 38 2 22 50 39 | 39 6 8 20 28 30 47 48 40 | 40 5 7 8 11 33 34 37 49 41 | 41 24 43 42 | 42 43 | 43 1 2 11 15 17 29 38 47 44 | 44 11 13 15 45 | 45 5 11 12 21 24 46 | 46 23 24 26 31 36 41 47 | 47 8 14 16 28 29 34 35 40 42 46 50 48 | 48 8 19 30 35 38 43 50 49 | 49 7 8 17 18 50 | 50 4 28 47 -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/ffm/dir-input: -------------------------------------------------------------------------------- 1 | 1 19 21 22 27 31 37 45 48 2 | 2 3 20 39 46 3 | 3 6 10 32 41 45 4 | 4 15 5 | 5 15 16 18 28 47 6 | 6 49 7 | 7 6 27 43 46 8 | 8 5 21 29 30 32 43 9 | 9 16 18 21 28 30 35 40 10 | 10 9 13 28 29 33 11 | 11 3 39 12 | 12 47 50 13 | 13 7 12 17 32 48 14 | 14 4 20 21 35 38 40 15 | 15 8 24 31 35 44 16 | 16 20 17 | 17 5 9 11 16 26 37 18 | 18 1 12 28 30 44 45 47 50 19 | 19 10 11 13 27 38 20 | 20 15 25 21 | 21 22 27 31 32 40 22 | 22 19 26 27 31 23 | 23 22 35 36 38 40 46 47 24 | 24 9 13 15 34 36 50 25 | 25 8 24 30 34 41 47 26 | 26 7 31 37 40 44 47 27 | 27 31 33 43 28 | 28 8 32 42 45 29 | 29 1 2 12 14 16 19 20 36 30 | 30 9 24 34 44 31 | 31 11 17 32 39 46 47 32 | 32 2 28 29 30 31 33 | 33 7 8 9 10 32 34 37 34 | 34 26 48 35 | 35 3 10 17 24 26 28 33 41 36 | 36 20 21 29 32 46 37 | 37 1 5 9 13 23 24 38 | 38 2 22 50 39 | 39 6 8 20 28 30 47 48 40 | 40 5 7 8 11 33 34 37 49 41 | 41 24 43 42 | 42 23 43 | 43 1 2 11 15 17 29 38 47 44 | 44 11 13 15 45 | 45 5 11 12 21 24 46 | 46 23 24 26 31 36 41 47 | 47 8 14 16 28 29 34 35 40 42 46 50 48 | 48 8 19 30 35 38 43 50 49 | 49 7 8 17 18 50 | 50 4 28 47 -------------------------------------------------------------------------------- /config-template/graphs/com-friendster.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing the Friendster dataset 2 | # Link: http://snap.stanford.edu/data/com-Friendster.html 3 | 4 | # Filenames of graph on local filesystem 5 | graph.com-friendster.vertex-file = com-friendster.v 6 | graph.com-friendster.edge-file = com-friendster.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.com-friendster.meta.vertices = 65608366 10 | graph.com-friendster.meta.edges = 1806067135 11 | 12 | # Properties describing the graph format 13 | graph.com-friendster.directed = false 14 | 15 | # List of supported algorithms on the graph 16 | graph.com-friendster.algorithms = bfs, cdlp, lcc, pr, wcc 17 | 18 | 19 | # 20 | # Per-algorithm properties describing the input parameters to each algorithm 21 | # 22 | 23 | # Parameters for BFS 24 | graph.com-friendster.bfs.source-vertex = 101 25 | 26 | # Parameters for CDLP 27 | graph.com-friendster.cdlp.max-iterations = 10 28 | 29 | # No parameters for LCC 30 | 31 | # Parameters for PR 32 | graph.com-friendster.pr.damping-factor = 0.85 33 | graph.com-friendster.pr.num-iterations = 10 34 | 35 | # No parameters for WCC 36 | -------------------------------------------------------------------------------- /graphalytics-validation/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.0.0 3 | 4 | graphalytics-validation 5 | jar 6 | 7 | science.atlarge.graphalytics 8 | graphalytics-root 9 | 1.11.0-SNAPSHOT 10 | ../pom.xml 11 | 12 | 13 | 14 | 15 | science.atlarge.graphalytics 16 | graphalytics-core 17 | 1.11.0-SNAPSHOT 18 | 19 | 20 | 21 | junit 22 | junit 23 | 4.11 24 | compile 25 | 26 | 27 | org.hamcrest 28 | hamcrest-all 29 | 1.3 30 | compile 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/execution/AbstractPlatform.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.execution; 19 | 20 | 21 | /** 22 | * Partial implementation of the Platform interface that provides default no-op implementations for non-essential 23 | * methods. 24 | * 25 | * @author Tim Hegeman 26 | * @author Wing Lung Ngai 27 | */ 28 | public abstract class AbstractPlatform implements Platform { 29 | 30 | 31 | 32 | } 33 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/validation/ValidatorException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.validation; 19 | 20 | /** 21 | * @author Stijn Heldens 22 | * @author Wing Lung Ngai 23 | */ 24 | public class ValidatorException extends Exception { 25 | public ValidatorException(String msg) { 26 | super(msg); 27 | } 28 | 29 | public ValidatorException(String msg, Throwable cause) { 30 | super(msg, cause); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /config-template/graphs/kgs.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing the KGS dataset 2 | # Link: http://gta.st.ewi.tudelft.nl/datasets/GTA-T5 3 | 4 | # Filenames of graph on local filesystem 5 | graph.kgs.vertex-file = kgs.v 6 | graph.kgs.edge-file = kgs.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.kgs.meta.vertices = 832247 10 | graph.kgs.meta.edges = 17891698 11 | 12 | # Properties describing the graph format 13 | graph.kgs.directed = false 14 | 15 | # Description of graph properties 16 | graph.kgs.edge-properties.names = weight 17 | graph.kgs.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.kgs.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.kgs.bfs.source-vertex = 239044 29 | 30 | # Parameters for CDLP 31 | graph.kgs.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.kgs.pr.damping-factor = 0.85 37 | graph.kgs.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.kgs.sssp.weight-property = weight 41 | graph.kgs.sssp.source-vertex = 239044 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/java/science/atlarge/graphalytics/validation/io/LongParser.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.validation.io; 19 | 20 | /** 21 | * Implementation of GraphValueParser for long values. 22 | * 23 | * @author Mihai Capotă 24 | * @author Tim Hegeman 25 | * @author Wing Lung Ngai 26 | */ 27 | public class LongParser implements GraphValueParser { 28 | 29 | @Override 30 | public Long parseValue(String token) { 31 | return Long.parseLong(token); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/java/science/atlarge/graphalytics/validation/io/DoubleParser.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.validation.io; 19 | 20 | /** 21 | * Implementation of GraphValueParser for double values. 22 | * 23 | * @author Mihai Capotă 24 | * @author Tim Hegeman 25 | * @author Wing Lung Ngai 26 | */ 27 | public class DoubleParser implements GraphValueParser { 28 | 29 | @Override 30 | public Double parseValue(String token) { 31 | return Double.parseDouble(token); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/configuration/InvalidConfigurationException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.configuration; 19 | 20 | /** 21 | * @author Mihai Capotă 22 | * @author Tim Hegeman 23 | * @author Wing Lung Ngai 24 | */ 25 | public class InvalidConfigurationException extends RuntimeException { 26 | 27 | private static final long serialVersionUID = 624615906690261419L; 28 | 29 | public InvalidConfigurationException(String message) { 30 | super(message); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/report/BenchmarkReportGenerator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.report; 19 | 20 | import science.atlarge.graphalytics.report.result.BenchmarkResult; 21 | 22 | /** 23 | * @author Mihai Capotă 24 | * @author Tim Hegeman 25 | * @author Wing Lung Ngai 26 | */ 27 | public interface BenchmarkReportGenerator { 28 | 29 | /** 30 | * @param result the results of running a benchmark suite from which a report is to be generated 31 | */ 32 | BenchmarkReport generateReportFromResults(BenchmarkResult result); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /config-template/graphs/dota-league.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing the Dota-League dataset 2 | # Link: http://gta.st.ewi.tudelft.nl/datasets/GTA-T2 3 | 4 | # Filenames of graph on local filesystem 5 | graph.dota-league.vertex-file = dota-league.v 6 | graph.dota-league.edge-file = dota-league.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.dota-league.meta.vertices = 61170 10 | graph.dota-league.meta.edges = 50870313 11 | 12 | # Properties describing the graph format 13 | graph.dota-league.directed = false 14 | 15 | # Description of graph properties 16 | graph.dota-league.edge-properties.names = weight 17 | graph.dota-league.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.dota-league.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.dota-league.bfs.source-vertex = 287770 29 | 30 | # Parameters for CDLP 31 | graph.dota-league.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.dota-league.pr.damping-factor = 0.85 37 | graph.dota-league.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.dota-league.sssp.weight-property = weight 41 | graph.dota-league.sssp.source-vertex = 287770 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/example-directed.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing the example-directed dataset 2 | 3 | # Filenames of graph on local filesystem 4 | graph.example-directed.vertex-file = example-directed.v 5 | graph.example-directed.edge-file = example-directed.e 6 | 7 | # Graph metadata for reporting purposes 8 | graph.example-directed.meta.vertices = 10 9 | graph.example-directed.meta.edges = 17 10 | 11 | # Properties describing the graph format 12 | graph.example-directed.directed = true 13 | 14 | # Description of graph properties 15 | graph.example-directed.edge-properties.names = weight 16 | graph.example-directed.edge-properties.types = real 17 | 18 | # List of supported algorithms on the graph 19 | graph.example-directed.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 20 | 21 | 22 | # 23 | # Per-algorithm properties describing the input parameters to each algorithm 24 | # 25 | 26 | # Parameters for BFS 27 | graph.example-directed.bfs.source-vertex = 1 28 | 29 | # Parameters for CDLP 30 | graph.example-directed.cdlp.max-iterations = 2 31 | 32 | # No parameters for LCC 33 | 34 | # Parameters for PR 35 | graph.example-directed.pr.damping-factor = 0.85 36 | graph.example-directed.pr.num-iterations = 2 37 | 38 | # Parameters for SSSP 39 | graph.example-directed.sssp.weight-property = weight 40 | graph.example-directed.sssp.source-vertex = 1 41 | 42 | # No parameters for WCC 43 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/plugin/PluginFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.plugin; 19 | 20 | import science.atlarge.graphalytics.domain.benchmark.Benchmark; 21 | import science.atlarge.graphalytics.execution.Platform; 22 | import science.atlarge.graphalytics.report.BenchmarkReportWriter; 23 | 24 | /** 25 | * @author Mihai Capotă 26 | * @author Tim Hegeman 27 | * @author Wing Lung Ngai 28 | */ 29 | public interface PluginFactory { 30 | 31 | Plugin instantiatePlugin(Platform targetPlatform, Benchmark benchmark, BenchmarkReportWriter reportWriter); 32 | 33 | } 34 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/java/science/atlarge/graphalytics/validation/io/GraphValueParser.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.validation.io; 19 | 20 | /** 21 | * Utility class for parsing a String token to a value type. Used for loading graphs from files. 22 | * 23 | * @author Mihai Capotă 24 | * @author Tim Hegeman 25 | * @author Wing Lung Ngai 26 | */ 27 | public interface GraphValueParser { 28 | 29 | /** 30 | * @param token the string representation of a vertex or edge value 31 | * @return the parsed vertex or edge value 32 | */ 33 | ValueType parseValue(String token); 34 | 35 | } 36 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/execution/PlatformExecutionException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.execution; 19 | 20 | /** 21 | * Exception class for wrapping execution failures in algorithm execution. 22 | * 23 | * @author Mihai Capotă 24 | * @author Tim Hegeman 25 | * @author Wing Lung Ngai 26 | */ 27 | public class PlatformExecutionException extends Exception { 28 | 29 | public PlatformExecutionException(String message) { 30 | super(message); 31 | } 32 | 33 | public PlatformExecutionException(String message, Throwable throwable) { 34 | super(message, throwable); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-7_5-fb.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-7_5-fb dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-7_5-fb.vertex-file = datagen-7_5-fb.v 6 | graph.datagen-7_5-fb.edge-file = datagen-7_5-fb.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-7_5-fb.meta.vertices = 633432 10 | graph.datagen-7_5-fb.meta.edges = 34185747 11 | 12 | # Properties describing the graph format 13 | graph.datagen-7_5-fb.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-7_5-fb.edge-properties.names = weight 17 | graph.datagen-7_5-fb.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-7_5-fb.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-7_5-fb.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-7_5-fb.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-7_5-fb.pr.damping-factor = 0.85 37 | graph.datagen-7_5-fb.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-7_5-fb.sssp.weight-property = weight 41 | graph.datagen-7_5-fb.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-7_6-fb.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-7_6-fb dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-7_6-fb.vertex-file = datagen-7_6-fb.v 6 | graph.datagen-7_6-fb.edge-file = datagen-7_6-fb.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-7_6-fb.meta.vertices = 754147 10 | graph.datagen-7_6-fb.meta.edges = 42162988 11 | 12 | # Properties describing the graph format 13 | graph.datagen-7_6-fb.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-7_6-fb.edge-properties.names = weight 17 | graph.datagen-7_6-fb.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-7_6-fb.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-7_6-fb.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-7_6-fb.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-7_6-fb.pr.damping-factor = 0.85 37 | graph.datagen-7_6-fb.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-7_6-fb.sssp.weight-property = weight 41 | graph.datagen-7_6-fb.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-7_7-zf.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-7_7-zf dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-7_7-zf.vertex-file = datagen-7_7-zf.v 6 | graph.datagen-7_7-zf.edge-file = datagen-7_7-zf.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-7_7-zf.meta.vertices = 13180508 10 | graph.datagen-7_7-zf.meta.edges = 32791267 11 | 12 | # Properties describing the graph format 13 | graph.datagen-7_7-zf.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-7_7-zf.edge-properties.names = weight 17 | graph.datagen-7_7-zf.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-7_7-zf.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-7_7-zf.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-7_7-zf.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-7_7-zf.pr.damping-factor = 0.85 37 | graph.datagen-7_7-zf.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-7_7-zf.sssp.weight-property = weight 41 | graph.datagen-7_7-zf.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-7_8-zf.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-7_8-zf dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-7_8-zf.vertex-file = datagen-7_8-zf.v 6 | graph.datagen-7_8-zf.edge-file = datagen-7_8-zf.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-7_8-zf.meta.vertices = 16521886 10 | graph.datagen-7_8-zf.meta.edges = 41025255 11 | 12 | # Properties describing the graph format 13 | graph.datagen-7_8-zf.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-7_8-zf.edge-properties.names = weight 17 | graph.datagen-7_8-zf.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-7_8-zf.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-7_8-zf.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-7_8-zf.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-7_8-zf.pr.damping-factor = 0.85 37 | graph.datagen-7_8-zf.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-7_8-zf.sssp.weight-property = weight 41 | graph.datagen-7_8-zf.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-7_9-fb.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-7_9-fb dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-7_9-fb.vertex-file = datagen-7_9-fb.v 6 | graph.datagen-7_9-fb.edge-file = datagen-7_9-fb.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-7_9-fb.meta.vertices = 1387587 10 | graph.datagen-7_9-fb.meta.edges = 85670523 11 | 12 | # Properties describing the graph format 13 | graph.datagen-7_9-fb.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-7_9-fb.edge-properties.names = weight 17 | graph.datagen-7_9-fb.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-7_9-fb.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-7_9-fb.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-7_9-fb.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-7_9-fb.pr.damping-factor = 0.85 37 | graph.datagen-7_9-fb.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-7_9-fb.sssp.weight-property = weight 41 | graph.datagen-7_9-fb.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-8_0-fb.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-8_0-fb dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-8_0-fb.vertex-file = datagen-8_0-fb.v 6 | graph.datagen-8_0-fb.edge-file = datagen-8_0-fb.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-8_0-fb.meta.vertices = 1706561 10 | graph.datagen-8_0-fb.meta.edges = 107507376 11 | 12 | # Properties describing the graph format 13 | graph.datagen-8_0-fb.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-8_0-fb.edge-properties.names = weight 17 | graph.datagen-8_0-fb.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-8_0-fb.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-8_0-fb.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-8_0-fb.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-8_0-fb.pr.damping-factor = 0.85 37 | graph.datagen-8_0-fb.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-8_0-fb.sssp.weight-property = weight 41 | graph.datagen-8_0-fb.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-8_1-fb.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-8_1-fb dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-8_1-fb.vertex-file = datagen-8_1-fb.v 6 | graph.datagen-8_1-fb.edge-file = datagen-8_1-fb.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-8_1-fb.meta.vertices = 2072117 10 | graph.datagen-8_1-fb.meta.edges = 134267822 11 | 12 | # Properties describing the graph format 13 | graph.datagen-8_1-fb.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-8_1-fb.edge-properties.names = weight 17 | graph.datagen-8_1-fb.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-8_1-fb.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-8_1-fb.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-8_1-fb.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-8_1-fb.pr.damping-factor = 0.85 37 | graph.datagen-8_1-fb.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-8_1-fb.sssp.weight-property = weight 41 | graph.datagen-8_1-fb.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-8_2-zf.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-8_2-zf dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-8_2-zf.vertex-file = datagen-8_2-zf.v 6 | graph.datagen-8_2-zf.edge-file = datagen-8_2-zf.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-8_2-zf.meta.vertices = 43734497 10 | graph.datagen-8_2-zf.meta.edges = 106440188 11 | 12 | # Properties describing the graph format 13 | graph.datagen-8_2-zf.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-8_2-zf.edge-properties.names = weight 17 | graph.datagen-8_2-zf.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-8_2-zf.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-8_2-zf.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-8_2-zf.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-8_2-zf.pr.damping-factor = 0.85 37 | graph.datagen-8_2-zf.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-8_2-zf.sssp.weight-property = weight 41 | graph.datagen-8_2-zf.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-8_3-zf.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-8_3-zf dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-8_3-zf.vertex-file = datagen-8_3-zf.v 6 | graph.datagen-8_3-zf.edge-file = datagen-8_3-zf.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-8_3-zf.meta.vertices = 53525014 10 | graph.datagen-8_3-zf.meta.edges = 130579909 11 | 12 | # Properties describing the graph format 13 | graph.datagen-8_3-zf.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-8_3-zf.edge-properties.names = weight 17 | graph.datagen-8_3-zf.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-8_3-zf.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-8_3-zf.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-8_3-zf.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-8_3-zf.pr.damping-factor = 0.85 37 | graph.datagen-8_3-zf.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-8_3-zf.sssp.weight-property = weight 41 | graph.datagen-8_3-zf.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-8_4-fb.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-8_4-fb dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-8_4-fb.vertex-file = datagen-8_4-fb.v 6 | graph.datagen-8_4-fb.edge-file = datagen-8_4-fb.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-8_4-fb.meta.vertices = 3809084 10 | graph.datagen-8_4-fb.meta.edges = 269479177 11 | 12 | # Properties describing the graph format 13 | graph.datagen-8_4-fb.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-8_4-fb.edge-properties.names = weight 17 | graph.datagen-8_4-fb.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-8_4-fb.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-8_4-fb.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-8_4-fb.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-8_4-fb.pr.damping-factor = 0.85 37 | graph.datagen-8_4-fb.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-8_4-fb.sssp.weight-property = weight 41 | graph.datagen-8_4-fb.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-8_5-fb.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-8_5-fb dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-8_5-fb.vertex-file = datagen-8_5-fb.v 6 | graph.datagen-8_5-fb.edge-file = datagen-8_5-fb.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-8_5-fb.meta.vertices = 4599739 10 | graph.datagen-8_5-fb.meta.edges = 332026902 11 | 12 | # Properties describing the graph format 13 | graph.datagen-8_5-fb.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-8_5-fb.edge-properties.names = weight 17 | graph.datagen-8_5-fb.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-8_5-fb.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-8_5-fb.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-8_5-fb.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-8_5-fb.pr.damping-factor = 0.85 37 | graph.datagen-8_5-fb.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-8_5-fb.sssp.weight-property = weight 41 | graph.datagen-8_5-fb.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-8_6-fb.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-8_6-fb dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-8_6-fb.vertex-file = datagen-8_6-fb.v 6 | graph.datagen-8_6-fb.edge-file = datagen-8_6-fb.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-8_6-fb.meta.vertices = 5667674 10 | graph.datagen-8_6-fb.meta.edges = 421988619 11 | 12 | # Properties describing the graph format 13 | graph.datagen-8_6-fb.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-8_6-fb.edge-properties.names = weight 17 | graph.datagen-8_6-fb.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-8_6-fb.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-8_6-fb.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-8_6-fb.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-8_6-fb.pr.damping-factor = 0.85 37 | graph.datagen-8_6-fb.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-8_6-fb.sssp.weight-property = weight 41 | graph.datagen-8_6-fb.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-8_7-zf.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-8_7-zf dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-8_7-zf.vertex-file = datagen-8_7-zf.v 6 | graph.datagen-8_7-zf.edge-file = datagen-8_7-zf.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-8_7-zf.meta.vertices = 145050709 10 | graph.datagen-8_7-zf.meta.edges = 340157363 11 | 12 | # Properties describing the graph format 13 | graph.datagen-8_7-zf.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-8_7-zf.edge-properties.names = weight 17 | graph.datagen-8_7-zf.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-8_7-zf.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-8_7-zf.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-8_7-zf.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-8_7-zf.pr.damping-factor = 0.85 37 | graph.datagen-8_7-zf.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-8_7-zf.sssp.weight-property = weight 41 | graph.datagen-8_7-zf.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-8_8-zf.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-8_8-zf dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-8_8-zf.vertex-file = datagen-8_8-zf.v 6 | graph.datagen-8_8-zf.edge-file = datagen-8_8-zf.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-8_8-zf.meta.vertices = 168308893 10 | graph.datagen-8_8-zf.meta.edges = 413354288 11 | 12 | # Properties describing the graph format 13 | graph.datagen-8_8-zf.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-8_8-zf.edge-properties.names = weight 17 | graph.datagen-8_8-zf.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-8_8-zf.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-8_8-zf.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-8_8-zf.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-8_8-zf.pr.damping-factor = 0.85 37 | graph.datagen-8_8-zf.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-8_8-zf.sssp.weight-property = weight 41 | graph.datagen-8_8-zf.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-8_9-fb.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-8_9-fb dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-8_9-fb.vertex-file = datagen-8_9-fb.v 6 | graph.datagen-8_9-fb.edge-file = datagen-8_9-fb.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-8_9-fb.meta.vertices = 10572901 10 | graph.datagen-8_9-fb.meta.edges = 848681908 11 | 12 | # Properties describing the graph format 13 | graph.datagen-8_9-fb.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-8_9-fb.edge-properties.names = weight 17 | graph.datagen-8_9-fb.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-8_9-fb.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-8_9-fb.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-8_9-fb.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-8_9-fb.pr.damping-factor = 0.85 37 | graph.datagen-8_9-fb.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-8_9-fb.sssp.weight-property = weight 41 | graph.datagen-8_9-fb.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-9_0-fb.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-9_0-fb dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-9_0-fb.vertex-file = datagen-9_0-fb.v 6 | graph.datagen-9_0-fb.edge-file = datagen-9_0-fb.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-9_0-fb.meta.vertices = 12857671 10 | graph.datagen-9_0-fb.meta.edges = 1049527225 11 | 12 | # Properties describing the graph format 13 | graph.datagen-9_0-fb.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-9_0-fb.edge-properties.names = weight 17 | graph.datagen-9_0-fb.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-9_0-fb.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-9_0-fb.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-9_0-fb.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-9_0-fb.pr.damping-factor = 0.85 37 | graph.datagen-9_0-fb.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-9_0-fb.sssp.weight-property = weight 41 | graph.datagen-9_0-fb.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-9_1-fb.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-9_1-fb dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-9_1-fb.vertex-file = datagen-9_1-fb.v 6 | graph.datagen-9_1-fb.edge-file = datagen-9_1-fb.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-9_1-fb.meta.vertices = 16087483 10 | graph.datagen-9_1-fb.meta.edges = 1342158397 11 | 12 | # Properties describing the graph format 13 | graph.datagen-9_1-fb.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-9_1-fb.edge-properties.names = weight 17 | graph.datagen-9_1-fb.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-9_1-fb.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-9_1-fb.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-9_1-fb.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-9_1-fb.pr.damping-factor = 0.85 37 | graph.datagen-9_1-fb.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-9_1-fb.sssp.weight-property = weight 41 | graph.datagen-9_1-fb.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-9_4-fb.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-9_4-fb dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-9_4-fb.vertex-file = datagen-9_4-fb.v 6 | graph.datagen-9_4-fb.edge-file = datagen-9_4-fb.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-9_4-fb.meta.vertices = 29310565 10 | graph.datagen-9_4-fb.meta.edges = 2588948669 11 | 12 | # Properties describing the graph format 13 | graph.datagen-9_4-fb.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-9_4-fb.edge-properties.names = weight 17 | graph.datagen-9_4-fb.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-9_4-fb.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-9_4-fb.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-9_4-fb.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-9_4-fb.pr.damping-factor = 0.85 37 | graph.datagen-9_4-fb.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-9_4-fb.sssp.weight-property = weight 41 | graph.datagen-9_4-fb.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-9_2-zf.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-9_2-zf dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-9_2-zf.vertex-file = datagen-9_2-zf.v 6 | graph.datagen-9_2-zf.edge-file = datagen-9_2-zf.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-9_2-zf.meta.vertices = 434943376 10 | graph.datagen-9_2-zf.meta.edges = 1042340732 11 | 12 | # Properties describing the graph format 13 | graph.datagen-9_2-zf.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-9_2-zf.edge-properties.names = weight 17 | graph.datagen-9_2-zf.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-9_2-zf.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-9_2-zf.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-9_2-zf.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-9_2-zf.pr.damping-factor = 0.85 37 | graph.datagen-9_2-zf.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-9_2-zf.sssp.weight-property = weight 41 | graph.datagen-9_2-zf.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-9_3-zf.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-9_3-zf dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-9_3-zf.vertex-file = datagen-9_3-zf.v 6 | graph.datagen-9_3-zf.edge-file = datagen-9_3-zf.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-9_3-zf.meta.vertices = 555270053 10 | graph.datagen-9_3-zf.meta.edges = 1309998551 11 | 12 | # Properties describing the graph format 13 | graph.datagen-9_3-zf.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-9_3-zf.edge-properties.names = weight 17 | graph.datagen-9_3-zf.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-9_3-zf.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-9_3-zf.bfs.source-vertex = 6 29 | 30 | # Parameters for CDLP 31 | graph.datagen-9_3-zf.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-9_3-zf.pr.damping-factor = 0.85 37 | graph.datagen-9_3-zf.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-9_3-zf.sssp.weight-property = weight 41 | graph.datagen-9_3-zf.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/pr/dir-output: -------------------------------------------------------------------------------- 1 | 1 0.01230514588446495 2 | 2 0.01851622003726000 3 | 3 0.02089512714725092 4 | 4 0.01176585382420890 5 | 5 0.01812188699760293 6 | 6 0.01370603172547424 7 | 7 0.01766993644629599 8 | 8 0.03400137250799818 9 | 9 0.02253772178242931 10 | 10 0.01315614200506950 11 | 11 0.02654403475508309 12 | 12 0.01386383239731235 13 | 13 0.02030864505387470 14 | 14 0.00902512774017356 15 | 15 0.03672808695956838 16 | 16 0.01771992643552917 17 | 17 0.02031073797506916 18 | 18 0.01298439013813405 19 | 19 0.01267137259396788 20 | 20 0.01679586725172487 21 | 21 0.01911653027692032 22 | 22 0.01289817411164510 23 | 23 0.00882485667115226 24 | 24 0.03290195003741163 25 | 25 0.01067032002801407 26 | 26 0.02369530123252170 27 | 27 0.01673916517786888 28 | 28 0.03375421104823002 29 | 29 0.02465138400978424 30 | 30 0.02526104021117763 31 | 31 0.03431971273393954 32 | 32 0.03497314211893426 33 | 33 0.01458158825232488 34 | 34 0.02164031394989468 35 | 35 0.02020836868133508 36 | 36 0.01508472096454471 37 | 37 0.01476737354061426 38 | 38 0.01319038598708231 39 | 39 0.02360994727883383 40 | 40 0.01809943553861050 41 | 41 0.01394375154429174 42 | 42 0.01357868803688285 43 | 43 0.02524445976750379 44 | 44 0.01988024806748353 45 | 45 0.01694403111121369 46 | 46 0.02259342804847692 47 | 47 0.03719089314603851 48 | 48 0.02035602345369202 49 | 49 0.01710526843866147 50 | 50 0.02454782687642342 51 | -------------------------------------------------------------------------------- /config-template/benchmark.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing the benchmark 2 | 3 | # Include one of the properties file describing the benchmark type 4 | #include = benchmarks/test.properties 5 | include = benchmarks/standard.properties 6 | #include = benchmarks/custom.properties 7 | 8 | 9 | # Include other properties files 10 | include = platform.properties 11 | include = environment.properties 12 | include = graphs.properties 13 | include = pricing.properties 14 | 15 | # Provide a short description of the benchmark. 16 | benchmark.description = 17 | 18 | # Root directory containing graphs on local filesystem 19 | #graphs.root-directory = /data/graphalytics/graphs 20 | 21 | # Directory to cache derived datasets in (optional, defaults to ${graphs.root-directory}/cache) 22 | #graphs.cache-directory = /data/graphalytics/graphs/cache 23 | 24 | # Directory to the validation datasets on local filesystem 25 | graphs.validation-directory = 26 | 27 | # Directory to the output datasets generated by the system. 28 | graphs.output-directory = ./output/ 29 | 30 | 31 | # Benchmark executor and runner configuration. 32 | 33 | ## Network port of the benchmark executor 34 | benchmark.executor.port = 8011 35 | 36 | ## Network port of the benchmark runner 37 | benchmark.runner.port = 8012 38 | 39 | # Maximum memory used by the benchmark runner (by default 3x that of benchmark executor) 40 | # e.g. 128g, 512m 41 | benchmark.runner.max-memory = 42 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-sf3k-fb.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-sf3k-fb dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-sf3k-fb.vertex-file = datagen-sf3k-fb.v 6 | graph.datagen-sf3k-fb.edge-file = datagen-sf3k-fb.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-sf3k-fb.meta.vertices = 33484375 10 | graph.datagen-sf3k-fb.meta.edges = 2912009743 11 | 12 | # Properties describing the graph format 13 | graph.datagen-sf3k-fb.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-sf3k-fb.edge-properties.names = weight 17 | graph.datagen-sf3k-fb.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-sf3k-fb.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-sf3k-fb.bfs.source-vertex = 933 29 | 30 | # Parameters for CDLP 31 | graph.datagen-sf3k-fb.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-sf3k-fb.pr.damping-factor = 0.85 37 | graph.datagen-sf3k-fb.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-sf3k-fb.sssp.weight-property = weight 41 | graph.datagen-sf3k-fb.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /config-template/graphs/example-undirected.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing an example undirected dataset 2 | # Link: 3 | 4 | # Filenames of graph on local filesystem 5 | graph.example-undirected.vertex-file = example-undirected.v 6 | graph.example-undirected.edge-file = example-undirected.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.example-undirected.meta.vertices = 9 10 | graph.example-undirected.meta.edges = 12 11 | 12 | # Properties describing the graph format 13 | graph.example-undirected.directed = false 14 | 15 | # Description of graph properties 16 | graph.example-undirected.edge-properties.names = weight 17 | graph.example-undirected.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.example-undirected.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.example-undirected.bfs.source-vertex = 2 29 | 30 | # Parameters for CDLP 31 | graph.example-undirected.cdlp.max-iterations = 2 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.example-undirected.pr.damping-factor = 0.85 37 | graph.example-undirected.pr.num-iterations = 2 38 | 39 | # Parameters for SSSP 40 | graph.example-undirected.sssp.weight-property = weight 41 | graph.example-undirected.sssp.source-vertex = 2 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/configuration/GraphalyticsLoaderException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.configuration; 19 | 20 | /** 21 | * Wrapper class for exceptions that occur during the initialization phase of Graphalytics. 22 | * 23 | * @author Mihai Capotă 24 | * @author Tim Hegeman 25 | * @author Wing Lung Ngai 26 | */ 27 | public class GraphalyticsLoaderException extends RuntimeException { 28 | 29 | public GraphalyticsLoaderException(String message) { 30 | super(message); 31 | } 32 | 33 | public GraphalyticsLoaderException(String message, Throwable throwable) { 34 | super(message, throwable); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /config-template/graphs/datagen-sf10k-fb.properties: -------------------------------------------------------------------------------- 1 | # Properties file describing datagen-sf10k-fb dataset 2 | # Link: https://github.com/ldbc/ldbc_snb_datagen 3 | 4 | # Filenames of graph on local filesystem 5 | graph.datagen-sf10k-fb.vertex-file = datagen-sf10k-fb.v 6 | graph.datagen-sf10k-fb.edge-file = datagen-sf10k-fb.e 7 | 8 | # Graph metadata for reporting purposes 9 | graph.datagen-sf10k-fb.meta.vertices = 100218750 10 | graph.datagen-sf10k-fb.meta.edges = 9404822538 11 | 12 | # Properties describing the graph format 13 | graph.datagen-sf10k-fb.directed = false 14 | 15 | # Description of graph properties 16 | graph.datagen-sf10k-fb.edge-properties.names = weight 17 | graph.datagen-sf10k-fb.edge-properties.types = real 18 | 19 | # List of supported algorithms on the graph 20 | graph.datagen-sf10k-fb.algorithms = bfs, cdlp, lcc, pr, sssp, wcc 21 | 22 | 23 | # 24 | # Per-algorithm properties describing the input parameters to each algorithm 25 | # 26 | 27 | # Parameters for BFS 28 | graph.datagen-sf10k-fb.bfs.source-vertex = 933 29 | 30 | # Parameters for CDLP 31 | graph.datagen-sf10k-fb.cdlp.max-iterations = 10 32 | 33 | # No parameters for LCC 34 | 35 | # Parameters for PR 36 | graph.datagen-sf10k-fb.pr.damping-factor = 0.85 37 | graph.datagen-sf10k-fb.pr.num-iterations = 10 38 | 39 | # Parameters for SSSP 40 | graph.datagen-sf10k-fb.sssp.weight-property = weight 41 | graph.datagen-sf10k-fb.sssp.source-vertex = 6 42 | 43 | # No parameters for WCC 44 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/configuration/GraphalyticsExecutionException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.configuration; 19 | 20 | /** 21 | * Wrapper class for exceptions that occur during the execution phase of Graphalytics. 22 | * 23 | * @author Mihai Capotă 24 | * @author Tim Hegeman 25 | * @author Wing Lung Ngai 26 | */ 27 | public class GraphalyticsExecutionException extends RuntimeException { 28 | 29 | public GraphalyticsExecutionException(String message) { 30 | super(message); 31 | } 32 | 33 | public GraphalyticsExecutionException(String message, Throwable throwable) { 34 | super(message, throwable); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /graphalytics-plugins-granula/src/main/java/science/atlarge/graphalytics/granula/GranulaAwarePlatform.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.granula; 19 | 20 | import science.atlarge.granula.modeller.job.JobModel; 21 | import science.atlarge.graphalytics.execution.Platform; 22 | import science.atlarge.graphalytics.report.result.BenchmarkRunResult; 23 | 24 | import java.nio.file.Path; 25 | 26 | /** 27 | * @author Mihai Capotă 28 | * @author Tim Hegeman 29 | * @author Wing Lung Ngai 30 | */ 31 | public interface GranulaAwarePlatform extends Platform { 32 | 33 | JobModel getJobModel(); 34 | void enrichMetrics(BenchmarkRunResult benchmarkRunResult, Path arcDirectory); 35 | } 36 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/resources/validation-graphs/pr/undir-output: -------------------------------------------------------------------------------- 1 | 1 0.019994702651822727 2 | 2 0.020610527884557025 3 | 3 0.008226197386781101 4 | 4 0.021139185066112783 5 | 5 0.018444923156792234 6 | 6 0.024084954259336728 7 | 7 0.013969559462575373 8 | 8 0.02668963976681411 9 | 9 0.028142861825430434 10 | 10 0.0167741910684128 11 | 11 0.027637864862787215 12 | 12 0.006621828608749126 13 | 13 0.028324716269103052 14 | 14 0.014542367946479423 15 | 15 0.015402400704682247 16 | 16 0.01596880444520349 17 | 17 0.023834104226113394 18 | 18 0.014200722829925825 19 | 19 0.0273410188338063 20 | 20 0.014831275189133464 21 | 21 0.028735574782495082 22 | 22 0.018477892825502034 23 | 23 0.0127497982048853 24 | 24 0.021373651088358408 25 | 25 0.02260732176089701 26 | 26 0.027376096254376446 27 | 27 0.02134703764359033 28 | 28 0.030362032973210468 29 | 29 0.013746478682938448 30 | 30 0.015427396286657406 31 | 31 0.021464508199961305 32 | 32 0.017138368029391664 33 | 33 0.0144541313014486 34 | 34 0.025238308891148063 35 | 35 0.013262988386629346 36 | 36 0.0070517851315193706 37 | 37 0.024052774570892436 38 | 38 0.021986830533936328 39 | 39 0.020440927586411146 40 | 40 0.024365531838954662 41 | 41 0.03322922856031516 42 | 42 0.024740924162144014 43 | 43 0.014067683035912583 44 | 44 0.011297668545718825 45 | 45 0.019241976534635333 46 | 46 0.02077051826476872 47 | 47 0.013446644926660565 48 | 48 0.027733140385859008 49 | 49 0.034087820865793435 50 | 50 0.012943113300369766 -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/domain/graph/GraphScale.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.domain.graph; 19 | 20 | /** 21 | * @author Wing Lung Ngai 22 | */ 23 | public enum GraphScale { 24 | XXS("XXS", 6.5, 6.9), 25 | XS("XS", 7.0, 7.4), 26 | S("S", 7.5, 7.9), 27 | M("M", 8.0, 8.4), 28 | L("L", 8.5, 8.9), 29 | XL("XL", 9.0, 9.4), 30 | XXL("XXL", 9.5, 10.0); 31 | 32 | public String text; 33 | public double minSize; 34 | public double maxSize; 35 | 36 | GraphScale(String text, double minScale, double maxScale) { 37 | this.text = text; 38 | this.minSize = minScale; 39 | this.maxSize = maxScale; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/validation/rule/MatchLongValidationRule.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.validation.rule; 19 | 20 | /** 21 | * Validation rule which checks if two longs are identical. 22 | * 23 | * @author Stijn Heldens 24 | * @author Tim Hegeman 25 | * @author Wing Lung Ngai 26 | */ 27 | public class MatchLongValidationRule implements ValidationRule { 28 | 29 | @Override 30 | public String getQuery() { 31 | return "SELECT expected.v AS v, expected.x AS expected, actual.x AS actual\n" + 32 | "FROM expected, actual\n" + 33 | "WHERE expected.v = actual.v\n" + 34 | " AND expected.x != actual.x\n" + 35 | "LIMIT 100;"; 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/execution/BenchmarkFailure.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.execution; 19 | 20 | import java.io.Serializable; 21 | 22 | /** 23 | * @author Mihai Capotă 24 | * @author Tim Hegeman 25 | * @author Wing Lung Ngai 26 | */ 27 | public enum BenchmarkFailure implements Serializable { 28 | 29 | DAT("dat", "dataset"), 30 | INI("ini", "initialization"), 31 | TIM("tim", "timeout"), 32 | EXE("exe", "execution"), 33 | COM("com", "completion"), 34 | VAL("val", "validation"), 35 | MET("met", "metric"); 36 | 37 | public String id; 38 | public String type; 39 | 40 | BenchmarkFailure(String id, String type) { 41 | this.id = id; 42 | this.type = type; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/validation/rule/ValidationRule.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.validation.rule; 19 | 20 | import science.atlarge.graphalytics.validation.VertexValidator; 21 | 22 | /** 23 | * Validate rule used by {@link VertexValidator} to compare 24 | * the value of a vertex given by a platform to the value of the vertex in the reference output. 25 | * The simplest rule is to check if the values are identical (see {@link science.atlarge.graphalytics.validation.rule.MatchLongValidationRule}), 26 | * however sometimes other comparisons are necessary, such as check if two doubles are 27 | * within a certain threshold of each other. 28 | * 29 | * @param Type of the vertex value. 30 | * 31 | * @author Stijn Heldens 32 | * @author Wing Lung Ngai 33 | */ 34 | public interface ValidationRule { 35 | String getQuery(); 36 | } 37 | -------------------------------------------------------------------------------- /graphalytics-plugins-granula/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.0.0 3 | 4 | graphalytics-plugins-granula 5 | jar 6 | 7 | science.atlarge.graphalytics 8 | graphalytics-root 9 | 1.11.0-SNAPSHOT 10 | ../pom.xml 11 | 12 | 13 | 14 | UTF-8 15 | 1.3 16 | 17 | 18 | 19 | 20 | science.atlarge.graphalytics 21 | graphalytics-core 22 | ${project.version} 23 | 24 | 25 | science.atlarge.granula 26 | granula-modeller 27 | 0.1.3 28 | 29 | 30 | science.atlarge.granula 31 | granula-archiver 32 | 0.1.3 33 | 34 | 35 | science.atlarge.granula 36 | granula-visualizer 37 | 0.1.3 38 | 39 | 40 | com.google.code.gson 41 | gson 42 | 2.6.2 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /bin/utils/graph500-generator/graph500-binary-to-text.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Copyright 2015 - 2017 Atlarge Research Team, 4 | # operating at Technische Universiteit Delft 5 | # and Vrije Universiteit Amsterdam, the Netherlands. 6 | # 7 | # Licensed under the Apache License, Version 2.0 (the "License"); 8 | # you may not use this file except in compliance with the License. 9 | # You may obtain a copy of the License at 10 | # 11 | # http://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, software 14 | # distributed under the License is distributed on an "AS IS" BASIS, 15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | # See the License for the specific language governing permissions and 17 | # limitations under the License. 18 | # 19 | 20 | # -*- coding: utf-8 -*- 21 | # pylint: disable=invalid-name 22 | # © 2014 Mihai Capotă 23 | """Transform the output of the Graph 500 generator into text.""" 24 | 25 | 26 | from __future__ import division, print_function 27 | 28 | import argparse 29 | import struct 30 | 31 | 32 | def main(): 33 | argparser = argparse.ArgumentParser() 34 | 35 | argparser.add_argument("fin", help="input file") 36 | argparser.add_argument("fout", help="output file") 37 | args = argparser.parse_args() 38 | 39 | with open(args.fin, "rb") as fin, open(args.fout, "w") as fout: 40 | while True: 41 | edge = fin.read(16) 42 | if edge == "": 43 | break 44 | (v1, v2) = struct.unpack("qq", edge) 45 | print(v1, v2, file=fout) 46 | 47 | 48 | if __name__ == "__main__": 49 | main() 50 | -------------------------------------------------------------------------------- /config-template/benchmarks/custom.properties: -------------------------------------------------------------------------------- 1 | # Properties file for defining the benchmark type 2 | 3 | # Name and Type of the benchmark run 4 | benchmark.name = Custom Benchmark 5 | benchmark.type = custom 6 | 7 | # Select a subset of the graphs 8 | benchmark.custom.graphs = \ 9 | graph500-22, graph500-23, graph500-24, graph500-25, graph500-26, \ 10 | graph500-27, graph500-28, graph500-29, graph500-30, \ 11 | datagen-7_5-fb, datagen-7_6-fb, datagen-7_7-zf, datagen-7_8-zf, datagen-7_9-fb, \ 12 | datagen-8_0-fb, datagen-8_1-fb, datagen-8_2-zf, datagen-8_3-zf, datagen-8_4-fb, \ 13 | datagen-8_5-fb, datagen-8_6-fb, datagen-8_7-zf, datagen-8_8-zf, datagen-8_9-fb, \ 14 | datagen-9_0-fb, datagen-9_1-fb, datagen-9_2-zf, datagen-9_3-zf, datagen-9_4-fb, \ 15 | datagen-sf3k-fb, datagen-sf10k-fb, \ 16 | dota-league, com-friendster, twitter_mpi, \ 17 | cit-Patents, kgs, wiki-Talk, \ 18 | test-bfs-directed, test-bfs-undirected, \ 19 | test-cdlp-directed, test-cdlp-undirected, \ 20 | test-lcc-directed, test-lcc-undirected, \ 21 | test-pr-directed, test-pr-undirected, \ 22 | test-sssp-directed, test-sssp-undirected, \ 23 | test-wcc-directed, test-wcc-undirected, \ 24 | example-directed, example-undirected 25 | 26 | # Select a subset of the algorithms 27 | benchmark.custom.algorithms = \ 28 | BFS, \ 29 | CDLP, \ 30 | LCC, \ 31 | PR, \ 32 | WCC, \ 33 | SSSP 34 | 35 | # Specify the duration before a benchmark run is timed out. 36 | benchmark.custom.timeout = 3600 37 | 38 | # Specify if output and validation is required. 39 | benchmark.custom.output-required = true 40 | benchmark.custom.validation-required = true 41 | 42 | benchmark.custom.repetitions = 1 43 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/domain/algorithms/EmptyParameters.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.domain.algorithms; 19 | 20 | import org.apache.commons.configuration.Configuration; 21 | 22 | /** 23 | * Default parameters class for algorithms without parameters. 24 | * 25 | * @author Mihai Capotă 26 | * @author Tim Hegeman 27 | * @author Wing Lung Ngai 28 | */ 29 | public final class EmptyParameters extends AlgorithmParameters { 30 | 31 | public static final class EmptyParametersFactory implements ParameterFactory { 32 | 33 | @Override 34 | public EmptyParameters fromConfiguration(Configuration configuration) { 35 | return new EmptyParameters(); 36 | } 37 | 38 | } 39 | 40 | @Override 41 | public String toString() { 42 | return String.format("[%s]", getDescription()); 43 | } 44 | 45 | public String getDescription() { 46 | return String.format("none"); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/report/result/PlatformBenchmarkResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.report.result; 19 | 20 | import java.io.Serializable; 21 | 22 | /** 23 | * Platform-dependent information regarding the results of a single benchmark run. 24 | * 25 | * @author Mihai Capotă 26 | * @author Tim Hegeman 27 | * @author Wing Lung Ngai 28 | */ 29 | public final class PlatformBenchmarkResult implements Serializable { 30 | 31 | private boolean completeSuccessfully; 32 | 33 | 34 | public PlatformBenchmarkResult() { 35 | } 36 | 37 | 38 | public PlatformBenchmarkResult(boolean completeSuccessfully) { 39 | this.completeSuccessfully = completeSuccessfully; 40 | } 41 | 42 | public boolean isCompleteSuccessfully() { 43 | return completeSuccessfully; 44 | } 45 | 46 | public void setCompleteSuccessfully(boolean completeSuccessfully) { 47 | this.completeSuccessfully = completeSuccessfully; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/report/BenchmarkReportFile.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.report; 19 | 20 | import java.io.IOException; 21 | import java.nio.file.Path; 22 | 23 | /** 24 | * A single file in a benchmark report. Defines a method that allows the file to be written to a report directory, 25 | * regardless of the implemented format (e.g., HTML, plain text, RDF). 26 | * 27 | * @author Mihai Capotă 28 | * @author Tim Hegeman 29 | * @author Wing Lung Ngai 30 | */ 31 | public interface BenchmarkReportFile { 32 | 33 | /** 34 | * Writes this single benchmark report file to a directory. This function may create directories when needed and 35 | * overwrite any previously existing file of the same name. 36 | * 37 | * @param reportPath the base directory to which the benchmark report is written 38 | * @throws IOException if an IO error occurred 39 | */ 40 | void write(Path reportPath) throws IOException; 41 | 42 | } 43 | -------------------------------------------------------------------------------- /graphalytics-plugins-granula/src/main/java/science/atlarge/graphalytics/granula/GranulaPluginFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.granula; 19 | 20 | import science.atlarge.graphalytics.execution.Platform; 21 | import science.atlarge.graphalytics.domain.benchmark.Benchmark; 22 | import science.atlarge.graphalytics.plugin.Plugin; 23 | import science.atlarge.graphalytics.plugin.PluginFactory; 24 | import science.atlarge.graphalytics.report.BenchmarkReportWriter; 25 | 26 | /** 27 | * @author Mihai Capotă 28 | * @author Tim Hegeman 29 | * @author Wing Lung Ngai 30 | */ 31 | public class GranulaPluginFactory implements PluginFactory { 32 | 33 | @Override 34 | public Plugin instantiatePlugin(Platform targetPlatform, Benchmark benchmark, BenchmarkReportWriter reportWriter) { 35 | if (targetPlatform instanceof GranulaAwarePlatform) { 36 | return new GranulaPlugin((GranulaAwarePlatform)targetPlatform, reportWriter); 37 | } else { 38 | return null; 39 | } 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/domain/graph/PropertyType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.domain.graph; 19 | 20 | /** 21 | * Represents the type of a property in a property graph. 22 | * 23 | * @author Mihai Capotă 24 | * @author Tim Hegeman 25 | * @author Wing Lung Ngai 26 | */ 27 | public enum PropertyType { 28 | 29 | /** 30 | * Property is an integral number in the range [-2^63, 2^63 - 1]. 31 | */ 32 | INTEGER, 33 | /** 34 | * Property is a real number. 35 | */ 36 | REAL; 37 | 38 | /** 39 | * @param propertyString a string representation of a PropertyType 40 | * @return the corresponding PropertyType value, or null if the propertyString does not match any value 41 | */ 42 | public static PropertyType fromString(String propertyString) { 43 | switch (propertyString.toLowerCase()) { 44 | case "int": 45 | case "integer": 46 | return INTEGER; 47 | case "real": 48 | return REAL; 49 | } 50 | return null; 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /graphalytics-core/src/test/java/science/atlarge/graphalytics/util/io/VertexListStreamUtility.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.util.io; 19 | 20 | import java.io.IOException; 21 | 22 | import static org.junit.Assert.*; 23 | 24 | /** 25 | * Utility class for validating a VertexListStream implementation 26 | * 27 | * @author Mihai Capotă 28 | * @author Tim Hegeman 29 | * @author Wing Lung Ngai 30 | */ 31 | public class VertexListStreamUtility { 32 | 33 | public static void validateVertexListStreamOutput(VertexListStream stream, VertexListStream.VertexData[] expectedOutput) throws IOException { 34 | for (VertexListStream.VertexData expectedVertex : expectedOutput) { 35 | assertTrue(stream.hasNextVertex()); 36 | VertexListStream.VertexData vertex = stream.getNextVertex(); 37 | 38 | assertEquals(expectedVertex.getId(), vertex.getId()); 39 | assertArrayEquals(expectedVertex.getValues(), vertex.getValues()); 40 | } 41 | assertFalse(stream.hasNextVertex()); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /graphalytics-core/src/test/java/science/atlarge/graphalytics/util/io/MockEdgeListStream.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.util.io; 19 | 20 | import java.io.IOException; 21 | import java.util.Arrays; 22 | 23 | /** 24 | * Mock implementation of EdgeListStream backed by an array of edges. 25 | * 26 | * @author Mihai Capotă 27 | * @author Tim Hegeman 28 | * @author Wing Lung Ngai 29 | */ 30 | public class MockEdgeListStream implements EdgeListStream { 31 | 32 | private final EdgeData[] edges; 33 | private int index; 34 | 35 | public MockEdgeListStream(EdgeData[] edges) { 36 | this.edges = Arrays.copyOf(edges, edges.length); 37 | this.index = -1; 38 | } 39 | 40 | @Override 41 | public boolean hasNextEdge() throws IOException { 42 | return index + 1 < edges.length; 43 | } 44 | 45 | @Override 46 | public EdgeData getNextEdge() throws IOException { 47 | index++; 48 | return edges[index]; 49 | } 50 | 51 | @Override 52 | public void close() throws IOException { 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /graphalytics-core/src/test/java/science/atlarge/graphalytics/util/io/EdgeListStreamUtility.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.util.io; 19 | 20 | import java.io.IOException; 21 | 22 | import static org.junit.Assert.*; 23 | 24 | /** 25 | * Utility class for validating an EdgeListStream implementation. 26 | * 27 | * @author Tim Hegeman 28 | * @author Wing Lung Ngai 29 | */ 30 | public class EdgeListStreamUtility { 31 | 32 | public static void validateEdgeListStreamOutput(EdgeListStream stream, EdgeListStream.EdgeData[] expectedOutput) throws IOException { 33 | for (EdgeListStream.EdgeData expectedEdge : expectedOutput) { 34 | assertTrue(stream.hasNextEdge()); 35 | EdgeListStream.EdgeData edge = stream.getNextEdge(); 36 | 37 | assertEquals(expectedEdge.getSourceId(), edge.getSourceId()); 38 | assertEquals(expectedEdge.getDestinationId(), edge.getDestinationId()); 39 | assertArrayEquals(expectedEdge.getValues(), edge.getValues()); 40 | } 41 | assertFalse(stream.hasNextEdge()); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/domain/algorithms/ParameterFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.domain.algorithms; 19 | 20 | import org.apache.commons.configuration.Configuration; 21 | import science.atlarge.graphalytics.configuration.InvalidConfigurationException; 22 | 23 | /** 24 | * Factory interface that defines an API to parse algorithm-specific parameters from a Configuration. 25 | * 26 | * @author Mihai Capotă 27 | * @author Tim Hegeman 28 | * @author Wing Lung Ngai 29 | */ 30 | public interface ParameterFactory { 31 | 32 | /** 33 | * Parses an object of type T from the properties of a Configuration object. 34 | * 35 | * @param configuration the Configuration describing the object of type T 36 | * @return the parsed object 37 | * @throws InvalidConfigurationException iff the configuration does not contain the required properties 38 | */ 39 | T fromConfiguration(Configuration configuration) throws InvalidConfigurationException; 40 | 41 | } 42 | -------------------------------------------------------------------------------- /graphalytics-core/src/test/java/science/atlarge/graphalytics/util/io/MockVertexListStream.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.util.io; 19 | 20 | import java.io.IOException; 21 | import java.util.Arrays; 22 | 23 | /** 24 | * Mock implementation of VertexListStream backed by an array of vertices. 25 | * 26 | * @author Mihai Capotă 27 | * @author Tim Hegeman 28 | * @author Wing Lung Ngai 29 | */ 30 | public class MockVertexListStream implements VertexListStream { 31 | 32 | private final VertexData[] vertices; 33 | private int index; 34 | 35 | public MockVertexListStream(VertexData[] vertices) { 36 | this.vertices = Arrays.copyOf(vertices, vertices.length); 37 | this.index = -1; 38 | } 39 | 40 | @Override 41 | public boolean hasNextVertex() throws IOException { 42 | return index + 1 < vertices.length; 43 | } 44 | 45 | @Override 46 | public VertexData getNextVertex() throws IOException { 47 | index++; 48 | return vertices[index]; 49 | } 50 | 51 | @Override 52 | public void close() throws IOException { 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/report/result/BenchmarkMetric.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.report.result; 19 | 20 | import java.io.Serializable; 21 | import java.math.BigDecimal; 22 | 23 | /** 24 | * @author Wing Lung Ngai 25 | */ 26 | public class BenchmarkMetric implements Serializable{ 27 | BigDecimal value; 28 | String unit; 29 | boolean isNan; 30 | 31 | public BenchmarkMetric() { 32 | value = null; 33 | isNan = true; 34 | unit = ""; 35 | } 36 | 37 | public BenchmarkMetric(BigDecimal value, String unit) { 38 | this.value = value; 39 | isNan = false; 40 | this.unit = unit; 41 | } 42 | 43 | public boolean isNan() { 44 | return isNan; 45 | } 46 | 47 | public String getUnit() { 48 | return unit; 49 | } 50 | 51 | public BigDecimal getValue() { 52 | return value; 53 | } 54 | 55 | @Override 56 | public String toString() { 57 | return !isNan ? value.toString() : "nan"; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /graphalytics-plugins-granula/src/main/java/science/atlarge/graphalytics/granula/GranulaHtmlGenerator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.granula; 19 | 20 | import science.atlarge.graphalytics.report.result.BenchmarkRunResult; 21 | import science.atlarge.graphalytics.report.result.BenchmarkResult; 22 | import science.atlarge.graphalytics.report.html.HtmlBenchmarkReportGenerator; 23 | 24 | /** 25 | * @author Tim Hegeman 26 | * @author Wing Lung Ngai 27 | */ 28 | public class GranulaHtmlGenerator implements HtmlBenchmarkReportGenerator.Plugin { 29 | 30 | 31 | @Override 32 | public void preGenerate(HtmlBenchmarkReportGenerator htmlBenchmarkReportGenerator, BenchmarkResult result) { 33 | for (BenchmarkRunResult benchmarkRunResult : result.getBenchmarkRunResults()) { 34 | if (benchmarkRunResult.isSuccessful()) { 35 | htmlBenchmarkReportGenerator.registerPageLink(benchmarkRunResult.getBenchmarkRun().getId(), 36 | String.format("archive/%s/visualizer.htm", benchmarkRunResult.getBenchmarkRun().getId())); 37 | } 38 | } 39 | } 40 | 41 | 42 | } 43 | -------------------------------------------------------------------------------- /bin/utils/graph-format-conversion/graph-specific/kgs-to-multi-edge.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Copyright 2015 - 2017 Atlarge Research Team, 4 | # operating at Technische Universiteit Delft 5 | # and Vrije Universiteit Amsterdam, the Netherlands. 6 | # 7 | # Licensed under the Apache License, Version 2.0 (the "License"); 8 | # you may not use this file except in compliance with the License. 9 | # You may obtain a copy of the License at 10 | # 11 | # http://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, software 14 | # distributed under the License is distributed on an "AS IS" BASIS, 15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | # See the License for the specific language governing permissions and 17 | # limitations under the License. 18 | # 19 | 20 | 21 | import argparse 22 | 23 | def main(): 24 | argparser = argparse.ArgumentParser() 25 | argparser.add_argument("fin", help="input file (KGS_Edge_Basic)") 26 | argparser.add_argument("fout", help="output file") 27 | args = argparser.parse_args() 28 | 29 | with open(args.fin, "r") as fin, open(args.fout, "w") as fout: 30 | line = fin.readline() 31 | while line and (line.startswith("#") or line.startswith("RowID")): 32 | line = fin.readline() 33 | while line: 34 | parts = line.split(", ") 35 | src = int(parts[2]) 36 | dst = int(parts[4]) 37 | if (src < dst): 38 | edge = (src, dst) 39 | elif (src > dst): 40 | edge = (dst, src) 41 | else: 42 | raise Exception("Self loop detected") 43 | print(edge[0], edge[1], file=fout) 44 | line = fin.readline() 45 | 46 | if __name__ == "__main__": 47 | main() 48 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/execution/RuntimeSetup.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.execution; 19 | 20 | import science.atlarge.graphalytics.domain.graph.LoadedGraph; 21 | 22 | import java.io.IOException; 23 | import java.io.ObjectInputStream; 24 | import java.io.ObjectOutputStream; 25 | import java.io.Serializable; 26 | 27 | /** 28 | * The setup of the runtime configuraiton. 29 | * @author Wing Lung Ngai 30 | */ 31 | public class RuntimeSetup implements Serializable { 32 | 33 | private LoadedGraph loadedGraph; 34 | 35 | public RuntimeSetup(LoadedGraph loadedGraph) { 36 | this.loadedGraph = loadedGraph; 37 | } 38 | 39 | public LoadedGraph getLoadedGraph() { 40 | return loadedGraph; 41 | } 42 | 43 | private void writeObject(ObjectOutputStream stream) throws IOException { 44 | stream.writeObject(loadedGraph); 45 | } 46 | 47 | private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { 48 | loadedGraph = (LoadedGraph) stream.readObject(); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/util/MemoryUtil.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.util; 19 | 20 | /** 21 | * Memory Utility to track runtime memory usage. 22 | * See: org.apache.giraph.utils.MemoryUtils 23 | * 24 | * @author Wing Lung Ngai 25 | */ 26 | public class MemoryUtil { 27 | 28 | public static String getMemoryStats() { 29 | 30 | double freeMemoryMB = megaBytes(Runtime.getRuntime().freeMemory()); 31 | double totalMemoryMB = megaBytes(Runtime.getRuntime().totalMemory()); 32 | double maxMemoryMB = megaBytes(Runtime.getRuntime().maxMemory()); 33 | 34 | return String.format("Memory (free/total/max) = %.2fM / %.2fM / %.2fM", 35 | freeMemoryMB, totalMemoryMB, maxMemoryMB); 36 | } 37 | 38 | private static double megaBytes(long bytes) { 39 | return bytes / 1024.0 / 1024.0; 40 | } 41 | 42 | public static long getMaxMemoryMB() { 43 | long maxMemory = Runtime.getRuntime().maxMemory(); 44 | return Math.round(maxMemory / 1024.0 / 1024.0); 45 | } 46 | } 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/validation/rule/EpsilonValidationRule.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.validation.rule; 19 | 20 | /** 21 | * Validation rule which checks whether the output value equal to the reference value within 22 | * an error margin of 0.01%. 23 | * 24 | * @author Stijn Heldens 25 | * @author Wing Lung Ngai 26 | */ 27 | public class EpsilonValidationRule implements ValidationRule { 28 | 29 | @Override 30 | public String getQuery() { 31 | return "SELECT expected.v AS v, expected.x AS expected, actual.x AS actual\n" + 32 | "FROM expected, actual\n" + 33 | "WHERE expected.v = actual.v\n" + 34 | " AND CASE\n" + 35 | " WHEN (expected.x = 'Infinity' AND actual.x = 'Infinity') THEN false\n" + 36 | " WHEN (expected.x = 'Infinity' AND actual.x != 'Infinity') THEN true\n" + 37 | " WHEN (expected.x != 'Infinity' AND actual.x = 'Infinity') THEN true\n" + 38 | " ELSE NOT abs(expected.x - actual.x) <= 0.0001 * expected.x\n" + 39 | " END\n" + 40 | "LIMIT 100;"; 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/execution/RunSpecification.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.execution; 19 | 20 | import science.atlarge.graphalytics.domain.benchmark.BenchmarkRun; 21 | 22 | import java.io.Serializable; 23 | 24 | /** 25 | * The specification of the benchmark run. 26 | * @author Wing Lung Ngai 27 | */ 28 | public class RunSpecification implements Serializable { 29 | 30 | final BenchmarkRun benchmarkRun; 31 | final BenchmarkRunSetup benchmarkRunSetup; 32 | final RuntimeSetup runtimeSetup; 33 | 34 | public RunSpecification(BenchmarkRun benchmarkRun, BenchmarkRunSetup benchmarkRunSetup, RuntimeSetup runtimeSetup) { 35 | this.benchmarkRun = benchmarkRun; 36 | this.benchmarkRunSetup = benchmarkRunSetup; 37 | this.runtimeSetup = runtimeSetup; 38 | } 39 | 40 | public BenchmarkRun getBenchmarkRun() { 41 | return benchmarkRun; 42 | } 43 | 44 | public BenchmarkRunSetup getBenchmarkRunSetup() { 45 | return benchmarkRunSetup; 46 | } 47 | 48 | public RuntimeSetup getRuntimeSetup() { 49 | return runtimeSetup; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/java/science/atlarge/graphalytics/validation/GraphValues.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.validation; 19 | 20 | import java.util.HashMap; 21 | import java.util.Map; 22 | import java.util.Set; 23 | 24 | /** 25 | * In-memory representation of the values of a graph, i.e. a value for each vertex. 26 | * 27 | * @author Mihai Capotă 28 | * @author Tim Hegeman 29 | * @author Wing Lung Ngai 30 | */ 31 | public class GraphValues { 32 | 33 | private final Map vertexValues; 34 | 35 | /** 36 | * @param vertexValues a map containing a vertex value for each vertex 37 | */ 38 | public GraphValues(Map vertexValues) { 39 | this.vertexValues = new HashMap<>(vertexValues); 40 | } 41 | 42 | /** 43 | * @return a set of vertex ids in the graph 44 | */ 45 | public Set getVertices() { 46 | return vertexValues.keySet(); 47 | } 48 | 49 | /** 50 | * @param vertexId the id of a vertex in the graph 51 | * @return the corresponding vertex value 52 | */ 53 | public ValueType getVertexValue(long vertexId) { 54 | return vertexValues.get(vertexId); 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/execution/BenchmarkFailures.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.execution; 19 | 20 | import java.io.Serializable; 21 | import java.util.LinkedHashSet; 22 | import java.util.Set; 23 | 24 | /** 25 | * @author Wing Lung Ngai 26 | */ 27 | public class BenchmarkFailures implements Serializable { 28 | 29 | Set benchmarkFailures; 30 | 31 | public BenchmarkFailures() { 32 | benchmarkFailures = new LinkedHashSet<>(); 33 | } 34 | 35 | public void add(BenchmarkFailure failure) { 36 | this.benchmarkFailures.add(failure); 37 | } 38 | 39 | public void addAll(BenchmarkFailures failures) { 40 | for (BenchmarkFailure failure : failures.list()) { 41 | benchmarkFailures.add(failure); 42 | } 43 | } 44 | 45 | public Set list() { 46 | return benchmarkFailures; 47 | } 48 | 49 | public boolean hasNone() { 50 | return benchmarkFailures.size() == 0; 51 | } 52 | 53 | @Override 54 | public String toString() { 55 | return benchmarkFailures.toString(); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/java/science/atlarge/graphalytics/validation/algorithms/pr/PageRankOutput.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.validation.algorithms.pr; 19 | 20 | import java.util.HashMap; 21 | import java.util.Map; 22 | import java.util.Set; 23 | 24 | /** 25 | * Container for the output of the PageRank algorithm, used by the corresponding Graphalytics validation test. 26 | * 27 | * @author Tim Hegeman 28 | * @author Wing Lung Ngai 29 | */ 30 | public class PageRankOutput { 31 | 32 | private final Map nodeRanks; 33 | 34 | /** 35 | * @param nodeRanks a map containing the rank of each vertex in the test graph 36 | */ 37 | public PageRankOutput(Map nodeRanks) { 38 | this.nodeRanks = new HashMap<>(nodeRanks); 39 | } 40 | 41 | /** 42 | * @return a set of vertex ids for which the rank is known 43 | */ 44 | public Set getVertices() { 45 | return nodeRanks.keySet(); 46 | } 47 | 48 | /** 49 | * @param vertexId the id of a vertex in the output data 50 | * @return the corresponding rank 51 | */ 52 | public double getRankForVertex(long vertexId) { 53 | return nodeRanks.get(vertexId); 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/assembly/resources.xml: -------------------------------------------------------------------------------- 1 | 20 | 23 | resources 24 | false 25 | 26 | tar.gz 27 | 28 | 29 | 30 | 31 | ${project.parent.basedir} 32 | . 33 | 34 | config-template/** 35 | bin/** 36 | 37 | 38 | 39 | 40 | 41 | 42 | ${project.parent.basedir}/README.md 43 | doc 44 | README-graphalytics.md 45 | 46 | 47 | ${project.parent.basedir}/LICENSE 48 | . 49 | LICENSE 50 | 51 | 52 | -------------------------------------------------------------------------------- /bin/utils/graph-format-conversion/multi-edge-list-to-weighted-evlp.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015 - 2017 Atlarge Research Team, 4 | # operating at Technische Universiteit Delft 5 | # and Vrije Universiteit Amsterdam, the Netherlands. 6 | # 7 | # Licensed under the Apache License, Version 2.0 (the "License"); 8 | # you may not use this file except in compliance with the License. 9 | # You may obtain a copy of the License at 10 | # 11 | # http://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, software 14 | # distributed under the License is distributed on an "AS IS" BASIS, 15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | # See the License for the specific language governing permissions and 17 | # limitations under the License. 18 | # 19 | 20 | 21 | source_dir="$(dirname "${BASH_SOURCE[0]}")" 22 | 23 | # Check for the existence of input parameters 24 | if [[ $# -ne 3 && $# -ne 6 ]]; then 25 | echo "Usage: $0 [ ]" 26 | exit -1 27 | fi 28 | 29 | # Extract common parameters 30 | input_file=$1 31 | input_delimiter=$2 32 | output_basename=$3 33 | 34 | # Prepare the sort command with optional parallelism, memory size, and temporary directory 35 | if [[ $# == 6 ]]; then 36 | parallelism=$4 37 | mem_size=$5 38 | temp_dir="$6" 39 | sort_cmd() { 40 | sort --parallel=$parallelism -S $mem_size -T "$temp_dir" "$@" 41 | } 42 | else 43 | sort_cmd() { 44 | sort "$@" 45 | } 46 | fi 47 | 48 | echo "Extracting list of unique vertices..." 49 | cat "$input_file" | tr "$input_delimiter" "\n" | sort_cmd -n -u > "$output_basename.v" 50 | echo "Aggregating multi-edges..." 51 | cat "$input_file" | tr "$input_delimiter" " " | sort_cmd -n -k1,1 -k2,2 | uniq -c | sed 's/^ *//' | awk 'FS=" " { print $2, $3, 1.0 / $1 }' > "$output_basename.e" 52 | 53 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/java/science/atlarge/graphalytics/validation/algorithms/sssp/SingleSourceShortestPathsOutput.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.validation.algorithms.sssp; 19 | 20 | import java.util.Map; 21 | import java.util.Set; 22 | 23 | /** 24 | * Container for the output of the SSSP algorithm, used by the corresponding Graphalytics validation test. 25 | * 26 | * @author Tim Hegeman 27 | * @author Wing Lung Ngai 28 | */ 29 | public class SingleSourceShortestPathsOutput { 30 | 31 | private final Map distances; 32 | 33 | /** 34 | * @param distances a map containing the distance from the source for each vertex 35 | */ 36 | public SingleSourceShortestPathsOutput(Map distances) { 37 | this.distances = distances; 38 | } 39 | 40 | /** 41 | * @return a set of vertex ids for which the distance is known 42 | */ 43 | public Set getVertices() { 44 | return distances.keySet(); 45 | } 46 | 47 | /** 48 | * @param vertexId the id of a vertex in the output data 49 | * @return the corresponding distance 50 | */ 51 | public double getDistanceForVertex(long vertexId) { 52 | return distances.get(vertexId); 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /bin/utils/graph-format-conversion/graph-specific/datagen-to-graphalytics.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright 2015 - 2017 Atlarge Research Team, 4 | # operating at Technische Universiteit Delft 5 | # and Vrije Universiteit Amsterdam, the Netherlands. 6 | # 7 | # Licensed under the Apache License, Version 2.0 (the "License"); 8 | # you may not use this file except in compliance with the License. 9 | # You may obtain a copy of the License at 10 | # 11 | # http://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, software 14 | # distributed under the License is distributed on an "AS IS" BASIS, 15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | # See the License for the specific language governing permissions and 17 | # limitations under the License. 18 | # 19 | 20 | 21 | if [[ $# -ne 2 && $# -ne 5 ]]; then 22 | echo "Usage: $0 [ ]" 23 | fi 24 | 25 | input_dir="$1" 26 | output_v_file="$2.v" 27 | output_e_file="$2.e" 28 | 29 | if [[ $# == 5 ]]; then 30 | parallelism=$3 31 | mem_size=$4 32 | temp_dir="$5" 33 | sort_cmd() { 34 | sort --parallel=$parallelism -S $mem_size -T "$temp_dir" "$@" 35 | } 36 | else 37 | sort_cmd() { 38 | sort "$@" 39 | } 40 | fi 41 | 42 | # Generate the edge list 43 | if [[ -e ${output_e_file}.tmp ]]; then 44 | echo "Temporary file ${output_e_file}.tmp must not exist. Please remove it before restarting this script." >&2 45 | exit 1 46 | fi 47 | for f in $(ls -1 "$input_dir" | grep -E "^person_knows_person.*csv"); do 48 | tail -n +2 "$input_dir/$f" | cut -d'|' -f1,2,4 --output-delimiter " " >> ${output_e_file}.tmp 49 | done 50 | sort_cmd -n -k1,1 -k2,2 ${output_e_file}.tmp > $output_e_file 51 | rm ${output_e_file}.tmp 52 | 53 | # Generate the vertex list 54 | cut -d' ' -f1,2 "$output_e_file" | tr " " "\n" | sort_cmd -n -u > "$output_v_file" 55 | 56 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/execution/Notification.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.execution; 19 | 20 | import java.io.Serializable; 21 | 22 | /** 23 | * @author Wing Lung Ngai 24 | */ 25 | public class Notification implements Serializable { 26 | public enum Label {REGISTRATION, EXECUTION, VALIDATION, FAILURE}; 27 | 28 | String benchmarkId; 29 | Object payload; 30 | Label label; 31 | 32 | public Notification(String benchmarkId, Object payload, Label label) { 33 | this.benchmarkId = benchmarkId; 34 | this.payload = payload; 35 | this.label = label; 36 | } 37 | 38 | public String getBenchmarkId() { 39 | return benchmarkId; 40 | } 41 | 42 | public void setBenchmarkId(String benchmarkId) { 43 | this.benchmarkId = benchmarkId; 44 | } 45 | 46 | public Object getPayload() { 47 | return payload; 48 | } 49 | 50 | public void setPayload(Object payload) { 51 | this.payload = payload; 52 | } 53 | 54 | public Label getLabel() { 55 | return label; 56 | } 57 | 58 | public void setLabel(Label label) { 59 | this.label = label; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/report/result/BenchmarkMetrics.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.report.result; 19 | 20 | import java.io.Serializable; 21 | 22 | /** 23 | * @author Wing Lung Ngai 24 | */ 25 | public class BenchmarkMetrics implements Serializable{ 26 | private BenchmarkMetric loadTime; 27 | private BenchmarkMetric makespan; 28 | private BenchmarkMetric processingTime; 29 | 30 | public BenchmarkMetrics() { 31 | loadTime = new BenchmarkMetric(); 32 | makespan = new BenchmarkMetric(); 33 | processingTime = new BenchmarkMetric(); 34 | } 35 | 36 | public BenchmarkMetric getLoadTime() { 37 | return loadTime; 38 | } 39 | 40 | public void setLoadTime(BenchmarkMetric loadTime) { 41 | this.loadTime = loadTime; 42 | } 43 | 44 | public BenchmarkMetric getProcessingTime() { 45 | return processingTime; 46 | } 47 | 48 | public void setProcessingTime(BenchmarkMetric processingTime) { 49 | this.processingTime = processingTime; 50 | } 51 | 52 | public BenchmarkMetric getMakespan() { 53 | return makespan; 54 | } 55 | 56 | public void setMakespan(BenchmarkMetric makespan) { 57 | this.makespan = makespan; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/domain/benchmark/BenchmarkExp.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.domain.benchmark; 19 | 20 | import science.atlarge.graphalytics.util.UuidUtil; 21 | 22 | import java.util.ArrayList; 23 | import java.util.List; 24 | 25 | /** 26 | * @author Wing Lung Ngai 27 | */ 28 | public class BenchmarkExp { 29 | String id; 30 | String type; 31 | List jobs; 32 | 33 | public BenchmarkExp(String type) { 34 | this.id = UuidUtil.getRandomUUID("e", 6); 35 | this.type = type; 36 | this.jobs = new ArrayList<>(); 37 | } 38 | 39 | public BenchmarkExp(String id, String type) { 40 | this.id = id; 41 | this.type = type; 42 | this.jobs = new ArrayList<>(); 43 | } 44 | 45 | public String getId() { 46 | return id; 47 | } 48 | 49 | public void setId(String id) { 50 | this.id = id; 51 | } 52 | 53 | public String getType() { 54 | return type; 55 | } 56 | 57 | public void setType(String type) { 58 | this.type = type; 59 | } 60 | 61 | public List getJobs() { 62 | return jobs; 63 | } 64 | 65 | public void addJob(BenchmarkJob job) { 66 | jobs.add(job); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/java/science/atlarge/graphalytics/validation/algorithms/bfs/BreadthFirstSearchOutput.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.validation.algorithms.bfs; 19 | 20 | import java.util.HashMap; 21 | import java.util.Map; 22 | import java.util.Set; 23 | 24 | /** 25 | * Container for the output of the breadth-first search algorithm, used by the corresponding Graphalytics validation 26 | * test. 27 | * 28 | * @author Mihai Capotă 29 | * @author Tim Hegeman 30 | * @author Wing Lung Ngai 31 | */ 32 | public class BreadthFirstSearchOutput { 33 | 34 | private final Map pathLengths; 35 | 36 | /** 37 | * @param pathLengths a map containing the shortest path length to each vertex 38 | */ 39 | public BreadthFirstSearchOutput(Map pathLengths) { 40 | this.pathLengths = new HashMap<>(pathLengths); 41 | } 42 | 43 | /** 44 | * @return a set of vertex ids for which the shortest path length is known 45 | */ 46 | public Set getVertices() { 47 | return pathLengths.keySet(); 48 | } 49 | 50 | /** 51 | * @param vertexId the id of a vertex in the output data 52 | * @return the corresponding shortest path length 53 | */ 54 | public long getPathLengthForVertex(long vertexId) { 55 | return pathLengths.get(vertexId); 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/java/science/atlarge/graphalytics/validation/algorithms/wcc/WeaklyConnectedComponentsOutput.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.validation.algorithms.wcc; 19 | 20 | import java.util.HashMap; 21 | import java.util.Map; 22 | import java.util.Set; 23 | 24 | /** 25 | * Container for the output of the weakly connected components algorithm, used by the corresponding Graphalytics 26 | * validation test. 27 | * 28 | * @author Mihai Capotă 29 | * @author Tim Hegeman 30 | * @author Wing Lung Ngai 31 | */ 32 | public class WeaklyConnectedComponentsOutput { 33 | 34 | private final Map componentIds; 35 | 36 | /** 37 | * @param componentIds a map containing the component id of each vertex 38 | */ 39 | public WeaklyConnectedComponentsOutput(Map componentIds) { 40 | this.componentIds = new HashMap<>(componentIds); 41 | } 42 | 43 | /** 44 | * @return a set of vertex ids for which the component id is known 45 | */ 46 | public Set getVertices() { 47 | return componentIds.keySet(); 48 | } 49 | 50 | /** 51 | * @param vertexId the id of a vertex in the output data 52 | * @return the corresponding component id 53 | */ 54 | public long getComponentIdForVertex(long vertexId) { 55 | return componentIds.get(vertexId); 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/util/UuidUtil.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | package science.atlarge.graphalytics.util; 20 | 21 | import java.util.HashSet; 22 | import java.util.Set; 23 | import java.util.UUID; 24 | 25 | /** 26 | * @author Mihai Capotă 27 | * @author Tim Hegeman 28 | * @author Wing Lung Ngai 29 | */ 30 | public class UuidUtil { 31 | 32 | private static Set usedUUIDs = new HashSet<>(); 33 | 34 | public static String getRandomUUID() { 35 | String uuid = String.valueOf(UUID.randomUUID().getLeastSignificantBits() * -1l); 36 | 37 | while(usedUUIDs.contains(uuid)) { 38 | uuid = String.valueOf(UUID.randomUUID().getLeastSignificantBits() * -1l); 39 | } 40 | usedUUIDs.add(uuid); 41 | 42 | return uuid; 43 | } 44 | 45 | public static String getRandomUUID(String prefix, int length) { 46 | String uuid = prefix + String.valueOf(getRandomUUID().substring(0, length)); 47 | 48 | while(usedUUIDs.contains(uuid)) { 49 | uuid = prefix + String.valueOf(getRandomUUID().substring(0, length)); 50 | } 51 | usedUUIDs.add(uuid); 52 | 53 | return uuid; 54 | } 55 | 56 | public static String getRandomUUID(int length) { 57 | return getRandomUUID("", length); 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/plugin/Plugin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.plugin; 19 | 20 | import science.atlarge.graphalytics.domain.benchmark.Benchmark; 21 | import science.atlarge.graphalytics.execution.RunSpecification; 22 | import science.atlarge.graphalytics.report.BenchmarkReportGenerator; 23 | import science.atlarge.graphalytics.report.result.BenchmarkMetrics; 24 | import science.atlarge.graphalytics.report.result.BenchmarkResult; 25 | import science.atlarge.graphalytics.report.result.BenchmarkRunResult; 26 | 27 | /** 28 | * @author Mihai Capotă 29 | * @author Tim Hegeman 30 | * @author Wing Lung Ngai 31 | */ 32 | public interface Plugin { 33 | 34 | void preBenchmarkSuite(Benchmark benchmark); 35 | 36 | void prepare(RunSpecification runSpecification); 37 | 38 | void startup(RunSpecification runSpecification); 39 | 40 | BenchmarkMetrics finalize(RunSpecification runSpecification, BenchmarkMetrics metrics); 41 | 42 | void terminate(RunSpecification runSpecification, BenchmarkRunResult benchmarkRunResult); 43 | 44 | void postBenchmarkSuite(Benchmark benchmark, BenchmarkResult benchmarkResult); 45 | 46 | void preReportGeneration(BenchmarkReportGenerator reportGenerator); 47 | 48 | void shutdown(); 49 | 50 | String getPluginName(); 51 | 52 | String getPluginDescription(); 53 | 54 | } 55 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/util/io/VertexListStreamWriter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.util.io; 19 | 20 | import java.io.*; 21 | 22 | /** 23 | * Writes a VertexListStream to an OutputStream in the EVLP vertex-list format. 24 | * 25 | * @author Tim Hegeman 26 | * @author Wing Lung Ngai 27 | */ 28 | public class VertexListStreamWriter implements AutoCloseable { 29 | 30 | private final VertexListStream inputStream; 31 | private final Writer outputWriter; 32 | 33 | public VertexListStreamWriter(VertexListStream inputStream, OutputStream outputStream) { 34 | this.inputStream = inputStream; 35 | this.outputWriter = new BufferedWriter(new OutputStreamWriter(outputStream)); 36 | } 37 | 38 | public void writeAll() throws IOException { 39 | while (inputStream.hasNextVertex()) { 40 | writeNextVertex(); 41 | } 42 | outputWriter.flush(); 43 | } 44 | 45 | private void writeNextVertex() throws IOException { 46 | VertexListStream.VertexData vertexData = inputStream.getNextVertex(); 47 | outputWriter.write(String.valueOf(vertexData.getId())); 48 | for (String value : vertexData.getValues()) { 49 | outputWriter.append(' '); 50 | outputWriter.write(value); 51 | } 52 | outputWriter.append('\n'); 53 | } 54 | 55 | @Override 56 | public void close() throws IOException { 57 | outputWriter.close(); 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /graphalytics-plugins-granula/src/main/java/science/atlarge/graphalytics/granula/FailedJobArchiver.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.granula; 19 | 20 | import science.atlarge.granula.archiver.GranulaExecutor; 21 | import science.atlarge.granula.modeller.entity.Execution; 22 | import science.atlarge.granula.modeller.job.JobModel; 23 | import science.atlarge.granula.util.FileUtil; 24 | import science.atlarge.granula.util.json.JsonUtil; 25 | 26 | import java.nio.file.Paths; 27 | 28 | /** 29 | * @author Wing Lung Ngai 30 | */ 31 | public class FailedJobArchiver { 32 | 33 | public static void main(String[] args) { 34 | String driverLogPath = args[0]; 35 | Execution execution = (Execution) JsonUtil.fromJson(FileUtil.readFile(Paths.get(driverLogPath)), Execution.class); 36 | execution.setEndTime(System.currentTimeMillis()); 37 | execution.setArcPath(Paths.get("./iffailed").toAbsolutePath().toString()); 38 | JobModel jobModel = new JobModel(GranulaPlugin.getPlatformModelByMagic(execution.getPlatform())); 39 | 40 | GranulaExecutor granulaExecutor = new GranulaExecutor(); 41 | if(execution.getPlatform().toLowerCase().contains("graphx")) { 42 | granulaExecutor.setEnvEnabled(false); //TODO fix graphx 43 | } 44 | granulaExecutor.setExecution(execution); 45 | granulaExecutor.buildJobArchive(jobModel); 46 | 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/execution/BenchmarkStatus.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.execution; 19 | 20 | import java.io.Serializable; 21 | import java.util.Date; 22 | 23 | /** 24 | * @author Wing Lung Ngai 25 | */ 26 | public class BenchmarkStatus implements Serializable { 27 | 28 | private Date startOfBenchmark; 29 | private Date endOfBenchmark; 30 | private boolean validated; 31 | 32 | public BenchmarkStatus() { 33 | startOfBenchmark = new Date(); 34 | endOfBenchmark = new Date(); 35 | validated = false; 36 | } 37 | 38 | 39 | /** 40 | * @return the start time of the benchmark execution 41 | */ 42 | public Date getStartOfBenchmark() { 43 | return new Date(startOfBenchmark.getTime()); 44 | } 45 | 46 | public void setStartOfBenchmark() { 47 | this.startOfBenchmark = new Date(); 48 | } 49 | 50 | /** 51 | * @return the completion time of the benchmark execution 52 | */ 53 | public Date getEndOfBenchmark() { 54 | return new Date(endOfBenchmark.getTime()); 55 | } 56 | 57 | public void setEndOfBenchmark() { 58 | this.endOfBenchmark = new Date(); 59 | } 60 | 61 | public void setValidated(boolean validated) { 62 | this.validated = validated; 63 | } 64 | 65 | public boolean isValidated() { 66 | return validated; 67 | } 68 | 69 | 70 | } 71 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/resources/graphalytics/report/report.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
34 |
35 | 36 |
37 |
38 | 39 |
40 | 41 | 42 | 43 | 44 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /graphalytics-core/src/test/java/science/atlarge/graphalytics/util/io/EdgeListStreamWriterTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.util.io; 19 | 20 | import org.apache.commons.io.output.ByteArrayOutputStream; 21 | import org.junit.Test; 22 | 23 | import java.io.IOException; 24 | 25 | import static org.junit.Assert.assertEquals; 26 | 27 | /** 28 | * Test cases for EdgeListStreamWriter. 29 | * 30 | * @author Tim Hegeman 31 | * @author Wing Lung Ngai 32 | */ 33 | public class EdgeListStreamWriterTest { 34 | 35 | private static final EdgeListStream.EdgeData[] edges = new EdgeListStream.EdgeData[]{ 36 | new EdgeListStream.EdgeData(0, 1, new String[]{"testing"}), 37 | new EdgeListStream.EdgeData(1, 2, new String[]{"multiple", "properties"}), 38 | new EdgeListStream.EdgeData(10, 1, new String[]{"123"}) 39 | }; 40 | 41 | private static final String expectedOutput = "0 1 testing\n" + 42 | "1 2 multiple properties\n" + 43 | "10 1 123\n"; 44 | 45 | @Test 46 | public void testWriteAllOnMockEdgeListStream() throws IOException { 47 | EdgeListStream edgeListStream = new MockEdgeListStream(edges); 48 | ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 49 | 50 | try (EdgeListStreamWriter writer = new EdgeListStreamWriter(edgeListStream, outputStream)) { 51 | writer.writeAll(); 52 | assertEquals("Output of EdgeListStreamWriter is correct", expectedOutput, outputStream.toString()); 53 | } 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/domain/graph/LoadedGraph.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.domain.graph; 19 | 20 | import java.io.Serializable; 21 | 22 | /** 23 | * LoadedGraph represents graph data loaded into the system-dependent environment. 24 | * @author Wing Lung Ngai 25 | */ 26 | public class LoadedGraph implements Serializable { 27 | 28 | private final FormattedGraph formattedGraph; 29 | private final String loadedPath; 30 | private final String vertexPath; 31 | private final String edgePath; 32 | 33 | public LoadedGraph(FormattedGraph formattedGraph, String vertexPath, String edgePath) { 34 | this.formattedGraph = formattedGraph; 35 | this.loadedPath = null; 36 | this.vertexPath = vertexPath; 37 | this.edgePath = edgePath; 38 | } 39 | 40 | public LoadedGraph(FormattedGraph formattedGraph, String loadedPath) { 41 | this.formattedGraph = formattedGraph; 42 | this.loadedPath = loadedPath; 43 | this.vertexPath = null; 44 | this.edgePath = null; 45 | } 46 | 47 | public FormattedGraph getFormattedGraph() { 48 | return formattedGraph; 49 | } 50 | 51 | public String getLoadedPath() { 52 | return loadedPath; 53 | } 54 | 55 | public String getVertexPath() { 56 | return vertexPath; 57 | } 58 | 59 | public String getEdgePath() { 60 | return edgePath; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/util/io/EdgeListStreamWriter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.util.io; 19 | 20 | import java.io.*; 21 | 22 | /** 23 | * Writes an EdgeListStream to an OutputStream in the EVLP edge-list format. 24 | * 25 | * @author Tim Hegeman 26 | * @author Wing Lung Ngai 27 | */ 28 | public class EdgeListStreamWriter implements AutoCloseable { 29 | 30 | private final EdgeListStream inputStream; 31 | private final Writer outputWriter; 32 | 33 | public EdgeListStreamWriter(EdgeListStream inputStream, OutputStream outputStream) { 34 | this.inputStream = inputStream; 35 | this.outputWriter = new BufferedWriter(new OutputStreamWriter(outputStream)); 36 | } 37 | 38 | public void writeAll() throws IOException { 39 | while (inputStream.hasNextEdge()) { 40 | writeNextEdge(); 41 | } 42 | outputWriter.flush(); 43 | } 44 | 45 | private void writeNextEdge() throws IOException { 46 | EdgeListStream.EdgeData edgeData = inputStream.getNextEdge(); 47 | outputWriter.write(String.valueOf(edgeData.getSourceId())); 48 | outputWriter.append(' '); 49 | outputWriter.write(String.valueOf(edgeData.getDestinationId())); 50 | for (String value : edgeData.getValues()) { 51 | outputWriter.append(' '); 52 | outputWriter.write(value); 53 | } 54 | outputWriter.append('\n'); 55 | } 56 | 57 | @Override 58 | public void close() throws IOException { 59 | outputWriter.close(); 60 | } 61 | 62 | } 63 | -------------------------------------------------------------------------------- /graphalytics-validation/src/main/java/science/atlarge/graphalytics/validation/algorithms/lcc/LocalClusteringCoefficientOutput.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.validation.algorithms.lcc; 19 | 20 | import java.util.HashMap; 21 | import java.util.Map; 22 | import java.util.Set; 23 | 24 | /** 25 | * Container for the output of the local clustering coefficient algorithm, used by the corresponding Graphalytics 26 | * validation test. 27 | * 28 | * @author Mihai Capotă 29 | * @author Tim Hegeman 30 | * @author Wing Lung Ngai 31 | */ 32 | public class LocalClusteringCoefficientOutput { 33 | 34 | private final Map localClusteringCoefficients; 35 | 36 | /** 37 | * @param localClusteringCoefficients a map containing the local clustering coefficient of each vertex 38 | */ 39 | public LocalClusteringCoefficientOutput(Map localClusteringCoefficients) { 40 | this.localClusteringCoefficients = new HashMap<>(localClusteringCoefficients); 41 | } 42 | 43 | /** 44 | * @return a set of vertex ids for which the coefficient is known 45 | */ 46 | public Set getVertices() { 47 | return localClusteringCoefficients.keySet(); 48 | } 49 | 50 | /** 51 | * @param vertexId the id of a vertex in the output data 52 | * @return the corresponding local clustering coefficient 53 | */ 54 | public double getLocalClusteringCoefficientForVertex(long vertexId) { 55 | return localClusteringCoefficients.get(vertexId); 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /bin/sh/run-benchmark.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright 2015 - 2017 Atlarge Research Team, 4 | # operating at Technische Universiteit Delft 5 | # and Vrije Universiteit Amsterdam, the Netherlands. 6 | # 7 | # Licensed under the Apache License, Version 2.0 (the "License"); 8 | # you may not use this file except in compliance with the License. 9 | # You may obtain a copy of the License at 10 | # 11 | # http://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, software 14 | # distributed under the License is distributed on an "AS IS" BASIS, 15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | # See the License for the specific language governing permissions and 17 | # limitations under the License. 18 | # 19 | 20 | 21 | set -e 22 | 23 | rootdir="$( cd "$( dirname "${BASH_SOURCE[0]:-${(%):-%x}}" )" >/dev/null 2>&1 && pwd )/../.." 24 | config="${rootdir}/config/" 25 | 26 | function print-usage() { 27 | echo "Usage: ${BASH_SOURCE[0]} [--config ]" >&2 28 | } 29 | 30 | # Parse the command-line arguments 31 | while : 32 | do 33 | case "$1" in 34 | --config) # Use a different config directory 35 | if [ "$(uname)" == "Darwin" ]; then 36 | config="$(greadlink -f "$2")" 37 | else 38 | config="$(readlink -f "$2")" 39 | fi 40 | echo "Using config: $config" 41 | shift 2 42 | ;; 43 | --) # End of options 44 | shift 45 | break 46 | ;; 47 | -*) # Unknown command line option 48 | echo "Unknown option: $1" >&2 49 | print-usage 50 | exit 1 51 | ;; 52 | *) # End of options 53 | break 54 | ;; 55 | esac 56 | done 57 | 58 | # Execute platform specific initialization 59 | export config=$config 60 | . ${rootdir}/bin/sh/prepare-benchmark.sh "$@" 61 | 62 | # Verify that the library jar is set 63 | if [ "$LIBRARY_JAR" = "" ]; then 64 | echo "The prepare-benchmark.sh script must set variable \$LIBRARY_JAR" >&2 65 | exit 1 66 | fi 67 | 68 | # Run the benchmark 69 | export CLASSPATH=$config:$(find ${rootdir}/$LIBRARY_JAR):$platform_classpath 70 | java -cp $CLASSPATH $java_opts science.atlarge.graphalytics.BenchmarkSuite 71 | 72 | -------------------------------------------------------------------------------- /graphalytics-core/src/test/java/science/atlarge/graphalytics/util/io/VertexListStreamWriterTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.util.io; 19 | 20 | import org.apache.commons.io.output.ByteArrayOutputStream; 21 | import org.junit.Test; 22 | 23 | import java.io.IOException; 24 | 25 | import static org.junit.Assert.assertEquals; 26 | 27 | /** 28 | * Test cases for VertexListStreamWriter. 29 | * 30 | * @author Tim Hegeman 31 | * @author Wing Lung Ngai 32 | */ 33 | public class VertexListStreamWriterTest { 34 | 35 | private static final VertexListStream.VertexData[] vertices = new VertexListStream.VertexData[]{ 36 | new VertexListStream.VertexData(0, new String[]{"testing"}), 37 | new VertexListStream.VertexData(1, new String[]{"multiple", "properties"}), 38 | new VertexListStream.VertexData(10, new String[]{"123"}) 39 | }; 40 | 41 | private static final String expectedOutput = "0 testing\n" + 42 | "1 multiple properties\n" + 43 | "10 123\n"; 44 | 45 | @Test 46 | public void testWriteAllOnMockVertexListStream() throws IOException { 47 | VertexListStream vertexListStream = new MockVertexListStream(vertices); 48 | ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 49 | 50 | try (VertexListStreamWriter writer = new VertexListStreamWriter(vertexListStream, outputStream)) { 51 | writer.writeAll(); 52 | assertEquals("Output of VertexListStreamWriter is correct", expectedOutput, outputStream.toString()); 53 | } 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/report/html/StaticResource.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.report.html; 19 | 20 | import org.apache.commons.io.FileUtils; 21 | import science.atlarge.graphalytics.report.BenchmarkReportFile; 22 | 23 | import java.io.IOException; 24 | import java.net.URL; 25 | import java.nio.file.Files; 26 | import java.nio.file.Path; 27 | 28 | /** 29 | * Static HTML Resource. 30 | * 31 | * @author Tim Hegeman 32 | * @author Wing Lung Ngai 33 | */ 34 | public class StaticResource implements BenchmarkReportFile { 35 | 36 | private final URL resourceUrl; 37 | private final String relativeOutputPath; 38 | 39 | public StaticResource(URL resourceUrl, String relativeOutputPath) { 40 | this.resourceUrl = resourceUrl; 41 | this.relativeOutputPath = relativeOutputPath; 42 | } 43 | 44 | @Override 45 | public void write(Path reportPath) throws IOException { 46 | Path outputPath = reportPath.resolve(relativeOutputPath); 47 | // Ensure that the containing directory exists 48 | if (!outputPath.getParent().toFile().exists()) { 49 | Files.createDirectories(outputPath.getParent()); 50 | } else if (!outputPath.getParent().toFile().isDirectory()) { 51 | throw new IOException("Could not write static resource to \"" + outputPath + "\": parent is not a directory."); 52 | } 53 | // Copy the resource to the output file 54 | FileUtils.copyInputStreamToFile(resourceUrl.openStream(), outputPath.toFile()); 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/execution/MircoService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.execution; 19 | 20 | import akka.actor.UntypedActor; 21 | import com.typesafe.config.Config; 22 | import com.typesafe.config.ConfigFactory; 23 | import com.typesafe.config.ConfigValueFactory; 24 | 25 | /** 26 | * @author Wing Lung Ngai 27 | */ 28 | public abstract class MircoService extends UntypedActor { 29 | 30 | public MircoService() { 31 | 32 | } 33 | 34 | 35 | protected static Config defaultConfiguration() { 36 | Config config = ConfigFactory.empty(); 37 | config = config.withValue("akka.actor.java", ConfigValueFactory.fromAnyRef("akka.serialization.JavaSerializer")); 38 | config = config.withValue("akka.actor.provider", ConfigValueFactory.fromAnyRef("akka.remote.RemoteActorRefProvider")); 39 | config = config.withValue("akka.actor.warn-about-java-serializer-usage", ConfigValueFactory.fromAnyRef("off")); 40 | 41 | config = config.withValue("akka.loglevel", ConfigValueFactory.fromAnyRef("ERROR")); 42 | // config = config.withValue("akka.remote.log-remote-lifecycle-events", ConfigValueFactory.fromAnyRef("off")); 43 | // config = config.withValue("akka.log-dead-letters-during-shutdown", ConfigValueFactory.fromAnyRef("off")); 44 | // config = config.withValue("akka.log-dead-letters", ConfigValueFactory.fromAnyRef("off")); 45 | 46 | return config; 47 | } 48 | 49 | 50 | public void terminate() { 51 | getContext().system().terminate(); 52 | } 53 | 54 | 55 | } 56 | -------------------------------------------------------------------------------- /graphalytics-core/src/main/java/science/atlarge/graphalytics/domain/graph/Property.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 - 2017 Atlarge Research Team, 3 | * operating at Technische Universiteit Delft 4 | * and Vrije Universiteit Amsterdam, the Netherlands. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | package science.atlarge.graphalytics.domain.graph; 19 | 20 | import java.io.Serializable; 21 | 22 | /** 23 | * Represents a single vertex or edge property in a graph, i.e. a (name, type) pair. 24 | * 25 | * @author Tim Hegeman 26 | * @author Wing Lung Ngai 27 | */ 28 | public final class Property implements Serializable { 29 | 30 | private final String name; 31 | private final PropertyType type; 32 | 33 | /** 34 | * @param name the name of the property 35 | * @param type the type of the property 36 | */ 37 | public Property(String name, PropertyType type) { 38 | this.name = name; 39 | this.type = type; 40 | } 41 | 42 | /** 43 | * @return the name of the property 44 | */ 45 | public String getName() { 46 | return name; 47 | } 48 | 49 | /** 50 | * @return the type of the property 51 | */ 52 | public PropertyType getType() { 53 | return type; 54 | } 55 | 56 | @Override 57 | public boolean equals(Object o) { 58 | if (this == o) return true; 59 | if (o == null || getClass() != o.getClass()) return false; 60 | 61 | Property property = (Property)o; 62 | 63 | if (!name.equals(property.name)) return false; 64 | return type == property.type; 65 | 66 | } 67 | 68 | @Override 69 | public int hashCode() { 70 | int result = name.hashCode(); 71 | result = 31 * result + type.hashCode(); 72 | return result; 73 | } 74 | 75 | @Override 76 | public String toString() { 77 | return "Property{" + 78 | "name='" + name + '\'' + 79 | ", type=" + type + 80 | '}'; 81 | } 82 | 83 | } 84 | -------------------------------------------------------------------------------- /bin/utils/graph-format-conversion/graph-specific/dotaleague-to-multi-edge.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Copyright 2015 - 2017 Atlarge Research Team, 4 | # operating at Technische Universiteit Delft 5 | # and Vrije Universiteit Amsterdam, the Netherlands. 6 | # 7 | # Licensed under the Apache License, Version 2.0 (the "License"); 8 | # you may not use this file except in compliance with the License. 9 | # You may obtain a copy of the License at 10 | # 11 | # http://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, software 14 | # distributed under the License is distributed on an "AS IS" BASIS, 15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | # See the License for the specific language governing permissions and 17 | # limitations under the License. 18 | # 19 | 20 | 21 | import argparse 22 | 23 | def main(): 24 | argparser = argparse.ArgumentParser() 25 | argparser.add_argument("fin", help="input file (DotaLeague_Edge_Basic)") 26 | argparser.add_argument("fout", help="output file") 27 | args = argparser.parse_args() 28 | 29 | with open(args.fin, "r") as fin, open(args.fout, "w") as fout: 30 | line = fin.readline() 31 | while line and (line.startswith("#") or line.startswith("RowID")): 32 | line = fin.readline() 33 | while line: 34 | parts = line.split(", ") 35 | edgetype = int(parts[5]) 36 | if edgetype == 0: 37 | srcplayers = set(int(player) for player in parts[2].split("/")) 38 | dstplayers = set(int(player) for player in parts[4].split("/")) 39 | allplayers = list(srcplayers | dstplayers) 40 | if len(allplayers) != 10: 41 | print("Invalid match:", line) 42 | else: 43 | for i in range(0, 9): 44 | for j in range(i + 1, 10): 45 | src = allplayers[i] 46 | dst = allplayers[j] 47 | if src < dst: 48 | edge = (src, dst) 49 | else: 50 | edge = (dst, src) 51 | print(edge[0], edge[1], file=fout) 52 | line = fin.readline() 53 | 54 | if __name__ == "__main__": 55 | main() 56 | --------------------------------------------------------------------------------