Có vẻ như viết mã devectorized được khuyến khích trong Julia. Thậm chí còn có package cố gắng thực hiện điều đó cho bạn.Vì sao nên khuyến khích việc phân chia ở Julia?
Câu hỏi của tôi là lý do tại sao?
Trước hết, nói từ khía cạnh trải nghiệm người dùng, mã vectơ ngắn gọn hơn (ít mã hơn, ít khả năng xảy ra lỗi), rõ ràng hơn (do đó dễ debug hơn), cách viết mã tự nhiên hơn (ít nhất là cho một người đến từ nền tảng điện toán khoa học, người mà Julia cố gắng phục vụ). Có thể viết một cái gì đó như vector'vector
hoặc vector'Matrix*vector
là rất quan trọng, bởi vì nó tương ứng với biểu diễn toán học thực tế, và đây là cách mà những người tính toán khoa học nghĩ về nó trong đầu của họ (không phải trong vòng lồng nhau). Và tôi ghét thực tế rằng đây không phải là cách tốt nhất để viết điều này, và lặp lại nó thành vòng lặp sẽ nhanh hơn.
Hiện tại có vẻ như có xung đột giữa mục tiêu viết mã nhanh và mã ngắn gọn/rõ ràng.
Thứ hai, lý do kỹ thuật cho điều này là gì? Ok, tôi hiểu rằng mã vectơ được tạo ra thêm thời gian, v.v., nhưng các hàm vectơ (ví dụ, broadcast()
, map()
, v.v.) có khả năng đa luồng chúng, và tôi nghĩ rằng lợi ích của đa luồng có thể lớn hơn chi phí của thời gian và các nhược điểm khác của các hàm vectơ làm cho chúng nhanh hơn các vòng lặp thông thường.
Thực hiện các chức năng vectơ hiện tại trong Julia có thực hiện đa luồng ngầm dưới mui xe không?
Nếu không, liệu có phải là công việc/kế hoạch để thêm đồng thời tiềm ẩn vào các hàm được vector hóa và để làm cho chúng nhanh hơn các vòng lặp không?
Julia ổn định hiện đang ở v0.4. Hầu hết (tất cả?) Những điều bạn đang hỏi về là trên lộ trình cho v1.0. Vì vậy, không lấy các tài liệu quá theo nghĩa đen. Nếu bạn muốn viết mã vectơ, hãy viết mã vectơ. Một mục tiêu phát triển là cho vector được vectơ hóa nhanh như Matlab. Đối với nhiều hoạt động, điều này đã đạt được khi trình biên dịch diễn giải đúng cách mà BLAS thường xuyên gọi. Về đa luồng, tôi nghĩ rằng bạn có thể kích hoạt tính năng đa luồng BLAS với một số tinkering, và tất cả sẽ xảy ra một cách tự nhiên bởi v1.0. –
Tuyên bố phát triển cốt lõi của Julia là "chúng tôi tham lam". Các nhà phát triển cốt lõi muốn nó làm mọi thứ và làm nhanh.Ngôn ngữ được cho là để giải quyết "vấn đề hai ngôn ngữ", và ở giai đoạn này, nó trông giống như nó sẽ theo thời gian v1.0 lượt truy cập. –
Nhận xét cuối cùng (Tôi hứa): Trang vấn đề github cho đa luồng gốc * trong Julia * là [ở đây] (https://github.com/JuliaLang/julia/issues/1790). Không chắc chắn nếu họ sẽ nhận được một bản phát hành v0.5, nhưng nó chắc chắn là trên đường. Khi nó chạm, tôi hy vọng tất cả các gói lớn sẽ được cập nhật để tận dụng lợi thế của nó. –