Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Size computation slows bulk insert significantly

Ouverte
#237 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
cpp
Domaine
performance

Piste de recherche

Commencez par include/cuco/detail/static_map.inl aux lignes 149-151 et profilez l’insertion en masse afin de confirmer les coûts de device-to-host memcpy et de synchronisation. Comparez les alternatives pour calculer ou éviter la maintenance de la taille, puis vérifiez que bulk insert n’entraîne plus la surcharge par opération signalée sans casser le comportement lié à la taille.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

P1: Should have type: feature request

The size computation requires a small memcpy from device to host and then a synchronization. Each one is the cause of serious performance degradation.

https://github.com/NVIDIA/cuCollections/blob/8786234a38a4d1283c6dc2011e45d14801510725/include/cuco/detail/static_map.inl#L149-L151

The synchronization is bad because it means that other unrelated streams are unable to do work.

The memcpy is bad because future copies are queued behind this one in architectures that have a limited number of cuda copy engines.

I was able to get a significant performance improvement by deleting these lines.

There ought to be a better way to compute size. Perhaps a lazy method. If this is too difficult, you might consider using templates to allow the user to choose to not maintain size_ at all! Use templates to change the type of size_ from int to a struct that has no members. That way it doesn't take up any space. Provide no methods on this struct so that the size_ doesn't get accidentally used. It will still use some space on the host but that seems like no big deal.

https://github.com/NVIDIA/cuCollections/issues/237#tasklist-block-efc3d0dd-74a4-4f46-b10e-d6fde965d057

Langage dominant
Cuda
Étoiles
674
Forks
123
Merge moyen
1 j 13 h
PR mergées (30 j)
8

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de NVIDIA/cuCollections

Toutes les issues de NVIDIA/cuCollections

Issues similaires

Plus d'issues Performance

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.