-
-
Couldn't load subscription status.
- Fork 487
faiss: update to 1.12.0 #8434
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
faiss: update to 1.12.0 #8434
Conversation
Summary of ChangesHello @choyy, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request upgrades the Faiss library to its latest version, 1.12.0, enhancing its build flexibility and feature set. It introduces comprehensive configuration options for various components like GPU support, MKL integration, Python bindings, and C API, allowing users to tailor the build to their specific needs. The update also refines dependency handling and modernizes the build process, ensuring compatibility and improved performance. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request updates the faiss package to version 1.12.0 and significantly modernizes its xmake.lua script. The changes introduce much-needed configurability for features like GPU, MKL, Python, and C-API support, and expand platform compatibility. The dependency management has been improved, notably by making the CUDA dependency conditional. Overall, this is a great enhancement. However, I've found one critical issue in the MKL configuration logic that could lead to build failures, which I've detailed in a specific comment.
| table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF")) | ||
| table.insert(configs, "-DFAISS_ENABLE_GPU=" .. (package:config("gpu") and "ON" or "OFF")) | ||
| table.insert(configs, "-DFAISS_GPU_STATIC=" .. (package:config("gpu_static") and "ON" or "OFF")) | ||
| table.insert(configs, "-DFAISS_ENABLE_MKL=" .. (package:config("mkl") and "ON" or "OFF")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The logic for enabling MKL is currently incorrect. It only checks package:config("mkl"), which defaults to true. If the MKL library is not found on the system, on_load correctly adds openblas as a fallback. However, on_install will still pass -DFAISS_ENABLE_MKL=ON to CMake. This will cause the build to fail because faiss's build system will be unable to find the MKL library.
The condition should also check if the MKL package is actually found using find_package("mkl") before enabling the corresponding CMake option.
table.insert(configs, "-DFAISS_ENABLE_MKL=" .. (find_package("mkl") and package:config("mkl") and "ON" or "OFF"))
packages/f/faiss/xmake.lua
Outdated
| if package:config("gpu") then | ||
| package:add("deps", "cuda") | ||
| end | ||
| if not find_package("mkl") or not package:config("mkl") then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please do not call find_package in on_load
| add_configs("mkl", {description = "Enable MKL.", default = false, type = "boolean"}) | ||
| add_configs("python", {description = "Build Python extension.", default = false, type = "boolean"}) | ||
| add_configs("c_api", {description = "Build C API.", default = false, type = "boolean"}) | ||
| add_configs("lto", {description = "Enable Link-Time optimization.", default = false, type = "boolean"}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is built-in config, you can check xrepo info zlib.
No description provided.