Trong chương trình OpenCL của tôi, tôi sẽ kết thúc với 60+ bộ nhớ đệm toàn cầu mà mỗi hạt nhân sẽ cần để có thể truy cập. Cách được khuyến nghị để cho mỗi hạt nhân biết vị trí của từng bộ đệm này là gì?Cách thích hợp để thông báo hạt nhân OpenCL của nhiều đối tượng bộ nhớ?
Bản thân bộ đệm ổn định trong suốt thời gian của ứng dụng - tức là chúng tôi sẽ cấp phát bộ đệm khi bắt đầu ứng dụng, gọi nhiều hạt nhân, sau đó chỉ deallocate bộ đệm ở cuối ứng dụng. Tuy nhiên, nội dung của chúng có thể thay đổi khi các hạt đọc/ghi từ chúng.
Trong CUDA, cách tôi đã làm điều này là tạo ra 60 biến phạm vi toàn cầu của chương trình trong mã CUDA của tôi. Sau đó, trên máy chủ lưu trữ, hãy ghi địa chỉ của bộ đệm thiết bị mà tôi đã phân bổ vào các biến toàn cục này. Sau đó, nhân sẽ đơn giản sử dụng các biến toàn cục này để tìm bộ đệm cần thiết để làm việc.
Cách tốt nhất để thực hiện điều này trong OpenCL là gì? Có vẻ như các biến toàn cục của CL khác một chút so với CUDA, nhưng tôi không thể tìm ra câu trả lời rõ ràng nếu phương pháp CUDA của tôi hoạt động, và nếu có, làm thế nào để chuyển các con trỏ đệm thành các biến toàn cầu. Nếu điều đó không hoạt động, cách tốt nhất là gì?
60 đối số là vì mã này đang được tạo bởi một bộ tổng hợp mã đặc biệt cho một dự án nghiên cứu mà tôi là một phần của. Thật không may, tôi không thể kiểm soát phần đó. Tôi đã kết thúc bằng cách sử dụng phương pháp đóng gói đệm bạn vạch ra. Hy vọng rằng đó là một phương pháp tốt hơn 60 đối số. Cảm ơn bạn đã giúp đỡ! – int3h