CPU-GPU
Trong đó khi thực thi tính toán thì CPU sẽ đóng vai trò “host” chịu trách nhiệm điểu khiển và thực thi tiến trình tính toán. Khi phải thực hiện các tác vụ có tính song song cao thì CPU sẽ chuyển dữ liệu cần thiết đến GPU (đóng vai trò thiết bị “device”). Trong mô hình này, GPU hoạt động nhƣ một bộ tăng tốc xử lý. Nó sẽ hỗ trợ thực thi các công việc cho CPU đƣợc điều khiển bởi CPU. Dữ liệu sẽ đƣợc CPU chuyển đến cho GPU và chỉ thị cho GPU sẽ chạy các nhân GPU (kernel) để tận dụng lợi thế song song dữ liệu đa nhân của mình. Tiến trình điều khiển sẽ ràng buộc một GPU khả dụng và chuyển các dữ liệu đầu vào cần thiết vào bộ nhớ của GPU rồi GPU sẽ chạy một hoặc nhiều nhân và trả lại kết quả đầu ra cho tiến trình điều khiển. Trong mô hình tính toán không đồng nhất CPU và GPU, GPU đóng vai trò một đơn vị tăng tốc để hỗ trợ thực hiển các công việc đƣợc khởi chạy trên host. Một phần công việc sẽ đƣợc khởi tạo, bắt đầu, thực thi và kết thúc trên GPU. Có thể có một hoặc nhiều công việc đƣợc thực hiện trên một hoặc nhiều GPU.
Nếu đi sâu vào mặt phần cứng hơn thì CPU là host nơi tiến trình gốc đƣợc thực thi, CPU trao đổi dữ liệu giữa bộ nhớ của nó và GPU và chỉ thị cho GPU thực thi các nhân GPU để tận dụng ƣu điểm tính toán song song của GPU. Tiến trình điều
60
khiển (hoặc gọi là luồng) sẽ gán cho một hoặc nhiều GPU khả dụng sẽ tham gia vào tính toán rồi chuyển dữ liệu cần thiết tới bộ nhớ của GPU và chỉ thị GPU thực thi một hoặc nhiều nhân GPU rồi lấy kết quả từ GPU trả về cho CPU.
Hình 28: Phƣơng thức hoạt động giữa host và device
Khi một nhân GPU đƣợc phát động, GPU sẽ thực thi các công việc của nó một cách không đồng bộ với tiến trình trên host.Về mặt kĩ thuật thì việc phát động một nhân GPU chỉ đơn giản là xếp một con trỏ chức năng vào danh sách các nhân để chạy trên GPU. Giao diện của GPU thông thƣờng theo cơ chế không khóa, cho phép CPU có thể phát động nhiều nhân liên tục để thực thi tuần tự. Tính chất không đồng bộ này của GPU cũng xuất hiện khi chuyển dữ liệu.
Hơn nữa, GPU có thể phát động và thực thi nhiều nhân cùng một lúc bằng cách phát động nhiều nhân không phụ thuộc lẫn nhau vào các hàng đợi để đƣợc thực thi. Khi đó, bộ lập lịch của GPU sẽ chọn mỗi nhân ở đầu các hàng đợi để cố gắng thực thi cùng một lúc đồng thời cân bằng tài nguyên giữa các luồng. Đây chính là ví dụ cho nhiều GPU đƣợc điều khiển và thực thi dƣới sự điều khiển của nhiều luồng CPU.
61
Hình 29: Lịch trình cho các kịch bản CPU-GPU. (a): đơn luồng, một nhân GPU với một GPU. (b): đơn luồng, hai nhân GPU với một GPU; (c): đa nhân
62
CHƢƠNG 4: SIÊU MÁY TÍNH VÀ MÔ HÌNH SIÊU MÁY TÍNH SỬ DỤNG KIẾN TRÚC TÍNH TOÁN CPU-GPU
Cụm từ siêu máy tính, hay supercomputer nhằm để chỉ một loại máy tính có kiến trúc hoàn toàn khác biệt với những chiếc desktop, laptop mà bạn sử dụng hằng ngày. Về bản chất nó là một hệ thống các máy tính đƣợc tập hợp lại nhƣ một máy tính đơn lẻ duy nhất nên nó có sức mạnh vƣợt trội hơn rất nhiều lần so với các máy tính cá nhân. Siêu máy tính dùng để giải quyết các vấn đề phức tạp nhƣ sự thay đổi thời tiết, hoạt động của phân tử, phân tích dữ liệu trong các lĩnh vực nhƣ thiên văn học, chuỗi di truyền, thông tin tình báo an ninh quốc gia. Việc sử dụng các siêu máy tính ảnh hƣởng đến an ninh quốc gia cũng nhƣ cho các nghiên cứu và phát triển ở nhiều lĩnh vực khoa học kĩ thuật. Siêu máy tính có thể tìm ra những tri thức mà bình thƣờng không thể tìm đƣợc hoặc không thể hiểu đƣợc trong một khoảng thời gian giới hạn. Các giả lập trên siêu máy tính có thể củng cố hoặc thay thế những thí nghiệm đắt tiền hoặc nguy hiểm, chúng có thể giúp chúng ta thực hiện những thí nghiệm ảo để kiểm thử các lý thuyết vƣợt ra khỏi các tham số mà thực tế có thể cung cấp. Để hiểu rõ hơn các hệ thống siêu máy tính, ta sẽ nhắc lại một chút kiến thức về phân loại các hệ thống máy tính.