[ENHANCEMENT]: Add a callback to the bulk_insert functions

Ouverte
#376 5 commentaires 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
Fonctionnalité
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
cpp
Domaine
data

Piste de recherche

Commencez par localiser les fonctions bulk_insert et examiner les API insert existantes dans cuCollections. Déterminez comment un callback pourrait recevoir le slot inséré et savoir si la clé était déjà présente, puis définissez des tests montrant le comportement du callback pour les nouvelles clés comme pour les clés dupliquées.

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

Description

type: feature request
Is your feature request related to a problem? Please describe.

I would like to be able to run a function on every key that is inserted by the bulk insert functions.

Describe the solution you'd like
struct MyFunctor {
  void operator()(slot_type *slot, bool is_unique) {
    ...
  }
};

my_set.insert(input.begin(), input.end(), MyFunctor());

Each insert will return the slot and whether this was an insert or the key was already there so this was just a lookup. And then I will do whatever I want with that information. For example, I could use an atomic and fill an array with unique elements, allowing me to perform "retrieve_all" during the insert without reading the table twice.

Describe alternatives you've considered

I can copy and paste all the bulk insert code into my code and then use that. The problem here is that I trust cuco to get the grid shape and everything right and if I do it this way then I might get it wrong. Also, if cuco comes up with improvements to the bulk insert, I could use them.

Additional context

No response

Langage dominant
Cuda
Étoiles
675
Forks
123
Merge moyen
19 h 7 min
PR mergées (30 j)
10

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 Data Engineering

Recevez les nouvelles issues par e-mail

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