Denglin DLAN VBD Backend¶
NovaPhy can build SolverVBD on Denglin DLAN GPUs by compiling the existing VBD CUDA-source backend with a small DLAN compatibility layer. The DLAN backend is selected explicitly with novaphy.solvers.VbdBackend.DLAN; NVIDIA CUDA builds continue to use VbdBackend.CUDA.
Build Model¶
DLAN is enabled with:
Do not enable it together with NOVAPHY_WITH_VBD_CUDA; the two VBD GPU build modes are intentionally mutually exclusive. The DLAN build still uses CMake's CUDA language path, so CMAKE_CUDA_COMPILER should point at clang_wrapper or an equivalent Denglin clang wrapper.
libcurt.so is located through CMake instead of a hardcoded path. Set one of these if the SDK is not in the default system location:
export DLGPU_ROOT=/path/to/dlgpu
export DLAN_SDK_ROOT=/path/to/dlgpu/sdk
# or pass -DNOVAPHY_DLAN_CURT_LIBRARY=/path/to/libcurt.so
Dedicated Machine Setup¶
scripts/setup_dlan.sh is intended for dedicated Denglin build machines. It may create or update /usr/local/cuda, alias libcudart.so to Denglin libcurt.so, mirror libdevice.10.bc, and install stub nvlink / fatbinary helpers required by CMake's CUDA checks.
The script refuses to replace an existing real /usr/local/cuda directory unless DLAN_FORCE_CUDA_SYMLINK=1 is set. On machines that also host NVIDIA CUDA, prefer a separate Denglin builder rather than sharing /usr/local/cuda.
If Triton's Denglin libdevice.10.bc is not auto-detected, set LIBDEVICE_SRC explicitly.
Build¶
VCPKG_ROOT must point to a vcpkg checkout; the script keeps manifest mode enabled so NovaPhy's Eigen3 overlay port is applied for DLAN builds.
For manual CMake or pip install -e . builds, use the same core arguments:
CMAKE_ARGS="
-DNOVAPHY_WITH_VBD_DLAN=ON
-DNOVAPHY_GPU_PLATFORM=COREX
-DNOVAPHY_WITH_IPC=OFF
-DCMAKE_CUDA_COMPILER=$PWD/clang_wrapper
-DCUDAToolkit_ROOT=${DLAN_SDK_ROOT:-/usr/local/dlgpu/sdk}
-DDLAN_SDK_ROOT=${DLAN_SDK_ROOT:-/usr/local/dlgpu/sdk}
-DCMAKE_CUDA_ARCHITECTURES=70
" pip install -e . --no-build-isolation
Verify¶
python3 - <<'PY'
import novaphy
print(novaphy.has_vbd_dlan())
print(list(novaphy.solvers.VbdBackend.__members__.keys()))
PY
pytest python/tests/test_solver_vbd_cuda_coloring_backend.py -k dlan -v
A DLAN build should report has_vbd_dlan() == True and expose CPU, CUDA, and DLAN enum values. A non-DLAN build still exposes the enum for API stability, but constructing SolverVBD with VbdBackend.DLAN raises a clear error asking for NOVAPHY_WITH_VBD_DLAN=ON.