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
The Ascend example stops being a sketch: the kernel compiles, and the driver is what is missing
It was written as a shape with two named gaps -- a rule package and an xim
package for the toolkit -- and both now exist. What replaced them is a list of
measurements.
On an x86_64 machine with no Ascend hardware and no Ascend driver:
`xim:cann-toolkit` provisions 2.9 GB without root; `build.mcpp` compiles and
imports `mcpp.rules.ascendc`; the kernel compiles under
`bisheng -x asc --cce-aicore-arch=dav-c220`; the resulting object joins the
ORDINARY link, because the rule compiles in mixed mode and gets an x86-64
object carrying the device binary rather than a Da Vinci one the host linker
cannot place; the host half links against ACL and the six-library closure the
rule names. The artifact then does not start, because `libascend_hal.so` is
missing -- the DRIVER, which is the role `libcuda.so.1` plays for CUDA: in ABI
lockstep with the kernel module, not redistributable, and correctly absent
here. `mcpp run --no-accel` builds and runs: `12 24 36 48`, `device: cpu`.
So the example completes everywhere and RUNS only on an Ascend machine, which
is the same statement `examples/09-heterogeneous/cuda` makes about a machine
with no NVIDIA driver. Its skip reason says that instead of what it used to
say.
The payloads are gated on the accelerator, so the CPU leg installs nothing at
all -- which is the first real use of that gating outside the multi-backend
example.
THE SEAM IS A C FUNCTION, and that is measured rather than stylistic: BiSheng's
own launcher for a `__global__` function is C++-MANGLED even when the kernel is
declared `extern "C"`. Calling it directly would make the program depend on
BiSheng and the project's C++ compiler agreeing about mangling -- clang 15 and
whatever the project chose. The `.asc` file exports an `extern "C"` wrapper
instead, and the `<<<...>>>` launch spelling never leaves the translation unit
the device compiler owns.
The README's "what was established about the toolkit" section is replaced by
what the toolkit turned out to BE, including the 38 SoC simulators that make
this lane verifiable without an NPU -- which is the next thing this example
should use, and a separate piece of work with its own contract.
Copy file name to clipboardExpand all lines: .github/tools/build_examples.sh
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -51,7 +51,7 @@ SKIP=(
51
51
"examples/09-heterogeneous/hip/app|same, for the HIP payloads"
52
52
"examples/09-heterogeneous/sycl/app|needs the dpcpp payload (over a gigabyte) and a device its runtime accepts"
53
53
"examples/09-heterogeneous/vulkan/app|built AND RUN by the next step of this job, on the lavapipe payload, which needs no GPU"
54
-
"examples/09-heterogeneous/cann/app|does not build yet, and says so in its README: it needs a rules-ascendc rule package and an xim package for the CANN toolkit, neither of which exists. The manifest is written out so the shape is concrete rather than described"
54
+
"examples/09-heterogeneous/cann/app|its device leg needs the Ascend DRIVER, which a runner does not have: the kernel compiles and the object links, and then `libascend_hal.so` is missing, which is correct on a machine with no NPU. Its CPU leg does build -- and is not built here only because the plugins pin would make this job resolve a fifth rule package for one example. Covered by the measurements in its README"
55
55
)
56
56
57
57
# Every ROOT manifest in the tree: a directory with an `mcpp.toml` that has no
0 commit comments