Skip to content

Commit

Permalink
bumped version number
Browse files Browse the repository at this point in the history
  • Loading branch information
gblelloch committed Feb 28, 2024
2 parents 55a45a2 + bf5d158 commit aefeda8
Show file tree
Hide file tree
Showing 41 changed files with 89 additions and 39 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# -------------------------------------------------------------------

cmake_minimum_required(VERSION 3.14)
project(PARLAY VERSION 2.2.3
project(PARLAY VERSION 2.2.4
DESCRIPTION "A collection of parallel algorithms and other support for parallelism in C++"
LANGUAGES CXX)

Expand Down
5 changes: 3 additions & 2 deletions examples/3d_range.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
#include <string>
#include <random>

#include "parlay/primitives.h"
#include "parlay/random.h"
#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/internal/get_time.h>

#include "3d_range.h"

Expand Down
1 change: 1 addition & 0 deletions examples/BFS_ligra.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include <parlay/primitives.h>
#include <parlay/sequence.h>
#include <parlay/internal/get_time.h>

#include "BFS_ligra.h"
#include "helper/graph_utils.h"
Expand Down
1 change: 1 addition & 0 deletions examples/betweenness_centrality.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include <parlay/sequence.h>
#include <parlay/random.h>
#include <parlay/io.h>
#include <parlay/internal/get_time.h>

#include "betweenness_centrality.h"
#include "helper/graph_utils.h"
Expand Down
1 change: 1 addition & 0 deletions examples/bigint_add.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/internal/get_time.h>

#include "bigint_add.h"

Expand Down
7 changes: 4 additions & 3 deletions examples/box_kdtree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
#include <string>
#include <random>

#include "parlay/primitives.h"
#include "parlay/random.h"
#include "parlay/io.h"
#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/io.h>
#include <parlay/internal/get_time.h>

#include "box_kdtree.h"

Expand Down
1 change: 1 addition & 0 deletions examples/counting_sort.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/sequence.h>
#include <parlay/internal/get_time.h>

#include "counting_sort.h"

Expand Down
1 change: 1 addition & 0 deletions examples/counting_sort.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include <parlay/parallel.h>
#include <parlay/sequence.h>
#include <parlay/primitives.h>
#include <parlay/internal/get_time.h>

// **************************************************************
// Counting sort
Expand Down
1 change: 1 addition & 0 deletions examples/delaunay.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include <parlay/primitives.h>
#include <parlay/sequence.h>
#include <parlay/random.h>
#include <parlay/internal/get_time.h>

#include "delaunay.h"

Expand Down
1 change: 1 addition & 0 deletions examples/filter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include <parlay/primitives.h>
#include <parlay/sequence.h>
#include <parlay/internal/get_time.h>

// **************************************************************
// Driver code
Expand Down
1 change: 1 addition & 0 deletions examples/find_if.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/internal/get_time.h>

#include "find_if.h"

Expand Down
2 changes: 2 additions & 0 deletions examples/flatten.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
#include <iostream>
#include <string>
#include <cmath>

#include <parlay/sequence.h>
#include <parlay/internal/get_time.h>

#include "flatten.h"

Expand Down
11 changes: 6 additions & 5 deletions examples/integer_sort.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/sequence.h>
#include <parlay/internal/get_time.h>

#include "integer_sort.h"

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

using int_type = int;
using int_type = unsigned int;

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

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

parlay::internal::timer t("Time");
parlay::sequence<int_type> result;
for (int i=0; i < 5; i++) {
result.clear();
for (int i = 0; i < 5; i++) {
result = data;
t.start();
result = ::integer_sort(data,bits);
::integer_sort(result, bits);
t.next("integer_sort");
}

Expand Down
23 changes: 12 additions & 11 deletions examples/integer_sort.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
// buckets based on the high bits and then recurses on each bucket.
// The bottom up is a standard radix sort starting on low-order bits
// and taking advantage of the stability of each counting sort.
// Uses counting_sort for each block of the radix.
//
// Flips back and forth between in and out, with "inplace" keeping track
// of whether the result should be in in (or if false, in out).
Expand Down Expand Up @@ -49,35 +50,35 @@ void radix_sort(Range in, Range out, long bits, bool inplace) {
if (n < cutoff)
bottom_up_radix_sort(in, out, bits, 0, inplace);
else {
// number of bits in bucket count (e.g. 8 would mean 256 buckets)
long radix_bits = std::min<long>(bits, std::ceil(std::log2(2*n/cutoff)));
// number of bits in radix
long radix_bits = std::min<long>(bits, std::min<long>(10l, std::ceil(std::log2(2*n/cutoff))));
long num_buckets = 1l << radix_bits;

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

// sort into the buckets
// sort in into the out based on keys
auto offsets = counting_sort(in.begin(), in.end(), out.begin(), keys.begin(),
num_buckets);

// now recursively sort each bucket
parlay::parallel_for(0, num_buckets, [&] (long i) {
long first = offsets[i]; // start of region
long last = offsets[i+1]; // end of region
long first = offsets[i]; // start of bucket
long last = offsets[i+1]; // end of bucket
// note that order of in and out is flipped (as is inplace)
radix_sort(out.cut(first,last), in.cut(first,last),
bits - radix_bits, !inplace);
}, 1);
}
}

// An inplace (i.e., result is in the same place as the input) integer_sort
// Requires O(n) temp space
template <typename Range>
parlay::sequence<typename Range::value_type>
integer_sort(Range& in, long bits) {
auto out = parlay::sequence<typename Range::value_type>::uninitialized(in.size());
void integer_sort(Range& in, long bits) {
auto tmp = parlay::sequence<typename Range::value_type>::uninitialized(in.size());
auto in_slice = parlay::make_slice(in);
auto out_slice = parlay::make_slice(out);
radix_sort(in_slice, out_slice, bits, false);
return out;
auto tmp_slice = parlay::make_slice(tmp);
radix_sort(in_slice, tmp_slice, bits, true);
}
1 change: 1 addition & 0 deletions examples/karatsuba.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/internal/get_time.h>

#include "karatsuba.h"

Expand Down
1 change: 1 addition & 0 deletions examples/kmeans_pp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/delayed.h>
#include <parlay/internal/get_time.h>

#include "kmeans_pp.h"

Expand Down
7 changes: 4 additions & 3 deletions examples/knn.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
#include <string>
#include <random>

#include "parlay/primitives.h"
#include "parlay/random.h"
#include "parlay/io.h"
#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/io.h>
#include <parlay/internal/get_time.h>

#include "knn.h"

Expand Down
1 change: 1 addition & 0 deletions examples/knuth_shuffle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include <parlay/primitives.h>
#include <parlay/sequence.h>
#include <parlay/io.h>
#include <parlay/internal/get_time.h>

#include "knuth_shuffle.h"

Expand Down
1 change: 1 addition & 0 deletions examples/kth_smallest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/internal/get_time.h>

#include "kth_smallest.h"

Expand Down
1 change: 1 addition & 0 deletions examples/ldd_connectivity.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include <parlay/primitives.h>
#include <parlay/sequence.h>
#include <parlay/internal/get_time.h>

#include "ldd_connectivity.h"
#include "helper/graph_utils.h"
Expand Down
10 changes: 8 additions & 2 deletions examples/ldd_connectivity.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,13 @@
#include "star_connectivity.h"

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

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

// Finish off with star contraction on remaining graph
auto roots = star_contract(E_r, V_r, P, parlay::random_generator(0));
Expand Down
1 change: 1 addition & 0 deletions examples/low_diameter_decomposition.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include <parlay/primitives.h>
#include <parlay/sequence.h>
#include <parlay/internal/get_time.h>

#include "low_diameter_decomposition.h"
#include "helper/graph_utils.h"
Expand Down
1 change: 1 addition & 0 deletions examples/maximal_independent_set.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include <parlay/primitives.h>
#include <parlay/sequence.h>
#include <parlay/internal/get_time.h>

#include "maximal_independent_set.h"
#include "helper/graph_utils.h"
Expand Down
1 change: 1 addition & 0 deletions examples/maximal_matching.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

#include <parlay/primitives.h>
#include <parlay/sequence.h>
#include <parlay/internal/get_time.h>

#include "maximal_matching.h"
#include "helper/graph_utils.h"
Expand Down
1 change: 1 addition & 0 deletions examples/mcss.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/internal/get_time.h>

#include "mcss.h"

Expand Down
1 change: 1 addition & 0 deletions examples/mergesort.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/sequence.h>
#include <parlay/internal/get_time.h>

#include "mergesort.h"

Expand Down
1 change: 1 addition & 0 deletions examples/minimum_edit_distance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include <parlay/primitives.h>
#include <parlay/sequence.h>
#include <parlay/io.h>
#include <parlay/internal/get_time.h>

#include "minimum_edit_distance.h"

Expand Down
5 changes: 3 additions & 2 deletions examples/oct_tree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
#include <string>
#include <random>

#include "parlay/primitives.h"
#include "parlay/random.h"
#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/internal/get_time.h>

#include "oct_tree.h"

Expand Down
1 change: 1 addition & 0 deletions examples/pagerank.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include <parlay/primitives.h>
#include <parlay/sequence.h>
#include <parlay/internal/get_time.h>

#include "pagerank.h"
#include "helper/graph_utils.h"
Expand Down
1 change: 1 addition & 0 deletions examples/primes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#include <string>

#include <parlay/sequence.h>
#include <parlay/internal/get_time.h>

#include "primes.h"

Expand Down
7 changes: 4 additions & 3 deletions examples/ray_trace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
#include <string>
#include <random>

#include "parlay/primitives.h"
#include "parlay/random.h"
#include "parlay/io.h"
#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/io.h>
#include <parlay/internal/get_time.h>

#include "ray_trace.h"

Expand Down
5 changes: 3 additions & 2 deletions examples/rectangle_intersection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
#include <string>
#include <random>

#include "parlay/primitives.h"
#include "parlay/random.h"
#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/internal/get_time.h>

#include "rectangle_intersection.h"

Expand Down
1 change: 1 addition & 0 deletions examples/reduce.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include <parlay/primitives.h>
#include <parlay/sequence.h>
#include <parlay/monoid.h>
#include <parlay/internal/get_time.h>

#include "reduce.h"

Expand Down
1 change: 1 addition & 0 deletions examples/samplesort.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <parlay/primitives.h>
#include <parlay/random.h>
#include <parlay/sequence.h>
#include <parlay/internal/get_time.h>

#include "samplesort.h"

Expand Down
Loading

0 comments on commit aefeda8

Please sign in to comment.