diff --git a/src/stdgpu/impl/unordered_base_detail.cuh b/src/stdgpu/impl/unordered_base_detail.cuh index 109e0720c..dfc54ceeb 100644 --- a/src/stdgpu/impl/unordered_base_detail.cuh +++ b/src/stdgpu/impl/unordered_base_detail.cuh @@ -1203,9 +1203,9 @@ unordered_base::createDevic bit_ceil(static_cast(std::ceil(static_cast(capacity) / default_max_load_factor())))); // excess count is estimated by the expected collision count: - // - Conservatively lower the amount since entries falling into regular buckets are already included here + // - Keep the amount although it also counts bucket elements as this is based on assuming a uniform distribution // - Increase amount by 1 since insertion expects a non-empty excess list also in case of no collision - index_t excess_count = expected_collisions(bucket_count, capacity) * 2 / 3 + 1; + index_t excess_count = expected_collisions(bucket_count, capacity) + 1; index_t total_count = bucket_count + excess_count; diff --git a/tests/stdgpu/unordered_datastructure.inc b/tests/stdgpu/unordered_datastructure.inc index 74766c765..fe4b9c425 100644 --- a/tests/stdgpu/unordered_datastructure.inc +++ b/tests/stdgpu/unordered_datastructure.inc @@ -1430,7 +1430,7 @@ TEST_F(STDGPU_UNORDERED_DATASTRUCTURE_TEST_CLASS, insert_multiple_while_full) TEST_F(STDGPU_UNORDERED_DATASTRUCTURE_TEST_CLASS, insert_while_excess_empty) { - test_unordered_datastructure tiny_hash_datastructure = test_unordered_datastructure::createDeviceObject(2); + test_unordered_datastructure tiny_hash_datastructure = test_unordered_datastructure::createDeviceObject(1); // Fill tiny hash table const test_unordered_datastructure::key_type position_1(1, 2, 3); @@ -1592,7 +1592,7 @@ TEST_F(STDGPU_UNORDERED_DATASTRUCTURE_TEST_CLASS, insert_parallel_while_one_free TEST_F(STDGPU_UNORDERED_DATASTRUCTURE_TEST_CLASS, insert_parallel_while_excess_empty) { - test_unordered_datastructure tiny_hash_datastructure = test_unordered_datastructure::createDeviceObject(2); + test_unordered_datastructure tiny_hash_datastructure = test_unordered_datastructure::createDeviceObject(1); // Fill tiny hash table const test_unordered_datastructure::key_type position_1(1, 2, 3); @@ -1688,7 +1688,7 @@ TEST_F(STDGPU_UNORDERED_DATASTRUCTURE_TEST_CLASS, emplace_parallel_while_one_fre TEST_F(STDGPU_UNORDERED_DATASTRUCTURE_TEST_CLASS, emplace_parallel_while_excess_empty) { - test_unordered_datastructure tiny_hash_datastructure = test_unordered_datastructure::createDeviceObject(2); + test_unordered_datastructure tiny_hash_datastructure = test_unordered_datastructure::createDeviceObject(1); // Fill tiny hash table const test_unordered_datastructure::key_type position_1(1, 2, 3);