long sum = parallel_reduce(
blocked_range(0, sum1.size()), 1.0L /* Identity for Multiplication */,
[&](tbb::blocked_range r, long double running_total)
{
for (size_t i = r.begin(); i < r.end(); i++)
running_total *= sum1[i];
return running_total;
},
std::multiplies());
erzeugt ein falsches Ergebnis. akkumulieren liefert das richtige Ergebnis:
Ich möchte alle Elemente eines Vektors multiplizieren. Allerdings das folgende Code-Snippet [code]long sum = parallel_reduce( blocked_range(0, sum1.size()), 1.0L /* Identity for Multiplication */, [&](tbb::blocked_range r, long double running_total) { for (size_t i = r.begin(); i < r.end(); i++) running_total *= sum1[i]; return running_total; }, std::multiplies()); [/code] erzeugt ein falsches Ergebnis. akkumulieren liefert das richtige Ergebnis: [code]long sum2 = ranges::fold_left(sum1, 1, std::multiplies()); [/code] Was vermisse ich?
Ich versuche, einen std::vector-Container mit einer anderen std::vector- und tbb::parallel_for-Methode zu füllen, wie im folgenden Codeausschnitt gezeigt:
#include
#include
#include
Während ich normalerweise meine eigenen Klassen verwende, die vor stl erstellt wurden. Ich habe beschlossen, diese STL -Objekte und Funktionen in einer eigenständigen Bibliothek zu verwenden, die...
Ich habe einen Artikel über Joel On Software über die Idee gelesen, Funktionen höherer Ordnung zu verwenden, um Code durch den Einsatz von Map und Reduce erheblich zu vereinfachen. Er erwähnte, dass...
Ich habe eine Funktion f (df, x) wobei df ein großer Datenrahmen ist und X eine einfache Variable ist. Die Funktion f wird nur aus df gelesen und ändert sie nicht. Ist es möglich, den Speicher von df...