Khi sử dụng MPI_Isend
, thông số MPI_Request
có phải là một con trỏ rỗng không (khi người gửi không quan tâm đến thông báo sau khi nó được gửi)?Tham số yêu cầu MPI_Isend
Trả lời
Câu trả lời ngắn gọn là không - tham số xử lý yêu cầu không thể là NULL
.
MPI_Isend()
khởi tạo hoạt động gửi không đồng bộ. Tất cả các hoạt động không đồng bộ được đưa ra một tay cầm yêu cầu đó phải được hành động theo sau bằng một trong các cách sau:
- khối và chờ cho các hoạt động để kết thúc với
MPI_Wait()
và bạn bè - kiểm tra các hoạt động để hoàn thành với
MPI_Test()
và bạn bè cho đến khi kiểm tra hóa ra dương - miễn phí xử lý với
MPI_Request_free()
chờ đợi và thử nghiệm Cả hai chức năng giải phóng các yêu cầu khi nó đã hoàn thành. Bạn cũng có thể giải phóng nó ngay lập tức sau khi được trả lại bởi MPI_Isend()
. Điều này sẽ không hủy bỏ hoạt động mà là đánh dấu yêu cầu xóa ngay sau khi nó kết thúc. Tuy nhiên, bạn sẽ không thể nhận trạng thái của thao tác gửi.
Nếu bạn không quan tâm đến kết quả của hoạt động không đồng bộ (ví dụ như tình trạng hoàn thành, thông điệp nhận được tình trạng, mã lỗi, vv), điều phải làm là như sau:
MPI_Request req;
...
MPI_Isend(..., &req);
MPI_Request_free(&req);
...
Caveat : điều này làm việc cho các gửi không đồng bộ vì người ta có thể đưa ra một phương pháp khác để xác minh rằng hoạt động gửi đã hoàn thành, ví dụ: quá trình đích có thể phản hồi sau khi nhận được tin nhắn. Nhưng người ta không bao giờ nên miễn phí một yêu cầu nhận không đồng bộ và nên chờ đợi hoặc thử nghiệm để hoàn thành thay vì như vậy sẽ không có cách nào để biết khi nào hoạt động đã được hoàn thành.
Điều này là chính xác. Tôi chỉ muốn thêm rằng có một lý do người ta phải hoàn thành một 'MPI_Request' theo một cách nào đó. Có thể thực hiện MPI để trì hoãn công việc thực tế của việc gửi tin nhắn cho đến khi cuộc gọi 'MPI_Wait' (hoặc tương đương). Nếu yêu cầu được bắt đầu và không bao giờ hoàn thành, có thể tin nhắn sẽ không bao giờ được gửi. –
Cảm ơn! Tôi đã mở rộng từ "kết quả" để phản ánh tốt hơn những gì tôi đã có trong tâm trí. –
- 1. RestTemplate Yêu cầu GET với các tham số yêu cầu
- 2. Yêu cầu tham số Mất dấu cộng
- 3. WebResource.axd yêu cầu không có tham số - Đây là một yêu cầu không hợp lệ webresource
- 4. Tham số yêu cầu đầu ra theo mẫu
- 5. Tại sao truy vấn này yêu cầu tham số?
- 6. Tại sao hàm count() yêu cầu tham số?
- 7. String.Contains không yêu cầu tham số trong C#?
- 8. Làm cách nào để tạo tham số WebMethod yêu cầu
- 9. GWT: Chụp các tham số URL trong yêu cầu GET
- 10. Yêu cầu FluentValidation gọi hàm có nhiều tham số
- 11. Tham số yêu cầu bơm Depedency với CDI và JSF2
- 12. Cách đặt yêu cầu HTTP có tham số
- 13. Tại sao Rails Controller Action Method Yêu cầu tham số
- 14. Python yêu cầu thư viện HTTPBasicAuth với ba tham số
- 15. Nhận giá trị tham số yêu cầu trong JSF
- 16. Thêm thông số yêu cầu để yêu cầu
- 17. time.sleep yêu cầu số nguyên?
- 18. yêu cầu python: để nhận thông số
- 19. Có một tham số tùy chọn mà yêu cầu thông số khác để có mặt
- 20. Spring MVC - Không thể ánh xạ tham số yêu cầu dưới dạng tham số Bản đồ trong phương thức?
- 21. Gọi phương thức C++/CLI với hệ thống :: Tham số DateTime yêu cầu 'ValueType' làm tham số?
- 22. Thông số mạnh yêu cầu thuộc tính
- 23. một số yêu cầu từ một HttpURLConnection
- 24. Apache Benchmark - concurrency và số yêu cầu
- 25. Django ForeignKey không yêu cầu tính toàn vẹn tham chiếu?
- 26. đặt url tham chiếu với yêu cầu ajax
- 27. Chụp tham số url theo yêu cầu.GET
- 28. Cách sử dụng Google Guice để tạo các đối tượng yêu cầu tham số?
- 29. Có trình tạo URL hỗ trợ nối tham số yêu cầu không?
- 30. mùa xuân-MVC sẽ không ràng buộc tham số yêu cầu của tôi để int
Hãy dùng thử? Nên cho một segfault nếu nó không thể. – aztaroth
Ok, tôi đã thử và câu trả lời là không: MPI kiểm tra con trỏ yêu cầu không phải là null và nếu không thì sẽ in ra một lỗi. – sunmat