ich einen Vektor von Werten und einen Vektor von Tasten habe (was ein Segment)Cuda Thrust vorheriges Element in einem Segment erhalten
v = [1, 1, 1, 2, 3, 5, 6]
k = [0, 0, 1, 1, 0, 2, 2]
Für jedes Element Ich mag sein vorheriges Element wissen (im gleichen Segment). Es könnte Wert sein oder ein Index im ursprünglichen Vektor spielt keine Rolle.
So Ergebnis sollte (bei Wert) sein
r = [nan, 1, nan, 1, 1, nan, 5]
Sie ein beliebiges Element anstelle von nan
verwenden können, um keine Fragen Teil eines Algorithmus bleibt.
Wahrscheinlich kann ich es mit exklusiven segmentierten Scan und max
Operation statt sum
archivieren. So zwei Fragen:
- Ist meine Vorgehensweise korrekt?
- Ist eine elegantere oder effizientere Lösung?
Wie definieren Sie ein 'Segment'? Sind Ihre Eingabedaten bereits sortiert? Wie groß sind Ihre Segmente in der Regel? Wie groß ist dein Eingabevektor? –
Schlüssel ist die ID eines Segments. Es beginnt bei 0 und es gibt keine Lücken – sh1ng
also '[1,1,3]' alle gehören zum selben Segment, das durch 'k = 1' angezeigt wird? –