Wie funktioniert der skalierbare_allocator von Intel TBB?

Lesezeit: 1 Minute

Wie funktioniert der skalierbare allocator von Intel TBB
timday

Was bedeutet die tbb::scalable_allocator in Intel Threading Building Blocks eigentlich unter der Haube?

Es kann sicherlich effektiv sein. Ich habe es gerade verwendet, um die Ausführungszeit einer App um 25 % zu reduzieren (und eine Erhöhung der CPU-Auslastung von ~ 200 % auf 350 % auf einem 4-Kern-System zu sehen), indem ich eine einzelne geändert habe std::vector<T> zu std::vector<T,tbb::scalable_allocator<T> >. Auf der anderen Seite habe ich in einer anderen App gesehen, dass es einen bereits großen Speicherverbrauch verdoppelt und Dinge nach Swap City schickt.

Intels eigene Dokumentation verrät nicht viel (zB ein kurzer Abschnitt am Ende davon FAQ). Kann mir jemand sagen, welche Tricks es verwendet, bevor ich selbst in seinen Code eintauche?

AKTUALISIEREN: Ich benutze gerade TBB 3.0 zum ersten Mal und habe meine bisher beste Beschleunigung von skalierbar_allocator gesehen. Single wechseln vector<int> zu einem vector<int,scalable_allocator<int> > reduzierte die Laufzeit von etwas von 85s auf 35s (Debian Lenny, Core2, mit TBB 3.0 aus dem Test).

  • Danke! Artikel enthält genau die Art von Informationen, die ich gesucht habe.

    – timday

    19. März ’09 um 9:17

  • Der ursprüngliche Link ist jetzt nicht mehr vorhanden, aber CiteSeer hat das PDF: citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.71.8289

    – Arto Bendiken

    4. April ’13 um 1:04

  • Um einen Datenpunkt hinzuzufügen: In meiner speziellen App stoppte die Zuweisungskonkurrenz die Beschleunigung bei etwa 15 Threads, danach würde sie die gesamte Beschleunigung beenden und bei 40 wäre sie viel langsamer als Einzelthread. Mit scalable_allocator In den inneren Per-Thread-Kernels verwendet, verschwand der Flaschenhals und die erwartete Skalierung kam zurück. (Maschine hat 40 physische Kerne).

    – Adam

    4. Mai ’14 um 6:39 Uhr

.

293730cookie-checkWie funktioniert der skalierbare_allocator von Intel TBB?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy