├── 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 |
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 |
--------------------------------------------------------------------------------