-
-
Notifications
You must be signed in to change notification settings - Fork 6
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
Easier cross-compiling for level 4? #5
Comments
This is probably related to the discussion in conda-forge/conda-forge.github.io#1261 . |
This is a deficiency of |
Is this now solved by #6 ? |
To answer my own question: no. Adding So continuing with the idea from @stuarteberg, how about we do the following:
@isuruf @traversaro @stuarteberg Thoughts? On another note, currently the |
I just went ahead and implemented my note from above: #9 Let me know what you think! |
And what's the difference between that and the current |
Im trying to create a method where a package in the
As you can see, all three packages have a different responsibility. The result is that one can just add |
I think the best solution here is a way to specify virtual packages to be added to |
I have previously been discussing that with @wolfv . That does indeed seem like the best solution. For the time being however, maybe we can brainstorm a solution that works in the mean time?
Would adding a constraint from |
@isuruf Any thoughts? I can create a PR if that helps? |
For now can you use |
But that will require the user to have a deep understanding of what is going on and why this is a problem. The whole idea is to remove friction for the user. My workaround is not that hacky is it? |
What you are suggesting needs a deep understanding of what is going on when compiling downstream packages. The user needs to know that the ABI doesn't change when compiling a lvl4 package with a lvl3 downstream package, but running with a downstream lvl4 package. |
Comment:
The conda-forge docs for the microarch-optimized builds have an example that uses
microarch_level: 4
. But the README for this feedstock contains the following caveat:Indeed, when I tried to use level 4, I saw failures (in my case, it was on osx).
Nonetheless, I'd like to produce optimized builds for machines that support AVX-512 (level 4). This was possible by explicitly adding the necessary build flag in
build.sh
and then explicitly listing the appropriaterun
dependency:Using that workaround, we were able to produce optimized binaries (including
march=x86-64-v4
in thegraph-tool
feedstock (conda-forge/graph-tool-feedstock#140).Would it be possible to make that easier for feedstock maintainers, perhaps by having the
microarch-level-feedstock
produce yet another output?Right now this feedstock produces two packages for each arch, such as:
x86_64-microarch-level
a. Introduces the
-march=x86-64-v${level}
flag inCFLAGS
etc.b. Introduces a
run_export
to_x86_64-microarch-level
_x86_64-microarch-level
a. Introduces a
run
dependency to the appropriate__archspec
virtual package....but it seems like cross-compilation would be easier if we were to split up the functionality from 1.a and 1.b. into two separate packages, so we could easily obtain the correct
CFLAGS
without pulling in the__archspec
dependency. Perhaps we could offer two variants of the package: one that provides both 1.a and 1.b, and another variant that only provides 1.a. (I'm just splitballing here...)Alternatively, we could just drop the
run_exports
from the{{ family }}-microarch-level
recipe. In that case, feedstock maintainers could build level-4 packages without needing to add the compiler flag explicitly, but they would be forced to explicitly list the appropriate runtime dependency in their recipe, which could be annoying:The text was updated successfully, but these errors were encountered: