Tôi có chương trình D2, ở dạng hiện tại của nó, là đơn luồng, và gọi hàm thuần túy tương tự khoảng 10 đến 100 lần trong vòng lặp bên trong cho mỗi lần lặp của vòng lặp ngoài của chương trình này. Không có sự phụ thuộc dữ liệu giữa các cuộc gọi, tức là không có cuộc gọi nào sử dụng kết quả từ bất kỳ cuộc gọi nào khác. Nhìn chung, chức năng này được gọi là hàng triệu lần, và là nút cổ chai chính trong chương trình của tôi. Các thông số là duy nhất gần như mọi thời gian, do đó, bộ nhớ đệm sẽ không giúp đỡ.Làm thế nào để song song chức năng tinh khiết nhỏ?
Thoạt nhìn, điều này có vẻ giống như ứng cử viên hoàn hảo để song song. Vấn đề duy nhất là hàm chỉ mất khoảng 3 micro giây cho mỗi cuộc gọi, thấp hơn độ trễ của việc tạo một luồng mới, và không vượt quá mức trên của việc thêm công việc vào một nhóm nhiệm vụ (nghĩa là, có được một mutex, cấp phát bộ nhớ cho giữ thông tin về nhiệm vụ, đối phó với tranh chấp có thể cho hàng đợi của nhóm nhiệm vụ, v.v.). Có cách nào tốt để tận dụng lợi thế của tính song song đó là hạt mịn này?
3 micro giây và 100 cuộc gọi? Vì vậy, điều này có 0,0003 giây để thực hiện trong tổng số? Nút cổ chai ở đâu? –
Đó là cho một lần lặp của vòng lặp ngoài. Vòng lặp bên ngoài thực hiện hàng triệu, và trong tương lai có thể hàng tỷ lần. – dsimcha
Đây là một câu hỏi tương tự mà tôi đã hỏi gần đây: http://stackoverflow.com/questions/564577/dividing-loop-iterations-among-threads –