Số tbb::scalable_allocator
trong các khối xây dựng luồng của Intel thực sự làm gì dưới mui xe?Công cụ scalable_allocator của Intel TBB hoạt động như thế nào?
Nó chắc chắn có thể có hiệu quả. Tôi vừa mới sử dụng nó để giảm 25% thời gian thực hiện của ứng dụng (và tăng mức sử dụng CPU từ ~ 200% lên 350% trên hệ thống 4 lõi) bằng cách thay đổi một đơn std::vector<T>
thành std::vector<T,tbb::scalable_allocator<T> >
. Mặt khác trong một ứng dụng khác, tôi đã nhìn thấy nó tăng gấp đôi mức tiêu thụ bộ nhớ đã lớn và gửi mọi thứ để trao đổi thành phố.
Tài liệu của riêng Intel không cung cấp cho rất nhiều (ví dụ: phần ngắn ở cuối số FAQ) này. Bất cứ ai có thể cho tôi biết những gì nó sử dụng thủ thuật trước khi tôi đi và đào sâu vào mã của nó bản thân mình?
CẬP NHẬT: Chỉ cần sử dụng TBB 3.0 lần đầu tiên và thấy tốc độ tốt nhất của tôi từ scalable_allocator. Thay đổi một đơn vector<int>
thành một số vector<int,scalable_allocator<int> >
giảm thời gian chạy của một cái gì đó từ 85 giây xuống còn 35 (Debian Lenny, Core2, với TBB 3.0 từ thử nghiệm).
Cảm ơn! Bài viết chứa chính xác loại thông tin tôi đang tìm kiếm. – timday
Liên kết ban đầu hiện không còn tồn tại, nhưng CiteSeer có PDF: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.71.8289 –
Để thêm một điểm dữ liệu: trong ứng dụng cụ thể của tôi, phân bổ quyền tạm dừng tốc độ ở khoảng 15 chủ đề, qua đó nó sẽ giết tất cả tăng tốc và 40 nó sẽ chậm hơn nhiều so với thread đơn. Với 'scalable_allocator' được sử dụng trong các hạt nhân cho mỗi luồng, nút cổ chai đã biến mất và dự kiến tỷ lệ quay trở lại. (máy có 40 lõi vật lý). – Adam