Chuẩn OpenMP hiện tại xác định biến môi trường boolean OMP_PROC_BIND
kiểm soát ràng buộc của chuỗi OpenMP. Nếu được đặt thành true
, ví dụ:
shell$ OMP_PROC_BIND=true OMP_NUM_THREADS=12 ./app.x
thì môi trường thực thi OpenMP không được di chuyển chủ đề giữa các bộ xử lý. Thật không may là không có gì nhiều hơn nói về cách những chủ đề nên được ràng buộc và đó là những gì một nhóm làm việc đặc biệt trong ngôn ngữ OpenMP comittee là giải quyết ngay bây giờ. OpenMP 4.0 sẽ đi kèm với các biến và các tham số mới cho phép người ta xác định cách phân phối các luồng. Tất nhiên, nhiều triển khai OpenMP cung cấp non-standard methods to control binding riêng của họ.
Phần lớn thời gian chạy OpenMP không phải là NUMA. Họ sẽ vui vẻ gửi chủ đề đến bất kỳ CPU có sẵn và bạn sẽ phải đảm bảo rằng mỗi thread chỉ truy cập dữ liệu thuộc về nó. Có một số gợi ý chung theo hướng này:
- Không sử dụng
dynamic
lập kế hoạch cho song song for
(C/C++)/DO
(Fortran) vòng.
- Cố gắng khởi tạo dữ liệu trong cùng một chuỗi mà sau này sẽ sử dụng nó. Nếu bạn chạy hai vòng lặp song song
for
tách rời với cùng kích thước nhóm và cùng số lượng các đoạn lặp, với đoạn lịch0 của cả hai vòng lặp sẽ được thực thi theo chuỗi 0, đoạn 1 - theo chuỗi 1, v.v.
- Nếu sử dụng tác vụ OpenMP, hãy thử khởi tạo dữ liệu trong phần nhiệm vụ, vì hầu hết thời gian chạy OpenMP thực hiện nhiệm vụ ăn cắp - chuỗi nhàn rỗi có thể lấy cắp nhiệm vụ từ hàng đợi nhiệm vụ của chủ đề khác.
- Sử dụng trình phân bổ bộ nhớ nhận thức NUMA.
Một số đồng nghiệp của tôi đã đánh giá kỹ NUMA hành vi của các giai đoạn OpenMP khác nhau và đã xem xét cụ thể ý thức của NUMA về việc triển khai của Intel, nhưng bài viết chưa được xuất bản nên tôi không thể cung cấp cho bạn liên kết.
Có một dự án nghiên cứu, được gọi là ForestGOMP, nhằm mục đích cung cấp thay thế thả xuống nhận thức NUMA cho libgomp
. Có thể bạn nên cho nó một cái nhìn.
Nguồn
2012-08-15 19:09:12
Vui lòng xác định loại lợi thế nào bạn có ý nghĩa trong "lợi thế khi chạy trên máy NUMA". OpenMP hiện không phải là ý thức của NUMA, nhưng OpenMP 4.0 có khả năng sẽ mang lại các quy định cho các chủ đề được cải thiện ràng buộc. –
tôi đã cập nhật câu hỏi, chủ yếu là những gì bạn đã chỉ ra. Còn về 'taskset' thì sao? nó sẽ giúp đỡ để ràng buộc các chủ đề để dữ liệu cá nhân cho mỗi chủ đề được giữ địa phương? – labotsirc