Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Which Eigen version is included in this repository? #113

Open
JanosGit opened this issue Oct 24, 2023 · 3 comments
Open

Which Eigen version is included in this repository? #113

JanosGit opened this issue Oct 24, 2023 · 3 comments

Comments

@JanosGit
Copy link

While trying to integrate RTNeural into a larger project that already has some dependencies, including Eigen, I wanted to find out which Eigen version is bundled in this repository. Looking at the sources I found this

#define EIGEN_WORLD_VERSION 3
#define EIGEN_MAJOR_VERSION 4
#define EIGEN_MINOR_VERSION 90

which indicates version 3.4.90. However, the latest stable release is 3.4.0 and 3.4.1 seems to be under development at the time of writing. Are you using a modified Eigen implementation? I found no explanation on the Eigen version required or which version is bundled here, so I'd be happy if you could first of all explain how to interpret that version number, which official Eigen versions are expected to work and how you generally expect RTNeural to be integrated in projects that already have other dependencies to Eigen and might already include Eigen via other ways?

@jatinchowdhury18
Copy link
Owner

Hi Janos,

Thanks for the question. The version of Eigen currently in RTNeural is commit 59b3ef5409452095e27e8d39a2ca81139bb8c971 from the main Eigen repo. I can't remember off the top of my head why I didn't use a tagged release, but I imagine pretty much any version of Eigen from the past 2 years or so should work fine with RTNeural.

In the future, I'll figure out a better way to document the Eigen version when it gets updated, so the Eigen version is more obvious to folks using RTNeural.

Looking forward to seeing what you're working on :)

@JanosGit
Copy link
Author

Thanks for the quick response and the clarification. Looking at the Eigen repo, it seems that eigen uses these .9x version numbers to indicate that they are somewhere in between releases, I wasn't aware of that.

Did you consider integrating your third party dependencies as git submodules rather than copying them into the repository? This would make the versions you are using clear and allows the user to either clone the submodules or leave them uninitialised in case they want to use their own instances of those dependencies.

Furthermore, injecting the dependencies from other sources requires slight changes to the CMakeLists. I already did that on an internal fork of the repo a while ago, I'll see if I find some time to clean that up and make up a little pull request.

Anyway, thanks for sharing RTNeural with us and keep an eye on our product releases to find out what we have been working on soon... ;)

@jatinchowdhury18
Copy link
Owner

Thanks for the quick response and the clarification. Looking at the Eigen repo, it seems that eigen uses these .9x version numbers to indicate that they are somewhere in between releases, I wasn't aware of that.

Yeah, that was news to me as well.

Did you consider integrating your third party dependencies as git submodules rather than copying them into the repository? This would make the versions you are using clear and allows the user to either clone the submodules or leave them uninitialised in case they want to use their own instances of those dependencies.

Yes, I had thought about that, the reason why I chose not to include Eigen as a submodule is that the Eigen repo seemed to be fairly large, and contained a lot of files that weren't necessary for actually using the library. That said, maybe switching to a submodule there would still be the best choice.

Furthermore, injecting the dependencies from other sources requires slight changes to the CMakeLists. I already did that on an internal fork of the repo a while ago, I'll see if I find some time to clean that up and make up a little pull request.

That makes sense... so maybe having a CMake option like RTNEURAL_EIGEN_DIR which the user can point to their own version if they want to? It might be good to do something similar for the other internal dependencies (XSIMD, nlohmann::json) to help users avoid conflicts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants