Skip to content

Conversation

@mr-c mr-c changed the title Simde Enable building on non-x86 systems Jun 25, 2020
@adamnovak
Copy link
Member

I don't think we'll be able to merge this as is even when it passes tests; instead of pointing everything to your forks of submodules, we'll want to merge your changes into our forks.

With Apple moving Macs to ARM now, building on non-x86 is more important. But we also rely fairly heavily on libraries like dozeu and GSSW that are written around compiler intrinsics for particular new-ish-x86 vector instructions that probably don't have exact ARM equivalents, or at least need some #define magic to select them.

We'll have to add slower, plain-C versions, or even ARM-vector-instruction versions, or just fall back to completely different core alignment code on ARM that isn't really vectorized but still lets it run.

@jeizenga You've been diving through the dozeu code; how would you rate making its vector operations swappable between SSE and NEON intrinsics, versus a C fallback implementation (or fallback C implementations of the intrinsics)? Does it use a lot of unique intrinsics or just a few?

@adamnovak
Copy link
Member

We also don't always use byte order conversion when serializing/deserializing some of our file formats. It looks like arm64 as used in Linux is generally also little-endian, but before we let any big-endian ports out of the lab we need to do some serious interoperability testing to catch all the conversions we're missing.

@mr-c
Copy link
Contributor Author

mr-c commented Jun 26, 2020

Hello @adamnovak .

The point of this PR is to use the https://github.com/simd-everywhere/simde header only SIMD library to gain compatibility for using the X86 SIMD intrinsics on non-X86 systems.

As you mentioned, there are only a few big endian architectures (for Debian they are s390x, sparc64, ppc64, and powerpc) and they can be safe ignored for now. If IBM or an IBM customer wants vg on a big iron system they they can pay for or contribute s390x big endian support themselves 😁

I agree that this shouldn't be merged until the git submodules are back to using the regular sources, not my forks. I'll add a checklist and link to the other pending PRs.

@mr-c mr-c changed the title Enable building on non-x86 systems [WIP] Enable building on non-x86 systems Jun 26, 2020
@mr-c mr-c force-pushed the simde branch 6 times, most recently from 420b9bd to 8b72158 Compare June 27, 2020 10:28
@mr-c
Copy link
Contributor Author

mr-c commented Jun 27, 2020

Okay, the x86 build works and the tests complete. On arm64 the build completes, but some of the tests fail.

@mr-c mr-c mentioned this pull request Jun 29, 2020
@adamnovak
Copy link
Member

@mr-c Is there a way we can bring arm64 under CI? It's definitely going to break if we don't.

I think we might just be able to add Linux/GCC/arm64 to our build matrix for Travis: https://docs.travis-ci.com/user/multi-cpu-architectures/#testing-on-multiple-cpu-architectures

@mr-c
Copy link
Contributor Author

mr-c commented Jun 29, 2020

Already part of this PR :-) https://github.com/vgteam/vg/pull/2867/files#diff-354f30a63fb0907d4ad57269548329e3R124

@mr-c mr-c force-pushed the simde branch 4 times, most recently from 1072c19 to 709adb8 Compare July 14, 2020 12:51
@mr-c mr-c force-pushed the simde branch 2 times, most recently from 7e45ac9 to 6fc5065 Compare July 23, 2020 18:24
@mr-c mr-c force-pushed the simde branch 2 times, most recently from 783ea6f to 0283372 Compare October 5, 2020 08:06
@mr-c mr-c force-pushed the simde branch 2 times, most recently from 632404c to 927821f Compare November 6, 2020 11:15
@mr-c mr-c closed this Mar 5, 2021
@mr-c mr-c deleted the simde branch March 5, 2021 10:21
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

Successfully merging this pull request may close these issues.

Improving portability

2 participants