Thư viện tenor C ++ nhanh, nhẹ cho mã không xác định kích thước


20

Tôi đang tìm kiếm một thư viện tenor C ++ hỗ trợ mã không xác định thứ nguyên. Cụ thể, tôi cần thực hiện các thao tác dọc theo từng chiều (tối đa 3), ví dụ: tính tổng tiền có trọng số. Kích thước là một tham số mẫu (và do đó là hằng số thời gian biên dịch). Một hạn chế khác là thư viện phải tương đối nhẹ, thay vì kiểu Eigen / Boost hơn Trilinos / PETSc.

Bất kỳ đề xuất?

Lưu ý: Tôi đã xem qua Eigen và nghĩ rằng nó gần như phù hợp với cấu hình chính xác, nếu nó không giới hạn ở các thang đo 2D. Nếu tôi nhầm bởi điều này, xin vui lòng sửa cho tôi.

Câu trả lời:


9

FTensor là một thư viện nhẹ, chỉ tiêu đề, đầy đủ khuôn mẫu bao gồm ký hiệu tổng hợp công thái học. Nó đã được thử nghiệm rộng rãi ở 2, 3 và 4 chiều, nhưng sẽ hoạt động tốt đối với bất kỳ số lượng kích thước nào.


6

Về giá trị của nó, Eigen có một lớp Tenor như một mô-đun không được hỗ trợ.

http: // eigen.tuxf Family.org/dox-devel/unsupported/group_ CXX11 _Tensor__Module.html

Tôi đã không sử dụng nó cho mình vì vậy không thể nói thêm về nó.

Thư viện lớp Armadillo có lớp tenor bậc 3.

http://arma.sourceforge.net/

Tôi cũng chưa sử dụng khả năng tenor của Armadillo nhưng đã thử nghiệm với các lớp ma trận tiêu chuẩn và chúng có vẻ tương đối dễ sử dụng và có hiệu suất tốt.


2
Cụ thể hơn, Armadillo có lớp Cube , thực hiện các thang đo bậc 3
mtall

6

Tôi nghĩ rằng tacolib mới này cũng thực sự tốt.

Trình biên dịch đại số kéo căng (taco) là một thư viện C ++, tính toán các biểu thức đại số tenxơ trên các tenxơ thưa thớt và dày đặc. Nó sử dụng các kỹ thuật biên dịch mới để có hiệu suất cạnh tranh với các hạt nhân được tối ưu hóa bằng tay trong các thư viện được sử dụng rộng rãi cho cả đại số tenxơ thưa thớt và đại số tuyến tính thưa thớt.

Bạn có thể sử dụng taco như một thư viện C ++ cho phép bạn tải các tenxơ, đọc các tenxơ từ các tệp và tính toán các biểu thức tenxơ. Bạn cũng có thể sử dụng taco làm trình tạo mã tạo ra các hàm C để tính toán các biểu thức tenxơ.

Thảo luận: https://www.youtube.com/watch?v=Kffbzf9etLE Giấy: http://tensor-compiler.org/kjolstad-oopsla17-tensor-compiler.pdf


2
Chào mừng bạn đến với SciComp.SE! Bạn có thể mở rộng câu trả lời của mình để mô tả thư viện (các liên kết có thể bị chết) và đặc biệt là làm thế nào nó đáp ứng các yêu cầu của OP? Nếu không, nó là một bình luận nhiều hơn.
Christian Clason

Có vẻ như một thư viện rất thú vị! Dường như điều này tạo ra một bước biên dịch thêm, mặc dù. Tôi đang tự hỏi liệu có thể thực hiện điều này bằng cách sử dụng các mẫu thay thế?
HelloGoodbye


4

Thư viện deal.II ( http://www.dealii.org ), trong khi được viết cho các mục đích lớn hơn nhiều, cũng có một thư viện con của các lớp tenor có khả năng thực hiện rất nhiều việc bạn muốn làm. Đặc biệt, nó sử dụng các mẫu cho kích thước.

(Tuyên bố miễn trừ trách nhiệm: Tôi là một trong những tác giả chính của thư viện này.)


2

Thư viện Boost.Numeric.uBlas gần đây đã thêm một tiện ích mở rộng được cung cấp với phiên bản Boost 1.70. Vui lòng xem tại https://github.com/boostorg/ublas . Nó cung cấp các hoạt động ma trận và tenxơ tiêu chuẩn với thứ tự biến thời gian chạy (số lượng kích thước), kích thước cho các định dạng lưu trữ thứ nhất và cuối cùng (cột và hàng chính). Bạn cũng có thể dễ dàng sử dụng quy ước tổng hợp Einstein để thể hiện phép nhân tenor aribtrary. Boost.Numeric.uBlas là tiêu đề duy nhất và dễ dàng tích hợp vào các dự án hiện có.


Bạn cũng có thể thử chơi xung quanh với thư viện trên Godbolt: godbolt.org/z/Sf5V77
Cem Bassoy



1

LTensor ( https://code.google.com.vn/p/ltensor/ ) là một thư viện mẫu C ++ RẤT dễ sử dụng cho các thang đo lên đến hạng 4 (dựa trên ký hiệu chính tả), nhanh và nhẹ. Bạn không cần phải biên dịch bất cứ thứ gì chỉ cần bao gồm tệp tiêu đề chính. Tôi đã sử dụng nó trên một số dự án và làm việc ok.

Nó có một số tính năng tích hợp cho các thang đo bậc 2 như bộ giải tuyến tính, phân tách svd, LU và Cholesky, v.v. Tôi không sử dụng bất kỳ trong số chúng (tôi sử dụng các thư viện khác cho điều đó).


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.