Skip to contents

GreedyExperimentalDesign 1.6.1

CRAN release: 2026-04-30

  • Optional GPU acceleration via wgpu-native (WebGPU) on Linux (Vulkan), macOS (Metal), and Windows (Direct3D 12/Vulkan)
  • All five compute shaders use workgroup shared memory tiling, eliminating 8-16x memory bandwidth waste versus naive global-memory access
  • Distance matrix shader tiles X rows cooperatively across 256-thread workgroups, computing all n*(n-1)/2 pairs in parallel
  • Kernel matrix shader (Gaussian, Laplacian, inverse multiquadric, exponential, polynomial) uses the same 16-feature tiling strategy
  • Batch objective shader evaluates r candidate designs simultaneously; each workgroup tiles the n design-vector entries into shared memory before the inner product loop
  • Multiple-kernel objective shader applies the same tiling per kernel and accumulates the weighted (optionally log-scaled) sum in a single GPU pass
  • Greedy search shader (full_greedy_search_gpu) runs the complete pair-switching loop on the GPU: incremental O(p) average update per iteration eliminates the O(np) full recompute, and a 256-thread workgroup parallel argmin reduction reads back only 4 bytes per iteration instead of numITnumIC*4 bytes
  • New R functions: ged_gpu_available(), ged_gpu_devices(), compute_distance_matrix_gpu(), compute_kernel_matrix_gpu(), compute_objective_vals_gpu(), compute_multiple_kernel_objective_vals_gpu(), compute_randomization_metrics_gpu(), full_greedy_search_gpu()
  • GPU use is automatic when wgpu-native is detected at install time; disabled transparently otherwise with no change to existing CPU code paths
  • Added benchmark script benchmarks/benchmark_gpu_backend.R for CPU vs GPU timing comparison

GreedyExperimentalDesign 1.6

CRAN release: 2026-01-09

  • Massive speedups using Rcpp all over the codebase
  • Gurobi search for r many vectors now works using pooling and a whole array of other arguments
  • ggplot2 in now the plotting engine
  • Added a test suite for public exported functions
  • Added a benchmark suite
  • Standardized method names across all types of searches
  • Added examples for all functions in documentation
  • Fixed documentation errors and inconsistencies
  • Updated package description with DOI’s for the relevant publications

GreedyExperimentalDesign 1.5.6.3

  • Fixed the Java-side cache so newBlankDesign no longer reuses a design with the wrong nT when the same n is requested again, which was causing findIndicies to overrun its array (issue #3 on github)

GreedyExperimentalDesign 1.5.6.2

  • added a C++ function that creates block design allocations rapidly
  • exports all toolbox-style blazing-fast C++ functions (a) generate_block_design_cpp_wrap which generates homogeneous block allocation vectors
  1. compute_distance_matrix_cpp_wrap which generates Euclidean squared distance matrices and (c) shuffle_cpp_wrap a shuffling routine that is faster than base R’s sample() function
  • made standard one_zero over zero_one formats for allocation vectors
  • added a function “gen_var_cov_matrix_block_designs” that generated varcov matrices for block designs

GreedyExperimentalDesign 1.5.6.1

CRAN release: 2023-07-12

  • Faster implementation of complete_randomization_with_forced_balanced, imbalanced_complete_randomization, and imbalanced_block_designs via std::shuffle
  • Seed for complete_randomization_with_forced_balanced, imbalanced_complete_randomization, and imbalanced_block_designs
  • We now comply with CRAN policy to not change the user’s graphical parameters

GreedyExperimentalDesign 1.5.6

  • Method that calculates asymmetric cost allocation
  • Greedy Pair Switching algorithm that supports unequal number of treatments and controls
  • Imbalanced (unequal allocation) Completely Random Designs
  • Imbalanced (unequal allocation) Block Designs

GreedyExperimentalDesign 1.5.5

CRAN release: 2022-11-17

  • Speedier implementation of binary pairwise matching designs using Java and Hash functions to check uniqueness

GreedyExperimentalDesign 1.5

CRAN release: 2022-11-04

  • Greedy Design on Multiple Kernels simultaneously
  • You can pass distance matrices to binary match design initialization
  • You can create binary match designs based on Mahalanobis distances between units using a flag in the design initialization

GreedyExperimentalDesign 1.4

CRAN release: 2020-12-07

  • Binary match followed by greedy within-the-binary-pairs search / rerandomization

GreedyExperimentalDesign 1.35

  • Curation of designs based on minimizing orthogonality as measured by average absolute correlation between each pair of vectors
  • Hadamard matrix experimental designs

GreedyExperimentalDesign 1.31

  • Various speedups and bug fixes.

GreedyExperimentalDesign 1.3

  • Gurobi now works with Kernel distances.

GreedyExperimentalDesign 1.21

  • Fixed small bug, deleted vignette which was causing compilation issues.

GreedyExperimentalDesign 1.2

CRAN release: 2018-07-15

  • Gurobi setup for allocation searches via numerical optimization.

GreedyExperimentalDesign 1.1

CRAN release: 2018-03-02

  • Updated package to conform to CRAN’s new policies.

GreedyExperimentalDesign 1.0

CRAN release: 2016-12-08

  • Initial Release