RISC-V Pioneer Box for builder.sourceware.org gcc CI
Jeff Law
jeffreyalaw@gmail.com
Thu Aug 8 15:51:24 GMT 2024
On 8/8/24 9:13 AM, Mark Wielaard wrote:
>
> But I don't fully understand how the gcc testsuite detects whether rvv
> is implemented. e.g. rvv.exp seems to just check whether the target is
> RISC-V and if so just executes all tests assuming it can just set
> -march=rv64gcv* and/or -mrvv-* and run the tests:
>
> # Exit immediately if this isn't a RISC-V target.
> if ![istarget riscv*-*-*] then {
> return
> }
>
> Should that test be more precise? Or is there some other test that is?
There's some bits to avoid run tests on targets that don't support V.
But they may need adjustment to deal with those V0.7.1 systems.
>
> I do see some of the runtime tests have:
> /* { dg-do run { target { riscv_v } } } */
>
> How exactly does that work? How does it determine the riscv_v target?
It's all buried inside target-supports.exp. How it all works, I don't
know offhand. It just seems to work for me, but most of what I do is
cross builds, but QEMU+binfmt to allow running the risc-v binaries
seamlessly. When I use the milkv, it's usually for something like
stack-clash testing to verify Raphael's work mitigates the stack-clash
vulnerabilities.
>
>
> I put an extra fan on it. It has been pretty stable. Last couple of
> days it has been doing back-to-back gcc bootstaps. Which now take ~5
> hours about half of the time it is actually using 64 cores at the same
> time, but it is also running a lot of time just one or a few cores.
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84402
Sounds good. I was speaking with Palmer earlier this week. They
apparently fried a few of these systems already. It sounds like what
happens isn't in-flight corruption of data traversing pcie. Instead it
actually fries the pcie switch itself. So once it's overheated, you've
effectively busted your board. Palmer indicated that they're using NFS
to keep their systems usable :-)
And yes, there are extreme serialization events in the build. The
vector implementation for riscv really makes that problem worse.
insn-recog, insn-output, insn-attrtab and their associated generation
step can take significant time.
jeff
More information about the Gcc
mailing list