-
Notifications
You must be signed in to change notification settings - Fork 4k
ARROW-5196 [C++] Uniform usage of Google cpu_features library accross the codebase #4201
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
Conversation
|
Hm, I erroneously got the idea that the cpu_features library was more minimalistic than it actually is, I apologize for proposing to vendor it. @pitrou do you think we should add this to conda-forge and the thirdparty toolchain? |
|
Is there a more lightweight alternative to this library? I'm not even sure we're using any of this currently, do we? |
|
At one point we were querying supported SIMD instructions; I think it's important to determine at least
|
|
Ok, it seems that We may want to make a conda-forge package ultimately. Though first we can simply add it to our thirdparty libs and build it on the fly (it's actually very fast to build by default). |
|
Side note: |
|
@pitrou I'll create conda package and add to conda-forge, and redo the PR accordingly. BTW AppVeyor is failing with an error: "CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:137 (message): |
|
@aregm You shouldn't lose your breath over AppVeyor for now ;-) The priority is to revamp the PR using the discussed approach (i.e. build cpu_features using our usual "thirdparty toolchain" build chain, rather than vendor it). |
|
@pitrou, I am just curious what is the cause, but do not plan to spend time on it :) |
|
We still need to allow building it from |
|
@pitrou @wesm I have added cpu_features to the conda-forge, but as it was suggested to add to thirdparty - do you have any fast "best-known method" or doc how to add external dependency to the Thirdparty with all the targets and defines correctly propagated through cmakefiles - I tried to replicate double-conversion way, but still includes and libs do not found, and I do not want to spend time on deciphering all the nested cmake calls in --trace if there is a faster way and I do not have to. Thanks! |
|
Unfortunately each external dependency requires its own treatment (the sad fact is that there's no standard build system or procedure in C++), so there's no "easy" way to do it. Usually I would first try to build the dependency by hand, observe the exact options required and where the various build products are installed (include files, library files), and start from there to try replicating it from CMake. Of course, you can still steal some inspiration for the CMake boilerplate from the existing thirdparty declarations. More generally you need to:
|
|
@aregm what is the status of this PR? |
|
@emkornfield The status of feature is pending - I need to add cache info parsing to cpu_features as it occurs they are not parsed there and then pull it in. If you are ok, to go without cache info for a while, until the next release, then I can do it as is. |
ed180da to
85fe336
Compare
|
@aregm looks like you have merge conflicts, could you please rebase this on master? |
|
@aregm I'm going to close this PR for now, please reopen if you have time to rebase, and address any additional feedback. If I understand correctly I think this got blocked on appropriate integration with the build system? |
|
@emkornfield Integration is done in PR, but is old and needs to be rebased on top of the latest master. Need to do that as soon as I get some free cycles. If you need this, I'll do this week. |
|
@aregm, I don't think its urgent, I'm just trying to clear out PRs that appear to have stagnated. |
Resolves the ARROW-5196, Draft pull request to check on various platforms.