Вільна бібліотека лінійної алгебри eigen: історія і основні можливості

Вільна бібліотека лінійної алгебри Eigen: історія і основні можливості
У незапам`ятні часи, коли комп`ютери були великими, а ціни на нафту - маленькими, програмуванням займалися в основному інженери і вчені. Тоді комп`ютери використовувалися для інтенсивних математичних обчислень, і тільки набагато пізніше на них стали дивитися кіно і обмінюватися безглуздими картинками. Про ті далекі часи сучасного програміста майже нічого не нагадує, але тільки до тих пір, поки не доводиться писати якийсь обчислювальний код, який повинен виконуватися максимально швидко. Вимоги до швидкості автоматично виключають такі модні сьогодні язики поділені, немов Python, javascript, C # і Java. Залишаються тільки компільовані «старички» Fortran, C і C ++, які здатні вичавити з процесора все можливе.

Fortran, випробувавши подобу ренесансу в кінці дев`яностих - початку двохтисячних, зараз, схоже, остаточно втратив популярність. Нові стандарти Fortran 90/95/2003/2008 значно осучаснили мову, але він все ж залишився вкрай незручним за сучасними мірками. Дуже багато старих обчислювальні пакети в останні роки переписуються на C ++, і кінця цієї тенденції поки не видно. По всій видимості, саме С ++ в доступному для огляду майбутньому стане «обчислювальним мовою» номер один. Тим більше парадоксально, що С ++ «з коробки» дуже погано пристосований для обчислювальних задач.

На сьогоднішній день кращою вільної бібліотекою лінійної алгебри для З ++ є Eigen (https://eigen.tuxfamily.org).

проект Eigen

З бібліотеками лінійної алгебри в С ++ багато років спостерігалася повна плутанина. Існували десятки конкуруючих бібліотек, такі як uBLAS (https://boost.org/doc/ libs / 1 40 0 / libs / numeric / ublas / doc / overview.htm), MTL4 (Matrix Template Library, http: // osl. iu.edu/research/mtl/mtl4/), GMM ++ (https://home.gna.org/getfem/gmm intro), Blitz ++ (http: // oonumerics.org/blitz), POOMA (http: // acts .nersc.gov / pooma) і т.д. Однак у кожній з них були свої суттєві вади: низька продуктивність, заплутаний і незручний синтаксис, погана документація, відсутність потрібних алгоритмів, невідповідні ліцензії і т.п. Загалом, типовий «зоопарк» без будь-якої надії на стандартизацію.

Вільна бібліотека лінійної алгебри Eigen: історія і основні можливості

В один прекрасний момент розробники KDE зіткнулися з тим, що програми цього величезного проекту використовують різні саморобні «милиці» і зовнішні бібліотеки для чисельних розрахунків. Підтримувати всю цю мішанину і тягнути її за собою у вигляді залежностей було дуже складно.



Тоді й народилася ідея нової універсальної і відкритої бібліотеки лінійної алгебри. Так з`явилася Eigen (https://eigen.tuxfamily.org).

Незважаючи на своє походження з KDE, Eigen не має взагалі ніяких зовнішніх залежностей і є повністю заголовної бібліотекою (програму не треба з ним компонувати). Можливості бібліотеки є на сьогоднішній день неперевершеними:
gt; Підтримка матриць і векторів довільного розміру.
gt; Спеціальні оптимізовані матриці і вектори розміру 2, 3 і 4.



gt; Підтримка щільних і розріджених матриць.
gt; З коробки доступні оптимізовані алгоритми розв`язання систем лінійних уравне¬ній, декомпозиції матриць, пошуку власних чисел і векторів.
gt; Природна математична нотація записи виразів.
gt; Всі основні операції лінійної алгебри (транспонування, детермінант, векторні і скалярні твори векторів, доступ до діагональним елементам, трикутним матрицями і т.п.).
gt; Оптимізована поелементно обробка в стилі Fortran.
gt; Підтримка геометричних трансформацій (обертань, трансляцій, афінних преобра¬зованій, кватернионов, ейлерових кутів). Робота з матрицями перетворень OpenGL.
gt; Дуже висока якість коду та відповідність стандартних тестів BLAS і LAPACK.
gt; Дуже висока продуктивність на рівні еталонних бібліотек BLAS і LAPACK. На процесорах Intel Eigen не поступається проприетарной реалізації Intel MKL.
gt; Автоматична векторизація обчислень для процесорів Intel (набори інструкцій SSE 2/3/4), ARM (інструкції NEON) і PowerPC (інструкції AltiVec).
gt; Підтримка всіх основних сучасних компіляторів С ++ (GCC, MinGW, CLang, MSVC, Intel C ++ Compiler, QCC).

Eigen поширюється по вельми ліберальної ліцензії LGPLv3, яка дозволяє іс¬пользовать бібліотеку як у вільних, так і в комерційних проектах. Як альтер¬натіви є варіант з ліцензією GPLv2.



Створили відмінну програму для Android, що підключається до бібліотеки Eigen, і тепер Вас цікавить просування мобільних додатків (https://jl.by/what-we-do/mobile-development/aso/), тому що Ви вважаєте, що ваше дітище цілком може стати комерційно успішним проектом? Тоді я рекомендую Вам звернутися до досвідчених майстрів в цій галузі, на роль яких ідеально підійдуть фахівці сайту jl.by!

ІНШЕ

Compute stick на skylake фото

Compute stick на skylake

Відео: Intel Compute Stick Review Online-магазини вже пропонують нові мікрокомп`ютери від Intel з процесорами Core M3 і…

Sdl + mingw = дружба! фото

Sdl + mingw = дружба!

Відео: SDL 2 Tutorial 1c [SETUP] Windows and MinGW Setup Мабуть, SDL - найпопулярніша бібліотека для створення…

Seed7: бібліотеки фото

Seed7: бібліотеки

Відео: пентагональними призма з насіння льону. П`ятикутна призма. геометричні фігури.Стереометрія Якщо Сі або C ++ без…

Intel і open source: інші проекти фото

Intel і open source: інші проекти

Відео: Чому варто брати участь в Open Source проектах Для повноти картини відзначу, що Intel співпрацює і з проектами,…

Intel і open source: чи не meego єдиним фото

Intel і open source: чи не meego єдиним

Відео: Елітний Світ Всі серії поспіль Intel Corporation відома перш за все досягненнями в області напівпровідникових…

» » Вільна бібліотека лінійної алгебри eigen: історія і основні можливості