Skip to content
This repository has been archived by the owner on Mar 21, 2024. It is now read-only.

RFE: Add deterministic option for reduce, scan, etc. #108

Closed
ekelsen opened this issue Aug 24, 2017 · 3 comments
Closed

RFE: Add deterministic option for reduce, scan, etc. #108

ekelsen opened this issue Aug 24, 2017 · 3 comments
Labels
area: docs Related to documentation. P0: must have Absolutely necessary. Critical issue, major blocker, etc. type: bug: functional Does not work as intended.

Comments

@ekelsen
Copy link

ekelsen commented Aug 24, 2017

The default work sharing strategy on sm_35+ isn't deterministic by default. Would be great to have the option to use the even_share strategy to get determinism even if it's a little slower.

dumerrill added a commit that referenced this issue Aug 25, 2017
deterministic option for reduce, scan, etc.

Mapping of thread blocks onto input data is now "run-to-run"
deterministic for all variants of global reduction on a given device.
(Scan was already deterministic)
@dumerrill
Copy link
Contributor

dumerrill commented Aug 25, 2017

Commit f558c6d resolves this issue for all variants of device-wide reduction. (Block-wide reduction, warp-wide reduction, and all variants of prefix scan have always been deterministic for pseudo-associative operations.)

Note that all CUB device-wide algorithms are "run-to-run" deterministic for pseudo-associative reduction operators (like floating point addition), i.e., their results are consistent across multiple runs on the same device. Floating point reduction may produce slightly different results on different devices having different numbers of SMs or different compute capabilities (where CUB might use different tile sizes.)

@lilohuang
Copy link
Contributor

@dumerrill comment might be incorrect in 2022 especially for some device-wide operations. see details in #441 and NVIDIA/thrust#1587 (comment)

CC @allisonvacanti @senior-zero

@alliepiper alliepiper reopened this Apr 11, 2022
@alliepiper alliepiper added type: bug: functional Does not work as intended. P1: should have Necessary, but not critical. labels Apr 11, 2022
@alliepiper alliepiper added this to the 2.0.0 milestone May 6, 2022
@alliepiper alliepiper added P0: must have Absolutely necessary. Critical issue, major blocker, etc. area: docs Related to documentation. and removed P1: should have Necessary, but not critical. labels May 6, 2022
@alliepiper
Copy link
Collaborator

Closing after all, we'll let this old RFE rest. I've filed a new issue for the regressions at NVIDIA/cccl#886.

@alliepiper alliepiper removed this from the 2.0.0 milestone Aug 11, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area: docs Related to documentation. P0: must have Absolutely necessary. Critical issue, major blocker, etc. type: bug: functional Does not work as intended.
Projects
None yet
Development

No branches or pull requests

4 participants