Ich habe einen Vektor von 10M float. Ich möchte die Summe aller 100 Elemente wissen, also insgesamt 10000 Summen. Was ist der schnellste Weg, dies zu tun?Was ist der schnellste Weg von Boost :: compute Vektor Partialsumme
Antwort
Ich würde empfehlen, reduce_by_key
Algorithmus, extravagant Iteratoren und Boost.Compute Lambda ausdr verwenden. Alle 100 Elemente sind mit demselben Schlüssel gekennzeichnet und reduziert. Ich bin mir nicht sicher, ob Sie keys_output
durch eine discard_iterator
ersetzen können, um etwas Leistung zu sparen.
boost::compute::vector<int> keys_output(values_input.size()/100, context);
boost::compute::vector<int> values_output(values_input.size()/100, context);
boost::compute::reduce_by_key(
boost::compute::make_transform_iterator(
boost::compute::make_counting_iterator<int>(0),
boost::compute::_1/100
),
boost::compute::make_transform_iterator(
boost::compute::make_counting_iterator<int>(values_input.size()),
boost::compute::_1/100
),
values_input.begin(),
keys_output.begin(),
values_output.begin(),
queue
);
fantastisch! Vielen Dank. – Parker
Hat jemand die Leistung/den generierten Code getestet? – sehe
Sicherlich ist es nicht so schnell wie handgeschriebener OpenCL-Code. Dies ist ein besonderer Fall. Auf den meisten Grafikprozessoren können Sie alle 100 Elemente aus Vektoren in ein oder zwei Schritten (Kernel) summieren. – haahh
- 1. Was ist der schnellste Weg, um Häufigkeiten von ganzen Zahlen in einem Vektor zu erhalten?
- 2. Was ist der schnellste Weg, Daten von ArrayList zu filtern?
- 3. Was ist der schnellste Weg, Daten von vb.net zu erhalten?
- 4. schnellste Weg Vektor in Python zu berechnen
- 5. Was ist der schnellste Weg, um die Vereinigung vieler Boost :: Polygone zu erstellen?
- 6. .NET - SQL Select -> Array. Was ist der schnellste Weg?
- 7. Was ist der schnellste Weg, um zu rehasen?
- 8. Was ist der schnellste Weg zu HTTP GET in Python?
- 9. Was ist der schnellste Weg, um Daten aus HBase
- 10. Was ist der schnellste Weg, um eine Datenzeile zu erfassen?
- 11. Was ist der schnellste Weg, mehrere Dateien zu catchen?
- 12. Was ist der schnellste Weg, um eine Interger Liste zusammenzufassen
- 13. Was ist der schnellste Weg zum Arbeiten PHP-Skript
- 14. Was ist der schnellste Weg, Sigmoid zu berechnen?
- 15. Was ist der schnellste Weg, Google Storage Bucket zu duplizieren?
- 16. CodeIgniter NOW() einfügen: Was ist der schnellste Weg?
- 17. Was ist der schnellste Weg zu einem sehr einfachen Blog?
- 18. Was ist der schnellste Weg, Patches eines Arrays zu vergleichen?
- 19. Was wäre der schnellste Weg, um Informationen von einem 2D-Vektor in eine Karte zu übertragen?
- 20. ist Delegierter der schnellste Weg der Bindung?
- 21. Vektor von Boost-Sockets
- 22. C++: Was ist der schnellste Weg ist, eine geordnete Tabelle von IP-Adresse
- 23. boost :: compute stream kompression
- 24. Was ist der schnellste Weg, um eine priority_queue von einer unordered_set
- 25. Was ist der schnellste Weg, um die Anzahl von Nicht-Null-Einträgen in einem __mm256-Vektor zu zählen?
- 26. Was ist der Nutzen von Boost Polygon?
- 27. Was ist der schnellste Weg, um herauszufinden, wo eine Liste von numpy Arrays gleich ist?
- 28. R - Die schnellste Weg nächsten Wert in Vektor
- 29. boost :: compute copy benutzerdefinierte Strukturen
- 30. In Alfresco: Der schnellste Weg NodeRef von einem Knoten Weg
Wenn Sie verwenden können, 'OpenCL' 2, dann empfehle ich @ huseyin Antwort [hier] (https://stackoverflow.com/questions/46861492/what-is-the-optimum-opencl-2-kernel -to-sum-floats) – kenba