On 23/03/2023 2:13 pm, Joshua Root wrote:
On 23/3/2023 23:26, Steven Smith wrote:
PyTorch build and runs fine locally, but the CI consistently fails
with error below. This issue has created unnecessary delays in merging
new PT versions.
2023-03-18T18:24:32.7624930Z CMake Error at
third_party/fbgemm/CMakeLists.txt:76 (message):
2023-03-18T18:24:32.7638400Z A compiler with AVX512 support is
required.
You would need to examine the cmake logs (CMakeOutput.log +
CMakeError.log) and the CMakeLists.txt in this subdir to see how this
check is being done. Maybe the wrong compiler is being used for the
check; maybe it's buggy in some other way.
A successful build uses:
:debug:build CXX='/usr/bin/clang++'
…
:info:build -- Performing Test C_HAS_AVX512_2 - Success
…
:info:build -- Performing Test CXX_HAS_AVX512_2 - Success
That's coming from a different CMakeLists.txt (which apparently works
correctly since the same output is in the log of the failing build).
I believe that the right compiler is set. Any suggestions, or does
this complicated build fail with the CI box?
Details at this PR:
py-pytorch: Update to version 2.0.0 by essandess · Pull Request #18009
· macports/macports-ports
https://github.com/macports/macports-ports/pull/18009
The current version fails on the buildbot for all OS versions except
Ventura. The logs that are still available for x86_64 show the same
error as GitHub Actions.
<https://ports.macports.org/port/py310-pytorch/details/>
So it appears that pushing the update won't make it more broken, but it
still is quite broken. At the very least, binaries won't be built for
most platforms, and if it fails on the buildbot then it will most likely
fail for local builds too on at least some subset of machines.
requiring AVX512 is a really rather stringent requirement, most machines
will not have these instructions.
In fact, even if the build bots where able to make binary tarballs, if
they are using these instructions (without runtime capability checks)
then it would quite possibly render these binaries unusable on most
hardware.
What we normally require is use of these sorts of instruction sets
(AVX512, AVX2) is by default turned off so that the binaries produced
are usable on more hardware. Then, if you want to allow these
instructions on machines where they are available, provide a 'native'
variant which when selected forces the user to build from source, and
allows the build configuration to test for and if available use these
instructions.
Chris
- Josh