You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
GCC 13 cannot parse full RISC-V ISA string from /proc/cpuinfo #25
When building projects that auto-detect CPU features from /proc/cpuinfo, GCC 13.3.0 (shipped with Ubuntu 24.04) fails to parse the full ISA string:
cc: error: '-march=rv64gc_zfh_v_zvfh_zicbop_zihintpause': unexpected ISA string at end: 'v_zvfh_zicbop_zihintpause'
GCC 14.2.0 (Debian Trixie) handles the same ISA string correctly. The runner hardware reports a very long ISA string in /proc/cpuinfo with many extensions (zicbop, zihintpause, zicond, etc.) that GCC 13 does not recognize.
This affects projects like llama.cpp that read /proc/cpuinfo to set -march flags. Workaround is to disable native detection and use a safe base like rv64gc.
Not sure if upgrading to GCC 14 is feasible for the runner image, but worth noting for parity. The standard GitHub ubuntu-24.04 x86_64 runners ship GCC 13 too, but x86 ISA detection does not hit this issue because the extension naming is different.
Additional finding: GCC 13 in pedantic mode also rejects _Float16 on riscv64:
error: ISO C does not support the '_Float16' type [-Werror=pedantic]
GCC 14 handles this without issue. Both problems (ISA string parsing and _Float16 support) are resolved by GCC 14, which ships in Debian Trixie and Ubuntu 25.04.
I see there is an ubuntu-26.04 runner image in this repo. Is it available as a runner label (e.g. ubuntu-26.04-riscv)? Ubuntu 26.04 ships GCC 14, which would resolve both issues above.
Is it available as a runner label (e.g. ubuntu-26.04-riscv)? Ubuntu 26.04 ships GCC 14, which would resolve both issues above.
Ubuntu 26.04 is compiled for RVA23, which the current EM-RV1 do not support (and will never support). Until we have the EM-RV2 as the host, we won't be able to run ubuntu-26.04-riscv.
Good to know about the RVA23 requirement. That rules out ubuntu-26.04-riscv for now.
For projects that need GCC 14 (like llama.cpp where GCC 13 cannot parse the full ISA string from /proc/cpuinfo and rejects _Float16 in pedantic mode), would it be feasible to install GCC 14 from a PPA or backport on the 24.04 image? Or is the safer approach to just document these GCC 13 limitations and let projects work around them?
For projects that need GCC 14 (like llama.cpp where GCC 13 cannot parse the full ISA string from /proc/cpuinfo and rejects _Float16 in pedantic mode), would it be feasible to install GCC 14 from a PPA or backport on the 24.04 image? Or is the safer approach to just document these GCC 13 limitations and let projects work around them?
I’m torn between diverging from official GitHub Actions runner image, and the obviousness of needing to be on a later GCC given the speed of development on RISC-V still. Would it be doable to have it installed but not selected by default, and it’s just a update-alternatives away?
The default stays GCC 13 for parity with the official runner image, but GCC 14 is there when needed. This matches how the official ubuntu images ship multiple GCC versions too.
For the llama.cpp case specifically, it would unblock native builds with full ISA detection and _Float16 support.
Another finding: the Python installations in /opt/python-3.x/ are missing standard library modules (e.g. math). Using them as the base Python for venv creation fails:
ModuleNotFoundError: No module named 'math'
The system Python (/usr/bin/python3) works fine with apt-get install python3-venv python3-pip. For now that is a reliable workaround.
Follow-up: ensurepip is also broken with system Python (python3.12 from Ubuntu 24.04). Even after apt-get install python3-venv python3-pip, python3 -m venv /tmp/test fails with the same ensurepip error.
Workaround: python3 -m venv --without-pip then curl https://bootstrap.pypa.io/get-pip.py | python3.
Another finding: the Python installations in /opt/python-3.x/ are missing standard library modules (e.g. math). Using them as the base Python for venv creation fails:
ModuleNotFoundError: No module named 'math'
The system Python (/usr/bin/python3) works fine with apt-get install python3-venv python3-pip. For now that is a reliable workaround.
Please fill up another issue for that, again to make sure we can track it properly.
Activity
gounthar commentedon Mar 25, 2026
Additional finding: GCC 13 in pedantic mode also rejects
_Float16on riscv64:GCC 14 handles this without issue. Both problems (ISA string parsing and _Float16 support) are resolved by GCC 14, which ships in Debian Trixie and Ubuntu 25.04.
gounthar commentedon Mar 25, 2026
I see there is an ubuntu-26.04 runner image in this repo. Is it available as a runner label (e.g. ubuntu-26.04-riscv)? Ubuntu 26.04 ships GCC 14, which would resolve both issues above.
luhenry commentedon Mar 25, 2026
Ubuntu 26.04 is compiled for RVA23, which the current EM-RV1 do not support (and will never support). Until we have the EM-RV2 as the host, we won't be able to run ubuntu-26.04-riscv.
gounthar commentedon Mar 25, 2026
Good to know about the RVA23 requirement. That rules out ubuntu-26.04-riscv for now.
For projects that need GCC 14 (like llama.cpp where GCC 13 cannot parse the full ISA string from /proc/cpuinfo and rejects _Float16 in pedantic mode), would it be feasible to install GCC 14 from a PPA or backport on the 24.04 image? Or is the safer approach to just document these GCC 13 limitations and let projects work around them?
luhenry commentedon Mar 26, 2026
I’m torn between diverging from official GitHub Actions runner image, and the obviousness of needing to be on a later GCC given the speed of development on RISC-V still. Would it be doable to have it installed but not selected by default, and it’s just a update-alternatives away?
gounthar commentedon Mar 26, 2026
That sounds like a good compromise. Projects that need GCC 14 can add one line to their workflow:
The default stays GCC 13 for parity with the official runner image, but GCC 14 is there when needed. This matches how the official ubuntu images ship multiple GCC versions too.
For the llama.cpp case specifically, it would unblock native builds with full ISA detection and _Float16 support.
gounthar commentedon Mar 29, 2026
Another finding: the Python installations in /opt/python-3.x/ are missing standard library modules (e.g.
math). Using them as the base Python for venv creation fails:The system Python (/usr/bin/python3) works fine with
apt-get install python3-venv python3-pip. For now that is a reliable workaround.gounthar commentedon Mar 29, 2026
Follow-up: ensurepip is also broken with system Python (python3.12 from Ubuntu 24.04). Even after
apt-get install python3-venv python3-pip,python3 -m venv /tmp/testfails with the same ensurepip error.Workaround:
python3 -m venv --without-pipthencurl https://bootstrap.pypa.io/get-pip.py | python3.luhenry commentedon Mar 30, 2026
Please fill up another issue for that, again to make sure we can track it properly.
gounthar commentedon Mar 30, 2026
Done, opened #29 for the Python issue.
luhenry commentedon Apr 4, 2026
gcc-14andg++-14are now installed in base image: riseproject-dev/riscv-runner-images@76418ea#diff-75e8956412064cd0fa8059b148c1f1c37352bcb5f024d784a6ef110683e222c3R723scheduler: detect job stuck queued while its parent run has completed (…