Allow a pinned JIT SDK without rebuilding PyTorch or the extension. Keep runtime device bitcode unchanged: exporting TheRock bitcode into the serving process crashes CLR 7.2 on a basic tensor operation. Disable unsupported expandable segments and check all five HIP kernel modules, with an optional GPU matmul and module-loading regression test.
This commit is contained in:
@@ -6,6 +6,8 @@
|
||||
fetchFromGitHub,
|
||||
makeWrapper,
|
||||
rocmPackages,
|
||||
# Override only the serving toolchain; torch and the extension keep their ROCm.
|
||||
jitRocmSdk ? null,
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -170,6 +172,7 @@ let
|
||||
};
|
||||
|
||||
python = py.python.withPackages (_: [ library ]);
|
||||
jitSdk = if jitRocmSdk == null then rocmToolkit else jitRocmSdk;
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
inherit src version;
|
||||
@@ -203,8 +206,9 @@ stdenv.mkDerivation {
|
||||
makeWrapper ${python}/bin/python $out/bin/kyojin-serve-$model \
|
||||
--set PYTORCH_ROCM_ARCH ${rocmArch} \
|
||||
--set CC ${stdenv.cc}/bin/cc \
|
||||
--set EXL3_ROCM_SDK ${rocmToolkit} \
|
||||
--set EXL3_ROCM_SDK ${jitSdk} \
|
||||
--set HIP_DEVICE_LIB_PATH ${rocmPackages."rocm-device-libs"}/amdgcn/bitcode \
|
||||
--set EXL3_EXPANDABLE_SEGMENTS 0 \
|
||||
--prefix PATH : ${lib.makeBinPath [ stdenv.cc ]} \
|
||||
--prefix PYTHONPATH : ${src}/gr \
|
||||
--add-flags "${src}/tools/$model/serve.py"
|
||||
@@ -216,6 +220,23 @@ stdenv.mkDerivation {
|
||||
passthru = {
|
||||
inherit python rocmArch;
|
||||
pythonPackage = library;
|
||||
jitRocmSdk = jitSdk;
|
||||
tests.jit =
|
||||
pkgs.runCommand "kyojin-jit-check"
|
||||
{
|
||||
EXL3_ROCM_SDK = jitSdk;
|
||||
# CLR/COMGR also reads this variable. Newer bitcode crashes torch
|
||||
# matmul; a custom hipcc must select its own bitcode in its subprocess.
|
||||
HIP_DEVICE_LIB_PATH = "${rocmPackages."rocm-device-libs"}/amdgcn/bitcode";
|
||||
EXL3_EXPANDABLE_SEGMENTS = "0";
|
||||
PYTHONPATH = "${src}/gr";
|
||||
KYOJIN_REQUIRE_SDK = lib.boolToString (jitRocmSdk != null);
|
||||
}
|
||||
''
|
||||
export HOME="$TMPDIR"
|
||||
${python}/bin/python ${./check-jit.py}
|
||||
touch "$out"
|
||||
'';
|
||||
category = "AI Inference";
|
||||
updateScript = [
|
||||
"nix-update"
|
||||
|
||||
Reference in New Issue
Block a user