Skip to content

Parallelization Opportunity #73

@itzmeanjan

Description

@itzmeanjan

Hi @lemire , good day.

Is it possible to parallelize this loop

for (uint32_t i = size - 1; i < size; i--) {
// the hash of the key we insert next
uint64_t hash = reverseOrder[i];
uint16_t xor2 = binary_fuse16_fingerprint(hash);
uint8_t found = reverseH[i];
h012[0] = binary_fuse16_hash(0, hash, filter);
h012[1] = binary_fuse16_hash(1, hash, filter);
h012[2] = binary_fuse16_hash(2, hash, filter);
h012[3] = h012[0];
h012[4] = h012[1];
filter->Fingerprints[h012[found]] = (uint16_t)(
(uint32_t)xor2 ^
(uint32_t)filter->Fingerprints[h012[found + 1]] ^
(uint32_t)filter->Fingerprints[h012[found + 2]]);
}
? Or the computation of fingerprints is always supposed to be linearly dependent on the previous (iterating in reverse order) hash value ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions