Điểm:1

Đồng bộ hóa các luồng trong các ứng dụng đa luồng

lá cờ er
PBH

tôi sử dụng GIẤY NGỦ dft trên hệ thống CentOS 8 (lõi) với bộ xử lý XEON 16 lõi, 32 luồng với OpenMPI phiên bản 4.1.1 cho tất cả các tính toán.

  1. Vì tôi có 32 luồng, nên tôi sử dụng 28 luồng trong số đó để thực hiện phép tính SIESTA (tiêu tốn khá nhiều bộ nhớ ~60%) và giữ 4 luồng còn lại miễn phí.

  2. Tuy nhiên, nếu tôi bắt đầu sử dụng 2 hoặc 3 luồng còn lại cho một số ứng dụng khác (có mức sử dụng bộ nhớ không đáng kể), trong khi vẫn duy trì phép tính SIESTA ở 28 luồng, tôi thấy rằng tốc độ tính toán SIESTA giảm khoảng 50-60 %.

  3. Tôi đã kiểm tra việc sử dụng CPU và tôi thấy rằng một luồng hầu như không hoạt động khi sử dụng hệ thống trong trường hợp 2.

Có cách nào để chẩn đoán và giải quyết vấn đề này không? Điều này xảy ra do một số lỗi lập lịch quy trình? Có thể sử dụng một số loại ràng buộc quy trình hoặc gói lập lịch công việc để cải thiện điều này không?

Điểm:1
lá cờ cn

Việc sử dụng CPU dưới dạng % đơn giản không thể chuyển tải độ phức tạp của một CPU nhiều lõi, nhiều luồng, nhiều đơn vị thực thi và bộ nhớ. Gần như chắc chắn CPU thực sự bị đình trệ trên bộ nhớ hoặc bộ đệm. Và các quy trình có dữ liệu của chúng sẽ tranh giành các đơn vị thực thi.


CPU này chỉ có 16 nhân. Đối xử với nó như thể nó có 32 tại một số điểm sẽ làm giảm hiệu suất nghiêm trọng, như bạn đã phát hiện ra. Ngay cả với SMT 2. Có thể bạn có thể nhận được số lượng luồng lên tới 125% số lõi (20) nhưng 175% (28) đang đẩy nó lên. Đặc biệt là với những thứ khác đang chạy. Quay lại các chủ đề.

Đảm bảo tính toán công việc hữu ích được thực hiện trên mỗi luồng trên giây. Thử nghiệm, thay đổi một biến tại một thời điểm. Có thể thử các bộ xử lý có cấu hình bộ đệm và số lượng lõi khác nhau, nếu bạn có quyền truy cập vào các cấu hình đó.


Đo mức độ đình trệ của bạn với bộ đếm theo dõi hiệu suất. Không hoạt động trong máy ảo, nhưng đáng để thử trên Linux. Từ Gregg mà tôi đã liên kết trước đó:

perf stat -a -- ngủ 10

Tốc độ tối đa trên lý thuyết trên Xeons là 4 hoặc 5 lệnh mỗi chu kỳ. Bạn sẽ không nhận được điều đó, nhưng <1.0 IPC bị đình trệ thêm trên bộ nhớ.


Chắc chắn hiểu được mã của ứng dụng và các điểm nóng. Chức năng nào dành phần lớn thời gian cho CPU? Mã lắp ráp nào bị ảnh hưởng nặng nề nhất? Đơn vị thực thi nào trên CPU của bạn nói riêng đang làm việc chăm chỉ nhất để xử lý các uop này?

đồ thị ngọn lửa rất tốt để trực quan hóa các chức năng của CPU. Bạn đã đề cập đến EL 8, trong đó có công cụ biểu đồ ngọn lửa đóng gói.

yum cài đặt hoàn hảo js-d3-đồ thị ngọn lửa
# toàn hệ thống, 99 Hz, trong 60 giây
tập lệnh perf flamegraph -a -F 99 ngủ 60 

Cần có sự hiểu biết ở cấp độ nhà phát triển về chương trình để giải thích đầy đủ các kết quả. Với các ký hiệu hoặc mã nguồn, báo cáo hoàn hảo có thể được chú thích trong một trình gỡ lỗi như trải nghiệm.

PBH avatar
lá cờ er
PBH
Hi, cảm ơn bạn đã trả lời. Tôi đã kiểm tra và IPC của tôi là 0,97 nên có vẻ như hệ thống bị treo trên bộ nhớ. Tuy nhiên tôi chỉ có một hệ thống này nên không thể kiểm tra ở nơi khác. Tôi sẽ kiểm tra các thay đổi của IPC bằng cách thay đổi số lượng lõi được sử dụng sau khi quá trình tính toán đang chạy hiện tại kết thúc (có thể sẽ mất hơn một tuần).
PBH avatar
lá cờ er
PBH
Ý kiến ​​của bạn về công cụ `taskset` là gì. Có khác biệt gì không nếu tôi liên kết các phép tính SIESTA với một tập hợp các lõi và chương trình khác với một lõi riêng biệt? Điều đó có cho phép lõi nhất định chỉ hoạt động với một loại khối lượng công việc không?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.