5

Đây là bộ giải mã tuyến tính tốt có tên là GotoBLAS. Nó có sẵn để tải xuống và chạy trên hầu hết các nền tảng máy tính. Câu hỏi của tôi là, có một cách dễ dàng để liên kết bộ giải này với hạt nhân Mathematica, để chúng ta có thể gọi nó là LinearSolve không? Một điều mà hầu hết các bạn có thể đồng ý chắc chắn là nếu chúng ta có một hệ thống tuyến tính rất lớn thì chúng ta nên giải quyết nó bằng một số giải pháp tuyến tính tiêu chuẩn công nghiệp. Người giải quyết sẵn có không có nghĩa là cho những vấn đề thực sự lớn.Bộ giải mã tuyến tính này có thể được liên kết như thế nào trong Mathematica?

Bây giờ Mathematica 8 đã đưa ra khả năng biên dịch và liên kết thư viện tốt hơn, chúng ta có thể mong đợi sử dụng một số giải pháp đó từ bên trong Mathematica. Câu hỏi đặt ra là yêu cầu ít điều chỉnh mã nguồn hoặc bạn cần phải là một trình hướng dẫn nâng cao để thực hiện điều đó. Ở đây trong diễn đàn này, chúng tôi có thể bắt đầu liên kết một số chương trình nguồn mở tuyệt vời như GotoBLAS với Mathematica và trao đổi quan điểm của chúng tôi. Những người ít kinh nghiệm hơn có thể nhận được một số thông tin chi tiết từ người dùng chuyên nghiệp và cuối cùng chúng tôi có được một Mathematica mạnh hơn nhiều. Nó sẽ là một dự án mở cho cộng đồng Mathematica ngày càng tăng và một nền tảng nơi những khả năng mới được giới thiệu của Mathematica 8 có thể được minh bạch tài liệu cho người dùng trong tương lai.

Tôi hy vọng một số bạn ở đây sẽ đưa ra những ý tưởng vững chắc về cách chúng tôi có thể nhận được GotoBLAS chạy từ bên trong Mathematica. Do khả năng biên dịch và liên kết thư viện mới hơn thường không được tài liệu rất tốt nên chúng không thường xuyên được sử dụng bởi người dùng thông thường. Câu hỏi này có thể hoạt động như một ví dụ đồ chơi để ghi lại những khả năng mới này của Mathematica. Giúp đỡ theo hướng này bởi các thành viên có kinh nghiệm diễn đàn sẽ thực sự nâng cao động cơ của những người dùng mới như tôi cũng như nó sẽ dạy chúng ta một điều rất hữu ích để mở rộng kho vũ khí số Mathematica.

+2

Nhìn vào MathLink. Nó rất dễ học. – Szabolcs

+7

Tôi không nhớ bất kỳ sự không hài lòng phổ biến rộng rãi nào với LinearSolve. Sử dụng SparseArray s nó có thể dễ dàng xử lý hàng triệu phương trình. Vấn đề chính xác của bạn là gì? –

+0

Nó sẽ không làm tôi ngạc nhiên ít nhất, nếu Mathematica đã liên kết trong một số hình thức giải quyết tuyến tính. Trên thực tế, nó sẽ làm tôi ngạc nhiên nếu họ không. Cho dù đây là phiên bản nội bộ hay bên ngoài của LAPACK và BLAS, thì không liên quan, miễn là chúng được kiểm tra. Nhìn qua [messages] (http://stackoverflow.com/questions/1675387/finding-previously-defined-messages-in-mathematica/1682004#1682004) cho biết rằng chúng đã là một số hỗ trợ LAPACK. Tôi đã không sử dụng nó, mặc dù. – rcollyer

Trả lời

7

Câu trả lời ngắn gọn, tôi nghĩ, đó không phải là điều bạn thực sự muốn làm.

GotoBLAS, như tôi đã hiểu, là một triển khai cụ thể của BLAS, viết tắt của các Sơ đồ con đại số tuyến tính cơ bản. "Cơ bản" thực sự có nghĩa là khá cơ bản ở đây - ví dụ như nhân một ma trận với một vectơ. Vì vậy, BLAS không phải là một người giải quyết rằng một chức năng như LinearSolve sẽ gọi. LinearSolve sẽ (tùy thuộc vào hình thức chính xác của các đối số) gọi một lệnh LAPACK, đó là một gói mức cao hơn được xây dựng trên đầu trang của BLAS. Vì vậy, để thực sự liên kết GotoBLAS (hoặc bất kỳ BLAS) vào Mathematica, người ta thực sự sẽ cần phải biên dịch lại toàn bộ hạt nhân.

Tất nhiên, người ta có thể viết chương trình C/Fortran được biên dịch với GotoBLAS và sau đó liên kết nó với Mathematica. Chương trình kết quả sẽ chỉ sử dụng GotoBLAS khi chạy bất kỳ lệnh cụ thể nào mà bạn đã liên kết vào Mathematica, tuy nhiên, điều này thay vì bỏ lỡ toàn bộ điểm của BLAS.

0

Hạt nhân Wolfram (Mathematica) đã được liên kết với Thư viện hạt nhân toán học được tối ưu hóa cao của Intel và được phân phối với Mathematica. MKL đa luồng và được vector hóa, vì vậy tôi không chắc chắn những gì GotoBLAS sẽ cải thiện.

Các vấn đề liên quan