Tôi đọc có thể sử dụng khởi chạy hạt nhân để đồng bộ hóa các khối khác nhau, nếu tôi muốn tất cả các khối hoàn thành thao tác 1 trước khi chúng hoạt động 2, tôi nên đặt hoạt động 1 trong một hạt nhân và hoạt động 2 trong hạt nhân khác. Bằng cách này, tôi có thể đạt được sự đồng bộ hóa toàn cầu giữa các khối. Tuy nhiên, hướng dẫn lập trình cuda c đề cập đến các cuộc gọi hạt nhân là không đồng bộ. CPU không đợi cuộc gọi hạt nhân đầu tiên kết thúc và do đó, CPU cũng có thể gọi hạt nhân thứ hai trước khi 1st hoàn thành. Tuy nhiên, nếu điều này là đúng, thì chúng ta không thể sử dụng các khởi chạy hạt nhân để đồng bộ hóa các khối. Vui lòng cho tôi biết nơi tôi đang gặp sự cốCác cuộc gọi hạt nhân cuda đồng bộ hoặc không đồng bộ
Trả lời
Gọi hạt nhân không đồng bộ từ quan điểm của CPU, vì vậy nếu bạn gọi 2 nhân liên tiếp, lần thứ hai sẽ được gọi mà không cần chờ kết thúc đầu tiên. Nó chỉ có nghĩa là điều khiển trở lại CPU ngay lập tức. Ở bên GPU, nếu bạn chưa chỉ định các luồng khác nhau để thực thi hạt nhân, chúng sẽ được thực hiện theo thứ tự chúng được gọi (nếu bạn không chỉ định luồng, cả hai đều đi tới luồng mặc định và được thực thi). Quay lại đầu trang serially). Chỉ sau khi hạt nhân đầu tiên kết thúc, hạt nhân thứ hai sẽ thực hiện.
Hành vi này hợp lệ đối với các thiết bị có khả năng tính toán 2.x hỗ trợ thực thi hạt nhân đồng thời. Trên các thiết bị khác mặc dù các cuộc gọi hạt nhân vẫn không đồng bộ, việc thực hiện hạt nhân luôn luôn tuần tự.
Kiểm tra hướng dẫn lập trình CUDA C trên phần 3.2.5 mà mọi lập trình viên CUDA nên đọc.
Thực thi hạt nhân đồng thời được hỗ trợ kể từ phiên bản 2.0 phiên bản CUDA.
Ngoài ra, việc trả lại mã CPU có thể được thực hiện sớm hơn tất cả hạt nhân dọc đã hoạt động.
Trong trường hợp này, bạn có thể tự cung cấp đồng bộ hóa.
Câu trả lời được chấp nhận không phải lúc nào cũng chính xác.
Trong hầu hết các trường hợp, khởi chạy hạt nhân không đồng bộ. Nhưng trong trường hợp sau, nó là đồng bộ. Và chúng dễ bị mọi người bỏ qua.
- biến môi trường
CUDA_LAUNCH_BLOCKING
tương đương với 1. - sử dụng một hồ sơ (
nvprof
), mà không tạo điều kiện cho hạt nhân đồng thời profiling - memcpy có liên quan đến bộ nhớ máy chủ mà không phải là trang bị khóa.
Các lập trình viên có thể vô hiệu hóa toàn cầu asynchronicity của hạt nhân ra mắt cho tất cả các ứng dụng CUDA chạy trên một hệ thống bằng cách thiết lập các biến môi trường CUDA_LAUNCH_BLOCKING để 1. Tính năng này được cung cấp cho chỉ gỡ lỗi các mục đích và không nên được sử dụng như một cách để làm cho phần mềm sản xuất chạy đáng tin cậy.
Khởi chạy hạt nhân là đồng bộ nếu bộ đếm phần cứng được thu thập thông qua trình lược tả (Nsight, Visual Profiler) trừ khi đồng bộ hóa hồ sơ hạt nhân được bật. Bản sao bộ nhớ không đồng bộ cũng sẽ đồng bộ nếu chúng liên quan đến bộ nhớ máy chủ không bị khóa trang.
Từ hướng dẫn lập trình NVIDIA CUDA (http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#concurrent-execution-host-device).
- 1. Đồng bộ hóa cuộc gọi không đồng bộ trong C#
- 2. Cuộc gọi không đồng bộ trong WP7
- 3. Threading nhiều cuộc gọi không đồng bộ
- 4. Hủy cuộc gọi EJB không đồng bộ @
- 5. Javascript - đồng bộ hóa sau khi các cuộc gọi không đồng bộ
- 6. Is - [UITableView reloadData] không đồng bộ hoặc đồng bộ?
- 7. Lạc đà Apache cho các cuộc gọi không đồng bộ
- 8. Các cuộc gọi lại luôn không đồng bộ?
- 9. Hạn chế các cuộc gọi không đồng bộ trong Node.js
- 10. $ phát ra $ phát sóng đồng bộ hoặc không đồng bộ?
- 11. Thực hiện hạt nhân đồng thời CUDA với nhiều hạt nhân trên mỗi luồng
- 12. Cuộc gọi RPC Đồng bộ trong GWT
- 13. Cuộc gọi ủy nhiệm không đồng bộ về lửa và không đồng bộ trong C#
- 14. Các cuộc gọi HTTP không đồng bộ trong Python
- 15. Thủ tục lưu trữ không đồng bộ Các cuộc gọi
- 16. Cuộc gọi đồng bộ với jquery
- 17. Gọi lại không đồng bộ đồng thời
- 18. Tăng cường :: các khe tín hiệu được gọi là đồng bộ hoặc không đồng bộ?
- 19. Thực hiện các cuộc gọi đồng bộ trong Silverlight WP7
- 20. Gọi đồng bộ các phương thức hợp đồng vận hành WCF không đồng bộ trên silverlight
- 21. Các cuộc gọi đến các phương thức Javascript có an toàn hoặc đồng bộ hóa không?
- 22. Gọi lại đồng bộ và không đồng bộ
- 23. Kiểm tra cuộc gọi phương thức không đồng bộ
- 24. Gửi dispatch_apply đồng bộ hoặc không đồng bộ?
- 25. Biến sự kiện thành cuộc gọi không đồng bộ
- 26. Là lực đẩy đồng bộ hoặc không đồng bộ?
- 27. Cuộc gọi đến toán tử 'xóa' có đồng bộ không?
- 28. Cuộc gọi không đồng bộ Mục tiêu C iphone
- 29. ThreadPool.QueueUserWorkItem với Cuộc gọi không đồng bộ trong chủ đề
- 30. Node.js - chờ cho nhiều cuộc gọi không đồng bộ