Rất ít nhà phát triển phần mềm khoa học hiểu các nguyên tắc tốt của thiết kế, vì vậy tôi xin lỗi nếu câu trả lời này hơi dài dòng. Từ góc độ công nghệ phần mềm, mục tiêu của nhà phát triển phần mềm khoa học là thiết kế một giải pháp thỏa mãn một tập hợp các ràng buộc thường xung đột .
Dưới đây là một số ví dụ điển hình về các ràng buộc này, như có thể được áp dụng cho thiết kế thư viện ma trận thưa thớt của bạn:
- Hoàn thành trong một tháng
- Chạy chính xác trên máy tính xách tay của bạn và một số máy trạm
- Chạy hiệu quả
Các nhà khoa học đang dần chú ý hơn đến một số yêu cầu phổ biến khác từ công nghệ phần mềm:
- Tài liệu (Hướng dẫn sử dụng, hướng dẫn, nhận xét mã)
- Khả năng bảo trì (kiểm soát phiên bản, thử nghiệm, thiết kế mô-đun)
- Khả năng sử dụng lại (thiết kế mô-đun, "linh hoạt")
Bạn có thể cần nhiều hơn hoặc ít hơn một trong những yêu cầu này. Nếu bạn đang cố giành giải thưởng Gordon Bell về hiệu suất, thì ngay cả phân số phần trăm cũng có liên quan và một vài thẩm phán sẽ đánh giá chất lượng mã của bạn (miễn là bạn có thể thuyết phục họ đúng). Nếu bạn đang cố gắng biện minh cho việc chạy mã này trên một tài nguyên được chia sẻ, chẳng hạn như cụm hoặc siêu máy tính, bạn thường phải bảo vệ các khiếu nại về hiệu suất của mã, nhưng những điều này hiếm khi rất nghiêm ngặt. Nếu bạn đang cố gắng xuất bản một bài báo trong một tạp chí mô tả mức tăng hiệu suất của phương pháp của bạn, thì bạn cần phải nhanh hơn so với đối thủ cạnh tranh và hiệu suất 20% là một sự đánh đổi tôi sẵn sàng thực hiện để có thể duy trì và tái sử dụng tốt hơn.
Quay trở lại câu hỏi của bạn, "thiết kế tốt", được cấp đủ thời gian phát triển, không bao giờ nên hy sinh hiệu suất. Nếu mục tiêu là tạo mã chạy nhanh nhất có thể, thì mã phải được thiết kế xung quanh các ràng buộc đó. Bạn có thể sử dụng các kỹ thuật như tạo mã, lắp ráp nội tuyến hoặc tận dụng các thư viện được điều chỉnh cao để giúp bạn giải quyết vấn đề của mình.
Nhưng nếu bạn không có đủ thời gian phát triển thì sao? Những gì đủ tốt? Vâng, nó phụ thuộc, và không ai sẽ có thể cung cấp cho bạn một câu trả lời tốt cho câu hỏi này mà không có thêm ngữ cảnh.
FWIW: Nếu bạn thực sự quan tâm đến việc viết các hạt ma trận thưa thớt hiệu năng cao, bạn nên so sánh với cài đặt PETSc được tối ưu hóa và làm việc với nhóm của họ nếu bạn đánh bại chúng, họ sẽ vui lòng kết hợp các hạt nhân được điều chỉnh vào thư viện.