diff --git a/README.adoc b/README.adoc index 9955b10..dad2b19 100644 --- a/README.adoc +++ b/README.adoc @@ -4208,7 +4208,7 @@ Header only linear algebra library supported by Buildroot: .... ./build -B 'BR2_PACKAGE_EIGEN=y' -k -./run -F '/eigen.out' +./run -F '/eigen.out;/eigen_svd.out' .... ===== PARSEC benchmark @@ -5050,7 +5050,7 @@ so which shows that the whole delay is inside our install itself. I put an `echo f` in `check_bin_arch`, and it just loops forever, does not stop on a particular package. -Ignored / declied patch at: http://lists.busybox.net/pipermail/buildroot/2018-May/220662.html I might just fork Buildroot on the submodule if this keeps annoying me. +Ignored / declined patch at: http://lists.busybox.net/pipermail/buildroot/2018-May/220662.html I might just fork Buildroot on the submodule if this keeps annoying me. === Report upstream bugs diff --git a/kernel_module/user/Makefile b/kernel_module/user/Makefile index 1da24cc..9b8c413 100644 --- a/kernel_module/user/Makefile +++ b/kernel_module/user/Makefile @@ -15,6 +15,7 @@ endif ifeq ($(BR2_PACKAGE_EIGEN),y) # Header only. #LIBS += -leigen + CXXFLAGS_EXTRA += $(shell $(PKG_CONFIG) --cflags --libs eigen3) else OUTS := $(filter-out eigen%$(OUT_EXT),$(OUTS)) endif diff --git a/kernel_module/user/README.adoc b/kernel_module/user/README.adoc index 420dfec..c4f89c5 100644 --- a/kernel_module/user/README.adoc +++ b/kernel_module/user/README.adoc @@ -30,7 +30,3 @@ These programs can also be compiled and used on host. .. link:ioctl.c[] .. link:netlink.c[] .. link:poll.c[] -. Buildroot libraries -.. link:eigen.cpp[] -.. link:openmp.c[] -.. link:openblas.c[] diff --git a/kernel_module/user/eigen.cpp b/kernel_module/user/eigen.cpp index a6837d6..c7d480a 100644 --- a/kernel_module/user/eigen.cpp +++ b/kernel_module/user/eigen.cpp @@ -1,14 +1,11 @@ -/* Official hello world. */ - +/* Adapted from: https://eigen.tuxfamily.org/dox/GettingStarted.html */ #include -#include -using Eigen::MatrixXd; -int main() -{ - MatrixXd m(2,2); - m(0,0) = 3; - m(1,0) = 2.5; - m(0,1) = -1; - m(1,1) = m(1,0) + m(0,1); - std::cout << m << std::endl; +#include +int main() { + Eigen::MatrixXd m(2,2); + m(0,0) = 3; + m(1,0) = 2.5; + m(0,1) = -1; + m(1,1) = m(1,0) + m(0,1); + std::cout << m << std::endl; } diff --git a/kernel_module/user/eigen_svd.cpp b/kernel_module/user/eigen_svd.cpp new file mode 100644 index 0000000..c41e0be --- /dev/null +++ b/kernel_module/user/eigen_svd.cpp @@ -0,0 +1,24 @@ +/* Adapted from: https://eigen.tuxfamily.org/dox/classEigen_1_1JacobiSVD.html */ + +#include +using std::cout; +using std::endl; + +#include +#include +using Eigen::ComputeThinU; +using Eigen::ComputeThinV; +using Eigen::JacobiSVD; +using Eigen::MatrixXf; +using Eigen::Vector3f; + +int main() { + MatrixXf m = MatrixXf::Random(3,2); + JacobiSVD svd(m, ComputeThinU | ComputeThinV); + Vector3f rhs(1, 0, 0); + cout << "m = " << endl << m << endl << endl; + cout << "svd.singularValues() = " << endl << svd.singularValues() << endl << endl; + cout << "svd.MatrixU() = " << endl << svd.matrixU() << endl << endl; + cout << "svd.MatrixV() = " << endl << svd.matrixV() << endl << endl; + cout << "svd.solve() = " << endl << svd.solve(rhs) << endl << endl; +}