Skip to content

Commit bf5d158

Browse files
author
Ubuntu
committedFeb 28, 2024·
removed pragma once from files in include/parlay, and cleaned up header files in examples
1 parent 051cca1 commit bf5d158

40 files changed

+89
-43
lines changed
 

‎examples/3d_range.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
#include <string>
33
#include <random>
44

5-
#include "parlay/primitives.h"
6-
#include "parlay/random.h"
5+
#include <parlay/primitives.h>
6+
#include <parlay/random.h>
7+
#include <parlay/internal/get_time.h>
78

89
#include "3d_range.h"
910

‎examples/BFS_ligra.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include <parlay/primitives.h>
55
#include <parlay/sequence.h>
6+
#include <parlay/internal/get_time.h>
67

78
#include "BFS_ligra.h"
89
#include "helper/graph_utils.h"

‎examples/betweenness_centrality.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <parlay/sequence.h>
88
#include <parlay/random.h>
99
#include <parlay/io.h>
10+
#include <parlay/internal/get_time.h>
1011

1112
#include "betweenness_centrality.h"
1213
#include "helper/graph_utils.h"

‎examples/bigint_add.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
#include <parlay/primitives.h>
77
#include <parlay/random.h>
8+
#include <parlay/internal/get_time.h>
89

910
#include "bigint_add.h"
1011

‎examples/box_kdtree.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
#include <string>
33
#include <random>
44

5-
#include "parlay/primitives.h"
6-
#include "parlay/random.h"
7-
#include "parlay/io.h"
5+
#include <parlay/primitives.h>
6+
#include <parlay/random.h>
7+
#include <parlay/io.h>
8+
#include <parlay/internal/get_time.h>
89

910
#include "box_kdtree.h"
1011

‎examples/counting_sort.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <parlay/primitives.h>
77
#include <parlay/random.h>
88
#include <parlay/sequence.h>
9+
#include <parlay/internal/get_time.h>
910

1011
#include "counting_sort.h"
1112

‎examples/counting_sort.h

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <parlay/parallel.h>
55
#include <parlay/sequence.h>
66
#include <parlay/primitives.h>
7+
#include <parlay/internal/get_time.h>
78

89
// **************************************************************
910
// Counting sort

‎examples/delaunay.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <parlay/primitives.h>
66
#include <parlay/sequence.h>
77
#include <parlay/random.h>
8+
#include <parlay/internal/get_time.h>
89

910
#include "delaunay.h"
1011

‎examples/filter.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include <parlay/primitives.h>
55
#include <parlay/sequence.h>
6+
#include <parlay/internal/get_time.h>
67

78
// **************************************************************
89
// Driver code

‎examples/find_if.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include <parlay/primitives.h>
66
#include <parlay/random.h>
7+
#include <parlay/internal/get_time.h>
78

89
#include "find_if.h"
910

‎examples/flatten.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#include <iostream>
22
#include <string>
3+
#include <cmath>
34

45
#include <parlay/sequence.h>
6+
#include <parlay/internal/get_time.h>
57

68
#include "flatten.h"
79

‎examples/integer_sort.cpp

+6-5
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <parlay/primitives.h>
88
#include <parlay/random.h>
99
#include <parlay/sequence.h>
10+
#include <parlay/internal/get_time.h>
1011

1112
#include "integer_sort.h"
1213

