Skip to content

Building halide on AWS machines with Sapphire Rapids #9191

Description

@sanvila

Description

Hello. I tried to build (the Debian package of) halide on AWS instances of type c7i.large and m7i.large (having 4th Generation Intel Xeon Scalable processors, codenamed Sapphire Rapids), and the following test failed:

The following tests FAILED:
	345 - correctness_tiled_matmul (ILLEGAL)                correctness

In summary: AWS c7i.large instances use Intel Sapphire Rapids CPUs. The CPUID instruction reports that AMX tile instructions are available. However, AWS disables AMX at the KVM hypervisor level without masking CPUID. When any AMX instruction executes, the hypervisor injects #UD (undefined instruction / SIGILL) and the test crashes.

I reported this to Debian here:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1103553

but the maintainer says the "hardware" is at fault, for declaring a capability which is not really available.

While I see his point, I also think it would be possible to do some run-time test to see if those announced capabilities really work, before performing the test which fails.

Note that in Debian it is perfectly ok to build a package in a certain machine and use the resulting .deb binary packages later on a different machine having the same architecture (amd64 in this case), so it would be a pity if those AWS machines could not be used in general to build Debian packages.

Thanks.

Reproducing case

The failing test is quoted above.

How did you get Halide?

Other (describe below)

Halide version

21.0.0

Halide commit (if known)

No response

Target

No response

Operating system

Debian unstable

Additional context

A full build log is available in the above link.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions