NEWS


didgpu 0.1.2

Build

didgpu() behaves as DIDmultiplegtDYN does, not only computes what it computes

Everything a user sees from a fit now matches did_multiplegt_dyn() (2.4.0; its estimator is unchanged since 2.3.3):

Every did_multiplegt_dyn() option

didgpu() now takes all of DIDmultiplegtDYN's arguments, with its defaults, checks and messages, and gives its numbers for each:

Two places where didgpu deliberately does not copy the reference:

Fixes to estimates and standard errors found doing this

A note first: DIDmultiplegtDYN (2.3.3 and 2.4.0 alike) holds on to about 4 GB of memory per did_multiplegt_dyn() call on a 1,800-row panel, which gc() does not release, so a long loop of calls -- or didgpu(backend = "reference") with a bootstrap -- can exhaust the machine. didgpu's own backends do not. The tests that bootstrap the reference backend now use 4 replications.

New arguments (Callaway-Sant'Anna)

Against did 2.5.1, didgpu_cs() now matches every ATT(g,t), the overall, event-study, group and calendar aggregates and all their SEs to <= 6e-16, for OR / IPW / DR, both base periods, both control groups, and balanced, balanced-by-dropping and repeated-cross-section panels. Also fixed along the way: with control_group = "notyet" and a universal base period, controls are now chosen at the later of the two periods compared, as in did; and an aggregated SE that is numerically zero (the universal base period's own event time) is reported as NA, as aggte does.

did 2.3.0 has two bugs, both fixed in 2.5.0, that make it disagree with this: an integer gname silently removes the never-treated group (bcallaway11/did#264), and under allow_unbalanced_panel = TRUE its influence functions land on the wrong units, so every SE that combines cells changes when the units are merely renumbered (overall SE 0.071487 vs 0.072007 on one test panel; did 2.5.1 and didgpu both give 0.071407 either way). test-cs-unbalanced.R compares those combined SEs only against did >= 2.5.0.

Bug fixes

New features

New features

CRAN resubmission fixes

didgpu 0.1.1

Bug fixes

Reference parity with DIDmultiplegtDYN 2.3.x

didgpu was originally validated bit-for-bit against an older DIDmultiplegtDYN. Two of its outputs were deliberately changed upstream; didgpu now tracks the current (fixed) behavior:

Correctness fixes (found by randomized differential testing vs the reference)

didgpu 0.1.0

First public release. Five estimator families plus a sensitivity layer, each with CUDA kernels for the hot paths.

Callaway-Sant'Anna (2021) — didgpu_cs()

TestMechs (Kwon & Roth 2026) — didgpu_test_sharp_null()

Leave-one-out robustness — didgpu_loo()

HonestDiD (Rambachan & Roth 2023) — didgpu_honest_did()

fect family (counterfactual-prediction estimators) — didgpu_fect()

Estimator (bit-identical to DIDmultiplegtDYN::did_multiplegt_dyn)

Long-running workflow

Backends

R interface

fect family (counterfactual-prediction estimators)

Testing

Validation