@@ -21,23 +22,23 @@ int main(int argc, char* argv[]) {
2122
try { n = std::stol(argv[1]); }
2223
catch (...) { std::cout << usage << std::endl; return 1; }
2324

24-
using int_type = int;
25+
using int_type = unsigned int;
2526

2627
parlay::random_generator gen;
2728
std::uniform_int_distribution<int_type> dis(0, n-1);
2829
int bits = std::ceil(std::log2(n));
2930

30-
// generate random long values
31+
// generate random int_type values between 0 and n
3132
parlay::sequence<int_type> data = parlay::tabulate(n, [&] (long i) {
3233
auto r = gen[i];
3334
return dis(r);});
3435

3536
parlay::internal::timer t("Time");
3637
parlay::sequence<int_type> result;
37-
for (int i=0; i < 5; i++) {
38-
result.clear();
38+
for (int i = 0; i < 5; i++) {
39+
result = data;
3940
t.start();
40-
result = ::integer_sort(data,bits);
41+
::integer_sort(result, bits);
4142
t.next("integer_sort");
4243
}
4344

‎examples/integer_sort.h

+13-16
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
#include <algorithm>
22
#include <functional>
3-
#include <random>
3+
#include <cmath>
44

55
#include <parlay/parallel.h>
66
#include <parlay/primitives.h>
7-
#include <parlay/random.h>
87
#include <parlay/slice.h>
9-
#include <parlay/utilities.h>
108

11-
#include "helper/heap_tree.h"
129
#include "counting_sort.h"
1310

1411
// **************************************************************
@@ -19,6 +16,7 @@
1916
// buckets based on the high bits and then recurses on each bucket.
2017
// The bottom up is a standard radix sort starting on low-order bits
2118
// and taking advantage of the stability of each counting sort.
19+
// Uses counting_sort for each block of the radix.
2220
//
2321
// Flips back and forth between in and out, with "inplace" keeping track
2422
// of whether the result should be in in (or if false, in out).
@@ -51,36 +49,35 @@ void radix_sort(Range in, Range out, long bits, bool inplace) {
5149
if (n < cutoff)
5250
bottom_up_radix_sort(in, out, bits, 0, inplace);
5351
else {
54-
// number of bits in bucket count (e.g. 8 would mean 256 buckets)
55-
long radix_bits = std::min<long>(bits, std::ceil(std::log2(2*n/cutoff)));
52+
// number of bits in radix
53+
long radix_bits = std::min<long>(bits, std::min<long>(10l, std::ceil(std::log2(2*n/cutoff))));
5654
long num_buckets = 1l << radix_bits;
5755

5856
// extract the needed bits for the keys
5957
auto keys = parlay::delayed::tabulate(n, [&] (long i) {
6058
return (in[i] >> bits - radix_bits) & (num_buckets-1);});
6159

62-
// sort into the buckets
60+
// sort in into the out based on keys
6361
auto offsets = counting_sort(in.begin(), in.end(), out.begin(), keys.begin(),
6462
num_buckets);
6563

6664
// now recursively sort each bucket
6765
parlay::parallel_for(0, num_buckets, [&] (long i) {
68-
long first = offsets[i]; // start of region
69-
long last = offsets[i+1]; // end of region
66+
long first = offsets[i]; // start of bucket
67+
long last = offsets[i+1]; // end of bucket
7068
// note that order of in and out is flipped (as is inplace)
7169
radix_sort(out.cut(first,last), in.cut(first,last),
7270
bits - radix_bits, !inplace);
7371
}, 1);
7472
}
7573
}
7674

77-
// A wraper that calls integer_sort_
75+
// An inplace (i.e., result is in the same place as the input) integer_sort
76+
// Requires O(n) temp space
7877
template <typename Range>
79-
parlay::sequence<typename Range::value_type>
80-
integer_sort(Range& in, long bits) {
81-
auto out = parlay::sequence<typename Range::value_type>::uninitialized(in.size());
78+
void integer_sort(Range& in, long bits) {
79+
auto tmp = parlay::sequence<typename Range::value_type>::uninitialized(in.size());
8280
auto in_slice = parlay::make_slice(in);
83-
auto out_slice = parlay::make_slice(out);
84-
radix_sort(in_slice, out_slice, bits, false);
85-
return out;
81+
auto tmp_slice = parlay::make_slice(tmp);
82+
radix_sort(in_slice, tmp_slice, bits, true);
8683
}

‎examples/karatsuba.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
#include <parlay/primitives.h>
77
#include <parlay/random.h>
8+
#include <parlay/internal/get_time.h>
89

910
#include "karatsuba.h"
1011

‎examples/kmeans_pp.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <parlay/primitives.h>
66
#include <parlay/random.h>
77
#include <parlay/delayed.h>
8+
#include <parlay/internal/get_time.h>
89

910
#include "kmeans_pp.h"
1011

‎examples/knn.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
#include <string>
33
#include <random>
44

5-
#include "parlay/primitives.h"
6-
#include "parlay/random.h"
7-
#include "parlay/io.h"
5+
#include <parlay/primitives.h>
6+
#include <parlay/random.h>
7+
#include <parlay/io.h>
8+
#include <parlay/internal/get_time.h>
89

910
#include "knn.h"
1011

‎examples/knuth_shuffle.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <parlay/primitives.h>
55
#include <parlay/sequence.h>
66
#include <parlay/io.h>
7+
#include <parlay/internal/get_time.h>
78

89
#include "knuth_shuffle.h"
910

‎examples/kth_smallest.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include <parlay/primitives.h>
66
#include <parlay/random.h>
7+
#include <parlay/internal/get_time.h>
78

89
#include "kth_smallest.h"
910

‎examples/ldd_connectivity.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include <parlay/primitives.h>
55
#include <parlay/sequence.h>
6+
#include <parlay/internal/get_time.h>
67

78
#include "ldd_connectivity.h"
89
#include "helper/graph_utils.h"

‎examples/ldd_connectivity.h

+8-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@
88
#include "star_connectivity.h"
99

1010
// **************************************************************
11-
// Graph Connectivity using Low Diameter Decomposition
11+
// Graph Connectivity using Low Diameter Decomposition (LDD)
12+
// From the paper:
13+
// A simple and practical linear-work parallel algorithm for connectivity
14+
// Shun, Dhulipala, Blelloch
15+
// SPAA '14
16+
// The theoretical algorithms applied LDD recursively. This implementation
17+
// just uses one level, then switches to star contraction.
1218
// **************************************************************
1319
template <typename vertex>
1420
using graph = parlay::sequence<parlay::sequence<vertex>>;
@@ -29,7 +35,7 @@ ldd_connectivity(const graph<vertex>& G, float beta = .5) {
2935

3036
// Extract the remaining vertices
3137
parlay::sequence<vertex> V_r = parlay::pack_index<vertex>(parlay::tabulate(n, [&] (vertex v) {
32-
return P[v] == v;}));
38+
return P[v] == v;}));
3339

3440
// Finish off with star contraction on remaining graph
3541
auto roots = star_contract(E_r, V_r, P, parlay::random_generator(0));

‎examples/low_diameter_decomposition.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include <parlay/primitives.h>
55
#include <parlay/sequence.h>
6+
#include <parlay/internal/get_time.h>
67

78
#include "low_diameter_decomposition.h"
89
#include "helper/graph_utils.h"

‎examples/maximal_independent_set.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include <parlay/primitives.h>
55
#include <parlay/sequence.h>
6+
#include <parlay/internal/get_time.h>
67

78
#include "maximal_independent_set.h"
89
#include "helper/graph_utils.h"

‎examples/maximal_matching.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
#include <parlay/primitives.h>
77
#include <parlay/sequence.h>
8+
#include <parlay/internal/get_time.h>
89

910
#include "maximal_matching.h"
1011
#include "helper/graph_utils.h"

‎examples/mcss.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include <parlay/primitives.h>
66
#include <parlay/random.h>
7+
#include <parlay/internal/get_time.h>
78

89
#include "mcss.h"
910

‎examples/mergesort.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <parlay/primitives.h>
77
#include <parlay/random.h>
88
#include <parlay/sequence.h>
9+
#include <parlay/internal/get_time.h>
910

1011
#include "mergesort.h"
1112

‎examples/minimum_edit_distance.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <parlay/primitives.h>
55
#include <parlay/sequence.h>
66
#include <parlay/io.h>
7+
#include <parlay/internal/get_time.h>
78

89
#include "minimum_edit_distance.h"
910

‎examples/oct_tree.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
#include <string>
33
#include <random>
44

5-
#include "parlay/primitives.h"
6-
#include "parlay/random.h"
5+
#include <parlay/primitives.h>
6+
#include <parlay/random.h>
7+
#include <parlay/internal/get_time.h>
78

89
#include "oct_tree.h"
910

‎examples/pagerank.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include <parlay/primitives.h>
66
#include <parlay/sequence.h>
7+
#include <parlay/internal/get_time.h>
78

89
#include "pagerank.h"
910
#include "helper/graph_utils.h"

‎examples/primes.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include <string>
33

44
#include <parlay/sequence.h>
5+
#include <parlay/internal/get_time.h>
56

67
#include "primes.h"
78

‎examples/ray_trace.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
#include <string>
33
#include <random>
44

5-
#include "parlay/primitives.h"
6-
#include "parlay/random.h"
7-
#include "parlay/io.h"
5+
#include <parlay/primitives.h>
6+
#include <parlay/random.h>
7+
#include <parlay/io.h>
8+
#include <parlay/internal/get_time.h>
89

910
#include "ray_trace.h"
1011

‎examples/rectangle_intersection.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
#include <string>
33
#include <random>
44

5-
#include "parlay/primitives.h"
6-
#include "parlay/random.h"
5+
#include <parlay/primitives.h>
6+
#include <parlay/random.h>
7+
#include <parlay/internal/get_time.h>
78

89
#include "rectangle_intersection.h"
910

‎examples/reduce.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <parlay/primitives.h>
55
#include <parlay/sequence.h>
66
#include <parlay/monoid.h>
7+
#include <parlay/internal/get_time.h>
78

89
#include "reduce.h"
910

‎examples/samplesort.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <parlay/primitives.h>
77
#include <parlay/random.h>
88
#include <parlay/sequence.h>
9+
#include <parlay/internal/get_time.h>
910

1011
#include "samplesort.h"
1112

‎examples/set_cover.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
#include <iostream>
22
#include <string>
33

4-
#include "parlay/parallel.h"
5-
#include "parlay/primitives.h"
6-
#include "parlay/sequence.h"
4+
#include <parlay/parallel.h>
5+
#include <parlay/primitives.h>
6+
#include <parlay/sequence.h>
7+
#include <parlay/internal/get_time.h>
78

89
#include "set_cover.h"
910
#include "helper/graph_utils.h"

‎examples/spanning_tree.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <parlay/primitives.h>
55
#include <parlay/random.h>
66
#include <parlay/sequence.h>
7+
#include <parlay/internal/get_time.h>
78

89
#include "spanning_tree.h"
910
#include "helper/graph_utils.h"

‎examples/spectral_separator.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include <parlay/primitives.h>
55
#include <parlay/sequence.h>
6+
#include <parlay/internal/get_time.h>
67

78
#include "spectral_separator.h"
89
#include "helper/graph_utils.h"

‎examples/star_connectivity.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <parlay/primitives.h>
55
#include <parlay/random.h>
66
#include <parlay/sequence.h>
7+
#include <parlay/internal/get_time.h>
78

89
#include "star_connectivity.h"
910
#include "helper/graph_utils.h"

‎examples/triangle_count.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include <parlay/primitives.h>
55
#include <parlay/sequence.h>
6+
#include <parlay/internal/get_time.h>
67

78
#include "triangle_count.h"
89
#include "helper/graph_utils.h"

‎include/parlay/internal/get_time.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
#pragma once
1+
#ifndef PARLAY_GET_TIME_H_
2+
#define PARLAY_GET_TIME_H_
23

34
#include <chrono>
45
#include <iomanip>
@@ -84,3 +85,5 @@ struct timer {
8485

8586
}
8687
}
88+
89+
#endif // PARLAY_GET_TIME_H_

‎include/parlay/internal/memory_size.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
* http://creativecommons.org/licenses/by/3.0/deed.en_US
66
*/
77

8-
#pragma once
8+
#ifndef PARLAY_MEMORY_SIZE_H_
9+
#define PARLAY_MEMORY_SIZE_H_
910

1011
#if defined(_WIN32)
1112

@@ -102,3 +103,5 @@ static size_t getMemorySize() {
102103
return 0L; /* Unknown OS. */
103104
#endif
104105
}
106+
107+
#endif // PARLAY_MEMORY_SIZE_H_

0 commit comments

Comments
 (0)
Please sign in to comment.