Đồ thị phụ thuộc dựa trên biểu đồ điều kiện tiên quyết được liệt kê cho mỗi mục tiêu Makefile. make
sẽ xây dựng một biểu đồ nơi các mục tiêu và điều kiện tiên quyết là đỉnh và có một cạnh đạo diễn từ các điều kiện tiên quyết cho các mục tiêu của chúng. Bằng cách này, số lượng các cạnh đến cho bạn biết có bao nhiêu prereqs một mục tiêu có. Nếu nó không có các cạnh đến, thì nó không có điều kiện tiên quyết.
Các đỉnh cho các tệp .c
và .h
, chẳng hạn, sẽ không có cạnh đến. Những tệp đó là tệp nguồn của bạn và không cần phải được tạo.
Sau đó, thực hiện topological sort trên biểu đồ để xác định thứ tự thực thi. Từ Wikipedia:
Ứng dụng chính tắc phân loại topo (thứ tự topo) là lập lịch trình chuỗi công việc hoặc nhiệm vụ; các thuật toán phân loại topo được nghiên cứu đầu tiên vào đầu những năm 1960 trong bối cảnh kỹ thuật PERT để lập kế hoạch trong quản lý dự án (Jarnagin 1960). Các công việc được đại diện bởi đỉnh, và có một cạnh từ x đến y nếu công việc x phải được hoàn thành trước khi công việc y có thể được bắt đầu (ví dụ, khi giặt quần áo, máy giặt phải hoàn thành trước khi chúng tôi đặt quần áo để khô). Sau đó, một loại topo cung cấp một thứ tự để thực hiện công việc.
Ý chính của một loại topo là tìm các đỉnh không có cạnh đến (không phụ thuộc) và đặt các giá trị đầu tiên. Sau đó xóa chúng khỏi biểu đồ. Bây giờ bạn sẽ có một tập hợp các đỉnh mới mà không có các cạnh đến (không phụ thuộc). Đó là tiếp theo. Và như vậy cho đến khi kết thúc.(Nếu bạn đã từng đạt đến một điểm khi không có các đỉnh như vậy thì biểu đồ phụ thuộc chứa một chu kỳ, đó là một điều kiện lỗi.)
Trong một Makefile điển hình, điều này có nghĩa là trước tiên bạn sẽ xây dựng các tệp nguồn (không cần gì được làm). Sau đó, các tệp đối tượng phụ thuộc vào các tệp nguồn đó. Sau đó, các thư viện và tệp thi hành được xây dựng từ các tệp đối tượng đó.
Trong hoạt động không song song bình thường make
sẽ chỉ cần chọn một mục tiêu duy nhất cho mỗi lần lặp và xây dựng nó. Khi nó song song, nó sẽ lấy càng nhiều mục tiêu phụ thuộc càng ít càng tốt và xây dựng chúng song song, tùy theo số lượng công việc được phép đồng thời.
Vì vậy, khi make
đến, ví dụ, bước tệp đối tượng, nó sẽ có một số lượng lớn các đỉnh trong biểu đồ mà tất cả đều không có cạnh đến. Nó biết nó có thể xây dựng các tập tin đối tượng song song và do đó nó tắt n bản sao của gcc
để xây dựng các tệp đối tượng.
Tính song song thực sự được thực hiện như thế nào? Tôi cho rằng nó không phải là 'openmpi' .... – kilojoules