mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-22 14:15:01 +08:00
Compare commits
7 Commits
codex/enha
...
remove_pyi
Author | SHA1 | Date | |
---|---|---|---|
a3795cfaea | |||
a9d5c00727 | |||
c1102ca308 | |||
7856f8d7f4 | |||
973c3b531a | |||
d5a496e7f1 | |||
051e544ef6 |
@ -15,8 +15,6 @@ fi
|
|||||||
# Compress the fatbin with -compress-mode=size for CUDA 13
|
# Compress the fatbin with -compress-mode=size for CUDA 13
|
||||||
if [[ "$DESIRED_CUDA" == *"13"* ]]; then
|
if [[ "$DESIRED_CUDA" == *"13"* ]]; then
|
||||||
export TORCH_NVCC_FLAGS="-compress-mode=size"
|
export TORCH_NVCC_FLAGS="-compress-mode=size"
|
||||||
# Bundle ptxas into the cu13 wheel, see https://github.com/pytorch/pytorch/issues/163801
|
|
||||||
export BUILD_BUNDLE_PTXAS=1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
||||||
@ -33,7 +31,8 @@ pip install -r /pytorch/requirements.txt
|
|||||||
pip install auditwheel==6.2.0 wheel
|
pip install auditwheel==6.2.0 wheel
|
||||||
if [ "$DESIRED_CUDA" = "cpu" ]; then
|
if [ "$DESIRED_CUDA" = "cpu" ]; then
|
||||||
echo "BASE_CUDA_VERSION is not set. Building cpu wheel."
|
echo "BASE_CUDA_VERSION is not set. Building cpu wheel."
|
||||||
python /pytorch/.ci/aarch64_linux/aarch64_wheel_ci_build.py --enable-mkldnn
|
#USE_PRIORITIZED_TEXT_FOR_LD for enable linker script optimization https://github.com/pytorch/pytorch/pull/121975/files
|
||||||
|
USE_PRIORITIZED_TEXT_FOR_LD=1 python /pytorch/.ci/aarch64_linux/aarch64_wheel_ci_build.py --enable-mkldnn
|
||||||
else
|
else
|
||||||
echo "BASE_CUDA_VERSION is set to: $DESIRED_CUDA"
|
echo "BASE_CUDA_VERSION is set to: $DESIRED_CUDA"
|
||||||
export USE_SYSTEM_NCCL=1
|
export USE_SYSTEM_NCCL=1
|
||||||
@ -47,5 +46,6 @@ else
|
|||||||
export USE_NVIDIA_PYPI_LIBS=1
|
export USE_NVIDIA_PYPI_LIBS=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
python /pytorch/.ci/aarch64_linux/aarch64_wheel_ci_build.py --enable-mkldnn --enable-cuda
|
#USE_PRIORITIZED_TEXT_FOR_LD for enable linker script optimization https://github.com/pytorch/pytorch/pull/121975/files
|
||||||
|
USE_PRIORITIZED_TEXT_FOR_LD=1 python /pytorch/.ci/aarch64_linux/aarch64_wheel_ci_build.py --enable-mkldnn --enable-cuda
|
||||||
fi
|
fi
|
||||||
|
@ -13,6 +13,49 @@ def list_dir(path: str) -> list[str]:
|
|||||||
return check_output(["ls", "-1", path]).decode().split("\n")
|
return check_output(["ls", "-1", path]).decode().split("\n")
|
||||||
|
|
||||||
|
|
||||||
|
def build_ArmComputeLibrary() -> None:
|
||||||
|
"""
|
||||||
|
Using ArmComputeLibrary for aarch64 PyTorch
|
||||||
|
"""
|
||||||
|
print("Building Arm Compute Library")
|
||||||
|
acl_build_flags = [
|
||||||
|
"debug=0",
|
||||||
|
"neon=1",
|
||||||
|
"opencl=0",
|
||||||
|
"os=linux",
|
||||||
|
"openmp=1",
|
||||||
|
"cppthreads=0",
|
||||||
|
"arch=armv8a",
|
||||||
|
"multi_isa=1",
|
||||||
|
"fixed_format_kernels=1",
|
||||||
|
"build=native",
|
||||||
|
]
|
||||||
|
acl_install_dir = "/acl"
|
||||||
|
acl_checkout_dir = os.getenv("ACL_SOURCE_DIR", "ComputeLibrary")
|
||||||
|
if os.path.isdir(acl_install_dir):
|
||||||
|
shutil.rmtree(acl_install_dir)
|
||||||
|
if not os.path.isdir(acl_checkout_dir) or not len(os.listdir(acl_checkout_dir)):
|
||||||
|
check_call(
|
||||||
|
[
|
||||||
|
"git",
|
||||||
|
"clone",
|
||||||
|
"https://github.com/ARM-software/ComputeLibrary.git",
|
||||||
|
"-b",
|
||||||
|
"v25.02",
|
||||||
|
"--depth",
|
||||||
|
"1",
|
||||||
|
"--shallow-submodules",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
check_call(
|
||||||
|
["scons", "Werror=1", f"-j{os.cpu_count()}"] + acl_build_flags,
|
||||||
|
cwd=acl_checkout_dir,
|
||||||
|
)
|
||||||
|
for d in ["arm_compute", "include", "utils", "support", "src", "build"]:
|
||||||
|
shutil.copytree(f"{acl_checkout_dir}/{d}", f"{acl_install_dir}/{d}")
|
||||||
|
|
||||||
|
|
||||||
def replace_tag(filename) -> None:
|
def replace_tag(filename) -> None:
|
||||||
with open(filename) as f:
|
with open(filename) as f:
|
||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
@ -274,7 +317,7 @@ if __name__ == "__main__":
|
|||||||
).decode()
|
).decode()
|
||||||
|
|
||||||
print("Building PyTorch wheel")
|
print("Building PyTorch wheel")
|
||||||
build_vars = ""
|
build_vars = "CMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x10000 "
|
||||||
# MAX_JOB=5 is not required for CPU backend (see commit 465d98b)
|
# MAX_JOB=5 is not required for CPU backend (see commit 465d98b)
|
||||||
if enable_cuda:
|
if enable_cuda:
|
||||||
build_vars += "MAX_JOBS=5 "
|
build_vars += "MAX_JOBS=5 "
|
||||||
@ -313,17 +356,23 @@ if __name__ == "__main__":
|
|||||||
build_vars += f"BUILD_TEST=0 PYTORCH_BUILD_VERSION={branch[1 : branch.find('-')]} PYTORCH_BUILD_NUMBER=1 "
|
build_vars += f"BUILD_TEST=0 PYTORCH_BUILD_VERSION={branch[1 : branch.find('-')]} PYTORCH_BUILD_NUMBER=1 "
|
||||||
|
|
||||||
if enable_mkldnn:
|
if enable_mkldnn:
|
||||||
|
build_ArmComputeLibrary()
|
||||||
print("build pytorch with mkldnn+acl backend")
|
print("build pytorch with mkldnn+acl backend")
|
||||||
build_vars += "USE_MKLDNN=ON USE_MKLDNN_ACL=ON "
|
build_vars += (
|
||||||
build_vars += "ACL_ROOT_DIR=/acl "
|
"USE_MKLDNN=ON USE_MKLDNN_ACL=ON "
|
||||||
|
"ACL_ROOT_DIR=/acl "
|
||||||
|
"LD_LIBRARY_PATH=/pytorch/build/lib:/acl/build:$LD_LIBRARY_PATH "
|
||||||
|
"ACL_INCLUDE_DIR=/acl/build "
|
||||||
|
"ACL_LIBRARY=/acl/build "
|
||||||
|
)
|
||||||
if enable_cuda:
|
if enable_cuda:
|
||||||
build_vars += "BLAS=NVPL "
|
build_vars += "BLAS=NVPL "
|
||||||
else:
|
else:
|
||||||
build_vars += "BLAS=OpenBLAS OpenBLAS_HOME=/opt/OpenBLAS "
|
build_vars += "BLAS=OpenBLAS OpenBLAS_HOME=/OpenBLAS "
|
||||||
else:
|
else:
|
||||||
print("build pytorch without mkldnn backend")
|
print("build pytorch without mkldnn backend")
|
||||||
|
|
||||||
os.system(f"cd /pytorch; {build_vars} python3 -m build --wheel --no-isolation")
|
os.system(f"cd /pytorch; {build_vars} python3 setup.py bdist_wheel")
|
||||||
if enable_cuda:
|
if enable_cuda:
|
||||||
print("Updating Cuda Dependency")
|
print("Updating Cuda Dependency")
|
||||||
filename = os.listdir("/pytorch/dist/")
|
filename = os.listdir("/pytorch/dist/")
|
||||||
|
@ -241,7 +241,7 @@ def wait_for_connection(addr, port, timeout=15, attempt_cnt=5):
|
|||||||
try:
|
try:
|
||||||
with socket.create_connection((addr, port), timeout=timeout):
|
with socket.create_connection((addr, port), timeout=timeout):
|
||||||
return
|
return
|
||||||
except (ConnectionRefusedError, TimeoutError): # noqa: PERF203
|
except (ConnectionRefusedError, socket.timeout): # noqa: PERF203
|
||||||
if i == attempt_cnt - 1:
|
if i == attempt_cnt - 1:
|
||||||
raise
|
raise
|
||||||
time.sleep(timeout)
|
time.sleep(timeout)
|
||||||
@ -299,6 +299,40 @@ def install_condaforge_python(host: RemoteHost, python_version="3.8") -> None:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def build_OpenBLAS(host: RemoteHost, git_clone_flags: str = "") -> None:
|
||||||
|
print("Building OpenBLAS")
|
||||||
|
host.run_cmd(
|
||||||
|
f"git clone https://github.com/xianyi/OpenBLAS -b v0.3.28 {git_clone_flags}"
|
||||||
|
)
|
||||||
|
make_flags = "NUM_THREADS=64 USE_OPENMP=1 NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=ARMV8"
|
||||||
|
host.run_cmd(
|
||||||
|
f"pushd OpenBLAS && make {make_flags} -j8 && sudo make {make_flags} install && popd && rm -rf OpenBLAS"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def build_ArmComputeLibrary(host: RemoteHost, git_clone_flags: str = "") -> None:
|
||||||
|
print("Building Arm Compute Library")
|
||||||
|
acl_build_flags = " ".join(
|
||||||
|
[
|
||||||
|
"debug=0",
|
||||||
|
"neon=1",
|
||||||
|
"opencl=0",
|
||||||
|
"os=linux",
|
||||||
|
"openmp=1",
|
||||||
|
"cppthreads=0",
|
||||||
|
"arch=armv8a",
|
||||||
|
"multi_isa=1",
|
||||||
|
"fixed_format_kernels=1",
|
||||||
|
"build=native",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
host.run_cmd(
|
||||||
|
f"git clone https://github.com/ARM-software/ComputeLibrary.git -b v25.02 {git_clone_flags}"
|
||||||
|
)
|
||||||
|
|
||||||
|
host.run_cmd(f"cd ComputeLibrary && scons Werror=1 -j8 {acl_build_flags}")
|
||||||
|
|
||||||
|
|
||||||
def embed_libgomp(host: RemoteHost, use_conda, wheel_name) -> None:
|
def embed_libgomp(host: RemoteHost, use_conda, wheel_name) -> None:
|
||||||
host.run_cmd("pip3 install auditwheel")
|
host.run_cmd("pip3 install auditwheel")
|
||||||
host.run_cmd(
|
host.run_cmd(
|
||||||
@ -408,7 +442,7 @@ def build_torchvision(
|
|||||||
if host.using_docker():
|
if host.using_docker():
|
||||||
build_vars += " CMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x10000"
|
build_vars += " CMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x10000"
|
||||||
|
|
||||||
host.run_cmd(f"cd vision && {build_vars} python3 -m build --wheel --no-isolation")
|
host.run_cmd(f"cd vision && {build_vars} python3 setup.py bdist_wheel")
|
||||||
vision_wheel_name = host.list_dir("vision/dist")[0]
|
vision_wheel_name = host.list_dir("vision/dist")[0]
|
||||||
embed_libgomp(host, use_conda, os.path.join("vision", "dist", vision_wheel_name))
|
embed_libgomp(host, use_conda, os.path.join("vision", "dist", vision_wheel_name))
|
||||||
|
|
||||||
@ -463,7 +497,7 @@ def build_torchdata(
|
|||||||
if host.using_docker():
|
if host.using_docker():
|
||||||
build_vars += " CMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x10000"
|
build_vars += " CMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x10000"
|
||||||
|
|
||||||
host.run_cmd(f"cd data && {build_vars} python3 -m build --wheel --no-isolation")
|
host.run_cmd(f"cd data && {build_vars} python3 setup.py bdist_wheel")
|
||||||
wheel_name = host.list_dir("data/dist")[0]
|
wheel_name = host.list_dir("data/dist")[0]
|
||||||
embed_libgomp(host, use_conda, os.path.join("data", "dist", wheel_name))
|
embed_libgomp(host, use_conda, os.path.join("data", "dist", wheel_name))
|
||||||
|
|
||||||
@ -519,7 +553,7 @@ def build_torchtext(
|
|||||||
if host.using_docker():
|
if host.using_docker():
|
||||||
build_vars += " CMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x10000"
|
build_vars += " CMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x10000"
|
||||||
|
|
||||||
host.run_cmd(f"cd text && {build_vars} python3 -m build --wheel --no-isolation")
|
host.run_cmd(f"cd text && {build_vars} python3 setup.py bdist_wheel")
|
||||||
wheel_name = host.list_dir("text/dist")[0]
|
wheel_name = host.list_dir("text/dist")[0]
|
||||||
embed_libgomp(host, use_conda, os.path.join("text", "dist", wheel_name))
|
embed_libgomp(host, use_conda, os.path.join("text", "dist", wheel_name))
|
||||||
|
|
||||||
@ -580,7 +614,7 @@ def build_torchaudio(
|
|||||||
host.run_cmd(
|
host.run_cmd(
|
||||||
f"cd audio && export FFMPEG_ROOT=$(pwd)/third_party/ffmpeg && export USE_FFMPEG=1 \
|
f"cd audio && export FFMPEG_ROOT=$(pwd)/third_party/ffmpeg && export USE_FFMPEG=1 \
|
||||||
&& ./packaging/ffmpeg/build.sh \
|
&& ./packaging/ffmpeg/build.sh \
|
||||||
&& {build_vars} python3 -m build --wheel --no-isolation"
|
&& {build_vars} python3 setup.py bdist_wheel"
|
||||||
)
|
)
|
||||||
|
|
||||||
wheel_name = host.list_dir("audio/dist")[0]
|
wheel_name = host.list_dir("audio/dist")[0]
|
||||||
@ -666,6 +700,7 @@ def start_build(
|
|||||||
configure_system(
|
configure_system(
|
||||||
host, compiler=compiler, use_conda=use_conda, python_version=python_version
|
host, compiler=compiler, use_conda=use_conda, python_version=python_version
|
||||||
)
|
)
|
||||||
|
build_OpenBLAS(host, git_clone_flags)
|
||||||
|
|
||||||
if host.using_docker():
|
if host.using_docker():
|
||||||
print("Move libgfortant.a into a standard location")
|
print("Move libgfortant.a into a standard location")
|
||||||
@ -688,12 +723,10 @@ def start_build(
|
|||||||
f"git clone --recurse-submodules -b {branch} https://github.com/pytorch/pytorch {git_clone_flags}"
|
f"git clone --recurse-submodules -b {branch} https://github.com/pytorch/pytorch {git_clone_flags}"
|
||||||
)
|
)
|
||||||
|
|
||||||
host.run_cmd("pytorch/.ci/docker/common/install_openblas.sh")
|
|
||||||
|
|
||||||
print("Building PyTorch wheel")
|
print("Building PyTorch wheel")
|
||||||
build_opts = ""
|
build_opts = ""
|
||||||
if pytorch_build_number is not None:
|
if pytorch_build_number is not None:
|
||||||
build_opts += f" -C--build-option=--build-number={pytorch_build_number}"
|
build_opts += f" --build-number {pytorch_build_number}"
|
||||||
# Breakpad build fails on aarch64
|
# Breakpad build fails on aarch64
|
||||||
build_vars = "USE_BREAKPAD=0 "
|
build_vars = "USE_BREAKPAD=0 "
|
||||||
if branch == "nightly":
|
if branch == "nightly":
|
||||||
@ -710,18 +743,15 @@ def start_build(
|
|||||||
if host.using_docker():
|
if host.using_docker():
|
||||||
build_vars += " CMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x10000"
|
build_vars += " CMAKE_SHARED_LINKER_FLAGS=-Wl,-z,max-page-size=0x10000"
|
||||||
if enable_mkldnn:
|
if enable_mkldnn:
|
||||||
host.run_cmd("pytorch/.ci/docker/common/install_acl.sh")
|
build_ArmComputeLibrary(host, git_clone_flags)
|
||||||
print("build pytorch with mkldnn+acl backend")
|
print("build pytorch with mkldnn+acl backend")
|
||||||
build_vars += " USE_MKLDNN=ON USE_MKLDNN_ACL=ON"
|
build_vars += " USE_MKLDNN=ON USE_MKLDNN_ACL=ON"
|
||||||
build_vars += " BLAS=OpenBLAS"
|
|
||||||
build_vars += " OpenBLAS_HOME=/opt/OpenBLAS"
|
|
||||||
build_vars += " ACL_ROOT_DIR=/acl"
|
|
||||||
host.run_cmd(
|
host.run_cmd(
|
||||||
f"cd $HOME/pytorch && {build_vars} python3 -m build --wheel --no-isolation{build_opts}"
|
f"cd $HOME/pytorch && export ACL_ROOT_DIR=$HOME/ComputeLibrary && {build_vars} python3 setup.py bdist_wheel{build_opts}"
|
||||||
)
|
)
|
||||||
print("Repair the wheel")
|
print("Repair the wheel")
|
||||||
pytorch_wheel_name = host.list_dir("pytorch/dist")[0]
|
pytorch_wheel_name = host.list_dir("pytorch/dist")[0]
|
||||||
ld_library_path = "/acl/build:$HOME/pytorch/build/lib"
|
ld_library_path = "$HOME/acl/build:$HOME/pytorch/build/lib"
|
||||||
host.run_cmd(
|
host.run_cmd(
|
||||||
f"export LD_LIBRARY_PATH={ld_library_path} && auditwheel repair $HOME/pytorch/dist/{pytorch_wheel_name}"
|
f"export LD_LIBRARY_PATH={ld_library_path} && auditwheel repair $HOME/pytorch/dist/{pytorch_wheel_name}"
|
||||||
)
|
)
|
||||||
@ -733,7 +763,7 @@ def start_build(
|
|||||||
else:
|
else:
|
||||||
print("build pytorch without mkldnn backend")
|
print("build pytorch without mkldnn backend")
|
||||||
host.run_cmd(
|
host.run_cmd(
|
||||||
f"cd pytorch && {build_vars} python3 -m build --wheel --no-isolation{build_opts}"
|
f"cd pytorch && {build_vars} python3 setup.py bdist_wheel{build_opts}"
|
||||||
)
|
)
|
||||||
|
|
||||||
print("Deleting build folder")
|
print("Deleting build folder")
|
||||||
@ -877,7 +907,7 @@ def terminate_instances(instance_type: str) -> None:
|
|||||||
def parse_arguments():
|
def parse_arguments():
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
|
|
||||||
parser = ArgumentParser("Build and test AARCH64 wheels using EC2")
|
parser = ArgumentParser("Builid and test AARCH64 wheels using EC2")
|
||||||
parser.add_argument("--key-name", type=str)
|
parser.add_argument("--key-name", type=str)
|
||||||
parser.add_argument("--debug", action="store_true")
|
parser.add_argument("--debug", action="store_true")
|
||||||
parser.add_argument("--build-only", action="store_true")
|
parser.add_argument("--build-only", action="store_true")
|
||||||
@ -974,7 +1004,7 @@ if __name__ == "__main__":
|
|||||||
install_condaforge_python(host, args.python_version)
|
install_condaforge_python(host, args.python_version)
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
python_version = args.python_version if args.python_version is not None else "3.10"
|
python_version = args.python_version if args.python_version is not None else "3.9"
|
||||||
|
|
||||||
if args.use_torch_from_pypi:
|
if args.use_torch_from_pypi:
|
||||||
configure_system(host, compiler=args.compiler, python_version=python_version)
|
configure_system(host, compiler=args.compiler, python_version=python_version)
|
||||||
|
@ -69,8 +69,7 @@ RUN bash ./install_cuda.sh 13.0
|
|||||||
ENV DESIRED_CUDA=13.0
|
ENV DESIRED_CUDA=13.0
|
||||||
|
|
||||||
FROM ${ROCM_IMAGE} as rocm
|
FROM ${ROCM_IMAGE} as rocm
|
||||||
ARG PYTORCH_ROCM_ARCH
|
ENV PYTORCH_ROCM_ARCH="gfx900;gfx906;gfx908;gfx90a;gfx942;gfx1030;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201"
|
||||||
ENV PYTORCH_ROCM_ARCH ${PYTORCH_ROCM_ARCH}
|
|
||||||
ADD ./common/install_mkl.sh install_mkl.sh
|
ADD ./common/install_mkl.sh install_mkl.sh
|
||||||
RUN bash ./install_mkl.sh && rm install_mkl.sh
|
RUN bash ./install_mkl.sh && rm install_mkl.sh
|
||||||
ENV MKLROOT /opt/intel
|
ENV MKLROOT /opt/intel
|
||||||
|
@ -36,12 +36,6 @@ case ${DOCKER_TAG_PREFIX} in
|
|||||||
;;
|
;;
|
||||||
rocm*)
|
rocm*)
|
||||||
BASE_TARGET=rocm
|
BASE_TARGET=rocm
|
||||||
PYTORCH_ROCM_ARCH="gfx900;gfx906;gfx908;gfx90a;gfx942;gfx1030;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201"
|
|
||||||
# add gfx950 conditionally starting in ROCm 7.0
|
|
||||||
if [[ "$ROCM_VERSION" == *"7.0"* ]]; then
|
|
||||||
PYTORCH_ROCM_ARCH="${PYTORCH_ROCM_ARCH};gfx950"
|
|
||||||
fi
|
|
||||||
EXTRA_BUILD_ARGS="${EXTRA_BUILD_ARGS} --build-arg PYTORCH_ROCM_ARCH=${PYTORCH_ROCM_ARCH}"
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "ERROR: Unknown docker tag ${DOCKER_TAG_PREFIX}"
|
echo "ERROR: Unknown docker tag ${DOCKER_TAG_PREFIX}"
|
||||||
|
@ -84,8 +84,8 @@ fi
|
|||||||
_UCX_COMMIT=7836b165abdbe468a2f607e7254011c07d788152
|
_UCX_COMMIT=7836b165abdbe468a2f607e7254011c07d788152
|
||||||
_UCC_COMMIT=430e241bf5d38cbc73fc7a6b89155397232e3f96
|
_UCC_COMMIT=430e241bf5d38cbc73fc7a6b89155397232e3f96
|
||||||
if [[ "$image" == *rocm* ]]; then
|
if [[ "$image" == *rocm* ]]; then
|
||||||
_UCX_COMMIT=29831d319e6be55cb8c768ca61de335c934ca39e
|
_UCX_COMMIT=cc312eaa4655c0cc5c2bcd796db938f90563bcf6
|
||||||
_UCC_COMMIT=9f4b242cbbd8b1462cbc732eb29316cdfa124b77
|
_UCC_COMMIT=0c0fc21559835044ab107199e334f7157d6a0d3d
|
||||||
fi
|
fi
|
||||||
|
|
||||||
tag=$(echo $image | awk -F':' '{print $2}')
|
tag=$(echo $image | awk -F':' '{print $2}')
|
||||||
@ -175,6 +175,20 @@ case "$tag" in
|
|||||||
fi
|
fi
|
||||||
GCC_VERSION=11
|
GCC_VERSION=11
|
||||||
VISION=yes
|
VISION=yes
|
||||||
|
ROCM_VERSION=6.4
|
||||||
|
NINJA_VERSION=1.9.0
|
||||||
|
TRITON=yes
|
||||||
|
KATEX=yes
|
||||||
|
UCX_COMMIT=${_UCX_COMMIT}
|
||||||
|
UCC_COMMIT=${_UCC_COMMIT}
|
||||||
|
if [[ $tag =~ "benchmarks" ]]; then
|
||||||
|
INDUCTOR_BENCHMARKS=yes
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
pytorch-linux-noble-rocm-alpha-py3)
|
||||||
|
ANACONDA_PYTHON_VERSION=3.12
|
||||||
|
GCC_VERSION=11
|
||||||
|
VISION=yes
|
||||||
ROCM_VERSION=7.0
|
ROCM_VERSION=7.0
|
||||||
NINJA_VERSION=1.9.0
|
NINJA_VERSION=1.9.0
|
||||||
TRITON=yes
|
TRITON=yes
|
||||||
@ -182,9 +196,6 @@ case "$tag" in
|
|||||||
UCX_COMMIT=${_UCX_COMMIT}
|
UCX_COMMIT=${_UCX_COMMIT}
|
||||||
UCC_COMMIT=${_UCC_COMMIT}
|
UCC_COMMIT=${_UCC_COMMIT}
|
||||||
PYTORCH_ROCM_ARCH="gfx90a;gfx942;gfx950"
|
PYTORCH_ROCM_ARCH="gfx90a;gfx942;gfx950"
|
||||||
if [[ $tag =~ "benchmarks" ]]; then
|
|
||||||
INDUCTOR_BENCHMARKS=yes
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
pytorch-linux-jammy-xpu-n-1-py3)
|
pytorch-linux-jammy-xpu-n-1-py3)
|
||||||
ANACONDA_PYTHON_VERSION=3.10
|
ANACONDA_PYTHON_VERSION=3.10
|
||||||
@ -251,10 +262,13 @@ case "$tag" in
|
|||||||
TRITON_CPU=yes
|
TRITON_CPU=yes
|
||||||
;;
|
;;
|
||||||
pytorch-linux-jammy-linter)
|
pytorch-linux-jammy-linter)
|
||||||
PYTHON_VERSION=3.10
|
# TODO: Use 3.9 here because of this issue https://github.com/python/mypy/issues/13627.
|
||||||
|
# We will need to update mypy version eventually, but that's for another day. The task
|
||||||
|
# would be to upgrade mypy to 1.0.0 with Python 3.11
|
||||||
|
PYTHON_VERSION=3.9
|
||||||
;;
|
;;
|
||||||
pytorch-linux-jammy-cuda12.8-cudnn9-py3.10-linter)
|
pytorch-linux-jammy-cuda12.8-cudnn9-py3.9-linter)
|
||||||
PYTHON_VERSION=3.10
|
PYTHON_VERSION=3.9
|
||||||
CUDA_VERSION=12.8.1
|
CUDA_VERSION=12.8.1
|
||||||
;;
|
;;
|
||||||
pytorch-linux-jammy-aarch64-py3.10-gcc11)
|
pytorch-linux-jammy-aarch64-py3.10-gcc11)
|
||||||
@ -441,3 +455,12 @@ elif [ "$HAS_TRITON" = "yes" ]; then
|
|||||||
echo "expecting triton to not be installed, but it is"
|
echo "expecting triton to not be installed, but it is"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Sanity check cmake version. Executorch reinstalls cmake and I'm not sure if
|
||||||
|
# they support 4.0.0 yet, so exclude them from this check.
|
||||||
|
CMAKE_VERSION=$(drun cmake --version)
|
||||||
|
if [[ "$EXECUTORCH" != *yes* && "$CMAKE_VERSION" != *4.* ]]; then
|
||||||
|
echo "CMake version is not 4.0.0:"
|
||||||
|
drun cmake --version
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
@ -1 +1 @@
|
|||||||
deb42f2a8e48f5032b4a98ee781a15fa87a157cf
|
56392aa978594cc155fa8af48cd949f5b5f1823a
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
transformers==4.56.0
|
transformers==4.54.0
|
||||||
soxr==0.5.0
|
soxr==0.5.0
|
||||||
|
@ -1 +1 @@
|
|||||||
v2.27.5-1
|
v2.27.5-1
|
||||||
|
@ -1 +1 @@
|
|||||||
27664085f804afc83df26f740bb46c365854f2c4
|
5ae38bdb0dc066c5823e34dc9797afb9de42c866
|
||||||
|
27
.ci/docker/common/install_acl.sh
Executable file → Normal file
27
.ci/docker/common/install_acl.sh
Executable file → Normal file
@ -1,27 +1,16 @@
|
|||||||
#!/bin/bash
|
set -euo pipefail
|
||||||
# Script used only in CD pipeline
|
|
||||||
|
|
||||||
set -eux
|
readonly version=v25.02
|
||||||
|
readonly src_host=https://github.com/ARM-software
|
||||||
ACL_VERSION=${ACL_VERSION:-"v25.02"}
|
readonly src_repo=ComputeLibrary
|
||||||
ACL_INSTALL_DIR="/acl"
|
|
||||||
|
|
||||||
# Clone ACL
|
# Clone ACL
|
||||||
git clone https://github.com/ARM-software/ComputeLibrary.git -b "${ACL_VERSION}" --depth 1 --shallow-submodules
|
[[ ! -d ${src_repo} ]] && git clone ${src_host}/${src_repo}.git
|
||||||
|
cd ${src_repo}
|
||||||
|
|
||||||
|
git checkout $version
|
||||||
|
|
||||||
ACL_CHECKOUT_DIR="ComputeLibrary"
|
|
||||||
# Build with scons
|
# Build with scons
|
||||||
pushd $ACL_CHECKOUT_DIR
|
|
||||||
scons -j8 Werror=0 debug=0 neon=1 opencl=0 embed_kernels=0 \
|
scons -j8 Werror=0 debug=0 neon=1 opencl=0 embed_kernels=0 \
|
||||||
os=linux arch=armv8a build=native multi_isa=1 \
|
os=linux arch=armv8a build=native multi_isa=1 \
|
||||||
fixed_format_kernels=1 openmp=1 cppthreads=0
|
fixed_format_kernels=1 openmp=1 cppthreads=0
|
||||||
popd
|
|
||||||
|
|
||||||
# Install ACL
|
|
||||||
sudo mkdir -p ${ACL_INSTALL_DIR}
|
|
||||||
for d in arm_compute include utils support src build
|
|
||||||
do
|
|
||||||
sudo cp -r ${ACL_CHECKOUT_DIR}/${d} ${ACL_INSTALL_DIR}/${d}
|
|
||||||
done
|
|
||||||
|
|
||||||
rm -rf $ACL_CHECKOUT_DIR
|
|
@ -42,27 +42,22 @@ install_pip_dependencies() {
|
|||||||
# A workaround, ExecuTorch has moved to numpy 2.0 which is not compatible with the current
|
# A workaround, ExecuTorch has moved to numpy 2.0 which is not compatible with the current
|
||||||
# numba and scipy version used in PyTorch CI
|
# numba and scipy version used in PyTorch CI
|
||||||
conda_run pip uninstall -y numba scipy
|
conda_run pip uninstall -y numba scipy
|
||||||
# Yaspin is needed for running CI test (get_benchmark_analysis_data.py)
|
|
||||||
pip_install yaspin==3.1.0
|
|
||||||
|
|
||||||
popd
|
popd
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_executorch() {
|
setup_executorch() {
|
||||||
|
pushd executorch
|
||||||
|
|
||||||
export PYTHON_EXECUTABLE=python
|
export PYTHON_EXECUTABLE=python
|
||||||
export CMAKE_ARGS="-DEXECUTORCH_BUILD_PYBIND=ON -DEXECUTORCH_BUILD_XNNPACK=ON -DEXECUTORCH_BUILD_KERNELS_QUANTIZED=ON -DEXECUTORCH_BUILD_TESTS=ON"
|
export CMAKE_ARGS="-DEXECUTORCH_BUILD_PYBIND=ON -DEXECUTORCH_BUILD_XNNPACK=ON -DEXECUTORCH_BUILD_KERNELS_QUANTIZED=ON"
|
||||||
|
|
||||||
as_jenkins .ci/scripts/setup-linux.sh --build-tool cmake || true
|
as_jenkins .ci/scripts/setup-linux.sh --build-tool cmake || true
|
||||||
|
popd
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
clone_executorch
|
||||||
clone_executorch
|
install_buck2
|
||||||
install_buck2
|
install_conda_dependencies
|
||||||
install_conda_dependencies
|
install_pip_dependencies
|
||||||
install_pip_dependencies
|
setup_executorch
|
||||||
pushd executorch
|
|
||||||
setup_executorch
|
|
||||||
popd
|
|
||||||
else
|
|
||||||
"$@"
|
|
||||||
fi
|
|
||||||
|
@ -19,8 +19,8 @@ pip_install \
|
|||||||
transformers==4.36.2
|
transformers==4.36.2
|
||||||
|
|
||||||
pip_install coloredlogs packaging
|
pip_install coloredlogs packaging
|
||||||
pip_install onnxruntime==1.23.0
|
pip_install onnxruntime==1.22.1
|
||||||
pip_install onnxscript==0.5.3
|
pip_install onnxscript==0.4.0
|
||||||
|
|
||||||
# Cache the transformers model to be used later by ONNX tests. We need to run the transformers
|
# Cache the transformers model to be used later by ONNX tests. We need to run the transformers
|
||||||
# package to download the model. By default, the model is cached at ~/.cache/huggingface/hub/
|
# package to download the model. By default, the model is cached at ~/.cache/huggingface/hub/
|
||||||
|
12
.ci/docker/common/install_openblas.sh
Executable file → Normal file
12
.ci/docker/common/install_openblas.sh
Executable file → Normal file
@ -3,10 +3,8 @@
|
|||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
OPENBLAS_VERSION=${OPENBLAS_VERSION:-"v0.3.30"}
|
cd /
|
||||||
|
git clone https://github.com/OpenMathLib/OpenBLAS.git -b "${OPENBLAS_VERSION:-v0.3.30}" --depth 1 --shallow-submodules
|
||||||
# Clone OpenBLAS
|
|
||||||
git clone https://github.com/OpenMathLib/OpenBLAS.git -b "${OPENBLAS_VERSION}" --depth 1 --shallow-submodules
|
|
||||||
|
|
||||||
OPENBLAS_CHECKOUT_DIR="OpenBLAS"
|
OPENBLAS_CHECKOUT_DIR="OpenBLAS"
|
||||||
OPENBLAS_BUILD_FLAGS="
|
OPENBLAS_BUILD_FLAGS="
|
||||||
@ -19,7 +17,5 @@ CFLAGS=-O3
|
|||||||
BUILD_BFLOAT16=1
|
BUILD_BFLOAT16=1
|
||||||
"
|
"
|
||||||
|
|
||||||
make -j8 ${OPENBLAS_BUILD_FLAGS} -C $OPENBLAS_CHECKOUT_DIR
|
make -j8 ${OPENBLAS_BUILD_FLAGS} -C ${OPENBLAS_CHECKOUT_DIR}
|
||||||
sudo make install -C $OPENBLAS_CHECKOUT_DIR
|
make -j8 ${OPENBLAS_BUILD_FLAGS} install -C ${OPENBLAS_CHECKOUT_DIR}
|
||||||
|
|
||||||
rm -rf $OPENBLAS_CHECKOUT_DIR
|
|
||||||
|
@ -42,6 +42,12 @@ EOF
|
|||||||
rocm_baseurl="http://repo.radeon.com/rocm/apt/${ROCM_VERSION}"
|
rocm_baseurl="http://repo.radeon.com/rocm/apt/${ROCM_VERSION}"
|
||||||
amdgpu_baseurl="https://repo.radeon.com/amdgpu/${ROCM_VERSION}/ubuntu"
|
amdgpu_baseurl="https://repo.radeon.com/amdgpu/${ROCM_VERSION}/ubuntu"
|
||||||
|
|
||||||
|
# Special case for ROCM_VERSION == 7.0
|
||||||
|
if [[ $(ver "$ROCM_VERSION") -eq $(ver 7.0) ]]; then
|
||||||
|
rocm_baseurl="https://repo.radeon.com/rocm/apt/7.0_alpha2"
|
||||||
|
amdgpu_baseurl="https://repo.radeon.com/amdgpu/30.10_alpha2/ubuntu"
|
||||||
|
fi
|
||||||
|
|
||||||
# Add amdgpu repository
|
# Add amdgpu repository
|
||||||
UBUNTU_VERSION_NAME=`cat /etc/os-release | grep UBUNTU_CODENAME | awk -F= '{print $2}'`
|
UBUNTU_VERSION_NAME=`cat /etc/os-release | grep UBUNTU_CODENAME | awk -F= '{print $2}'`
|
||||||
echo "deb [arch=amd64] ${amdgpu_baseurl} ${UBUNTU_VERSION_NAME} main" > /etc/apt/sources.list.d/amdgpu.list
|
echo "deb [arch=amd64] ${amdgpu_baseurl} ${UBUNTU_VERSION_NAME} main" > /etc/apt/sources.list.d/amdgpu.list
|
||||||
|
@ -12,8 +12,8 @@ function do_install() {
|
|||||||
|
|
||||||
rocm_version_nodot=${rocm_version//./}
|
rocm_version_nodot=${rocm_version//./}
|
||||||
|
|
||||||
# https://github.com/icl-utk-edu/magma/pull/65
|
# Version 2.7.2 + ROCm related updates
|
||||||
MAGMA_VERSION=d6e4117bc88e73f06d26c6c2e14f064e8fc3d1ec
|
MAGMA_VERSION=a1625ff4d9bc362906bd01f805dbbe12612953f6
|
||||||
magma_archive="magma-rocm${rocm_version_nodot}-${MAGMA_VERSION}-1.tar.bz2"
|
magma_archive="magma-rocm${rocm_version_nodot}-${MAGMA_VERSION}-1.tar.bz2"
|
||||||
|
|
||||||
rocm_dir="/opt/rocm"
|
rocm_dir="/opt/rocm"
|
||||||
|
@ -66,15 +66,15 @@ if [ -n "${UBUNTU_VERSION}" ] && [ -n "${GCC_VERSION}" ] && [[ "${GCC_VERSION}"
|
|||||||
# Triton needs at least gcc-9 to build
|
# Triton needs at least gcc-9 to build
|
||||||
apt-get install -y g++-9
|
apt-get install -y g++-9
|
||||||
|
|
||||||
CXX=g++-9 conda_run python -m build --wheel --no-isolation
|
CXX=g++-9 conda_run python setup.py bdist_wheel
|
||||||
elif [ -n "${UBUNTU_VERSION}" ] && [ -n "${CLANG_VERSION}" ]; then
|
elif [ -n "${UBUNTU_VERSION}" ] && [ -n "${CLANG_VERSION}" ]; then
|
||||||
# Triton needs <filesystem> which surprisingly is not available with clang-9 toolchain
|
# Triton needs <filesystem> which surprisingly is not available with clang-9 toolchain
|
||||||
add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
||||||
apt-get install -y g++-9
|
apt-get install -y g++-9
|
||||||
|
|
||||||
CXX=g++-9 conda_run python -m build --wheel --no-isolation
|
CXX=g++-9 conda_run python setup.py bdist_wheel
|
||||||
else
|
else
|
||||||
conda_run python -m build --wheel --no-isolation
|
conda_run python setup.py bdist_wheel
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Copy the wheel to /opt for multi stage docker builds
|
# Copy the wheel to /opt for multi stage docker builds
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -xe
|
|
||||||
# Script used in Linux x86 and aarch64 CD pipeline
|
|
||||||
|
|
||||||
# Workaround for exposing statically linked libstdc++ CXX11 ABI symbols.
|
|
||||||
# see: https://github.com/pytorch/pytorch/issues/133437
|
|
||||||
LIBNONSHARED=$(gcc -print-file-name=libstdc++_nonshared.a)
|
|
||||||
nm -g $LIBNONSHARED | grep " T " | grep recursive_directory_iterator | cut -c 20- > weaken-symbols.txt
|
|
||||||
objcopy --weaken-symbols weaken-symbols.txt $LIBNONSHARED $LIBNONSHARED
|
|
@ -40,16 +40,12 @@ case ${DOCKER_TAG_PREFIX} in
|
|||||||
;;
|
;;
|
||||||
rocm*)
|
rocm*)
|
||||||
# we want the patch version of 6.4 instead
|
# we want the patch version of 6.4 instead
|
||||||
if [[ "$GPU_ARCH_VERSION" == *"6.4"* ]]; then
|
if [[ $(ver $GPU_ARCH_VERSION) -eq $(ver 6.4) ]]; then
|
||||||
GPU_ARCH_VERSION="${GPU_ARCH_VERSION}.2"
|
GPU_ARCH_VERSION="${GPU_ARCH_VERSION}.2"
|
||||||
fi
|
fi
|
||||||
BASE_TARGET=rocm
|
BASE_TARGET=rocm
|
||||||
GPU_IMAGE=rocm/dev-ubuntu-22.04:${GPU_ARCH_VERSION}-complete
|
GPU_IMAGE=rocm/dev-ubuntu-22.04:${GPU_ARCH_VERSION}-complete
|
||||||
PYTORCH_ROCM_ARCH="gfx900;gfx906;gfx908;gfx90a;gfx942;gfx1030;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201"
|
PYTORCH_ROCM_ARCH="gfx900;gfx906;gfx908;gfx90a;gfx942;gfx1030;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201"
|
||||||
# add gfx950 conditionally starting in ROCm 7.0
|
|
||||||
if [[ "$GPU_ARCH_VERSION" == *"7.0"* ]]; then
|
|
||||||
PYTORCH_ROCM_ARCH="${PYTORCH_ROCM_ARCH};gfx950"
|
|
||||||
fi
|
|
||||||
DOCKER_GPU_BUILD_ARG="--build-arg PYTORCH_ROCM_ARCH=${PYTORCH_ROCM_ARCH} --build-arg ROCM_VERSION=${GPU_ARCH_VERSION}"
|
DOCKER_GPU_BUILD_ARG="--build-arg PYTORCH_ROCM_ARCH=${PYTORCH_ROCM_ARCH} --build-arg ROCM_VERSION=${GPU_ARCH_VERSION}"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
@ -130,8 +130,7 @@ ENV LD_LIBRARY_PATH=/opt/rh/gcc-toolset-${DEVTOOLSET_VERSION}/root/usr/lib64:/op
|
|||||||
RUN for cpython_version in "cp312-cp312" "cp313-cp313" "cp313-cp313t"; do \
|
RUN for cpython_version in "cp312-cp312" "cp313-cp313" "cp313-cp313t"; do \
|
||||||
/opt/python/${cpython_version}/bin/python -m pip install setuptools wheel; \
|
/opt/python/${cpython_version}/bin/python -m pip install setuptools wheel; \
|
||||||
done;
|
done;
|
||||||
ADD ./common/patch_libstdc.sh patch_libstdc.sh
|
|
||||||
RUN bash ./patch_libstdc.sh && rm patch_libstdc.sh
|
|
||||||
|
|
||||||
# cmake-3.18.4 from pip; force in case cmake3 already exists
|
# cmake-3.18.4 from pip; force in case cmake3 already exists
|
||||||
RUN yum install -y python3-pip && \
|
RUN yum install -y python3-pip && \
|
||||||
|
@ -62,13 +62,6 @@ ARG OPENBLAS_VERSION
|
|||||||
ADD ./common/install_openblas.sh install_openblas.sh
|
ADD ./common/install_openblas.sh install_openblas.sh
|
||||||
RUN bash ./install_openblas.sh && rm install_openblas.sh
|
RUN bash ./install_openblas.sh && rm install_openblas.sh
|
||||||
|
|
||||||
# Install Arm Compute Library
|
|
||||||
FROM base as arm_compute
|
|
||||||
# use python3.9 to install scons
|
|
||||||
RUN python3.9 -m pip install scons==4.7.0
|
|
||||||
RUN ln -sf /opt/python/cp39-cp39/bin/scons /usr/local/bin
|
|
||||||
COPY ./common/install_acl.sh install_acl.sh
|
|
||||||
RUN bash ./install_acl.sh && rm install_acl.sh
|
|
||||||
FROM base as final
|
FROM base as final
|
||||||
|
|
||||||
# remove unnecessary python versions
|
# remove unnecessary python versions
|
||||||
@ -77,7 +70,4 @@ RUN rm -rf /opt/python/cp26-cp26mu /opt/_internal/cpython-2.6.9-ucs4
|
|||||||
RUN rm -rf /opt/python/cp33-cp33m /opt/_internal/cpython-3.3.6
|
RUN rm -rf /opt/python/cp33-cp33m /opt/_internal/cpython-3.3.6
|
||||||
RUN rm -rf /opt/python/cp34-cp34m /opt/_internal/cpython-3.4.6
|
RUN rm -rf /opt/python/cp34-cp34m /opt/_internal/cpython-3.4.6
|
||||||
COPY --from=openblas /opt/OpenBLAS/ /opt/OpenBLAS/
|
COPY --from=openblas /opt/OpenBLAS/ /opt/OpenBLAS/
|
||||||
COPY --from=arm_compute /acl /acl
|
ENV LD_LIBRARY_PATH=/opt/OpenBLAS/lib:$LD_LIBRARY_PATH
|
||||||
ENV LD_LIBRARY_PATH=/opt/OpenBLAS/lib:/acl/build/:$LD_LIBRARY_PATH
|
|
||||||
ADD ./common/patch_libstdc.sh patch_libstdc.sh
|
|
||||||
RUN bash ./patch_libstdc.sh && rm patch_libstdc.sh
|
|
||||||
|
@ -86,15 +86,6 @@ FROM base as nvpl
|
|||||||
ADD ./common/install_nvpl.sh install_nvpl.sh
|
ADD ./common/install_nvpl.sh install_nvpl.sh
|
||||||
RUN bash ./install_nvpl.sh && rm install_nvpl.sh
|
RUN bash ./install_nvpl.sh && rm install_nvpl.sh
|
||||||
|
|
||||||
# Install Arm Compute Library
|
|
||||||
FROM base as arm_compute
|
|
||||||
# use python3.9 to install scons
|
|
||||||
RUN python3.9 -m pip install scons==4.7.0
|
|
||||||
RUN ln -sf /opt/python/cp39-cp39/bin/scons /usr/local/bin
|
|
||||||
COPY ./common/install_acl.sh install_acl.sh
|
|
||||||
RUN bash ./install_acl.sh && rm install_acl.sh
|
|
||||||
FROM base as final
|
|
||||||
|
|
||||||
FROM final as cuda_final
|
FROM final as cuda_final
|
||||||
ARG BASE_CUDA_VERSION
|
ARG BASE_CUDA_VERSION
|
||||||
RUN rm -rf /usr/local/cuda-${BASE_CUDA_VERSION}
|
RUN rm -rf /usr/local/cuda-${BASE_CUDA_VERSION}
|
||||||
@ -102,9 +93,5 @@ COPY --from=cuda /usr/local/cuda-${BASE_CUDA_VERSION} /usr/local/cuda-${BAS
|
|||||||
COPY --from=magma /usr/local/cuda-${BASE_CUDA_VERSION} /usr/local/cuda-${BASE_CUDA_VERSION}
|
COPY --from=magma /usr/local/cuda-${BASE_CUDA_VERSION} /usr/local/cuda-${BASE_CUDA_VERSION}
|
||||||
COPY --from=nvpl /opt/nvpl/lib/ /usr/local/lib/
|
COPY --from=nvpl /opt/nvpl/lib/ /usr/local/lib/
|
||||||
COPY --from=nvpl /opt/nvpl/include/ /usr/local/include/
|
COPY --from=nvpl /opt/nvpl/include/ /usr/local/include/
|
||||||
COPY --from=arm_compute /acl /acl
|
|
||||||
RUN ln -sf /usr/local/cuda-${BASE_CUDA_VERSION} /usr/local/cuda
|
RUN ln -sf /usr/local/cuda-${BASE_CUDA_VERSION} /usr/local/cuda
|
||||||
ENV PATH=/usr/local/cuda/bin:$PATH
|
ENV PATH=/usr/local/cuda/bin:$PATH
|
||||||
ENV LD_LIBRARY_PATH=/acl/build/:$LD_LIBRARY_PATH
|
|
||||||
ADD ./common/patch_libstdc.sh patch_libstdc.sh
|
|
||||||
RUN bash ./patch_libstdc.sh && rm patch_libstdc.sh
|
|
||||||
|
71
.ci/docker/manywheel/Dockerfile_cxx11-abi
Normal file
71
.ci/docker/manywheel/Dockerfile_cxx11-abi
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
FROM centos:8 as base
|
||||||
|
|
||||||
|
ENV LC_ALL en_US.UTF-8
|
||||||
|
ENV LANG en_US.UTF-8
|
||||||
|
ENV LANGUAGE en_US.UTF-8
|
||||||
|
ENV PATH /opt/rh/gcc-toolset-11/root/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||||
|
|
||||||
|
# change to a valid repo
|
||||||
|
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-*.repo
|
||||||
|
# enable to install ninja-build
|
||||||
|
RUN sed -i 's|enabled=0|enabled=1|g' /etc/yum.repos.d/CentOS-Linux-PowerTools.repo
|
||||||
|
|
||||||
|
RUN yum -y update
|
||||||
|
RUN yum install -y wget curl perl util-linux xz bzip2 git patch which zlib-devel sudo
|
||||||
|
RUN yum install -y autoconf automake make cmake gdb gcc-toolset-11-gcc-c++
|
||||||
|
|
||||||
|
|
||||||
|
FROM base as openssl
|
||||||
|
ADD ./common/install_openssl.sh install_openssl.sh
|
||||||
|
RUN bash ./install_openssl.sh && rm install_openssl.sh
|
||||||
|
|
||||||
|
# Install python
|
||||||
|
FROM base as python
|
||||||
|
RUN yum install -y openssl-devel zlib-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libpcap-devel xz-devel libffi-devel
|
||||||
|
ADD common/install_cpython.sh install_cpython.sh
|
||||||
|
RUN bash ./install_cpython.sh && rm install_cpython.sh
|
||||||
|
|
||||||
|
FROM base as conda
|
||||||
|
ADD ./common/install_conda_docker.sh install_conda.sh
|
||||||
|
RUN bash ./install_conda.sh && rm install_conda.sh
|
||||||
|
RUN /opt/conda/bin/conda install -y cmake
|
||||||
|
|
||||||
|
FROM base as intel
|
||||||
|
# Install MKL
|
||||||
|
COPY --from=python /opt/python /opt/python
|
||||||
|
COPY --from=python /opt/_internal /opt/_internal
|
||||||
|
COPY --from=conda /opt/conda /opt/conda
|
||||||
|
ENV PATH=/opt/conda/bin:$PATH
|
||||||
|
ADD ./common/install_mkl.sh install_mkl.sh
|
||||||
|
RUN bash ./install_mkl.sh && rm install_mkl.sh
|
||||||
|
|
||||||
|
FROM base as patchelf
|
||||||
|
ADD ./common/install_patchelf.sh install_patchelf.sh
|
||||||
|
RUN bash ./install_patchelf.sh && rm install_patchelf.sh
|
||||||
|
RUN cp $(which patchelf) /patchelf
|
||||||
|
|
||||||
|
FROM base as jni
|
||||||
|
ADD ./common/install_jni.sh install_jni.sh
|
||||||
|
ADD ./java/jni.h jni.h
|
||||||
|
RUN bash ./install_jni.sh && rm install_jni.sh
|
||||||
|
|
||||||
|
FROM base as libpng
|
||||||
|
ADD ./common/install_libpng.sh install_libpng.sh
|
||||||
|
RUN bash ./install_libpng.sh && rm install_libpng.sh
|
||||||
|
|
||||||
|
FROM base as final
|
||||||
|
COPY --from=openssl /opt/openssl /opt/openssl
|
||||||
|
COPY --from=python /opt/python /opt/python
|
||||||
|
COPY --from=python /opt/_internal /opt/_internal
|
||||||
|
COPY --from=intel /opt/intel /opt/intel
|
||||||
|
COPY --from=conda /opt/conda /opt/conda
|
||||||
|
COPY --from=patchelf /usr/local/bin/patchelf /usr/local/bin/patchelf
|
||||||
|
COPY --from=jni /usr/local/include/jni.h /usr/local/include/jni.h
|
||||||
|
COPY --from=libpng /usr/local/bin/png* /usr/local/bin/
|
||||||
|
COPY --from=libpng /usr/local/bin/libpng* /usr/local/bin/
|
||||||
|
COPY --from=libpng /usr/local/include/png* /usr/local/include/
|
||||||
|
COPY --from=libpng /usr/local/include/libpng* /usr/local/include/
|
||||||
|
COPY --from=libpng /usr/local/lib/libpng* /usr/local/lib/
|
||||||
|
COPY --from=libpng /usr/local/lib/pkgconfig /usr/local/lib/pkgconfig
|
||||||
|
|
||||||
|
RUN yum install -y ninja-build
|
@ -28,7 +28,6 @@ fi
|
|||||||
MANY_LINUX_VERSION=${MANY_LINUX_VERSION:-}
|
MANY_LINUX_VERSION=${MANY_LINUX_VERSION:-}
|
||||||
DOCKERFILE_SUFFIX=${DOCKERFILE_SUFFIX:-}
|
DOCKERFILE_SUFFIX=${DOCKERFILE_SUFFIX:-}
|
||||||
OPENBLAS_VERSION=${OPENBLAS_VERSION:-}
|
OPENBLAS_VERSION=${OPENBLAS_VERSION:-}
|
||||||
ACL_VERSION=${ACL_VERSION:-}
|
|
||||||
|
|
||||||
case ${image} in
|
case ${image} in
|
||||||
manylinux2_28-builder:cpu)
|
manylinux2_28-builder:cpu)
|
||||||
@ -42,6 +41,13 @@ case ${image} in
|
|||||||
GPU_IMAGE=arm64v8/almalinux:8
|
GPU_IMAGE=arm64v8/almalinux:8
|
||||||
DOCKER_GPU_BUILD_ARG=" --build-arg DEVTOOLSET_VERSION=13 --build-arg NINJA_VERSION=1.12.1"
|
DOCKER_GPU_BUILD_ARG=" --build-arg DEVTOOLSET_VERSION=13 --build-arg NINJA_VERSION=1.12.1"
|
||||||
MANY_LINUX_VERSION="2_28_aarch64"
|
MANY_LINUX_VERSION="2_28_aarch64"
|
||||||
|
OPENBLAS_VERSION="v0.3.30"
|
||||||
|
;;
|
||||||
|
manylinuxcxx11-abi-builder:cpu-cxx11-abi)
|
||||||
|
TARGET=final
|
||||||
|
GPU_IMAGE=""
|
||||||
|
DOCKER_GPU_BUILD_ARG=" --build-arg DEVTOOLSET_VERSION=9"
|
||||||
|
MANY_LINUX_VERSION="cxx11-abi"
|
||||||
;;
|
;;
|
||||||
manylinuxs390x-builder:cpu-s390x)
|
manylinuxs390x-builder:cpu-s390x)
|
||||||
TARGET=final
|
TARGET=final
|
||||||
@ -76,7 +82,7 @@ case ${image} in
|
|||||||
;;
|
;;
|
||||||
manylinux2_28-builder:rocm*)
|
manylinux2_28-builder:rocm*)
|
||||||
# we want the patch version of 6.4 instead
|
# we want the patch version of 6.4 instead
|
||||||
if [[ "$GPU_ARCH_VERSION" == *"6.4"* ]]; then
|
if [[ $(ver $GPU_ARCH_VERSION) -eq $(ver 6.4) ]]; then
|
||||||
GPU_ARCH_VERSION="${GPU_ARCH_VERSION}.2"
|
GPU_ARCH_VERSION="${GPU_ARCH_VERSION}.2"
|
||||||
fi
|
fi
|
||||||
TARGET=rocm_final
|
TARGET=rocm_final
|
||||||
@ -84,10 +90,6 @@ case ${image} in
|
|||||||
DEVTOOLSET_VERSION="11"
|
DEVTOOLSET_VERSION="11"
|
||||||
GPU_IMAGE=rocm/dev-almalinux-8:${GPU_ARCH_VERSION}-complete
|
GPU_IMAGE=rocm/dev-almalinux-8:${GPU_ARCH_VERSION}-complete
|
||||||
PYTORCH_ROCM_ARCH="gfx900;gfx906;gfx908;gfx90a;gfx942;gfx1030;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201"
|
PYTORCH_ROCM_ARCH="gfx900;gfx906;gfx908;gfx90a;gfx942;gfx1030;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201"
|
||||||
# add gfx950 conditionally starting in ROCm 7.0
|
|
||||||
if [[ "$GPU_ARCH_VERSION" == *"7.0"* ]]; then
|
|
||||||
PYTORCH_ROCM_ARCH="${PYTORCH_ROCM_ARCH};gfx950"
|
|
||||||
fi
|
|
||||||
DOCKER_GPU_BUILD_ARG="--build-arg ROCM_VERSION=${GPU_ARCH_VERSION} --build-arg PYTORCH_ROCM_ARCH=${PYTORCH_ROCM_ARCH} --build-arg DEVTOOLSET_VERSION=${DEVTOOLSET_VERSION}"
|
DOCKER_GPU_BUILD_ARG="--build-arg ROCM_VERSION=${GPU_ARCH_VERSION} --build-arg PYTORCH_ROCM_ARCH=${PYTORCH_ROCM_ARCH} --build-arg DEVTOOLSET_VERSION=${DEVTOOLSET_VERSION}"
|
||||||
;;
|
;;
|
||||||
manylinux2_28-builder:xpu)
|
manylinux2_28-builder:xpu)
|
||||||
@ -119,8 +121,7 @@ tmp_tag=$(basename "$(mktemp -u)" | tr '[:upper:]' '[:lower:]')
|
|||||||
DOCKER_BUILDKIT=1 docker build \
|
DOCKER_BUILDKIT=1 docker build \
|
||||||
${DOCKER_GPU_BUILD_ARG} \
|
${DOCKER_GPU_BUILD_ARG} \
|
||||||
--build-arg "GPU_IMAGE=${GPU_IMAGE}" \
|
--build-arg "GPU_IMAGE=${GPU_IMAGE}" \
|
||||||
--build-arg "OPENBLAS_VERSION=${OPENBLAS_VERSION:-}" \
|
--build-arg "OPENBLAS_VERSION=${OPENBLAS_VERSION}" \
|
||||||
--build-arg "ACL_VERSION=${ACL_VERSION:-}" \
|
|
||||||
--target "${TARGET}" \
|
--target "${TARGET}" \
|
||||||
-t "${tmp_tag}" \
|
-t "${tmp_tag}" \
|
||||||
$@ \
|
$@ \
|
||||||
|
@ -10,11 +10,6 @@ boto3==1.35.42
|
|||||||
#Pinned versions: 1.19.12, 1.16.34
|
#Pinned versions: 1.19.12, 1.16.34
|
||||||
#test that import:
|
#test that import:
|
||||||
|
|
||||||
build==1.3.0
|
|
||||||
#Description: A simple, correct Python build frontend.
|
|
||||||
#Pinned versions: 1.3.0
|
|
||||||
#test that import:
|
|
||||||
|
|
||||||
click
|
click
|
||||||
#Description: Command Line Interface Creation Kit
|
#Description: Command Line Interface Creation Kit
|
||||||
#Pinned versions:
|
#Pinned versions:
|
||||||
@ -52,10 +47,10 @@ flatbuffers==24.12.23
|
|||||||
#Pinned versions: 24.12.23
|
#Pinned versions: 24.12.23
|
||||||
#test that import:
|
#test that import:
|
||||||
|
|
||||||
hypothesis==6.56.4
|
hypothesis==5.35.1
|
||||||
# Pin hypothesis to avoid flakiness: https://github.com/pytorch/pytorch/issues/31136
|
# Pin hypothesis to avoid flakiness: https://github.com/pytorch/pytorch/issues/31136
|
||||||
#Description: advanced library for generating parametrized tests
|
#Description: advanced library for generating parametrized tests
|
||||||
#Pinned versions: 6.56.4
|
#Pinned versions: 5.35.1
|
||||||
#test that import: test_xnnpack_integration.py, test_pruning_op.py, test_nn.py
|
#test that import: test_xnnpack_integration.py, test_pruning_op.py, test_nn.py
|
||||||
|
|
||||||
junitparser==2.1.1
|
junitparser==2.1.1
|
||||||
@ -98,9 +93,8 @@ librosa==0.10.2 ; python_version == "3.12" and platform_machine != "s390x"
|
|||||||
#Pinned versions:
|
#Pinned versions:
|
||||||
#test that import:
|
#test that import:
|
||||||
|
|
||||||
mypy==1.16.0 ; platform_system == "Linux"
|
mypy==1.16.0
|
||||||
# Pin MyPy version because new errors are likely to appear with each release
|
# Pin MyPy version because new errors are likely to appear with each release
|
||||||
# Skip on Windows as lots of type annotations are POSIX specific
|
|
||||||
#Description: linter
|
#Description: linter
|
||||||
#Pinned versions: 1.16.0
|
#Pinned versions: 1.16.0
|
||||||
#test that import: test_typing.py, test_type_hints.py
|
#test that import: test_typing.py, test_type_hints.py
|
||||||
@ -111,12 +105,14 @@ networkx==2.8.8
|
|||||||
#Pinned versions: 2.8.8
|
#Pinned versions: 2.8.8
|
||||||
#test that import: functorch
|
#test that import: functorch
|
||||||
|
|
||||||
ninja==1.11.1.4
|
ninja==1.11.1.3
|
||||||
#Description: build system. Used in some tests. Used in build to generate build
|
#Description: build system. Used in some tests. Used in build to generate build
|
||||||
#time tracing information
|
#time tracing information
|
||||||
#Pinned versions: 1.11.1.4
|
#Pinned versions: 1.11.1.3
|
||||||
#test that import: run_test.py, test_cpp_extensions_aot.py,test_determination.py
|
#test that import: run_test.py, test_cpp_extensions_aot.py,test_determination.py
|
||||||
|
|
||||||
|
numba==0.49.0 ; python_version < "3.9" and platform_machine != "s390x"
|
||||||
|
numba==0.55.2 ; python_version == "3.9" and platform_machine != "s390x"
|
||||||
numba==0.55.2 ; python_version == "3.10" and platform_machine != "s390x"
|
numba==0.55.2 ; python_version == "3.10" and platform_machine != "s390x"
|
||||||
numba==0.60.0 ; python_version == "3.12" and platform_machine != "s390x"
|
numba==0.60.0 ; python_version == "3.12" and platform_machine != "s390x"
|
||||||
#Description: Just-In-Time Compiler for Numerical Functions
|
#Description: Just-In-Time Compiler for Numerical Functions
|
||||||
@ -137,7 +133,7 @@ numba==0.60.0 ; python_version == "3.12" and platform_machine != "s390x"
|
|||||||
#test_nn.py, test_namedtensor.py, test_linalg.py, test_jit_cuda_fuser.py,
|
#test_nn.py, test_namedtensor.py, test_linalg.py, test_jit_cuda_fuser.py,
|
||||||
#test_jit.py, test_indexing.py, test_datapipe.py, test_dataloader.py,
|
#test_jit.py, test_indexing.py, test_datapipe.py, test_dataloader.py,
|
||||||
#test_binary_ufuncs.py
|
#test_binary_ufuncs.py
|
||||||
numpy==1.22.4; python_version == "3.10"
|
numpy==1.22.4; python_version == "3.9" or python_version == "3.10"
|
||||||
numpy==1.26.2; python_version == "3.11" or python_version == "3.12"
|
numpy==1.26.2; python_version == "3.11" or python_version == "3.12"
|
||||||
numpy==2.1.2; python_version >= "3.13"
|
numpy==2.1.2; python_version >= "3.13"
|
||||||
|
|
||||||
@ -169,12 +165,12 @@ optree==0.13.0
|
|||||||
|
|
||||||
pillow==11.0.0
|
pillow==11.0.0
|
||||||
#Description: Python Imaging Library fork
|
#Description: Python Imaging Library fork
|
||||||
#Pinned versions: 11.0.0
|
#Pinned versions: 10.3.0
|
||||||
#test that import:
|
#test that import:
|
||||||
|
|
||||||
protobuf==5.29.5
|
protobuf==5.29.4
|
||||||
#Description: Google's data interchange format
|
#Description: Google's data interchange format
|
||||||
#Pinned versions: 5.29.5
|
#Pinned versions: 5.29.4
|
||||||
#test that import: test_tensorboard.py, test/onnx/*
|
#test that import: test_tensorboard.py, test/onnx/*
|
||||||
|
|
||||||
psutil
|
psutil
|
||||||
@ -217,7 +213,7 @@ pytest-subtests==0.13.1
|
|||||||
#Pinned versions:
|
#Pinned versions:
|
||||||
#test that import:
|
#test that import:
|
||||||
|
|
||||||
xdoctest==1.3.0
|
xdoctest==1.1.0
|
||||||
#Description: runs doctests in pytest
|
#Description: runs doctests in pytest
|
||||||
#Pinned versions: 1.1.0
|
#Pinned versions: 1.1.0
|
||||||
#test that import:
|
#test that import:
|
||||||
@ -268,7 +264,7 @@ scipy==1.14.1 ; python_version >= "3.12"
|
|||||||
#test that import:
|
#test that import:
|
||||||
|
|
||||||
# needed by torchgen utils
|
# needed by torchgen utils
|
||||||
typing-extensions==4.12.2
|
typing-extensions>=4.10.0
|
||||||
#Description: type hints for python
|
#Description: type hints for python
|
||||||
#Pinned versions:
|
#Pinned versions:
|
||||||
#test that import:
|
#test that import:
|
||||||
@ -329,6 +325,8 @@ pywavelets==1.7.0 ; python_version >= "3.12"
|
|||||||
lxml==5.3.0
|
lxml==5.3.0
|
||||||
#Description: This is a requirement of unittest-xml-reporting
|
#Description: This is a requirement of unittest-xml-reporting
|
||||||
|
|
||||||
|
# Python-3.9 binaries
|
||||||
|
|
||||||
PyGithub==2.3.0
|
PyGithub==2.3.0
|
||||||
|
|
||||||
sympy==1.13.3
|
sympy==1.13.3
|
||||||
@ -341,7 +339,7 @@ onnx==1.18.0
|
|||||||
#Pinned versions:
|
#Pinned versions:
|
||||||
#test that import:
|
#test that import:
|
||||||
|
|
||||||
onnxscript==0.5.3
|
onnxscript==0.4.0
|
||||||
#Description: Required by mypy and test_public_bindings.py when checking torch.onnx._internal
|
#Description: Required by mypy and test_public_bindings.py when checking torch.onnx._internal
|
||||||
#Pinned versions:
|
#Pinned versions:
|
||||||
#test that import:
|
#test that import:
|
||||||
@ -361,10 +359,9 @@ pwlf==2.2.1
|
|||||||
#test that import: test_sac_estimator.py
|
#test that import: test_sac_estimator.py
|
||||||
|
|
||||||
# To build PyTorch itself
|
# To build PyTorch itself
|
||||||
pyyaml==6.0.2
|
pyyaml
|
||||||
pyzstd
|
pyzstd
|
||||||
setuptools==78.1.1
|
setuptools>=70.1.0
|
||||||
packaging==23.1
|
|
||||||
six
|
six
|
||||||
|
|
||||||
scons==4.5.2 ; platform_machine == "aarch64"
|
scons==4.5.2 ; platform_machine == "aarch64"
|
||||||
@ -379,16 +376,13 @@ dataclasses_json==0.6.7
|
|||||||
#Pinned versions: 0.6.7
|
#Pinned versions: 0.6.7
|
||||||
#test that import:
|
#test that import:
|
||||||
|
|
||||||
cmake==3.31.6
|
cmake==4.0.0
|
||||||
#Description: required for building
|
#Description: required for building
|
||||||
|
|
||||||
tlparse==0.4.0
|
tlparse==0.4.0
|
||||||
#Description: required for log parsing
|
#Description: required for log parsing
|
||||||
|
|
||||||
filelock==3.18.0
|
cuda-bindings>=12.0,<13.0 ; platform_machine != "s390x"
|
||||||
#Description: required for inductor testing
|
|
||||||
|
|
||||||
cuda-bindings>=12.0,<13.0 ; platform_machine != "s390x" and platform_system != "Darwin"
|
|
||||||
#Description: required for testing CUDAGraph::raw_cuda_graph(). See https://nvidia.github.io/cuda-python/cuda-bindings/latest/support.html for how this version was chosen. Note "Any fix in the latest bindings would be backported to the prior major version" means that only the newest version of cuda-bindings will get fixes. Depending on the latest version of 12.x is okay because all 12.y versions will be supported via "CUDA minor version compatibility". Pytorch builds against 13.z versions of cuda toolkit work with 12.x versions of cuda-bindings as well because newer drivers work with old toolkits.
|
#Description: required for testing CUDAGraph::raw_cuda_graph(). See https://nvidia.github.io/cuda-python/cuda-bindings/latest/support.html for how this version was chosen. Note "Any fix in the latest bindings would be backported to the prior major version" means that only the newest version of cuda-bindings will get fixes. Depending on the latest version of 12.x is okay because all 12.y versions will be supported via "CUDA minor version compatibility". Pytorch builds against 13.z versions of cuda toolkit work with 12.x versions of cuda-bindings as well because newer drivers work with old toolkits.
|
||||||
#test that import: test_cuda.py
|
#test that import: test_cuda.py
|
||||||
|
|
||||||
|
@ -1,15 +1,8 @@
|
|||||||
sphinx==5.3.0
|
sphinx==5.3.0
|
||||||
#Description: This is used to generate PyTorch docs
|
#Description: This is used to generate PyTorch docs
|
||||||
#Pinned versions: 5.3.0
|
#Pinned versions: 5.3.0
|
||||||
|
-e git+https://github.com/pytorch/pytorch_sphinx_theme.git@1657ad2fc1acdc98aa719eebecbb0128a7c13ce4#egg=pytorch_sphinx_theme2
|
||||||
|
|
||||||
standard-imghdr==3.13.0; python_version >= "3.13"
|
|
||||||
#Description: This is needed by Sphinx, so it needs to be added here.
|
|
||||||
# The reasons are as follows:
|
|
||||||
# 1) This module has been removed from the Python standard library since Python 3.13(https://peps.python.org/pep-0594/#imghdr);
|
|
||||||
# 2) The current version of Sphinx (5.3.0) is not compatible with Python 3.13.
|
|
||||||
# Once Sphinx is upgraded to a version compatible with Python 3.13 or later, we can remove this dependency.
|
|
||||||
|
|
||||||
-e git+https://github.com/pytorch/pytorch_sphinx_theme.git@71e55749be14ceb56e7f8211a9fb649866b87ad4#egg=pytorch_sphinx_theme2
|
|
||||||
# TODO: sphinxcontrib.katex 0.9.0 adds a local KaTeX server to speed up pre-rendering
|
# TODO: sphinxcontrib.katex 0.9.0 adds a local KaTeX server to speed up pre-rendering
|
||||||
# but it doesn't seem to work and hangs around idly. The initial thought that it is probably
|
# but it doesn't seem to work and hangs around idly. The initial thought that it is probably
|
||||||
# something related to Docker setup. We can investigate this later.
|
# something related to Docker setup. We can investigate this later.
|
||||||
|
@ -7,4 +7,4 @@ set -ex
|
|||||||
|
|
||||||
SCRIPTPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
SCRIPTPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||||
|
|
||||||
USE_NVSHMEM=0 USE_CUSPARSELT=0 BUILD_PYTHONLESS=1 DESIRED_PYTHON="3.10" ${SCRIPTPATH}/../manywheel/build.sh
|
USE_NVSHMEM=0 USE_CUSPARSELT=0 BUILD_PYTHONLESS=1 DESIRED_PYTHON="3.9" ${SCRIPTPATH}/../manywheel/build.sh
|
||||||
|
@ -41,6 +41,7 @@ def sample_vllm_test_library():
|
|||||||
"pytest -v -s basic_correctness/test_cumem.py",
|
"pytest -v -s basic_correctness/test_cumem.py",
|
||||||
"pytest -v -s basic_correctness/test_basic_correctness.py",
|
"pytest -v -s basic_correctness/test_basic_correctness.py",
|
||||||
"pytest -v -s basic_correctness/test_cpu_offload.py",
|
"pytest -v -s basic_correctness/test_cpu_offload.py",
|
||||||
|
"VLLM_TEST_ENABLE_ARTIFICIAL_PREEMPT=1 pytest -v -s basic_correctness/test_preemption.py",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
"vllm_basic_models_test": {
|
"vllm_basic_models_test": {
|
||||||
@ -67,12 +68,15 @@ def sample_vllm_test_library():
|
|||||||
"-v",
|
"-v",
|
||||||
"-s",
|
"-s",
|
||||||
"entrypoints/llm",
|
"entrypoints/llm",
|
||||||
|
"--ignore=entrypoints/llm/test_lazy_outlines.py",
|
||||||
"--ignore=entrypoints/llm/test_generate.py",
|
"--ignore=entrypoints/llm/test_generate.py",
|
||||||
|
"--ignore=entrypoints/llm/test_generate_multiple_loras.py",
|
||||||
"--ignore=entrypoints/llm/test_collective_rpc.py",
|
"--ignore=entrypoints/llm/test_collective_rpc.py",
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
"pytest -v -s entrypoints/llm/test_generate.py",
|
"pytest -v -s entrypoints/llm/test_lazy_outlines.py",
|
||||||
"pytest -v -s entrypoints/offline_mode",
|
"pytest -v -s entrypoints/llm/test_generate.py ",
|
||||||
|
"VLLM_USE_V1=0 pytest -v -s entrypoints/offline_mode",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
"vllm_regression_test": {
|
"vllm_regression_test": {
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
SHELL=/usr/bin/env bash
|
SHELL=/usr/bin/env bash
|
||||||
|
|
||||||
DOCKER_CMD ?= docker
|
DOCKER_CMD ?= docker
|
||||||
DESIRED_ROCM ?= 7.0
|
DESIRED_ROCM ?= 6.4
|
||||||
DESIRED_ROCM_SHORT = $(subst .,,$(DESIRED_ROCM))
|
DESIRED_ROCM_SHORT = $(subst .,,$(DESIRED_ROCM))
|
||||||
PACKAGE_NAME = magma-rocm
|
PACKAGE_NAME = magma-rocm
|
||||||
# inherit this from underlying docker image, do not pass this env var to docker
|
# inherit this from underlying docker image, do not pass this env var to docker
|
||||||
#PYTORCH_ROCM_ARCH ?= gfx900;gfx906;gfx908;gfx90a;gfx942;gfx950;gfx1030;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201
|
#PYTORCH_ROCM_ARCH ?= gfx900;gfx906;gfx908;gfx90a;gfx942;gfx1030;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201
|
||||||
|
|
||||||
DOCKER_RUN = set -eou pipefail; ${DOCKER_CMD} run --rm -i \
|
DOCKER_RUN = set -eou pipefail; ${DOCKER_CMD} run --rm -i \
|
||||||
-v $(shell git rev-parse --show-toplevel)/.ci:/builder \
|
-v $(shell git rev-parse --show-toplevel)/.ci:/builder \
|
||||||
@ -16,7 +16,6 @@ DOCKER_RUN = set -eou pipefail; ${DOCKER_CMD} run --rm -i \
|
|||||||
magma-rocm/build_magma.sh
|
magma-rocm/build_magma.sh
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: magma-rocm70
|
|
||||||
all: magma-rocm64
|
all: magma-rocm64
|
||||||
all: magma-rocm63
|
all: magma-rocm63
|
||||||
|
|
||||||
@ -25,11 +24,6 @@ clean:
|
|||||||
$(RM) -r magma-*
|
$(RM) -r magma-*
|
||||||
$(RM) -r output
|
$(RM) -r output
|
||||||
|
|
||||||
.PHONY: magma-rocm70
|
|
||||||
magma-rocm70: DESIRED_ROCM := 7.0
|
|
||||||
magma-rocm70:
|
|
||||||
$(DOCKER_RUN)
|
|
||||||
|
|
||||||
.PHONY: magma-rocm64
|
.PHONY: magma-rocm64
|
||||||
magma-rocm64: DESIRED_ROCM := 6.4
|
magma-rocm64: DESIRED_ROCM := 6.4
|
||||||
magma-rocm64:
|
magma-rocm64:
|
||||||
|
@ -6,8 +6,8 @@ set -eou pipefail
|
|||||||
# The script expects DESIRED_CUDA and PACKAGE_NAME to be set
|
# The script expects DESIRED_CUDA and PACKAGE_NAME to be set
|
||||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
|
||||||
# https://github.com/icl-utk-edu/magma/pull/65
|
# Version 2.7.2 + ROCm related updates
|
||||||
MAGMA_VERSION=d6e4117bc88e73f06d26c6c2e14f064e8fc3d1ec
|
MAGMA_VERSION=a1625ff4d9bc362906bd01f805dbbe12612953f6
|
||||||
|
|
||||||
# Folders for the build
|
# Folders for the build
|
||||||
PACKAGE_FILES=${ROOT_DIR}/magma-rocm/package_files # metadata
|
PACKAGE_FILES=${ROOT_DIR}/magma-rocm/package_files # metadata
|
||||||
@ -20,7 +20,7 @@ mkdir -p ${PACKAGE_DIR} ${PACKAGE_OUTPUT}/linux-64 ${PACKAGE_BUILD} ${PACKAGE_RE
|
|||||||
|
|
||||||
# Fetch magma sources and verify checksum
|
# Fetch magma sources and verify checksum
|
||||||
pushd ${PACKAGE_DIR}
|
pushd ${PACKAGE_DIR}
|
||||||
git clone https://github.com/jeffdaily/magma
|
git clone https://bitbucket.org/icl/magma.git
|
||||||
pushd magma
|
pushd magma
|
||||||
git checkout ${MAGMA_VERSION}
|
git checkout ${MAGMA_VERSION}
|
||||||
popd
|
popd
|
||||||
|
@ -142,7 +142,7 @@ time CMAKE_ARGS=${CMAKE_ARGS[@]} \
|
|||||||
EXTRA_CAFFE2_CMAKE_FLAGS=${EXTRA_CAFFE2_CMAKE_FLAGS[@]} \
|
EXTRA_CAFFE2_CMAKE_FLAGS=${EXTRA_CAFFE2_CMAKE_FLAGS[@]} \
|
||||||
BUILD_LIBTORCH_CPU_WITH_DEBUG=$BUILD_DEBUG_INFO \
|
BUILD_LIBTORCH_CPU_WITH_DEBUG=$BUILD_DEBUG_INFO \
|
||||||
USE_NCCL=${USE_NCCL} USE_RCCL=${USE_RCCL} USE_KINETO=${USE_KINETO} \
|
USE_NCCL=${USE_NCCL} USE_RCCL=${USE_RCCL} USE_KINETO=${USE_KINETO} \
|
||||||
python -m build --wheel --no-isolation --outdir /tmp/$WHEELHOUSE_DIR
|
python setup.py bdist_wheel -d /tmp/$WHEELHOUSE_DIR
|
||||||
echo "Finished setup.py bdist at $(date)"
|
echo "Finished setup.py bdist at $(date)"
|
||||||
|
|
||||||
# Build libtorch packages
|
# Build libtorch packages
|
||||||
|
@ -104,7 +104,7 @@ if [[ "$DESIRED_CUDA" == *"rocm"* ]]; then
|
|||||||
export ROCclr_DIR=/opt/rocm/rocclr/lib/cmake/rocclr
|
export ROCclr_DIR=/opt/rocm/rocclr/lib/cmake/rocclr
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Calling -m pip install . -v --no-build-isolation at $(date)"
|
echo "Calling 'python -m pip install .' at $(date)"
|
||||||
|
|
||||||
if [[ $LIBTORCH_VARIANT = *"static"* ]]; then
|
if [[ $LIBTORCH_VARIANT = *"static"* ]]; then
|
||||||
STATIC_CMAKE_FLAG="-DTORCH_STATIC=1"
|
STATIC_CMAKE_FLAG="-DTORCH_STATIC=1"
|
||||||
|
@ -107,10 +107,6 @@ if [[ $ROCM_INT -ge 60200 ]]; then
|
|||||||
ROCM_SO_FILES+=("librocm-core.so")
|
ROCM_SO_FILES+=("librocm-core.so")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $ROCM_INT -ge 70000 ]]; then
|
|
||||||
ROCM_SO_FILES+=("librocroller.so")
|
|
||||||
fi
|
|
||||||
|
|
||||||
OS_NAME=`awk -F= '/^NAME/{print $2}' /etc/os-release`
|
OS_NAME=`awk -F= '/^NAME/{print $2}' /etc/os-release`
|
||||||
if [[ "$OS_NAME" == *"CentOS Linux"* || "$OS_NAME" == *"AlmaLinux"* ]]; then
|
if [[ "$OS_NAME" == *"CentOS Linux"* || "$OS_NAME" == *"AlmaLinux"* ]]; then
|
||||||
LIBGOMP_PATH="/usr/lib64/libgomp.so.1"
|
LIBGOMP_PATH="/usr/lib64/libgomp.so.1"
|
||||||
|
@ -89,7 +89,7 @@ fi
|
|||||||
if [[ "$BUILD_ENVIRONMENT" == *aarch64* ]]; then
|
if [[ "$BUILD_ENVIRONMENT" == *aarch64* ]]; then
|
||||||
export USE_MKLDNN=1
|
export USE_MKLDNN=1
|
||||||
export USE_MKLDNN_ACL=1
|
export USE_MKLDNN_ACL=1
|
||||||
export ACL_ROOT_DIR=/acl
|
export ACL_ROOT_DIR=/ComputeLibrary
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$BUILD_ENVIRONMENT" == *riscv64* ]]; then
|
if [[ "$BUILD_ENVIRONMENT" == *riscv64* ]]; then
|
||||||
@ -290,13 +290,13 @@ else
|
|||||||
|
|
||||||
WERROR=1 python setup.py clean
|
WERROR=1 python setup.py clean
|
||||||
|
|
||||||
WERROR=1 python -m build --wheel --no-isolation
|
WERROR=1 python setup.py bdist_wheel
|
||||||
else
|
else
|
||||||
python setup.py clean
|
python setup.py clean
|
||||||
if [[ "$BUILD_ENVIRONMENT" == *xla* ]]; then
|
if [[ "$BUILD_ENVIRONMENT" == *xla* ]]; then
|
||||||
source .ci/pytorch/install_cache_xla.sh
|
source .ci/pytorch/install_cache_xla.sh
|
||||||
fi
|
fi
|
||||||
python -m build --wheel --no-isolation
|
python setup.py bdist_wheel
|
||||||
fi
|
fi
|
||||||
pip_install_whl "$(echo dist/*.whl)"
|
pip_install_whl "$(echo dist/*.whl)"
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ fi
|
|||||||
# wheels with cxx11-abi
|
# wheels with cxx11-abi
|
||||||
|
|
||||||
echo "Checking that the gcc ABI is what we expect"
|
echo "Checking that the gcc ABI is what we expect"
|
||||||
if [[ "$(uname)" != 'Darwin' && "$(uname -m)" != "s390x" ]]; then
|
if [[ "$(uname)" != 'Darwin' ]]; then
|
||||||
# We also check that there are cxx11 symbols in libtorch
|
# We also check that there are cxx11 symbols in libtorch
|
||||||
#
|
#
|
||||||
echo "Checking that symbols in libtorch.so have the right gcc abi"
|
echo "Checking that symbols in libtorch.so have the right gcc abi"
|
||||||
|
@ -58,7 +58,7 @@ time python tools/setup_helpers/generate_code.py \
|
|||||||
|
|
||||||
# Build the docs
|
# Build the docs
|
||||||
pushd docs/cpp
|
pushd docs/cpp
|
||||||
time make VERBOSE=1 html
|
time make VERBOSE=1 html -j
|
||||||
|
|
||||||
popd
|
popd
|
||||||
popd
|
popd
|
||||||
|
40
.ci/pytorch/functorch_doc_push_script.sh
Executable file
40
.ci/pytorch/functorch_doc_push_script.sh
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# This is where the local pytorch install in the docker image is located
|
||||||
|
pt_checkout="/var/lib/jenkins/workspace"
|
||||||
|
source "$pt_checkout/.ci/pytorch/common_utils.sh"
|
||||||
|
echo "functorch_doc_push_script.sh: Invoked with $*"
|
||||||
|
|
||||||
|
set -ex -o pipefail
|
||||||
|
|
||||||
|
version=${DOCS_VERSION:-nightly}
|
||||||
|
echo "version: $version"
|
||||||
|
|
||||||
|
# Build functorch docs
|
||||||
|
pushd $pt_checkout/functorch/docs
|
||||||
|
make html
|
||||||
|
popd
|
||||||
|
|
||||||
|
git clone https://github.com/pytorch/functorch -b gh-pages --depth 1 functorch_ghpages
|
||||||
|
pushd functorch_ghpages
|
||||||
|
|
||||||
|
if [ "$version" == "main" ]; then
|
||||||
|
version=nightly
|
||||||
|
fi
|
||||||
|
|
||||||
|
git rm -rf "$version" || true
|
||||||
|
mv "$pt_checkout/functorch/docs/build/html" "$version"
|
||||||
|
|
||||||
|
git add "$version" || true
|
||||||
|
git status
|
||||||
|
git config user.email "soumith+bot@pytorch.org"
|
||||||
|
git config user.name "pytorchbot"
|
||||||
|
# If there aren't changes, don't make a commit; push is no-op
|
||||||
|
git commit -m "Generate Python docs from pytorch/pytorch@${GITHUB_SHA}" || true
|
||||||
|
git status
|
||||||
|
|
||||||
|
if [[ "${WITH_PUSH:-}" == true ]]; then
|
||||||
|
git push -u origin gh-pages
|
||||||
|
fi
|
||||||
|
|
||||||
|
popd
|
@ -35,12 +35,11 @@ fi
|
|||||||
|
|
||||||
print_cmake_info
|
print_cmake_info
|
||||||
if [[ ${BUILD_ENVIRONMENT} == *"distributed"* ]]; then
|
if [[ ${BUILD_ENVIRONMENT} == *"distributed"* ]]; then
|
||||||
# Needed for inductor benchmarks, as lots of HF networks make `torch.distribtued` calls
|
USE_OPENMP=1 WERROR=1 python setup.py bdist_wheel
|
||||||
USE_DISTRIBUTED=1 USE_OPENMP=1 WERROR=1 python -m build --wheel --no-isolation
|
|
||||||
else
|
else
|
||||||
# Explicitly set USE_DISTRIBUTED=0 to align with the default build config on mac. This also serves as the sole CI config that tests
|
# NB: we always build with distributed; USE_DISTRIBUTED turns off all
|
||||||
# that building with USE_DISTRIBUTED=0 works at all. See https://github.com/pytorch/pytorch/issues/86448
|
# backends (specifically the gloo backend), so test that this case works too
|
||||||
USE_DISTRIBUTED=0 USE_OPENMP=1 MACOSX_DEPLOYMENT_TARGET=11.0 WERROR=1 BUILD_TEST=OFF USE_PYTORCH_METAL=1 python -m build --wheel --no-isolation -C--build-option=--plat-name=macosx_11_0_arm64
|
USE_DISTRIBUTED=0 USE_OPENMP=1 MACOSX_DEPLOYMENT_TARGET=11.0 WERROR=1 BUILD_TEST=OFF USE_PYTORCH_METAL=1 python setup.py bdist_wheel --plat-name macosx_11_0_arm64
|
||||||
fi
|
fi
|
||||||
if which sccache > /dev/null; then
|
if which sccache > /dev/null; then
|
||||||
print_sccache_stats
|
print_sccache_stats
|
||||||
|
@ -13,9 +13,13 @@ if [[ ! $(python -c "import torch; print(int(torch.backends.openmp.is_available(
|
|||||||
fi
|
fi
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
python -mpip install -r requirements.txt
|
||||||
|
|
||||||
# enable debug asserts in serialization
|
# enable debug asserts in serialization
|
||||||
export TORCH_SERIALIZATION_DEBUG=1
|
export TORCH_SERIALIZATION_DEBUG=1
|
||||||
|
|
||||||
|
python -mpip install --no-input -r requirements.txt
|
||||||
|
|
||||||
setup_test_python() {
|
setup_test_python() {
|
||||||
# The CircleCI worker hostname doesn't resolve to an address.
|
# The CircleCI worker hostname doesn't resolve to an address.
|
||||||
# This environment variable makes ProcessGroupGloo default to
|
# This environment variable makes ProcessGroupGloo default to
|
||||||
@ -55,7 +59,7 @@ test_python_shard() {
|
|||||||
|
|
||||||
setup_test_python
|
setup_test_python
|
||||||
|
|
||||||
time python test/run_test.py --verbose --exclude-jit-executor --exclude-distributed-tests --exclude-quantization-tests --shard "$1" "$NUM_TEST_SHARDS"
|
time python test/run_test.py --verbose --exclude-jit-executor --exclude-distributed-tests --shard "$1" "$NUM_TEST_SHARDS"
|
||||||
|
|
||||||
assert_git_not_dirty
|
assert_git_not_dirty
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,6 @@ if [[ "${SHARD_NUMBER:-2}" == "2" ]]; then
|
|||||||
time python test/run_test.py --verbose -i distributed/test_c10d_spawn_gloo
|
time python test/run_test.py --verbose -i distributed/test_c10d_spawn_gloo
|
||||||
time python test/run_test.py --verbose -i distributed/test_c10d_spawn_nccl
|
time python test/run_test.py --verbose -i distributed/test_c10d_spawn_nccl
|
||||||
time python test/run_test.py --verbose -i distributed/test_compute_comm_reordering
|
time python test/run_test.py --verbose -i distributed/test_compute_comm_reordering
|
||||||
time python test/run_test.py --verbose -i distributed/test_aten_comm_compute_reordering
|
|
||||||
time python test/run_test.py --verbose -i distributed/test_store
|
time python test/run_test.py --verbose -i distributed/test_store
|
||||||
time python test/run_test.py --verbose -i distributed/test_symmetric_memory
|
time python test/run_test.py --verbose -i distributed/test_symmetric_memory
|
||||||
time python test/run_test.py --verbose -i distributed/test_pg_wrapper
|
time python test/run_test.py --verbose -i distributed/test_pg_wrapper
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
From 6e08c9d08e9de59c7af28b720289debbbd384764 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michael Wang <13521008+isVoid@users.noreply.github.com>
|
|
||||||
Date: Tue, 1 Apr 2025 17:28:05 -0700
|
|
||||||
Subject: [PATCH] Avoid bumping certain driver API to avoid future breakage
|
|
||||||
(#185)
|
|
||||||
|
|
||||||
Co-authored-by: isVoid <isVoid@users.noreply.github.com>
|
|
||||||
---
|
|
||||||
numba_cuda/numba/cuda/cudadrv/driver.py | 3 +++
|
|
||||||
1 file changed, 3 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/numba_cuda/numba/cuda/cudadrv/driver.py b/numba_cuda/numba/cuda/cudadrv/driver.py
|
|
||||||
index 1641bf77..233e9ed7 100644
|
|
||||||
--- a/numba_cuda/numba/cuda/cudadrv/driver.py
|
|
||||||
+++ b/numba_cuda/numba/cuda/cudadrv/driver.py
|
|
||||||
@@ -365,6 +365,9 @@ def _find_api(self, fname):
|
|
||||||
else:
|
|
||||||
variants = ('_v2', '')
|
|
||||||
|
|
||||||
+ if fname in ("cuCtxGetDevice", "cuCtxSynchronize"):
|
|
||||||
+ return getattr(self.lib, fname)
|
|
||||||
+
|
|
||||||
for variant in variants:
|
|
||||||
try:
|
|
||||||
return getattr(self.lib, f'{fname}{variant}')
|
|
@ -32,9 +32,6 @@ LIBTORCH_NAMESPACE_LIST = (
|
|||||||
"torch::",
|
"torch::",
|
||||||
)
|
)
|
||||||
|
|
||||||
# Patterns for detecting statically linked libstdc++ symbols
|
|
||||||
STATICALLY_LINKED_CXX11_ABI = [re.compile(r".*recursive_directory_iterator.*")]
|
|
||||||
|
|
||||||
|
|
||||||
def _apply_libtorch_symbols(symbols):
|
def _apply_libtorch_symbols(symbols):
|
||||||
return [
|
return [
|
||||||
@ -56,17 +53,12 @@ def get_symbols(lib: str) -> list[tuple[str, str, str]]:
|
|||||||
return [x.split(" ", 2) for x in lines.decode("latin1").split("\n")[:-1]]
|
return [x.split(" ", 2) for x in lines.decode("latin1").split("\n")[:-1]]
|
||||||
|
|
||||||
|
|
||||||
def grep_symbols(
|
def grep_symbols(lib: str, patterns: list[Any]) -> list[str]:
|
||||||
lib: str, patterns: list[Any], symbol_type: str | None = None
|
|
||||||
) -> list[str]:
|
|
||||||
def _grep_symbols(
|
def _grep_symbols(
|
||||||
symbols: list[tuple[str, str, str]], patterns: list[Any]
|
symbols: list[tuple[str, str, str]], patterns: list[Any]
|
||||||
) -> list[str]:
|
) -> list[str]:
|
||||||
rc = []
|
rc = []
|
||||||
for _s_addr, _s_type, s_name in symbols:
|
for _s_addr, _s_type, s_name in symbols:
|
||||||
# Filter by symbol type if specified
|
|
||||||
if symbol_type and _s_type != symbol_type:
|
|
||||||
continue
|
|
||||||
for pattern in patterns:
|
for pattern in patterns:
|
||||||
if pattern.match(s_name):
|
if pattern.match(s_name):
|
||||||
rc.append(s_name)
|
rc.append(s_name)
|
||||||
@ -88,18 +80,6 @@ def grep_symbols(
|
|||||||
return functools.reduce(list.__add__, (x.result() for x in tasks), [])
|
return functools.reduce(list.__add__, (x.result() for x in tasks), [])
|
||||||
|
|
||||||
|
|
||||||
def check_lib_statically_linked_libstdc_cxx_abi_symbols(lib: str) -> None:
|
|
||||||
cxx11_statically_linked_symbols = grep_symbols(
|
|
||||||
lib, STATICALLY_LINKED_CXX11_ABI, symbol_type="T"
|
|
||||||
)
|
|
||||||
num_statically_linked_symbols = len(cxx11_statically_linked_symbols)
|
|
||||||
print(f"num_statically_linked_symbols (T): {num_statically_linked_symbols}")
|
|
||||||
if num_statically_linked_symbols > 0:
|
|
||||||
raise RuntimeError(
|
|
||||||
f"Found statically linked libstdc++ symbols (recursive_directory_iterator): {cxx11_statically_linked_symbols[:100]}"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def check_lib_symbols_for_abi_correctness(lib: str) -> None:
|
def check_lib_symbols_for_abi_correctness(lib: str) -> None:
|
||||||
print(f"lib: {lib}")
|
print(f"lib: {lib}")
|
||||||
cxx11_symbols = grep_symbols(lib, LIBTORCH_CXX11_PATTERNS)
|
cxx11_symbols = grep_symbols(lib, LIBTORCH_CXX11_PATTERNS)
|
||||||
@ -127,7 +107,6 @@ def main() -> None:
|
|||||||
|
|
||||||
libtorch_cpu_path = str(install_root / "lib" / "libtorch_cpu.so")
|
libtorch_cpu_path = str(install_root / "lib" / "libtorch_cpu.so")
|
||||||
check_lib_symbols_for_abi_correctness(libtorch_cpu_path)
|
check_lib_symbols_for_abi_correctness(libtorch_cpu_path)
|
||||||
check_lib_statically_linked_libstdc_cxx_abi_symbols(libtorch_cpu_path)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
@ -32,18 +32,6 @@ if [[ "$BUILD_ENVIRONMENT" != *rocm* && "$BUILD_ENVIRONMENT" != *s390x* && -d /v
|
|||||||
git config --global --add safe.directory /var/lib/jenkins/workspace
|
git config --global --add safe.directory /var/lib/jenkins/workspace
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Patch numba to avoid CUDA-13 crash, see https://github.com/pytorch/pytorch/issues/162878
|
|
||||||
if [[ "$BUILD_ENVIRONMENT" == *cuda* ]]; then
|
|
||||||
NUMBA_CUDA_DIR=$(python -c "import os;import numba.cuda; print(os.path.dirname(numba.cuda.__file__))" 2>/dev/null || true)
|
|
||||||
if [ -n "$NUMBA_CUDA_DIR" ]; then
|
|
||||||
NUMBA_PATCH="$(dirname "$(realpath "${BASH_SOURCE[0]}")")/numba-cuda-13.patch"
|
|
||||||
pushd "$NUMBA_CUDA_DIR"
|
|
||||||
patch -p4 <"$NUMBA_PATCH"
|
|
||||||
popd
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Environment variables:"
|
echo "Environment variables:"
|
||||||
env
|
env
|
||||||
|
|
||||||
@ -324,29 +312,23 @@ test_python_shard() {
|
|||||||
|
|
||||||
# modify LD_LIBRARY_PATH to ensure it has the conda env.
|
# modify LD_LIBRARY_PATH to ensure it has the conda env.
|
||||||
# This set of tests has been shown to be buggy without it for the split-build
|
# This set of tests has been shown to be buggy without it for the split-build
|
||||||
time python test/run_test.py --exclude-jit-executor --exclude-distributed-tests --exclude-quantization-tests $INCLUDE_CLAUSE --shard "$1" "$NUM_TEST_SHARDS" --verbose $PYTHON_TEST_EXTRA_OPTION --upload-artifacts-while-running
|
time python test/run_test.py --exclude-jit-executor --exclude-distributed-tests $INCLUDE_CLAUSE --shard "$1" "$NUM_TEST_SHARDS" --verbose $PYTHON_TEST_EXTRA_OPTION --upload-artifacts-while-running
|
||||||
|
|
||||||
assert_git_not_dirty
|
assert_git_not_dirty
|
||||||
}
|
}
|
||||||
|
|
||||||
test_python() {
|
test_python() {
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
time python test/run_test.py --exclude-jit-executor --exclude-distributed-tests --exclude-quantization-tests $INCLUDE_CLAUSE --verbose $PYTHON_TEST_EXTRA_OPTION
|
time python test/run_test.py --exclude-jit-executor --exclude-distributed-tests $INCLUDE_CLAUSE --verbose $PYTHON_TEST_EXTRA_OPTION
|
||||||
assert_git_not_dirty
|
assert_git_not_dirty
|
||||||
}
|
}
|
||||||
|
|
||||||
test_python_smoke() {
|
test_python_smoke() {
|
||||||
# Smoke tests for H100/B200
|
# Smoke tests for H100
|
||||||
time python test/run_test.py --include test_matmul_cuda inductor/test_fp8 inductor/test_max_autotune $PYTHON_TEST_EXTRA_OPTION --upload-artifacts-while-running
|
time python test/run_test.py --include test_matmul_cuda inductor/test_fp8 inductor/test_max_autotune $PYTHON_TEST_EXTRA_OPTION --upload-artifacts-while-running
|
||||||
assert_git_not_dirty
|
assert_git_not_dirty
|
||||||
}
|
}
|
||||||
|
|
||||||
test_python_smoke_b200() {
|
|
||||||
# Targeted smoke tests for B200 - staged approach to avoid too many failures
|
|
||||||
time python test/run_test.py --include test_matmul_cuda inductor/test_fp8 $PYTHON_TEST_EXTRA_OPTION --upload-artifacts-while-running
|
|
||||||
assert_git_not_dirty
|
|
||||||
}
|
|
||||||
|
|
||||||
test_h100_distributed() {
|
test_h100_distributed() {
|
||||||
# Distributed tests at H100
|
# Distributed tests at H100
|
||||||
time python test/run_test.py --include distributed/_composable/test_composability/test_pp_composability.py $PYTHON_TEST_EXTRA_OPTION --upload-artifacts-while-running
|
time python test/run_test.py --include distributed/_composable/test_composability/test_pp_composability.py $PYTHON_TEST_EXTRA_OPTION --upload-artifacts-while-running
|
||||||
@ -392,7 +374,6 @@ test_dynamo_wrapped_shard() {
|
|||||||
--exclude-distributed-tests \
|
--exclude-distributed-tests \
|
||||||
--exclude-torch-export-tests \
|
--exclude-torch-export-tests \
|
||||||
--exclude-aot-dispatch-tests \
|
--exclude-aot-dispatch-tests \
|
||||||
--exclude-quantization-tests \
|
|
||||||
--shard "$1" "$NUM_TEST_SHARDS" \
|
--shard "$1" "$NUM_TEST_SHARDS" \
|
||||||
--verbose \
|
--verbose \
|
||||||
--upload-artifacts-while-running
|
--upload-artifacts-while-running
|
||||||
@ -437,7 +418,7 @@ test_inductor_distributed() {
|
|||||||
|
|
||||||
# this runs on both single-gpu and multi-gpu instance. It should be smart about skipping tests that aren't supported
|
# this runs on both single-gpu and multi-gpu instance. It should be smart about skipping tests that aren't supported
|
||||||
# with if required # gpus aren't available
|
# with if required # gpus aren't available
|
||||||
python test/run_test.py --include distributed/test_dynamo_distributed distributed/test_inductor_collectives distributed/test_aten_comm_compute_reordering distributed/test_compute_comm_reordering --verbose
|
python test/run_test.py --include distributed/test_dynamo_distributed distributed/test_inductor_collectives distributed/test_compute_comm_reordering --verbose
|
||||||
assert_git_not_dirty
|
assert_git_not_dirty
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1165,12 +1146,6 @@ test_distributed() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
test_quantization() {
|
|
||||||
echo "Testing quantization"
|
|
||||||
|
|
||||||
python test/test_quantization.py
|
|
||||||
}
|
|
||||||
|
|
||||||
test_rpc() {
|
test_rpc() {
|
||||||
echo "Testing RPC C++ tests"
|
echo "Testing RPC C++ tests"
|
||||||
# NB: the ending test_rpc must match the current function name for the current
|
# NB: the ending test_rpc must match the current function name for the current
|
||||||
@ -1417,7 +1392,7 @@ EOF
|
|||||||
pip3 install -r requirements.txt
|
pip3 install -r requirements.txt
|
||||||
# shellcheck source=./common-build.sh
|
# shellcheck source=./common-build.sh
|
||||||
source "$(dirname "${BASH_SOURCE[0]}")/common-build.sh"
|
source "$(dirname "${BASH_SOURCE[0]}")/common-build.sh"
|
||||||
python -m build --wheel --no-isolation -C--build-option=--bdist-dir="base_bdist_tmp" --outdir "base_dist"
|
python setup.py bdist_wheel --bdist-dir="base_bdist_tmp" --dist-dir="base_dist"
|
||||||
python -mpip install base_dist/*.whl
|
python -mpip install base_dist/*.whl
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
|
|
||||||
@ -1565,10 +1540,14 @@ test_executorch() {
|
|||||||
install_torchvision
|
install_torchvision
|
||||||
install_torchaudio
|
install_torchaudio
|
||||||
|
|
||||||
INSTALL_SCRIPT="$(pwd)/.ci/docker/common/install_executorch.sh"
|
|
||||||
|
|
||||||
pushd /executorch
|
pushd /executorch
|
||||||
"${INSTALL_SCRIPT}" setup_executorch
|
|
||||||
|
export PYTHON_EXECUTABLE=python
|
||||||
|
export CMAKE_ARGS="-DEXECUTORCH_BUILD_PYBIND=ON -DEXECUTORCH_BUILD_XNNPACK=ON -DEXECUTORCH_BUILD_KERNELS_QUANTIZED=ON"
|
||||||
|
|
||||||
|
# NB: We need to rebuild ExecuTorch runner here because it depends on PyTorch
|
||||||
|
# from the PR
|
||||||
|
bash .ci/scripts/setup-linux.sh --build-tool cmake
|
||||||
|
|
||||||
echo "Run ExecuTorch unit tests"
|
echo "Run ExecuTorch unit tests"
|
||||||
pytest -v -n auto
|
pytest -v -n auto
|
||||||
@ -1582,14 +1561,17 @@ test_executorch() {
|
|||||||
|
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
# Test torchgen generated code for Executorch.
|
||||||
|
echo "Testing ExecuTorch op registration"
|
||||||
|
"$BUILD_BIN_DIR"/test_edge_op_registration
|
||||||
|
|
||||||
assert_git_not_dirty
|
assert_git_not_dirty
|
||||||
}
|
}
|
||||||
|
|
||||||
test_linux_aarch64() {
|
test_linux_aarch64() {
|
||||||
python test/run_test.py --include test_modules test_mkldnn test_mkldnn_fusion test_openmp test_torch test_dynamic_shapes \
|
python test/run_test.py --include test_modules test_mkldnn test_mkldnn_fusion test_openmp test_torch test_dynamic_shapes \
|
||||||
test_transformers test_multiprocessing test_numpy_interop test_autograd test_binary_ufuncs test_complex test_spectral_ops \
|
test_transformers test_multiprocessing test_numpy_interop test_autograd test_binary_ufuncs test_complex test_spectral_ops \
|
||||||
test_foreach test_reductions test_unary_ufuncs test_tensor_creation_ops test_ops profiler/test_memory_profiler \
|
test_foreach test_reductions test_unary_ufuncs test_tensor_creation_ops test_ops \
|
||||||
distributed/elastic/timer/api_test distributed/elastic/timer/local_timer_example distributed/elastic/timer/local_timer_test \
|
|
||||||
--shard "$SHARD_NUMBER" "$NUM_TEST_SHARDS" --verbose
|
--shard "$SHARD_NUMBER" "$NUM_TEST_SHARDS" --verbose
|
||||||
|
|
||||||
# Dynamo tests
|
# Dynamo tests
|
||||||
@ -1619,7 +1601,7 @@ test_operator_benchmark() {
|
|||||||
test_inductor_set_cpu_affinity
|
test_inductor_set_cpu_affinity
|
||||||
|
|
||||||
cd benchmarks/operator_benchmark/pt_extension
|
cd benchmarks/operator_benchmark/pt_extension
|
||||||
python -m pip install . -v --no-build-isolation
|
python -m pip install .
|
||||||
|
|
||||||
cd "${TEST_DIR}"/benchmarks/operator_benchmark
|
cd "${TEST_DIR}"/benchmarks/operator_benchmark
|
||||||
$TASKSET python -m benchmark_all_test --device "$1" --tag-filter "$2" \
|
$TASKSET python -m benchmark_all_test --device "$1" --tag-filter "$2" \
|
||||||
@ -1632,25 +1614,6 @@ test_operator_benchmark() {
|
|||||||
--expected "expected_ci_operator_benchmark_eager_float32_cpu.csv"
|
--expected "expected_ci_operator_benchmark_eager_float32_cpu.csv"
|
||||||
}
|
}
|
||||||
|
|
||||||
test_operator_microbenchmark() {
|
|
||||||
TEST_REPORTS_DIR=$(pwd)/test/test-reports
|
|
||||||
mkdir -p "$TEST_REPORTS_DIR"
|
|
||||||
TEST_DIR=$(pwd)
|
|
||||||
|
|
||||||
cd benchmarks/operator_benchmark/pt_extension
|
|
||||||
python -m pip install .
|
|
||||||
|
|
||||||
cd "${TEST_DIR}"/benchmarks/operator_benchmark
|
|
||||||
|
|
||||||
for OP_BENCHMARK_TESTS in matmul mm addmm bmm; do
|
|
||||||
$TASKSET python -m pt.${OP_BENCHMARK_TESTS}_test --tag-filter long \
|
|
||||||
--output-json-for-dashboard "${TEST_REPORTS_DIR}/operator_microbenchmark_${OP_BENCHMARK_TESTS}_compile.json" \
|
|
||||||
--benchmark-name "PyTorch operator microbenchmark" --use-compile
|
|
||||||
$TASKSET python -m pt.${OP_BENCHMARK_TESTS}_test --tag-filter long \
|
|
||||||
--output-json-for-dashboard "${TEST_REPORTS_DIR}/operator_microbenchmark_${OP_BENCHMARK_TESTS}.json" \
|
|
||||||
--benchmark-name "PyTorch operator microbenchmark"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
if ! [[ "${BUILD_ENVIRONMENT}" == *libtorch* || "${BUILD_ENVIRONMENT}" == *-bazel-* ]]; then
|
if ! [[ "${BUILD_ENVIRONMENT}" == *libtorch* || "${BUILD_ENVIRONMENT}" == *-bazel-* ]]; then
|
||||||
(cd test && python -c "import torch; print(torch.__config__.show())")
|
(cd test && python -c "import torch; print(torch.__config__.show())")
|
||||||
@ -1683,8 +1646,6 @@ elif [[ "${TEST_CONFIG}" == *executorch* ]]; then
|
|||||||
test_executorch
|
test_executorch
|
||||||
elif [[ "$TEST_CONFIG" == 'jit_legacy' ]]; then
|
elif [[ "$TEST_CONFIG" == 'jit_legacy' ]]; then
|
||||||
test_python_legacy_jit
|
test_python_legacy_jit
|
||||||
elif [[ "$TEST_CONFIG" == 'quantization' ]]; then
|
|
||||||
test_quantization
|
|
||||||
elif [[ "${BUILD_ENVIRONMENT}" == *libtorch* ]]; then
|
elif [[ "${BUILD_ENVIRONMENT}" == *libtorch* ]]; then
|
||||||
# TODO: run some C++ tests
|
# TODO: run some C++ tests
|
||||||
echo "no-op at the moment"
|
echo "no-op at the moment"
|
||||||
@ -1707,8 +1668,6 @@ elif [[ "${TEST_CONFIG}" == *operator_benchmark* ]]; then
|
|||||||
test_operator_benchmark cpu ${TEST_MODE}
|
test_operator_benchmark cpu ${TEST_MODE}
|
||||||
|
|
||||||
fi
|
fi
|
||||||
elif [[ "${TEST_CONFIG}" == *operator_microbenchmark* ]]; then
|
|
||||||
test_operator_microbenchmark
|
|
||||||
elif [[ "${TEST_CONFIG}" == *inductor_distributed* ]]; then
|
elif [[ "${TEST_CONFIG}" == *inductor_distributed* ]]; then
|
||||||
test_inductor_distributed
|
test_inductor_distributed
|
||||||
elif [[ "${TEST_CONFIG}" == *inductor-halide* ]]; then
|
elif [[ "${TEST_CONFIG}" == *inductor-halide* ]]; then
|
||||||
@ -1811,14 +1770,10 @@ elif [[ "${BUILD_ENVIRONMENT}" == *xpu* ]]; then
|
|||||||
test_xpu_bin
|
test_xpu_bin
|
||||||
elif [[ "${TEST_CONFIG}" == smoke ]]; then
|
elif [[ "${TEST_CONFIG}" == smoke ]]; then
|
||||||
test_python_smoke
|
test_python_smoke
|
||||||
elif [[ "${TEST_CONFIG}" == smoke_b200 ]]; then
|
|
||||||
test_python_smoke_b200
|
|
||||||
elif [[ "${TEST_CONFIG}" == h100_distributed ]]; then
|
elif [[ "${TEST_CONFIG}" == h100_distributed ]]; then
|
||||||
test_h100_distributed
|
test_h100_distributed
|
||||||
elif [[ "${TEST_CONFIG}" == "h100-symm-mem" ]]; then
|
elif [[ "${TEST_CONFIG}" == "h100-symm-mem" ]]; then
|
||||||
test_h100_symm_mem
|
test_h100_symm_mem
|
||||||
elif [[ "${TEST_CONFIG}" == "b200-symm-mem" ]]; then
|
|
||||||
test_h100_symm_mem
|
|
||||||
elif [[ "${TEST_CONFIG}" == h100_cutlass_backend ]]; then
|
elif [[ "${TEST_CONFIG}" == h100_cutlass_backend ]]; then
|
||||||
test_h100_cutlass_backend
|
test_h100_cutlass_backend
|
||||||
else
|
else
|
||||||
|
@ -1,32 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -ex -o pipefail
|
|
||||||
|
|
||||||
# Suppress ANSI color escape sequences
|
|
||||||
export TERM=vt100
|
|
||||||
|
|
||||||
# shellcheck source=./common.sh
|
|
||||||
source "$(dirname "${BASH_SOURCE[0]}")/common.sh"
|
|
||||||
# shellcheck source=./common-build.sh
|
|
||||||
source "$(dirname "${BASH_SOURCE[0]}")/common-build.sh"
|
|
||||||
|
|
||||||
echo "Environment variables"
|
|
||||||
env
|
|
||||||
|
|
||||||
echo "Testing FA3 stable wheel still works with currently built torch"
|
|
||||||
|
|
||||||
echo "Installing ABI Stable FA3 wheel"
|
|
||||||
# The wheel was built on https://github.com/Dao-AILab/flash-attention/commit/b3846b059bf6b143d1cd56879933be30a9f78c81
|
|
||||||
# on torch nightly torch==2.9.0.dev20250830+cu129
|
|
||||||
$MAYBE_SUDO pip -q install https://s3.amazonaws.com/ossci-linux/wheels/flash_attn_3-3.0.0b1-cp39-abi3-linux_x86_64.whl
|
|
||||||
|
|
||||||
pushd flash-attention/hopper
|
|
||||||
export PYTHONPATH=$PWD
|
|
||||||
pytest -v -s \
|
|
||||||
"test_flash_attn.py::test_flash_attn_output[1-1-192-False-False-False-0.0-False-False-mha-dtype0]" \
|
|
||||||
"test_flash_attn.py::test_flash_attn_varlen_output[511-1-64-True-False-False-0.0-False-False-gqa-dtype2]" \
|
|
||||||
"test_flash_attn.py::test_flash_attn_kvcache[1-128-128-False-False-True-None-0.0-False-False-True-False-True-False-gqa-dtype0]" \
|
|
||||||
"test_flash_attn.py::test_flash_attn_race_condition[97-97-192-True-dtype0]" \
|
|
||||||
"test_flash_attn.py::test_flash_attn_combine[2-3-64-dtype1]" \
|
|
||||||
"test_flash_attn.py::test_flash3_bw_compatibility"
|
|
||||||
popd
|
|
@ -70,7 +70,7 @@ sccache --zero-stats
|
|||||||
sccache --show-stats
|
sccache --show-stats
|
||||||
|
|
||||||
# Build the wheel
|
# Build the wheel
|
||||||
python -m build --wheel --no-build-isolation
|
python setup.py bdist_wheel
|
||||||
if ($LASTEXITCODE -ne 0) { exit 1 }
|
if ($LASTEXITCODE -ne 0) { exit 1 }
|
||||||
|
|
||||||
# Install the wheel locally
|
# Install the wheel locally
|
||||||
|
@ -38,12 +38,10 @@ if errorlevel 1 goto fail
|
|||||||
if not errorlevel 0 goto fail
|
if not errorlevel 0 goto fail
|
||||||
|
|
||||||
:: Update CMake
|
:: Update CMake
|
||||||
:: TODO: Investigate why this helps MKL detection, even when CMake from choco is not used
|
|
||||||
call choco upgrade -y cmake --no-progress --installargs 'ADD_CMAKE_TO_PATH=System' --apply-install-arguments-to-dependencies --version=3.27.9
|
call choco upgrade -y cmake --no-progress --installargs 'ADD_CMAKE_TO_PATH=System' --apply-install-arguments-to-dependencies --version=3.27.9
|
||||||
if errorlevel 1 goto fail
|
if errorlevel 1 goto fail
|
||||||
if not errorlevel 0 goto fail
|
if not errorlevel 0 goto fail
|
||||||
|
|
||||||
:: TODO: Move to .ci/docker/requirements-ci.txt
|
|
||||||
call pip install mkl==2024.2.0 mkl-static==2024.2.0 mkl-include==2024.2.0
|
call pip install mkl==2024.2.0 mkl-static==2024.2.0 mkl-include==2024.2.0
|
||||||
if errorlevel 1 goto fail
|
if errorlevel 1 goto fail
|
||||||
if not errorlevel 0 goto fail
|
if not errorlevel 0 goto fail
|
||||||
@ -132,14 +130,14 @@ if "%USE_CUDA%"=="1" (
|
|||||||
:: Print all existing environment variable for debugging
|
:: Print all existing environment variable for debugging
|
||||||
set
|
set
|
||||||
|
|
||||||
python -m build --wheel --no-isolation
|
python setup.py bdist_wheel
|
||||||
if errorlevel 1 goto fail
|
if errorlevel 1 goto fail
|
||||||
if not errorlevel 0 goto fail
|
if not errorlevel 0 goto fail
|
||||||
sccache --show-stats
|
sccache --show-stats
|
||||||
python -c "import os, glob; os.system('python -mpip install --no-index --no-deps ' + glob.glob('dist/*.whl')[0])"
|
python -c "import os, glob; os.system('python -mpip install --no-index --no-deps ' + glob.glob('dist/*.whl')[0])"
|
||||||
(
|
(
|
||||||
if "%BUILD_ENVIRONMENT%"=="" (
|
if "%BUILD_ENVIRONMENT%"=="" (
|
||||||
echo NOTE: To run `import torch`, please make sure to activate the conda environment by running `call %CONDA_ROOT_DIR%\Scripts\activate.bat %CONDA_ROOT_DIR%\envs\py_tmp` in Command Prompt before running Git Bash.
|
echo NOTE: To run `import torch`, please make sure to activate the conda environment by running `call %CONDA_PARENT_DIR%\Miniconda3\Scripts\activate.bat %CONDA_PARENT_DIR%\Miniconda3` in Command Prompt before running Git Bash.
|
||||||
) else (
|
) else (
|
||||||
copy /Y "dist\*.whl" "%PYTORCH_FINAL_PACKAGE_DIR%"
|
copy /Y "dist\*.whl" "%PYTORCH_FINAL_PACKAGE_DIR%"
|
||||||
|
|
||||||
|
@ -3,12 +3,12 @@ if "%BUILD_ENVIRONMENT%"=="" (
|
|||||||
) else (
|
) else (
|
||||||
set CONDA_PARENT_DIR=C:\Jenkins
|
set CONDA_PARENT_DIR=C:\Jenkins
|
||||||
)
|
)
|
||||||
set CONDA_ROOT_DIR=%CONDA_PARENT_DIR%\Miniconda3
|
|
||||||
|
|
||||||
:: Be conservative here when rolling out the new AMI with conda. This will try
|
:: Be conservative here when rolling out the new AMI with conda. This will try
|
||||||
:: to install conda as before if it couldn't find the conda installation. This
|
:: to install conda as before if it couldn't find the conda installation. This
|
||||||
:: can be removed eventually after we gain enough confidence in the AMI
|
:: can be removed eventually after we gain enough confidence in the AMI
|
||||||
if not exist %CONDA_ROOT_DIR% (
|
if not exist %CONDA_PARENT_DIR%\Miniconda3 (
|
||||||
set INSTALL_FRESH_CONDA=1
|
set INSTALL_FRESH_CONDA=1
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -17,14 +17,10 @@ if "%INSTALL_FRESH_CONDA%"=="1" (
|
|||||||
if errorlevel 1 exit /b
|
if errorlevel 1 exit /b
|
||||||
if not errorlevel 0 exit /b
|
if not errorlevel 0 exit /b
|
||||||
|
|
||||||
%TMP_DIR_WIN%\Miniconda3-latest-Windows-x86_64.exe /InstallationType=JustMe /RegisterPython=0 /S /AddToPath=0 /D=%CONDA_ROOT_DIR%
|
%TMP_DIR_WIN%\Miniconda3-latest-Windows-x86_64.exe /InstallationType=JustMe /RegisterPython=0 /S /AddToPath=0 /D=%CONDA_PARENT_DIR%\Miniconda3
|
||||||
if errorlevel 1 exit /b
|
if errorlevel 1 exit /b
|
||||||
if not errorlevel 0 exit /b
|
if not errorlevel 0 exit /b
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Activate conda so that we can use its commands, i.e. conda, python, pip
|
:: Activate conda so that we can use its commands, i.e. conda, python, pip
|
||||||
call %CONDA_ROOT_DIR%\Scripts\activate.bat %CONDA_ROOT_DIR%
|
call %CONDA_PARENT_DIR%\Miniconda3\Scripts\activate.bat %CONDA_PARENT_DIR%\Miniconda3
|
||||||
:: Activate conda so that we can use its commands, i.e. conda, python, pip
|
|
||||||
call conda activate py_tmp
|
|
||||||
|
|
||||||
call pip install -r .ci/docker/requirements-ci.txt
|
|
||||||
|
@ -14,7 +14,7 @@ if not errorlevel 0 exit /b
|
|||||||
:: build\torch. Rather than changing all these references, making a copy of torch folder
|
:: build\torch. Rather than changing all these references, making a copy of torch folder
|
||||||
:: from conda to the current workspace is easier. The workspace will be cleaned up after
|
:: from conda to the current workspace is easier. The workspace will be cleaned up after
|
||||||
:: the job anyway
|
:: the job anyway
|
||||||
xcopy /s %CONDA_ROOT_DIR%\envs\py_tmp\Lib\site-packages\torch %TMP_DIR_WIN%\build\torch\
|
xcopy /s %CONDA_PARENT_DIR%\Miniconda3\Lib\site-packages\torch %TMP_DIR_WIN%\build\torch\
|
||||||
|
|
||||||
pushd .
|
pushd .
|
||||||
if "%VC_VERSION%" == "" (
|
if "%VC_VERSION%" == "" (
|
||||||
|
@ -25,7 +25,7 @@ echo Copying over test times file
|
|||||||
robocopy /E "%PYTORCH_FINAL_PACKAGE_DIR_WIN%\.additional_ci_files" "%PROJECT_DIR_WIN%\.additional_ci_files"
|
robocopy /E "%PYTORCH_FINAL_PACKAGE_DIR_WIN%\.additional_ci_files" "%PROJECT_DIR_WIN%\.additional_ci_files"
|
||||||
|
|
||||||
echo Run nn tests
|
echo Run nn tests
|
||||||
python run_test.py --exclude-jit-executor --exclude-distributed-tests --exclude-quantization-tests --shard "%SHARD_NUMBER%" "%NUM_TEST_SHARDS%" --verbose
|
python run_test.py --exclude-jit-executor --exclude-distributed-tests --shard "%SHARD_NUMBER%" "%NUM_TEST_SHARDS%" --verbose
|
||||||
if ERRORLEVEL 1 goto fail
|
if ERRORLEVEL 1 goto fail
|
||||||
|
|
||||||
popd
|
popd
|
||||||
|
@ -37,8 +37,23 @@ if [[ "$BUILD_ENVIRONMENT" == *cuda* ]]; then
|
|||||||
export PYTORCH_TESTING_DEVICE_ONLY_FOR="cuda"
|
export PYTORCH_TESTING_DEVICE_ONLY_FOR="cuda"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# TODO: Move this to .ci/docker/requirements-ci.txt
|
# TODO: Move both of them to Windows AMI
|
||||||
python -m pip install "psutil==5.9.1" "pynvml==11.4.1" "pytest-shard==0.1.2"
|
python -m pip install pytest-rerunfailures==10.3 pytest-cpp==2.3.0 tensorboard==2.13.0 protobuf==5.29.4 pytest-subtests==0.13.1
|
||||||
|
|
||||||
|
# Install Z3 optional dependency for Windows builds.
|
||||||
|
python -m pip install z3-solver==4.15.1.0
|
||||||
|
|
||||||
|
# Install tlparse for test\dynamo\test_structured_trace.py UTs.
|
||||||
|
python -m pip install tlparse==0.4.0
|
||||||
|
|
||||||
|
# Install parameterized
|
||||||
|
python -m pip install parameterized==0.8.1
|
||||||
|
|
||||||
|
# Install pulp for testing ilps under torch\distributed\_tools
|
||||||
|
python -m pip install pulp==2.9.0
|
||||||
|
|
||||||
|
# Install expecttest to merge https://github.com/pytorch/pytorch/pull/155308
|
||||||
|
python -m pip install expecttest==0.3.0
|
||||||
|
|
||||||
run_tests() {
|
run_tests() {
|
||||||
# Run nvidia-smi if available
|
# Run nvidia-smi if available
|
||||||
|
@ -48,7 +48,7 @@ sccache --zero-stats
|
|||||||
sccache --show-stats
|
sccache --show-stats
|
||||||
|
|
||||||
:: Call PyTorch build script
|
:: Call PyTorch build script
|
||||||
python -m build --wheel --no-isolation --outdir "%PYTORCH_FINAL_PACKAGE_DIR%"
|
python setup.py bdist_wheel -d "%PYTORCH_FINAL_PACKAGE_DIR%"
|
||||||
|
|
||||||
:: show sccache stats
|
:: show sccache stats
|
||||||
sccache --show-stats
|
sccache --show-stats
|
||||||
|
@ -37,10 +37,10 @@ IF "%CUDA_PATH_V128%"=="" (
|
|||||||
)
|
)
|
||||||
|
|
||||||
IF "%BUILD_VISION%" == "" (
|
IF "%BUILD_VISION%" == "" (
|
||||||
set TORCH_CUDA_ARCH_LIST=7.0;7.5;8.0;8.6;9.0;10.0;12.0
|
set TORCH_CUDA_ARCH_LIST=6.1;7.0;7.5;8.0;8.6;9.0;10.0;12.0
|
||||||
set TORCH_NVCC_FLAGS=-Xfatbin -compress-all
|
set TORCH_NVCC_FLAGS=-Xfatbin -compress-all
|
||||||
) ELSE (
|
) ELSE (
|
||||||
set NVCC_FLAGS=-D__CUDA_NO_HALF_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_75,code=sm_75 -gencode=arch=compute_80,code=compute_80 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_90,code=compute_90 -gencode=arch=compute_100,code=compute_100 -gencode=arch=compute_120,code=compute_120
|
set NVCC_FLAGS=-D__CUDA_NO_HALF_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_50,code=sm_50 -gencode=arch=compute_60,code=sm_60 -gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_75,code=sm_75 -gencode=arch=compute_80,code=compute_80 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_90,code=compute_90 -gencode=arch=compute_100,code=compute_100 -gencode=arch=compute_120,code=compute_120
|
||||||
)
|
)
|
||||||
|
|
||||||
set "CUDA_PATH=%CUDA_PATH_V128%"
|
set "CUDA_PATH=%CUDA_PATH_V128%"
|
||||||
|
@ -28,5 +28,5 @@ start /wait "" python-amd64.exe /quiet InstallAllUsers=1 PrependPath=0 Include_t
|
|||||||
if errorlevel 1 exit /b 1
|
if errorlevel 1 exit /b 1
|
||||||
|
|
||||||
set "PATH=%CD%\Python\Scripts;%CD%\Python;%PATH%"
|
set "PATH=%CD%\Python\Scripts;%CD%\Python;%PATH%"
|
||||||
%PYTHON_EXEC% -m pip install --upgrade pip setuptools packaging wheel build
|
%PYTHON_EXEC% -m pip install --upgrade pip setuptools packaging wheel
|
||||||
if errorlevel 1 exit /b 1
|
if errorlevel 1 exit /b 1
|
||||||
|
@ -86,7 +86,7 @@ copy /Y "%LIBTORCH_PREFIX%-%PYTORCH_BUILD_VERSION%.zip" "%PYTORCH_FINAL_PACKAGE_
|
|||||||
goto build_end
|
goto build_end
|
||||||
|
|
||||||
:pytorch
|
:pytorch
|
||||||
%PYTHON_EXEC% -m build --wheel --no-isolation --outdir "%PYTORCH_FINAL_PACKAGE_DIR%"
|
%PYTHON_EXEC% setup.py bdist_wheel -d "%PYTORCH_FINAL_PACKAGE_DIR%"
|
||||||
|
|
||||||
:build_end
|
:build_end
|
||||||
IF ERRORLEVEL 1 exit /b 1
|
IF ERRORLEVEL 1 exit /b 1
|
||||||
|
@ -63,7 +63,7 @@ if errorlevel 1 exit /b 1
|
|||||||
call %CONDA_HOME%\condabin\activate.bat testenv
|
call %CONDA_HOME%\condabin\activate.bat testenv
|
||||||
if errorlevel 1 exit /b 1
|
if errorlevel 1 exit /b 1
|
||||||
|
|
||||||
call conda install -y -q -c conda-forge libuv=1.51
|
call conda install -y -q -c conda-forge libuv=1.39
|
||||||
call conda install -y -q intel-openmp
|
call conda install -y -q intel-openmp
|
||||||
|
|
||||||
echo "install and test libtorch"
|
echo "install and test libtorch"
|
||||||
|
@ -18,7 +18,7 @@ if "%DESIRED_PYTHON%" == "3.9" %PYTHON_EXEC% -m pip install numpy==2.0.2 cmake
|
|||||||
|
|
||||||
%PYTHON_EXEC% -m pip install pyyaml
|
%PYTHON_EXEC% -m pip install pyyaml
|
||||||
%PYTHON_EXEC% -m pip install mkl-include mkl-static
|
%PYTHON_EXEC% -m pip install mkl-include mkl-static
|
||||||
%PYTHON_EXEC% -m pip install boto3 requests ninja typing_extensions setuptools==72.1.0
|
%PYTHON_EXEC% -m pip install boto3 ninja typing_extensions setuptools==72.1.0
|
||||||
|
|
||||||
where cmake.exe
|
where cmake.exe
|
||||||
|
|
||||||
|
@ -143,8 +143,7 @@ case $desired_python in
|
|||||||
RENAME_WHEEL=false
|
RENAME_WHEEL=false
|
||||||
;;
|
;;
|
||||||
3.13t)
|
3.13t)
|
||||||
echo "Using 3.13t deps"
|
echo "Using 3.13 deps"
|
||||||
mac_version='macosx-11.0-arm64'
|
|
||||||
NUMPY_PINNED_VERSION="==2.1.0"
|
NUMPY_PINNED_VERSION="==2.1.0"
|
||||||
RENAME_WHEEL=false
|
RENAME_WHEEL=false
|
||||||
;;
|
;;
|
||||||
@ -178,7 +177,8 @@ source ~/${desired_python}-build/bin/activate
|
|||||||
retry pip install "${PINNED_PACKAGES[@]}" -r "${pytorch_rootdir}/requirements.txt"
|
retry pip install "${PINNED_PACKAGES[@]}" -r "${pytorch_rootdir}/requirements.txt"
|
||||||
retry brew install libomp
|
retry brew install libomp
|
||||||
|
|
||||||
# For USE_DISTRIBUTED=1 on macOS, need libuv, which is build as part of tensorpipe submodule
|
# For USE_DISTRIBUTED=1 on macOS, this enables gloo, which needs libuv, which
|
||||||
|
# is build as part of tensorpipe submodule
|
||||||
export USE_DISTRIBUTED=1
|
export USE_DISTRIBUTED=1
|
||||||
|
|
||||||
export USE_MKLDNN=OFF
|
export USE_MKLDNN=OFF
|
||||||
@ -186,11 +186,11 @@ export USE_QNNPACK=OFF
|
|||||||
export BUILD_TEST=OFF
|
export BUILD_TEST=OFF
|
||||||
|
|
||||||
pushd "$pytorch_rootdir"
|
pushd "$pytorch_rootdir"
|
||||||
echo "Calling -m build --wheel --no-isolation at $(date)"
|
echo "Calling setup.py bdist_wheel at $(date)"
|
||||||
|
|
||||||
_PYTHON_HOST_PLATFORM=${mac_version} ARCHFLAGS="-arch arm64" python -m build --wheel --no-isolation --outdir "$whl_tmp_dir" -C--plat-name="${mac_version//[-.]/_}"
|
_PYTHON_HOST_PLATFORM=${mac_version} ARCHFLAGS="-arch arm64" python setup.py bdist_wheel -d "$whl_tmp_dir" --plat-name "${mac_version//[-.]/_}"
|
||||||
|
|
||||||
echo "Finished -m build --wheel --no-isolation at $(date)"
|
echo "Finished setup.py bdist_wheel at $(date)"
|
||||||
|
|
||||||
if [[ $package_type != 'libtorch' ]]; then
|
if [[ $package_type != 'libtorch' ]]; then
|
||||||
echo "delocating wheel dependencies"
|
echo "delocating wheel dependencies"
|
||||||
|
47
.circleci/scripts/functorch_doc_push_script.sh
Executable file
47
.circleci/scripts/functorch_doc_push_script.sh
Executable file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# =================== The following code **should** be executed inside Docker container ===================
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
sudo apt-get -y update
|
||||||
|
sudo apt-get -y install expect-dev
|
||||||
|
|
||||||
|
# This is where the local pytorch install in the docker image is located
|
||||||
|
pt_checkout="/var/lib/jenkins/workspace"
|
||||||
|
source "$pt_checkout/.ci/pytorch/common_utils.sh"
|
||||||
|
echo "functorch_doc_push_script.sh: Invoked with $*"
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
version=${DOCS_VERSION:-nightly}
|
||||||
|
echo "version: $version"
|
||||||
|
|
||||||
|
# Build functorch docs
|
||||||
|
pushd $pt_checkout/functorch/docs
|
||||||
|
pip -q install -r requirements.txt
|
||||||
|
make html
|
||||||
|
popd
|
||||||
|
|
||||||
|
git clone https://github.com/pytorch/functorch -b gh-pages --depth 1 functorch_ghpages
|
||||||
|
pushd functorch_ghpages
|
||||||
|
|
||||||
|
if [ $version == "main" ]; then
|
||||||
|
version=nightly
|
||||||
|
fi
|
||||||
|
|
||||||
|
git rm -rf "$version" || true
|
||||||
|
mv "$pt_checkout/functorch/docs/build/html" "$version"
|
||||||
|
|
||||||
|
git add "$version" || true
|
||||||
|
git status
|
||||||
|
git config user.email "soumith+bot@pytorch.org"
|
||||||
|
git config user.name "pytorchbot"
|
||||||
|
# If there aren't changes, don't make a commit; push is no-op
|
||||||
|
git commit -m "Generate Python docs from pytorch/pytorch@${GITHUB_SHA}" || true
|
||||||
|
git status
|
||||||
|
|
||||||
|
if [[ "${WITH_PUSH:-}" == true ]]; then
|
||||||
|
git push -u origin gh-pages
|
||||||
|
fi
|
||||||
|
|
||||||
|
popd
|
||||||
|
# =================== The above code **should** be executed inside Docker container ===================
|
@ -59,19 +59,16 @@ performance-*,
|
|||||||
-performance-enum-size,
|
-performance-enum-size,
|
||||||
readability-container-size-empty,
|
readability-container-size-empty,
|
||||||
readability-delete-null-pointer,
|
readability-delete-null-pointer,
|
||||||
readability-duplicate-include,
|
readability-duplicate-include
|
||||||
readability-misplaced-array-index,
|
readability-misplaced-array-index,
|
||||||
readability-redundant*,
|
readability-redundant*
|
||||||
readability-simplify-subscript-expr,
|
readability-simplify-subscript-expr,
|
||||||
readability-string-compare,
|
readability-string-compare,
|
||||||
-readability-redundant-access-specifiers,
|
-readability-redundant-access-specifiers,
|
||||||
-readability-redundant-control-flow,
|
-readability-redundant-control-flow,
|
||||||
-readability-redundant-inline-specifier,
|
|
||||||
'
|
'
|
||||||
HeaderFilterRegex: '^(aten/|c10/|torch/).*$'
|
HeaderFilterRegex: '^(aten/|c10/|torch/).*$'
|
||||||
WarningsAsErrors: '*'
|
WarningsAsErrors: '*'
|
||||||
LineFilter:
|
|
||||||
- name: '/usr/include/.*'
|
|
||||||
CheckOptions:
|
CheckOptions:
|
||||||
cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor: true
|
cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor: true
|
||||||
cppcoreguidelines-special-member-functions.AllowImplicitlyDeletedCopyOrMove: true
|
cppcoreguidelines-special-member-functions.AllowImplicitlyDeletedCopyOrMove: true
|
||||||
|
4
.github/ISSUE_TEMPLATE/ci-sev.md
vendored
4
.github/ISSUE_TEMPLATE/ci-sev.md
vendored
@ -1,10 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: "⚠️ CI SEV"
|
name: "⚠️ CI SEV"
|
||||||
about: Tracking incidents for PyTorch's CI infra.
|
about: Tracking incidents for PyTorch's CI infra.
|
||||||
title: ''
|
|
||||||
labels: ''
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> NOTE: Remember to label this issue with "`ci: sev`"
|
> NOTE: Remember to label this issue with "`ci: sev`"
|
||||||
|
18
.github/ISSUE_TEMPLATE/disable-autorevert.md
vendored
18
.github/ISSUE_TEMPLATE/disable-autorevert.md
vendored
@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
name: DISABLE AUTOREVERT
|
|
||||||
about: Disables autorevert when open
|
|
||||||
title: "❌\U0001F519 [DISABLE AUTOREVERT]"
|
|
||||||
labels: 'ci: disable-autorevert'
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
This issue, while open, disables the autorevert functionality.
|
|
||||||
|
|
||||||
More details can be found [here](https://github.com/pytorch/test-infra/blob/main/aws/lambda/pytorch-auto-revert/README.md)
|
|
||||||
|
|
||||||
|
|
||||||
## Why are you disabling autorevert?
|
|
||||||
|
|
||||||
|
|
||||||
## Links to any issues/commits/errors that shows the source of problem
|
|
6
.github/ISSUE_TEMPLATE/disable-ci-jobs.md
vendored
6
.github/ISSUE_TEMPLATE/disable-ci-jobs.md
vendored
@ -1,10 +1,8 @@
|
|||||||
---
|
---
|
||||||
name: Disable CI jobs (PyTorch Dev Infra only)
|
name: Disable CI jobs (PyTorch Dev Infra only)
|
||||||
about: Use this template to disable CI jobs
|
about: Use this template to disable CI jobs
|
||||||
title: DISABLED [WORKFLOW_NAME] / [PLATFORM_NAME] / [JOB_NAME]
|
title: "DISABLED [WORKFLOW_NAME] / [PLATFORM_NAME] / [JOB_NAME]"
|
||||||
labels: 'module: ci'
|
labels: "module: ci"
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> For example, DISABLED pull / win-vs2022-cpu-py3 / test (default). Once
|
> For example, DISABLED pull / win-vs2022-cpu-py3 / test (default). Once
|
||||||
|
4
.github/actionlint.yaml
vendored
4
.github/actionlint.yaml
vendored
@ -21,10 +21,6 @@ self-hosted-runner:
|
|||||||
- linux.arm64.2xlarge.ephemeral
|
- linux.arm64.2xlarge.ephemeral
|
||||||
- linux.arm64.m7g.4xlarge
|
- linux.arm64.m7g.4xlarge
|
||||||
- linux.arm64.m7g.4xlarge.ephemeral
|
- linux.arm64.m7g.4xlarge.ephemeral
|
||||||
- linux.arm64.r7g.12xlarge.memory
|
|
||||||
- linux.aws.h100
|
|
||||||
- linux.aws.h100.4
|
|
||||||
- linux.aws.h100.8
|
|
||||||
- linux.4xlarge.nvidia.gpu
|
- linux.4xlarge.nvidia.gpu
|
||||||
- linux.8xlarge.nvidia.gpu
|
- linux.8xlarge.nvidia.gpu
|
||||||
- linux.16xlarge.nvidia.gpu
|
- linux.16xlarge.nvidia.gpu
|
||||||
|
@ -264,7 +264,7 @@ def unzip_artifact_and_replace_files() -> None:
|
|||||||
change_content_to_new_version(f"artifacts/dist/{old_stem}/torch/version.py")
|
change_content_to_new_version(f"artifacts/dist/{old_stem}/torch/version.py")
|
||||||
|
|
||||||
for file in Path(f"artifacts/dist/{old_stem}").glob(
|
for file in Path(f"artifacts/dist/{old_stem}").glob(
|
||||||
"*.dist-info/*",
|
"*.dist-info/**",
|
||||||
):
|
):
|
||||||
change_content_to_new_version(file)
|
change_content_to_new_version(file)
|
||||||
|
|
||||||
|
16
.github/actions/setup-win/action.yml
vendored
16
.github/actions/setup-win/action.yml
vendored
@ -6,12 +6,6 @@ inputs:
|
|||||||
cuda-version:
|
cuda-version:
|
||||||
description: which cuda version to install, 'cpu' for none
|
description: which cuda version to install, 'cpu' for none
|
||||||
required: true
|
required: true
|
||||||
python-version:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
default: "3.10"
|
|
||||||
description: |
|
|
||||||
The python version to be used. Will be 3.10 by default
|
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: composite
|
using: composite
|
||||||
@ -44,24 +38,18 @@ runs:
|
|||||||
CONDA="C:\Jenkins\Miniconda3\condabin\conda.bat"
|
CONDA="C:\Jenkins\Miniconda3\condabin\conda.bat"
|
||||||
|
|
||||||
{
|
{
|
||||||
echo "CONDA=${CONDA}";
|
|
||||||
echo "CONDA_RUN=${CONDA} run --no-capture-output";
|
echo "CONDA_RUN=${CONDA} run --no-capture-output";
|
||||||
echo "CONDA_BUILD=${CONDA} run conda-build";
|
echo "CONDA_BUILD=${CONDA} run conda-build";
|
||||||
echo "CONDA_INSTALL=${CONDA} install";
|
echo "CONDA_INSTALL=${CONDA} install";
|
||||||
} >> "${GITHUB_ENV}"
|
} >> "${GITHUB_ENV}"
|
||||||
|
|
||||||
- name: Setup Python3
|
- name: Setup Python3
|
||||||
env:
|
|
||||||
PYTHON_VERSION: ${{ inputs.python-version }}
|
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
set +e
|
set +e
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
# Create new py_tmp env with python-version
|
PYTHON3=$(${CONDA_RUN} which python3)
|
||||||
${CONDA} create -y -n py_tmp python=${PYTHON_VERSION} intel-openmp libuv
|
|
||||||
|
|
||||||
PYTHON3=$(${CONDA_RUN} -n py_tmp which python3)
|
|
||||||
EXIT_CODE=$?
|
EXIT_CODE=$?
|
||||||
|
|
||||||
if [[ "${EXIT_CODE}" == "0" ]]; then
|
if [[ "${EXIT_CODE}" == "0" ]]; then
|
||||||
@ -74,7 +62,7 @@ runs:
|
|||||||
# installation, which is Python 3 based. Its Python is default to Python 3. Further, there
|
# installation, which is Python 3 based. Its Python is default to Python 3. Further, there
|
||||||
# is also the Miniconda installation that is Python 2 based, and both can be installed if
|
# is also the Miniconda installation that is Python 2 based, and both can be installed if
|
||||||
# needed. In both cases, Python binary is just called python
|
# needed. In both cases, Python binary is just called python
|
||||||
PYTHON=$(${CONDA_RUN} -n py_tmp which python)
|
PYTHON=$(${CONDA_RUN} which python)
|
||||||
EXIT_CODE=$?
|
EXIT_CODE=$?
|
||||||
|
|
||||||
if [[ "${EXIT_CODE}" == "0" ]]; then
|
if [[ "${EXIT_CODE}" == "0" ]]; then
|
||||||
|
3
.github/actions/teardown-win/action.yml
vendored
3
.github/actions/teardown-win/action.yml
vendored
@ -23,6 +23,9 @@ runs:
|
|||||||
run: |
|
run: |
|
||||||
.github\scripts\kill_active_ssh_sessions.ps1
|
.github\scripts\kill_active_ssh_sessions.ps1
|
||||||
|
|
||||||
|
- name: Clean up leftover processes on non-ephemeral Windows runner
|
||||||
|
uses: pytorch/test-infra/.github/actions/cleanup-runner@main
|
||||||
|
|
||||||
# Cleaning up Windows workspace sometimes fails flakily with device or resource busy
|
# Cleaning up Windows workspace sometimes fails flakily with device or resource busy
|
||||||
# error, meaning one or more processes haven't stopped completely yet. So trying to
|
# error, meaning one or more processes haven't stopped completely yet. So trying to
|
||||||
# retry this step several time similar to how checkout-pytorch GHA does
|
# retry this step several time similar to how checkout-pytorch GHA does
|
||||||
|
2
.github/ci_commit_pins/audio.txt
vendored
2
.github/ci_commit_pins/audio.txt
vendored
@ -1 +1 @@
|
|||||||
87ff22e49ed0e92576c4935ccb8c143daac4a3cd
|
caba63f0fa29ef9e3d566699f32f11c07c8bda4e
|
||||||
|
2
.github/ci_commit_pins/vllm.txt
vendored
2
.github/ci_commit_pins/vllm.txt
vendored
@ -1 +1 @@
|
|||||||
0ad9951c416d33c5da4f7a504fb162cbe62386f5
|
f510715882304796a96e33028b4f6de1b026c2c7
|
||||||
|
2
.github/ci_commit_pins/xla.txt
vendored
2
.github/ci_commit_pins/xla.txt
vendored
@ -1 +1 @@
|
|||||||
2a9138a26ee257fef05310ad3fecf7c55fe80d73
|
6c5478ff7c3d50dd1e3047d72ec5909bea474073
|
||||||
|
43
.github/ci_configs/vllm/Dockerfile.tmp_vllm
vendored
43
.github/ci_configs/vllm/Dockerfile.tmp_vllm
vendored
@ -82,10 +82,16 @@ RUN if command -v apt-get >/dev/null; then \
|
|||||||
apt-get update -y \
|
apt-get update -y \
|
||||||
&& apt-get install -y ccache software-properties-common git curl wget sudo vim; \
|
&& apt-get install -y ccache software-properties-common git curl wget sudo vim; \
|
||||||
else \
|
else \
|
||||||
dnf install -y git curl wget sudo; \
|
dnf install -y git curl wget sudo vim; \
|
||||||
fi \
|
fi \
|
||||||
&& python3 --version && python3 -m pip --version
|
&& python3 --version && python3 -m pip --version
|
||||||
|
|
||||||
|
# Workaround for https://github.com/openai/triton/issues/2507 and
|
||||||
|
# https://github.com/pytorch/pytorch/issues/107960 -- hopefully
|
||||||
|
# this won't be needed for future versions of this docker image
|
||||||
|
# or future versions of triton.
|
||||||
|
RUN ldconfig /usr/local/cuda-$(echo $CUDA_VERSION | cut -d. -f1,2)/compat/
|
||||||
|
|
||||||
# Install uv for faster pip installs if not existed
|
# Install uv for faster pip installs if not existed
|
||||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
if ! python3 -m uv --version >/dev/null 2>&1; then \
|
if ! python3 -m uv --version >/dev/null 2>&1; then \
|
||||||
@ -202,7 +208,7 @@ ARG max_jobs=16
|
|||||||
ENV MAX_JOBS=${max_jobs}
|
ENV MAX_JOBS=${max_jobs}
|
||||||
ARG nvcc_threads=4
|
ARG nvcc_threads=4
|
||||||
ENV NVCC_THREADS=$nvcc_threads
|
ENV NVCC_THREADS=$nvcc_threads
|
||||||
ARG torch_cuda_arch_list='8.0 8.6 8.9 9.0'
|
ARG torch_cuda_arch_list='8.0;8.6;8.9;9.0'
|
||||||
ENV TORCH_CUDA_ARCH_LIST=${torch_cuda_arch_list}
|
ENV TORCH_CUDA_ARCH_LIST=${torch_cuda_arch_list}
|
||||||
|
|
||||||
ARG USE_SCCACHE
|
ARG USE_SCCACHE
|
||||||
@ -214,16 +220,11 @@ ARG SCCACHE_S3_NO_CREDENTIALS=0
|
|||||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
--mount=type=bind,source=.git,target=.git \
|
--mount=type=bind,source=.git,target=.git \
|
||||||
if [ "$USE_SCCACHE" = "1" ]; then \
|
if [ "$USE_SCCACHE" = "1" ]; then \
|
||||||
echo "Installing sccache..."; \
|
echo "Installing sccache..." \
|
||||||
if [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
|
&& curl -L -o sccache.tar.gz https://github.com/mozilla/sccache/releases/download/v0.8.1/sccache-v0.8.1-x86_64-unknown-linux-musl.tar.gz \
|
||||||
SCCACHE_ARCHIVE="sccache-v0.8.1-aarch64-unknown-linux-musl"; \
|
|
||||||
else \
|
|
||||||
SCCACHE_ARCHIVE="sccache-v0.8.1-x86_64-unknown-linux-musl"; \
|
|
||||||
fi; \
|
|
||||||
curl -L -o sccache.tar.gz "https://github.com/mozilla/sccache/releases/download/v0.8.1/${SCCACHE_ARCHIVE}.tar.gz" \
|
|
||||||
&& tar -xzf sccache.tar.gz \
|
&& tar -xzf sccache.tar.gz \
|
||||||
&& sudo mv "${SCCACHE_ARCHIVE}"/sccache /usr/bin/sccache \
|
&& sudo mv sccache-v0.8.1-x86_64-unknown-linux-musl/sccache /usr/bin/sccache \
|
||||||
&& rm -rf sccache.tar.gz "${SCCACHE_ARCHIVE}" \
|
&& rm -rf sccache.tar.gz sccache-v0.8.1-x86_64-unknown-linux-musl \
|
||||||
&& export SCCACHE_BUCKET=${SCCACHE_BUCKET_NAME} \
|
&& export SCCACHE_BUCKET=${SCCACHE_BUCKET_NAME} \
|
||||||
&& export SCCACHE_REGION=${SCCACHE_REGION_NAME} \
|
&& export SCCACHE_REGION=${SCCACHE_REGION_NAME} \
|
||||||
&& export SCCACHE_S3_NO_CREDENTIALS=${SCCACHE_S3_NO_CREDENTIALS} \
|
&& export SCCACHE_S3_NO_CREDENTIALS=${SCCACHE_S3_NO_CREDENTIALS} \
|
||||||
@ -284,7 +285,7 @@ RUN if command -v apt-get >/dev/null; then \
|
|||||||
&& ln -sf /usr/bin/python${PYTHON_VERSION}-config /usr/bin/python3-config \
|
&& ln -sf /usr/bin/python${PYTHON_VERSION}-config /usr/bin/python3-config \
|
||||||
&& curl -sS ${GET_PIP_URL} | python${PYTHON_VERSION}; \
|
&& curl -sS ${GET_PIP_URL} | python${PYTHON_VERSION}; \
|
||||||
else \
|
else \
|
||||||
dnf install -y git curl wget sudo; \
|
dnf install -y git curl wget sudo vim; \
|
||||||
fi \
|
fi \
|
||||||
&& python3 --version && python3 -m pip --version
|
&& python3 --version && python3 -m pip --version
|
||||||
|
|
||||||
@ -297,28 +298,22 @@ RUN echo "[INFO] Listing current directory before torch install step:" && \
|
|||||||
echo "[INFO] Showing torch_build_versions.txt content:" && \
|
echo "[INFO] Showing torch_build_versions.txt content:" && \
|
||||||
cat torch_build_versions.txt
|
cat torch_build_versions.txt
|
||||||
|
|
||||||
# Install build and runtime dependencies, this is needed for flashinfer install
|
# Workaround for https://github.com/openai/triton/issues/2507 and
|
||||||
COPY requirements/build.txt requirements/build.txt
|
# https://github.com/pytorch/pytorch/issues/107960 -- hopefully
|
||||||
COPY use_existing_torch.py use_existing_torch.py
|
# this won't be needed for future versions of this docker image
|
||||||
RUN python3 use_existing_torch.py
|
# or future versions of triton.
|
||||||
RUN cat requirements/build.txt
|
RUN ldconfig /usr/local/cuda-$(echo $CUDA_VERSION | cut -d. -f1,2)/compat/
|
||||||
|
|
||||||
# Install uv for faster pip installs if not existed
|
# Install uv for faster pip installs if not existed
|
||||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
if ! python3 -m uv --version > /dev/null 2>&1; then \
|
if ! python3 -m uv --version > /dev/null 2>&1; then \
|
||||||
python3 -m pip install uv==0.8.4; \
|
python3 -m pip install uv==0.8.4; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ENV UV_HTTP_TIMEOUT=500
|
ENV UV_HTTP_TIMEOUT=500
|
||||||
ENV UV_INDEX_STRATEGY="unsafe-best-match"
|
ENV UV_INDEX_STRATEGY="unsafe-best-match"
|
||||||
# Use copy mode to avoid hardlink failures with Docker cache mounts
|
# Use copy mode to avoid hardlink failures with Docker cache mounts
|
||||||
ENV UV_LINK_MODE=copy
|
ENV UV_LINK_MODE=copy
|
||||||
|
|
||||||
|
|
||||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
||||||
uv pip install --system -r requirements/build.txt
|
|
||||||
|
|
||||||
|
|
||||||
# Default mount file as placeholder, this just avoid the mount error
|
# Default mount file as placeholder, this just avoid the mount error
|
||||||
ARG TORCH_WHEELS_PATH="./requirements"
|
ARG TORCH_WHEELS_PATH="./requirements"
|
||||||
# Install torch, torchaudio and torchvision
|
# Install torch, torchaudio and torchvision
|
||||||
@ -344,11 +339,13 @@ RUN --mount=type=cache,target=/root/.cache/uv \
|
|||||||
# Install xformers wheel from previous stage
|
# Install xformers wheel from previous stage
|
||||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
uv pip install --system /wheels/xformers/*.whl --verbose
|
uv pip install --system /wheels/xformers/*.whl --verbose
|
||||||
|
|
||||||
# Build flashinfer from source.
|
# Build flashinfer from source.
|
||||||
ARG torch_cuda_arch_list='8.0;8.9;9.0a;10.0a;12.0'
|
ARG torch_cuda_arch_list='8.0;8.9;9.0a;10.0a;12.0'
|
||||||
# install package for build flashinfer
|
# install package for build flashinfer
|
||||||
# see issue: https://github.com/flashinfer-ai/flashinfer/issues/738
|
# see issue: https://github.com/flashinfer-ai/flashinfer/issues/738
|
||||||
|
|
||||||
|
RUN pip install build==1.3.0
|
||||||
RUN pip freeze | grep -E 'setuptools|packaging|build'
|
RUN pip freeze | grep -E 'setuptools|packaging|build'
|
||||||
|
|
||||||
ENV TORCH_CUDA_ARCH_LIST=${torch_cuda_arch_list}
|
ENV TORCH_CUDA_ARCH_LIST=${torch_cuda_arch_list}
|
||||||
|
@ -1,14 +1,9 @@
|
|||||||
import glob
|
import glob
|
||||||
import os
|
|
||||||
|
|
||||||
|
|
||||||
requires_files = glob.glob("requirements/*.txt")
|
requires_files = glob.glob("requirements/*.txt")
|
||||||
requires_files += ["pyproject.toml"]
|
requires_files += ["pyproject.toml"]
|
||||||
|
|
||||||
for file in requires_files:
|
for file in requires_files:
|
||||||
if not os.path.exists(file):
|
|
||||||
print(f"!!! skipping missing {file}")
|
|
||||||
continue
|
|
||||||
print(f">>> cleaning {file}")
|
print(f">>> cleaning {file}")
|
||||||
with open(file) as f:
|
with open(file) as f:
|
||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
|
3
.github/labeler.yml
vendored
3
.github/labeler.yml
vendored
@ -130,6 +130,3 @@
|
|||||||
- torch/csrc/inductor/aoti_include/**
|
- torch/csrc/inductor/aoti_include/**
|
||||||
- torchgen/aoti/**
|
- torchgen/aoti/**
|
||||||
- torchgen/gen_aoti_c_shim.py
|
- torchgen/gen_aoti_c_shim.py
|
||||||
|
|
||||||
"ciflow/vllm":
|
|
||||||
- .github/ci_commit_pins/vllm.txt
|
|
||||||
|
15
.github/merge_rules.yaml
vendored
15
.github/merge_rules.yaml
vendored
@ -525,21 +525,6 @@
|
|||||||
- Lint
|
- Lint
|
||||||
- pull
|
- pull
|
||||||
|
|
||||||
- name: typechecking
|
|
||||||
patterns:
|
|
||||||
- 'pyrefly.toml'
|
|
||||||
- 'mypy.ini'
|
|
||||||
- 'mypy-strict.ini'
|
|
||||||
approved_by:
|
|
||||||
- lolpack
|
|
||||||
- maggiemoss
|
|
||||||
- ndmitchell
|
|
||||||
- kinto0
|
|
||||||
mandatory_checks_name:
|
|
||||||
- EasyCLA
|
|
||||||
- Lint
|
|
||||||
- pull
|
|
||||||
|
|
||||||
- name: superuser
|
- name: superuser
|
||||||
patterns:
|
patterns:
|
||||||
- '*'
|
- '*'
|
||||||
|
39
.github/pytorch-probot.yml
vendored
39
.github/pytorch-probot.yml
vendored
@ -1,44 +1,41 @@
|
|||||||
tracking_issue: 24422
|
tracking_issue: 24422
|
||||||
ciflow_tracking_issue: 64124
|
ciflow_tracking_issue: 64124
|
||||||
ciflow_push_tags:
|
ciflow_push_tags:
|
||||||
- ciflow/b200
|
|
||||||
- ciflow/b200-symm-mem
|
|
||||||
- ciflow/binaries
|
- ciflow/binaries
|
||||||
- ciflow/binaries_libtorch
|
- ciflow/binaries_libtorch
|
||||||
- ciflow/binaries_wheel
|
- ciflow/binaries_wheel
|
||||||
- ciflow/h100
|
- ciflow/triton_binaries
|
||||||
- ciflow/h100-cutlass-backend
|
|
||||||
- ciflow/h100-distributed
|
|
||||||
- ciflow/h100-symm-mem
|
|
||||||
- ciflow/inductor
|
- ciflow/inductor
|
||||||
- ciflow/inductor-cu126
|
|
||||||
- ciflow/inductor-micro-benchmark
|
|
||||||
- ciflow/inductor-micro-benchmark-cpu-x86
|
|
||||||
- ciflow/inductor-perf-compare
|
|
||||||
- ciflow/inductor-perf-test-nightly-rocm
|
|
||||||
- ciflow/inductor-perf-test-nightly-x86-zen
|
|
||||||
- ciflow/inductor-periodic
|
- ciflow/inductor-periodic
|
||||||
- ciflow/inductor-rocm
|
- ciflow/inductor-rocm
|
||||||
|
- ciflow/inductor-perf-test-nightly-rocm
|
||||||
|
- ciflow/inductor-perf-compare
|
||||||
|
- ciflow/inductor-micro-benchmark
|
||||||
|
- ciflow/inductor-micro-benchmark-cpu-x86
|
||||||
|
- ciflow/inductor-perf-test-nightly-x86-zen
|
||||||
|
- ciflow/inductor-cu126
|
||||||
- ciflow/linux-aarch64
|
- ciflow/linux-aarch64
|
||||||
- ciflow/mps
|
- ciflow/mps
|
||||||
- ciflow/nightly
|
- ciflow/nightly
|
||||||
- ciflow/op-benchmark
|
|
||||||
- ciflow/periodic
|
- ciflow/periodic
|
||||||
- ciflow/periodic-rocm-mi300
|
- ciflow/periodic-rocm-mi300
|
||||||
- ciflow/pull
|
|
||||||
- ciflow/quantization-periodic
|
|
||||||
- ciflow/riscv64
|
|
||||||
- ciflow/rocm
|
- ciflow/rocm
|
||||||
- ciflow/rocm-mi300
|
- ciflow/rocm-mi300
|
||||||
- ciflow/s390
|
- ciflow/s390
|
||||||
|
- ciflow/riscv64
|
||||||
- ciflow/slow
|
- ciflow/slow
|
||||||
- ciflow/torchbench
|
|
||||||
- ciflow/triton_binaries
|
|
||||||
- ciflow/trunk
|
- ciflow/trunk
|
||||||
- ciflow/unstable
|
- ciflow/unstable
|
||||||
- ciflow/vllm
|
|
||||||
- ciflow/win-arm64
|
|
||||||
- ciflow/xpu
|
- ciflow/xpu
|
||||||
|
- ciflow/vllm
|
||||||
|
- ciflow/torchbench
|
||||||
|
- ciflow/op-benchmark
|
||||||
|
- ciflow/pull
|
||||||
|
- ciflow/h100
|
||||||
|
- ciflow/h100-distributed
|
||||||
|
- ciflow/win-arm64
|
||||||
|
- ciflow/h100-symm-mem
|
||||||
|
- ciflow/h100-cutlass-backend
|
||||||
retryable_workflows:
|
retryable_workflows:
|
||||||
- pull
|
- pull
|
||||||
- trunk
|
- trunk
|
||||||
@ -47,4 +44,4 @@ retryable_workflows:
|
|||||||
- inductor-A100-perf-nightly
|
- inductor-A100-perf-nightly
|
||||||
labeler_config: labeler.yml
|
labeler_config: labeler.yml
|
||||||
label_to_label_config: label_to_label.yml
|
label_to_label_config: label_to_label.yml
|
||||||
mergebot: true
|
mergebot: True
|
||||||
|
36
.github/requirements/pip-requirements-macOS.txt
vendored
Normal file
36
.github/requirements/pip-requirements-macOS.txt
vendored
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
boto3==1.35.42
|
||||||
|
cmake==3.27.*
|
||||||
|
expecttest==0.3.0
|
||||||
|
fbscribelogger==0.1.7
|
||||||
|
filelock==3.18.0
|
||||||
|
hypothesis==6.56.4
|
||||||
|
librosa>=0.6.2
|
||||||
|
mpmath==1.3.0
|
||||||
|
networkx==2.8.7
|
||||||
|
ninja==1.10.2.4
|
||||||
|
numba==0.59.0
|
||||||
|
numpy==1.26.4
|
||||||
|
opt-einsum>=3.3
|
||||||
|
optree==0.13.0
|
||||||
|
packaging==23.1
|
||||||
|
parameterized==0.8.1
|
||||||
|
pillow==10.3.0
|
||||||
|
protobuf==5.29.5
|
||||||
|
psutil==5.9.8
|
||||||
|
pygments==2.15.0
|
||||||
|
pytest-cpp==2.3.0
|
||||||
|
pytest-flakefinder==1.1.0
|
||||||
|
pytest-rerunfailures==10.3
|
||||||
|
pytest-subtests==0.13.1
|
||||||
|
pytest-xdist==3.3.1
|
||||||
|
pytest==7.3.2
|
||||||
|
pyyaml==6.0.2
|
||||||
|
scipy==1.12.0
|
||||||
|
setuptools==78.1.1
|
||||||
|
sympy==1.13.3
|
||||||
|
tlparse==0.4.0
|
||||||
|
tensorboard==2.13.0
|
||||||
|
typing-extensions==4.12.2
|
||||||
|
unittest-xml-reporting<=3.2.0,>=2.0.0
|
||||||
|
xdoctest==1.1.0
|
||||||
|
z3-solver==4.15.1.0
|
6
.github/scripts/filter_test_configs.py
vendored
6
.github/scripts/filter_test_configs.py
vendored
@ -502,7 +502,6 @@ def perform_misc_tasks(
|
|||||||
job_name: str,
|
job_name: str,
|
||||||
pr_body: str,
|
pr_body: str,
|
||||||
branch: Optional[str] = None,
|
branch: Optional[str] = None,
|
||||||
tag: Optional[str] = None,
|
|
||||||
) -> None:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
In addition to apply the filter logic, the script also does the following
|
In addition to apply the filter logic, the script also does the following
|
||||||
@ -510,9 +509,7 @@ def perform_misc_tasks(
|
|||||||
"""
|
"""
|
||||||
set_output(
|
set_output(
|
||||||
"keep-going",
|
"keep-going",
|
||||||
branch == MAIN_BRANCH
|
branch == MAIN_BRANCH or check_for_setting(labels, pr_body, "keep-going"),
|
||||||
or bool(tag and re.match(r"^trunk/[a-f0-9]{40}$", tag))
|
|
||||||
or check_for_setting(labels, pr_body, "keep-going"),
|
|
||||||
)
|
)
|
||||||
set_output(
|
set_output(
|
||||||
"ci-verbose-test-logs",
|
"ci-verbose-test-logs",
|
||||||
@ -637,7 +634,6 @@ def main() -> None:
|
|||||||
job_name=args.job_name,
|
job_name=args.job_name,
|
||||||
pr_body=pr_body if pr_body else "",
|
pr_body=pr_body if pr_body else "",
|
||||||
branch=args.branch,
|
branch=args.branch,
|
||||||
tag=tag,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Set the filtered test matrix as the output
|
# Set the filtered test matrix as the output
|
||||||
|
@ -30,7 +30,7 @@ CUDA_ARCHES_CUDNN_VERSION = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# NOTE: Please also update the ROCm sources in `PIP_SOURCES` in tools/nightly.py when changing this
|
# NOTE: Please also update the ROCm sources in `PIP_SOURCES` in tools/nightly.py when changing this
|
||||||
ROCM_ARCHES = ["6.4", "7.0"]
|
ROCM_ARCHES = ["6.3", "6.4"]
|
||||||
|
|
||||||
XPU_ARCHES = ["xpu"]
|
XPU_ARCHES = ["xpu"]
|
||||||
|
|
||||||
|
93
.github/scripts/generate_ci_workflows.py
vendored
93
.github/scripts/generate_ci_workflows.py
vendored
@ -127,6 +127,53 @@ LINUX_BINARY_BUILD_WORFKLOWS = [
|
|||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
ROCM_SMOKE_WORKFLOWS = [
|
||||||
|
BinaryBuildWorkflow(
|
||||||
|
os=OperatingSystem.LINUX,
|
||||||
|
package_type="manywheel",
|
||||||
|
build_variant="rocm",
|
||||||
|
build_configs=generate_binary_build_matrix.generate_wheels_matrix(
|
||||||
|
OperatingSystem.LINUX,
|
||||||
|
arches=["6.4"],
|
||||||
|
python_versions=["3.9"],
|
||||||
|
),
|
||||||
|
ciflow_config=CIFlowConfig(
|
||||||
|
labels={
|
||||||
|
LABEL_CIFLOW_BINARIES,
|
||||||
|
LABEL_CIFLOW_BINARIES_WHEEL,
|
||||||
|
LABEL_CIFLOW_ROCM,
|
||||||
|
},
|
||||||
|
isolated_workflow=True,
|
||||||
|
),
|
||||||
|
branches="main",
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
|
LINUX_BINARY_SMOKE_WORKFLOWS = [
|
||||||
|
BinaryBuildWorkflow(
|
||||||
|
os=OperatingSystem.LINUX,
|
||||||
|
package_type="manywheel",
|
||||||
|
build_configs=generate_binary_build_matrix.generate_wheels_matrix(
|
||||||
|
OperatingSystem.LINUX,
|
||||||
|
arches=["12.8"],
|
||||||
|
python_versions=["3.12"],
|
||||||
|
),
|
||||||
|
branches="main",
|
||||||
|
),
|
||||||
|
BinaryBuildWorkflow(
|
||||||
|
os=OperatingSystem.LINUX,
|
||||||
|
package_type="libtorch",
|
||||||
|
build_variant=generate_binary_build_matrix.RELEASE,
|
||||||
|
build_configs=generate_binary_build_matrix.generate_libtorch_matrix(
|
||||||
|
OperatingSystem.LINUX,
|
||||||
|
generate_binary_build_matrix.RELEASE,
|
||||||
|
arches=["cpu"],
|
||||||
|
libtorch_variants=["shared-with-deps"],
|
||||||
|
),
|
||||||
|
branches="main",
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
WINDOWS_BINARY_BUILD_WORKFLOWS = [
|
WINDOWS_BINARY_BUILD_WORKFLOWS = [
|
||||||
BinaryBuildWorkflow(
|
BinaryBuildWorkflow(
|
||||||
os=OperatingSystem.WINDOWS,
|
os=OperatingSystem.WINDOWS,
|
||||||
@ -212,6 +259,39 @@ WINDOWS_BINARY_BUILD_WORKFLOWS = [
|
|||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
WINDOWS_BINARY_SMOKE_WORKFLOWS = [
|
||||||
|
BinaryBuildWorkflow(
|
||||||
|
os=OperatingSystem.WINDOWS,
|
||||||
|
package_type="libtorch",
|
||||||
|
build_variant=generate_binary_build_matrix.RELEASE,
|
||||||
|
build_configs=generate_binary_build_matrix.generate_libtorch_matrix(
|
||||||
|
OperatingSystem.WINDOWS,
|
||||||
|
generate_binary_build_matrix.RELEASE,
|
||||||
|
arches=["cpu"],
|
||||||
|
libtorch_variants=["shared-with-deps"],
|
||||||
|
),
|
||||||
|
branches="main",
|
||||||
|
ciflow_config=CIFlowConfig(
|
||||||
|
isolated_workflow=True,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
BinaryBuildWorkflow(
|
||||||
|
os=OperatingSystem.WINDOWS,
|
||||||
|
package_type="libtorch",
|
||||||
|
build_variant=generate_binary_build_matrix.DEBUG,
|
||||||
|
build_configs=generate_binary_build_matrix.generate_libtorch_matrix(
|
||||||
|
OperatingSystem.WINDOWS,
|
||||||
|
generate_binary_build_matrix.DEBUG,
|
||||||
|
arches=["cpu"],
|
||||||
|
libtorch_variants=["shared-with-deps"],
|
||||||
|
),
|
||||||
|
branches="main",
|
||||||
|
ciflow_config=CIFlowConfig(
|
||||||
|
isolated_workflow=True,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
MACOS_BINARY_BUILD_WORKFLOWS = [
|
MACOS_BINARY_BUILD_WORKFLOWS = [
|
||||||
BinaryBuildWorkflow(
|
BinaryBuildWorkflow(
|
||||||
os=OperatingSystem.MACOS_ARM64,
|
os=OperatingSystem.MACOS_ARM64,
|
||||||
@ -292,10 +372,23 @@ def main() -> None:
|
|||||||
jinja_env.get_template("linux_binary_build_workflow.yml.j2"),
|
jinja_env.get_template("linux_binary_build_workflow.yml.j2"),
|
||||||
S390X_BINARY_BUILD_WORKFLOWS,
|
S390X_BINARY_BUILD_WORKFLOWS,
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
# Give rocm it's own workflow file
|
||||||
|
jinja_env.get_template("linux_binary_build_workflow.yml.j2"),
|
||||||
|
ROCM_SMOKE_WORKFLOWS,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
jinja_env.get_template("linux_binary_build_workflow.yml.j2"),
|
||||||
|
LINUX_BINARY_SMOKE_WORKFLOWS,
|
||||||
|
),
|
||||||
(
|
(
|
||||||
jinja_env.get_template("windows_binary_build_workflow.yml.j2"),
|
jinja_env.get_template("windows_binary_build_workflow.yml.j2"),
|
||||||
WINDOWS_BINARY_BUILD_WORKFLOWS,
|
WINDOWS_BINARY_BUILD_WORKFLOWS,
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
jinja_env.get_template("windows_binary_build_workflow.yml.j2"),
|
||||||
|
WINDOWS_BINARY_SMOKE_WORKFLOWS,
|
||||||
|
),
|
||||||
(
|
(
|
||||||
jinja_env.get_template("macos_binary_build_workflow.yml.j2"),
|
jinja_env.get_template("macos_binary_build_workflow.yml.j2"),
|
||||||
MACOS_BINARY_BUILD_WORKFLOWS,
|
MACOS_BINARY_BUILD_WORKFLOWS,
|
||||||
|
3
.github/scripts/prepare_vllm_wheels.sh
vendored
3
.github/scripts/prepare_vllm_wheels.sh
vendored
@ -84,9 +84,6 @@ repackage_wheel() {
|
|||||||
rm -rf $package
|
rm -rf $package
|
||||||
}
|
}
|
||||||
|
|
||||||
# Require to re-package the wheel
|
|
||||||
${PYTHON_EXECUTABLE} -mpip install wheel==0.45.1
|
|
||||||
|
|
||||||
pushd externals/vllm/wheels
|
pushd externals/vllm/wheels
|
||||||
for package in xformers flashinfer-python vllm; do
|
for package in xformers flashinfer-python vllm; do
|
||||||
repackage_wheel $package
|
repackage_wheel $package
|
||||||
|
@ -71,15 +71,12 @@ jobs:
|
|||||||
with:!{{ upload.binary_env_as_input(config) }}
|
with:!{{ upload.binary_env_as_input(config) }}
|
||||||
{%- if "aarch64" in build_environment %}
|
{%- if "aarch64" in build_environment %}
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
{%- elif "s390x" in build_environment %}
|
{%- elif "s390x" in build_environment %}
|
||||||
runs_on: linux.s390x
|
runs_on: linux.s390x
|
||||||
ALPINE_IMAGE: "docker.io/s390x/alpine"
|
ALPINE_IMAGE: "docker.io/s390x/alpine"
|
||||||
timeout-minutes: 420
|
timeout-minutes: 420
|
||||||
{%- elif config["gpu_arch_type"] == "rocm" %}
|
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
|
||||||
timeout-minutes: 300
|
|
||||||
{%- elif "conda" in build_environment and config["gpu_arch_type"] == "cuda" %}
|
{%- elif "conda" in build_environment and config["gpu_arch_type"] == "cuda" %}
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.24xlarge.ephemeral
|
runs_on: linux.24xlarge.ephemeral
|
||||||
|
2
.github/workflows/_binary-test-linux.yml
vendored
2
.github/workflows/_binary-test-linux.yml
vendored
@ -187,6 +187,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Install nvidia driver, nvidia-docker runtime, set GPU_FLAG
|
- name: Install nvidia driver, nvidia-docker runtime, set GPU_FLAG
|
||||||
uses: pytorch/test-infra/.github/actions/setup-nvidia@main
|
uses: pytorch/test-infra/.github/actions/setup-nvidia@main
|
||||||
|
with:
|
||||||
|
driver-version: ${{ startsWith(inputs.GPU_ARCH_VERSION, '13') && '580.65.06' || '570.133.07' }}
|
||||||
if: ${{ inputs.GPU_ARCH_TYPE == 'cuda' && steps.filter.outputs.is-test-matrix-empty == 'False' }}
|
if: ${{ inputs.GPU_ARCH_TYPE == 'cuda' && steps.filter.outputs.is-test-matrix-empty == 'False' }}
|
||||||
|
|
||||||
- name: configure aws credentials
|
- name: configure aws credentials
|
||||||
|
16
.github/workflows/_docs.yml
vendored
16
.github/workflows/_docs.yml
vendored
@ -67,7 +67,7 @@ jobs:
|
|||||||
# an OOM issue when running the job, so this upgrades the runner from 4xlarge
|
# an OOM issue when running the job, so this upgrades the runner from 4xlarge
|
||||||
# to the next available tier of 12xlarge. So much memory just to generate cpp
|
# to the next available tier of 12xlarge. So much memory just to generate cpp
|
||||||
# doc
|
# doc
|
||||||
runner: ${{ inputs.runner_prefix }}linux.12xlarge.memory
|
runner: ${{ inputs.runner_prefix }}linux.12xlarge
|
||||||
# TODO: Nightly cpp docs take longer and longer to finish (more than 3h now)
|
# TODO: Nightly cpp docs take longer and longer to finish (more than 3h now)
|
||||||
# Let's try to figure out how this can be improved
|
# Let's try to figure out how this can be improved
|
||||||
timeout-minutes: 360
|
timeout-minutes: 360
|
||||||
@ -75,6 +75,10 @@ jobs:
|
|||||||
runner: ${{ inputs.runner_prefix }}linux.2xlarge
|
runner: ${{ inputs.runner_prefix }}linux.2xlarge
|
||||||
# It takes less than 30m to finish python docs unless there are issues
|
# It takes less than 30m to finish python docs unless there are issues
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
|
- docs_type: functorch
|
||||||
|
runner: ${{ inputs.runner_prefix }}linux.2xlarge
|
||||||
|
# It takes less than 15m to finish functorch docs unless there are issues
|
||||||
|
timeout-minutes: 15
|
||||||
# Set a fixed name for this job instead of using the current matrix-generated name, i.e. build-docs (cpp, linux.12xlarge, 180)
|
# Set a fixed name for this job instead of using the current matrix-generated name, i.e. build-docs (cpp, linux.12xlarge, 180)
|
||||||
# The current name requires updating the database last docs push query from test-infra every time the matrix is updated
|
# The current name requires updating the database last docs push query from test-infra every time the matrix is updated
|
||||||
name: build-docs-${{ matrix.docs_type }}-${{ inputs.push }}
|
name: build-docs-${{ matrix.docs_type }}-${{ inputs.push }}
|
||||||
@ -207,6 +211,16 @@ jobs:
|
|||||||
path: cppdocs/
|
path: cppdocs/
|
||||||
s3-prefix: pytorch/pytorch/${{ github.event.pull_request.number }}/cppdocs
|
s3-prefix: pytorch/pytorch/${{ github.event.pull_request.number }}/cppdocs
|
||||||
|
|
||||||
|
- name: Upload functorch Docs Preview
|
||||||
|
uses: seemethere/upload-artifact-s3@baba72d0712b404f646cebe0730933554ebce96a # v5.1.0
|
||||||
|
if: ${{ github.event_name == 'pull_request' && matrix.docs_type == 'functorch' && steps.build-docs.outcome == 'success' }}
|
||||||
|
with:
|
||||||
|
retention-days: 14
|
||||||
|
s3-bucket: doc-previews
|
||||||
|
if-no-files-found: error
|
||||||
|
path: functorch_ghpages/nightly/
|
||||||
|
s3-prefix: pytorch/pytorch/${{ github.event.pull_request.number }}/functorchdocs
|
||||||
|
|
||||||
- name: Teardown Linux
|
- name: Teardown Linux
|
||||||
uses: pytorch/test-infra/.github/actions/teardown-linux@main
|
uses: pytorch/test-infra/.github/actions/teardown-linux@main
|
||||||
if: always()
|
if: always()
|
||||||
|
37
.github/workflows/_get-changed-files.yml
vendored
37
.github/workflows/_get-changed-files.yml
vendored
@ -2,12 +2,6 @@ name: Get Changed Files
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_call:
|
workflow_call:
|
||||||
inputs:
|
|
||||||
all_files:
|
|
||||||
description: "Whether to return all files instead of just changed files"
|
|
||||||
required: false
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
outputs:
|
outputs:
|
||||||
changed-files:
|
changed-files:
|
||||||
description: "List of changed files (space-separated) or '*' if not in a PR"
|
description: "List of changed files (space-separated) or '*' if not in a PR"
|
||||||
@ -32,32 +26,17 @@ jobs:
|
|||||||
# Get the PR number from the github context
|
# Get the PR number from the github context
|
||||||
PR_NUMBER="${{ github.event.number }}"
|
PR_NUMBER="${{ github.event.number }}"
|
||||||
|
|
||||||
# Check if all_files is requested
|
# Use gh CLI to get changed files in the PR with explicit repo
|
||||||
if [ "${{ inputs.all_files }}" = "true" ]; then
|
CHANGED_FILES=$(gh api repos/${{ github.repository }}/pulls/$PR_NUMBER/files --paginate --jq '.[] | select(.status != "removed") | .filename' | tr '\n' ' ' | sed 's/ $//')
|
||||||
echo "all_files input is true, returning all files"
|
|
||||||
echo "changed-files=*" >> "$GITHUB_OUTPUT"
|
|
||||||
else
|
|
||||||
# Use gh CLI to get changed files in the PR with explicit repo
|
|
||||||
CHANGED_FILES=$(gh api repos/${{ github.repository }}/pulls/$PR_NUMBER/files --paginate --jq '.[] | select(.status != "removed") | .filename' | tr '\n' ' ' | sed 's/ $//')
|
|
||||||
|
|
||||||
# See https://github.com/pytorch/pytorch/pull/134215#issuecomment-2332128790
|
if [ -z "$CHANGED_FILES" ]; then
|
||||||
PYI_FILES_TO_ADD=""
|
echo "No changed files found, setting to '*'"
|
||||||
for file in ${CHANGED_FILES}; do
|
CHANGED_FILES="*"
|
||||||
if [[ "${file}" == *".pyi.in" ]]; then
|
|
||||||
PYI_FILES_TO_ADD="${PYI_FILES_TO_ADD} ${file//.in/}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
CHANGED_FILES="${CHANGED_FILES}${PYI_FILES_TO_ADD}"
|
|
||||||
|
|
||||||
if [ -z "$CHANGED_FILES" ]; then
|
|
||||||
echo "No changed files found, setting to '*'"
|
|
||||||
CHANGED_FILES="*"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Changed files: $CHANGED_FILES"
|
|
||||||
echo "changed-files=$CHANGED_FILES" >> "$GITHUB_OUTPUT"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "Changed files: $CHANGED_FILES"
|
||||||
|
echo "changed-files=$CHANGED_FILES" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
else
|
else
|
||||||
echo "Not in PR context, setting changed files to '*'"
|
echo "Not in PR context, setting changed files to '*'"
|
||||||
echo "changed-files=*" >> "$GITHUB_OUTPUT"
|
echo "changed-files=*" >> "$GITHUB_OUTPUT"
|
||||||
|
255
.github/workflows/_linux-test-stable-fa3.yml
vendored
255
.github/workflows/_linux-test-stable-fa3.yml
vendored
@ -1,255 +0,0 @@
|
|||||||
# The point of this workflow is to test that a FA3 wheel that was built based off the
|
|
||||||
# stable ABI as of torch nightly 20250830 can still run on the newer torch.
|
|
||||||
#
|
|
||||||
# This workflow is very similar to the _linux-test.yml workflow, with the following
|
|
||||||
# differences:
|
|
||||||
# 1. It is simpler (there is no test matrix)
|
|
||||||
# 2. It pulls flash-attention as a secondary repository in order to access the tests.
|
|
||||||
# Note that it does not BUILD anything from flash-attention, as we have a prebuilt
|
|
||||||
# wheel. We pull flash-attention only to run a few tests.
|
|
||||||
# 3. It runs only FA3 tests. No PyTorch tests are run.
|
|
||||||
name: linux-test-stable-fa3
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
build-environment:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
description: Top-level label for what's being built/tested.
|
|
||||||
docker-image:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
description: Docker image to run in.
|
|
||||||
timeout-minutes:
|
|
||||||
required: false
|
|
||||||
type: number
|
|
||||||
default: 30
|
|
||||||
description: |
|
|
||||||
Set the maximum (in minutes) how long the workflow should take to finish
|
|
||||||
s3-bucket:
|
|
||||||
description: S3 bucket to download artifact
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
default: "gha-artifacts"
|
|
||||||
secrets:
|
|
||||||
HUGGING_FACE_HUB_TOKEN:
|
|
||||||
required: false
|
|
||||||
description: |
|
|
||||||
HF Auth token to avoid rate limits when downloading models or datasets from hub
|
|
||||||
VLLM_TEST_HUGGING_FACE_TOKEN:
|
|
||||||
required: false
|
|
||||||
description: |
|
|
||||||
HF Auth token to test vllm
|
|
||||||
SCRIBE_GRAPHQL_ACCESS_TOKEN:
|
|
||||||
required: false
|
|
||||||
description: |
|
|
||||||
FB app token to write to scribe endpoint
|
|
||||||
|
|
||||||
env:
|
|
||||||
GIT_DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
# Don't run on forked repos
|
|
||||||
if: github.repository_owner == 'pytorch'
|
|
||||||
runs-on: linux.aws.h100
|
|
||||||
timeout-minutes: ${{ inputs.timeout-minutes || 30 }}
|
|
||||||
permissions:
|
|
||||||
id-token: write
|
|
||||||
contents: read
|
|
||||||
steps:
|
|
||||||
- name: Checkout PyTorch
|
|
||||||
uses: pytorch/pytorch/.github/actions/checkout-pytorch@main
|
|
||||||
with:
|
|
||||||
no-sudo: true
|
|
||||||
|
|
||||||
- name: Checkout flash-attention as a secondary repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
repository: Dao-AILab/flash-attention
|
|
||||||
path: flash-attention
|
|
||||||
|
|
||||||
- name: Setup Linux
|
|
||||||
uses: ./.github/actions/setup-linux
|
|
||||||
|
|
||||||
- name: Calculate docker image
|
|
||||||
id: calculate-docker-image
|
|
||||||
uses: pytorch/test-infra/.github/actions/calculate-docker-image@main
|
|
||||||
with:
|
|
||||||
docker-image-name: ${{ inputs.docker-image }}
|
|
||||||
|
|
||||||
- name: Use following to pull public copy of the image
|
|
||||||
id: print-ghcr-mirror
|
|
||||||
env:
|
|
||||||
ECR_DOCKER_IMAGE: ${{ steps.calculate-docker-image.outputs.docker-image }}
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
tag=${ECR_DOCKER_IMAGE##*:}
|
|
||||||
echo "docker pull ghcr.io/pytorch/ci-image:${tag/:/-}"
|
|
||||||
|
|
||||||
- name: Pull docker image
|
|
||||||
uses: pytorch/test-infra/.github/actions/pull-docker-image@main
|
|
||||||
with:
|
|
||||||
docker-image: ${{ steps.calculate-docker-image.outputs.docker-image }}
|
|
||||||
|
|
||||||
- name: Check if in a container runner
|
|
||||||
shell: bash
|
|
||||||
id: check_container_runner
|
|
||||||
run: echo "IN_CONTAINER_RUNNER=$(if [ -f /.inarc ] || [ -f /.incontainer ]; then echo true ; else echo false; fi)" >> "$GITHUB_OUTPUT"
|
|
||||||
|
|
||||||
- name: Setup GPU_FLAG for docker run
|
|
||||||
id: setup-gpu-flag
|
|
||||||
run: echo "GPU_FLAG=--gpus all -e NVIDIA_DRIVER_CAPABILITIES=all" >> "${GITHUB_ENV}"
|
|
||||||
|
|
||||||
- name: Setup SCCACHE_SERVER_PORT environment for docker run when on container
|
|
||||||
id: setup-sscache-port-flag
|
|
||||||
run: echo "SCCACHE_SERVER_PORT_DOCKER_FLAG=-e SCCACHE_SERVER_PORT=$((RUNNER_UID + 4226))" >> "${GITHUB_ENV}"
|
|
||||||
if: ${{ steps.check_container_runner.outputs.IN_CONTAINER_RUNNER == 'true' }}
|
|
||||||
|
|
||||||
- name: Get workflow job id
|
|
||||||
id: get-job-id
|
|
||||||
uses: ./.github/actions/get-workflow-job-id
|
|
||||||
if: always()
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Download build artifacts
|
|
||||||
uses: ./.github/actions/download-build-artifacts
|
|
||||||
with:
|
|
||||||
name: ${{ inputs.build-environment }}
|
|
||||||
s3-bucket: ${{ inputs.s3-bucket }}
|
|
||||||
|
|
||||||
- name: Parse ref
|
|
||||||
id: parse-ref
|
|
||||||
run: .github/scripts/parse_ref.py
|
|
||||||
|
|
||||||
- name: Set Test step time
|
|
||||||
id: test-timeout
|
|
||||||
shell: bash
|
|
||||||
env:
|
|
||||||
JOB_TIMEOUT: ${{ inputs.timeout-minutes }}
|
|
||||||
run: |
|
|
||||||
echo "timeout=$((JOB_TIMEOUT-30))" >> "${GITHUB_OUTPUT}"
|
|
||||||
|
|
||||||
- name: Preserve github env variables for use in docker
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
env | grep '^GITHUB' >> "/tmp/github_env_${GITHUB_RUN_ID}"
|
|
||||||
env | grep '^CI' >> "/tmp/github_env_${GITHUB_RUN_ID}"
|
|
||||||
|
|
||||||
- name: Test
|
|
||||||
id: test
|
|
||||||
timeout-minutes: ${{ fromJson(steps.test-timeout.outputs.timeout) }}
|
|
||||||
env:
|
|
||||||
BUILD_ENVIRONMENT: ${{ inputs.build-environment }}
|
|
||||||
PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
||||||
GITHUB_REPOSITORY: ${{ github.repository }}
|
|
||||||
GITHUB_WORKFLOW: ${{ github.workflow }}
|
|
||||||
GITHUB_JOB: ${{ github.job }}
|
|
||||||
GITHUB_RUN_ID: ${{ github.run_id }}
|
|
||||||
GITHUB_RUN_NUMBER: ${{ github.run_number }}
|
|
||||||
GITHUB_RUN_ATTEMPT: ${{ github.run_attempt }}
|
|
||||||
JOB_ID: ${{ steps.get-job-id.outputs.job-id }}
|
|
||||||
JOB_NAME: ${{ steps.get-job-id.outputs.job-name }}
|
|
||||||
BRANCH: ${{ steps.parse-ref.outputs.branch }}
|
|
||||||
SHA1: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
||||||
BASE_SHA: ${{ github.event.pull_request.base.sha || github.sha }}
|
|
||||||
SHM_SIZE: '2g'
|
|
||||||
DOCKER_IMAGE: ${{ inputs.docker-image }}
|
|
||||||
VLLM_TEST_HUGGING_FACE_TOKEN: ${{ secrets.VLLM_TEST_HUGGING_FACE_TOKEN }}
|
|
||||||
HUGGING_FACE_HUB_TOKEN: ${{ secrets.HUGGING_FACE_HUB_TOKEN }}
|
|
||||||
SCRIBE_GRAPHQL_ACCESS_TOKEN: ${{ secrets.SCRIBE_GRAPHQL_ACCESS_TOKEN }}
|
|
||||||
ARTIFACTS_FILE_SUFFIX: ${{ github.job }}-${{ steps.get-job-id.outputs.job-id }}
|
|
||||||
run: |
|
|
||||||
set -x
|
|
||||||
|
|
||||||
TEST_COMMAND=.ci/pytorch/test_fa3_abi_stable.sh
|
|
||||||
|
|
||||||
# Leaving 1GB for the runner and other things
|
|
||||||
TOTAL_AVAILABLE_MEMORY_IN_GB=$(awk '/MemTotal/ { printf "%.3f \n", $2/1024/1024 - 1 }' /proc/meminfo)
|
|
||||||
# https://docs.docker.com/engine/containers/resource_constraints/#--memory-swap-details, the 3GB swap
|
|
||||||
# comes from https://github.com/pytorch/test-infra/pull/6058
|
|
||||||
TOTAL_MEMORY_WITH_SWAP=$(("${TOTAL_AVAILABLE_MEMORY_IN_GB%.*}" + 3))
|
|
||||||
|
|
||||||
|
|
||||||
SHM_OPTS="--shm-size=${SHM_SIZE}"
|
|
||||||
JENKINS_USER="--user jenkins"
|
|
||||||
DOCKER_SHELL_CMD=
|
|
||||||
|
|
||||||
# detached container should get cleaned up by teardown_ec2_linux
|
|
||||||
# TODO: Stop building test binaries as part of the build phase
|
|
||||||
# Used for GPU_FLAG, SHM_OPTS, JENKINS_USER and DOCKER_SHELL_CMD since that doesn't play nice
|
|
||||||
# shellcheck disable=SC2086,SC2090
|
|
||||||
container_name=$(docker run \
|
|
||||||
${GPU_FLAG:-} \
|
|
||||||
${SCCACHE_SERVER_PORT_DOCKER_FLAG:-} \
|
|
||||||
-e BUILD_ENVIRONMENT \
|
|
||||||
-e PR_NUMBER \
|
|
||||||
-e GITHUB_ACTIONS \
|
|
||||||
-e GITHUB_REPOSITORY \
|
|
||||||
-e GITHUB_WORKFLOW \
|
|
||||||
-e GITHUB_JOB \
|
|
||||||
-e GITHUB_RUN_ID \
|
|
||||||
-e GITHUB_RUN_NUMBER \
|
|
||||||
-e GITHUB_RUN_ATTEMPT \
|
|
||||||
-e JOB_ID \
|
|
||||||
-e JOB_NAME \
|
|
||||||
-e BASE_SHA \
|
|
||||||
-e BRANCH \
|
|
||||||
-e SHA1 \
|
|
||||||
-e MAX_JOBS="$(nproc --ignore=2)" \
|
|
||||||
-e HUGGING_FACE_HUB_TOKEN \
|
|
||||||
-e VLLM_TEST_HUGGING_FACE_TOKEN \
|
|
||||||
-e SCRIBE_GRAPHQL_ACCESS_TOKEN \
|
|
||||||
-e ARTIFACTS_FILE_SUFFIX \
|
|
||||||
--memory="${TOTAL_AVAILABLE_MEMORY_IN_GB%.*}g" \
|
|
||||||
--memory-swap="${TOTAL_MEMORY_WITH_SWAP}g" \
|
|
||||||
--env-file="/tmp/github_env_${GITHUB_RUN_ID}" \
|
|
||||||
--security-opt seccomp=unconfined \
|
|
||||||
--cap-add=SYS_PTRACE \
|
|
||||||
--ipc=host \
|
|
||||||
${SHM_OPTS} \
|
|
||||||
--tty \
|
|
||||||
--detach \
|
|
||||||
--name="${container_name}" \
|
|
||||||
${JENKINS_USER} \
|
|
||||||
-v "${GITHUB_WORKSPACE}:/var/lib/jenkins/workspace" \
|
|
||||||
-w /var/lib/jenkins/workspace \
|
|
||||||
"${DOCKER_IMAGE}" \
|
|
||||||
${DOCKER_SHELL_CMD}
|
|
||||||
)
|
|
||||||
|
|
||||||
echo "DOCKER_CONTAINER_ID=${container_name}" >> "${GITHUB_ENV}"
|
|
||||||
|
|
||||||
docker exec -t "${container_name}" sh -c "python3 -m pip install $(echo dist/*.whl)[opt-einsum] && ${TEST_COMMAND}"
|
|
||||||
|
|
||||||
- name: Collect backtraces from coredumps (if any)
|
|
||||||
if: always()
|
|
||||||
run: |
|
|
||||||
# shellcheck disable=SC2156
|
|
||||||
find . -iname "core.[1-9]*" -exec docker exec "${DOCKER_CONTAINER_ID}" sh -c "gdb python {} -ex 'bt' -ex 'q'" \;
|
|
||||||
|
|
||||||
- name: Store Core dumps on S3
|
|
||||||
uses: seemethere/upload-artifact-s3@baba72d0712b404f646cebe0730933554ebce96a # v5.1.0
|
|
||||||
if: failure()
|
|
||||||
with:
|
|
||||||
name: coredumps-fa3-stable-abi-smoke-tests
|
|
||||||
retention-days: 14
|
|
||||||
if-no-files-found: ignore
|
|
||||||
path: ./**/core.[1-9]*
|
|
||||||
|
|
||||||
- name: Upload utilization stats
|
|
||||||
if: ${{ always() && steps.test.conclusion && steps.test.conclusion != 'skipped' }}
|
|
||||||
continue-on-error: true
|
|
||||||
uses: ./.github/actions/upload-utilization-stats
|
|
||||||
with:
|
|
||||||
job_id: ${{ steps.get-job-id.outputs.job-id }}
|
|
||||||
job_name: ${{ steps.get-job-id.outputs.job-name }}
|
|
||||||
workflow_name: ${{ github.workflow }}
|
|
||||||
workflow_run_id: ${{github.run_id}}
|
|
||||||
workflow_attempt: ${{github.run_attempt}}
|
|
||||||
|
|
||||||
- name: Teardown Linux
|
|
||||||
uses: pytorch/test-infra/.github/actions/teardown-linux@main
|
|
||||||
if: always() && steps.check_container_runner.outputs.IN_CONTAINER_RUNNER == 'false'
|
|
4
.github/workflows/_linux-test.yml
vendored
4
.github/workflows/_linux-test.yml
vendored
@ -169,7 +169,7 @@ jobs:
|
|||||||
id: install-nvidia-driver
|
id: install-nvidia-driver
|
||||||
uses: pytorch/test-infra/.github/actions/setup-nvidia@main
|
uses: pytorch/test-infra/.github/actions/setup-nvidia@main
|
||||||
with:
|
with:
|
||||||
driver-version: ${{ matrix.config == 'legacy_nvidia_driver' && '525.105.17' || '580.82.07' }}
|
driver-version: ${{ matrix.config == 'legacy_nvidia_driver' && '525.105.17' || '570.133.07' }}
|
||||||
if: ${{ contains(inputs.build-environment, 'cuda') && !contains(matrix.config, 'nogpu') && steps.check_container_runner.outputs.IN_CONTAINER_RUNNER == 'false' && !contains(matrix.runner, 'b200') }}
|
if: ${{ contains(inputs.build-environment, 'cuda') && !contains(matrix.config, 'nogpu') && steps.check_container_runner.outputs.IN_CONTAINER_RUNNER == 'false' && !contains(matrix.runner, 'b200') }}
|
||||||
|
|
||||||
- name: Setup GPU_FLAG for docker run
|
- name: Setup GPU_FLAG for docker run
|
||||||
@ -273,8 +273,6 @@ jobs:
|
|||||||
TEST_CONFIG: ${{ matrix.config }}
|
TEST_CONFIG: ${{ matrix.config }}
|
||||||
SHARD_NUMBER: ${{ matrix.shard }}
|
SHARD_NUMBER: ${{ matrix.shard }}
|
||||||
NUM_TEST_SHARDS: ${{ matrix.num_shards }}
|
NUM_TEST_SHARDS: ${{ matrix.num_shards }}
|
||||||
EXTRA_FLAGS: ${{ matrix.extra_flags || '' }}
|
|
||||||
OP_BENCHMARK_TESTS: ${{ matrix.op_benchmark_tests }}
|
|
||||||
REENABLED_ISSUES: ${{ steps.keep-going.outputs.reenabled-issues }}
|
REENABLED_ISSUES: ${{ steps.keep-going.outputs.reenabled-issues }}
|
||||||
CONTINUE_THROUGH_ERROR: ${{ steps.keep-going.outputs.keep-going }}
|
CONTINUE_THROUGH_ERROR: ${{ steps.keep-going.outputs.keep-going }}
|
||||||
VERBOSE_TEST_LOGS: ${{ steps.keep-going.outputs.ci-verbose-test-logs }}
|
VERBOSE_TEST_LOGS: ${{ steps.keep-going.outputs.ci-verbose-test-logs }}
|
||||||
|
2
.github/workflows/_mac-build.yml
vendored
2
.github/workflows/_mac-build.yml
vendored
@ -85,7 +85,7 @@ jobs:
|
|||||||
uses: pytorch/test-infra/.github/actions/setup-python@main
|
uses: pytorch/test-infra/.github/actions/setup-python@main
|
||||||
with:
|
with:
|
||||||
python-version: ${{ inputs.python-version }}
|
python-version: ${{ inputs.python-version }}
|
||||||
pip-requirements-file: .ci/docker/requirements-ci.txt
|
pip-requirements-file: .github/requirements/pip-requirements-macOS.txt
|
||||||
|
|
||||||
- name: Install sccache (only for non-forked PRs, and pushes to trunk)
|
- name: Install sccache (only for non-forked PRs, and pushes to trunk)
|
||||||
uses: nick-fields/retry@7152eba30c6575329ac0576536151aca5a72780e # v3.0.0
|
uses: nick-fields/retry@7152eba30c6575329ac0576536151aca5a72780e # v3.0.0
|
||||||
|
2
.github/workflows/_mac-test.yml
vendored
2
.github/workflows/_mac-test.yml
vendored
@ -122,7 +122,7 @@ jobs:
|
|||||||
uses: pytorch/test-infra/.github/actions/setup-python@main
|
uses: pytorch/test-infra/.github/actions/setup-python@main
|
||||||
with:
|
with:
|
||||||
python-version: ${{ inputs.python-version }}
|
python-version: ${{ inputs.python-version }}
|
||||||
pip-requirements-file: .ci/docker/requirements-ci.txt
|
pip-requirements-file: .github/requirements/pip-requirements-macOS.txt
|
||||||
|
|
||||||
- name: Start monitoring script
|
- name: Start monitoring script
|
||||||
id: monitor-script
|
id: monitor-script
|
||||||
|
33
.github/workflows/_rocm-test.yml
vendored
33
.github/workflows/_rocm-test.yml
vendored
@ -62,11 +62,6 @@ on:
|
|||||||
required: false
|
required: false
|
||||||
type: number
|
type: number
|
||||||
default: 1
|
default: 1
|
||||||
secrets:
|
|
||||||
HUGGING_FACE_HUB_TOKEN:
|
|
||||||
required: false
|
|
||||||
description: |
|
|
||||||
HF Auth token to avoid rate limits when downloading models or datasets from hub
|
|
||||||
env:
|
env:
|
||||||
GIT_DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
|
GIT_DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
|
||||||
|
|
||||||
@ -81,9 +76,10 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix: ${{ fromJSON(inputs.test-matrix) }}
|
matrix: ${{ fromJSON(inputs.test-matrix) }}
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
runs-on: ${{ matrix.runner }}
|
|
||||||
timeout-minutes: ${{ matrix.mem_leak_check == 'mem_leak_check' && 600 || inputs.timeout-minutes }}
|
timeout-minutes: ${{ matrix.mem_leak_check == 'mem_leak_check' && 600 || inputs.timeout-minutes }}
|
||||||
|
runs-on: ${{ matrix.runner }}
|
||||||
steps:
|
steps:
|
||||||
|
# [see note: pytorch repo ref]
|
||||||
- name: Checkout PyTorch
|
- name: Checkout PyTorch
|
||||||
uses: pytorch/pytorch/.github/actions/checkout-pytorch@main
|
uses: pytorch/pytorch/.github/actions/checkout-pytorch@main
|
||||||
with:
|
with:
|
||||||
@ -135,9 +131,6 @@ jobs:
|
|||||||
|
|
||||||
- name: Start monitoring script
|
- name: Start monitoring script
|
||||||
id: monitor-script
|
id: monitor-script
|
||||||
if: ${{ !inputs.disable-monitor }}
|
|
||||||
shell: bash
|
|
||||||
continue-on-error: true
|
|
||||||
env:
|
env:
|
||||||
JOB_ID: ${{ steps.get-job-id.outputs.job-id }}
|
JOB_ID: ${{ steps.get-job-id.outputs.job-id }}
|
||||||
JOB_NAME: ${{ steps.get-job-id.outputs.job-name }}
|
JOB_NAME: ${{ steps.get-job-id.outputs.job-name }}
|
||||||
@ -145,6 +138,9 @@ jobs:
|
|||||||
WORKFLOW_RUN_ID: ${{github.run_id}}
|
WORKFLOW_RUN_ID: ${{github.run_id}}
|
||||||
MONITOR_LOG_INTERVAL: ${{ inputs.monitor-log-interval }}
|
MONITOR_LOG_INTERVAL: ${{ inputs.monitor-log-interval }}
|
||||||
MONITOR_DATA_COLLECT_INTERVAL: ${{ inputs.monitor-data-collect-interval }}
|
MONITOR_DATA_COLLECT_INTERVAL: ${{ inputs.monitor-data-collect-interval }}
|
||||||
|
if: ${{ !inputs.disable-monitor }}
|
||||||
|
shell: bash
|
||||||
|
continue-on-error: true
|
||||||
run: |
|
run: |
|
||||||
python3 -m pip install psutil==5.9.8 dataclasses_json==0.6.7
|
python3 -m pip install psutil==5.9.8 dataclasses_json==0.6.7
|
||||||
python3 -m tools.stats.monitor --log-interval "$MONITOR_LOG_INTERVAL" --data-collect-interval "$MONITOR_DATA_COLLECT_INTERVAL" > usage_log.txt 2>&1 &
|
python3 -m tools.stats.monitor --log-interval "$MONITOR_LOG_INTERVAL" --data-collect-interval "$MONITOR_DATA_COLLECT_INTERVAL" > usage_log.txt 2>&1 &
|
||||||
@ -182,12 +178,6 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo "timeout=$((JOB_TIMEOUT-30))" >> "${GITHUB_OUTPUT}"
|
echo "timeout=$((JOB_TIMEOUT-30))" >> "${GITHUB_OUTPUT}"
|
||||||
|
|
||||||
- name: Preserve github env variables for use in docker
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
env | grep '^GITHUB' >> "/tmp/github_env_${GITHUB_RUN_ID}"
|
|
||||||
env | grep '^CI' >> "/tmp/github_env_${GITHUB_RUN_ID}"
|
|
||||||
|
|
||||||
- name: Test
|
- name: Test
|
||||||
id: test
|
id: test
|
||||||
env:
|
env:
|
||||||
@ -203,22 +193,20 @@ jobs:
|
|||||||
JOB_NAME: ${{ steps.get-job-id.outputs.job-name }}
|
JOB_NAME: ${{ steps.get-job-id.outputs.job-name }}
|
||||||
BRANCH: ${{ steps.parse-ref.outputs.branch }}
|
BRANCH: ${{ steps.parse-ref.outputs.branch }}
|
||||||
SHA1: ${{ github.event.pull_request.head.sha || github.sha }}
|
SHA1: ${{ github.event.pull_request.head.sha || github.sha }}
|
||||||
BASE_SHA: ${{ github.event.pull_request.base.sha || github.sha }}
|
|
||||||
TEST_CONFIG: ${{ matrix.config }}
|
|
||||||
SHARD_NUMBER: ${{ matrix.shard }}
|
|
||||||
NUM_TEST_SHARDS: ${{ matrix.num_shards }}
|
|
||||||
REENABLED_ISSUES: ${{ steps.keep-going.outputs.reenabled-issues }}
|
|
||||||
CONTINUE_THROUGH_ERROR: ${{ steps.keep-going.outputs.keep-going }}
|
CONTINUE_THROUGH_ERROR: ${{ steps.keep-going.outputs.keep-going }}
|
||||||
VERBOSE_TEST_LOGS: ${{ steps.keep-going.outputs.ci-verbose-test-logs }}
|
VERBOSE_TEST_LOGS: ${{ steps.keep-going.outputs.ci-verbose-test-logs }}
|
||||||
TEST_SHOWLOCALS: ${{ steps.keep-going.outputs.ci-test-showlocals }}
|
TEST_SHOWLOCALS: ${{ steps.keep-going.outputs.ci-test-showlocals }}
|
||||||
NO_TEST_TIMEOUT: ${{ steps.keep-going.outputs.ci-no-test-timeout }}
|
NO_TEST_TIMEOUT: ${{ steps.keep-going.outputs.ci-no-test-timeout }}
|
||||||
NO_TD: ${{ steps.keep-going.outputs.ci-no-td }}
|
NO_TD: ${{ steps.keep-going.outputs.ci-no-td }}
|
||||||
|
TEST_CONFIG: ${{ matrix.config }}
|
||||||
|
SHARD_NUMBER: ${{ matrix.shard }}
|
||||||
|
NUM_TEST_SHARDS: ${{ matrix.num_shards }}
|
||||||
|
REENABLED_ISSUES: ${{ steps.keep-going.outputs.reenabled-issues }}
|
||||||
DOCKER_IMAGE: ${{ inputs.docker-image }}
|
DOCKER_IMAGE: ${{ inputs.docker-image }}
|
||||||
PYTORCH_TEST_CUDA_MEM_LEAK_CHECK: ${{ matrix.mem_leak_check && '1' || '0' }}
|
PYTORCH_TEST_CUDA_MEM_LEAK_CHECK: ${{ matrix.mem_leak_check && '1' || '0' }}
|
||||||
PYTORCH_TEST_RERUN_DISABLED_TESTS: ${{ matrix.rerun_disabled_tests && '1' || '0' }}
|
PYTORCH_TEST_RERUN_DISABLED_TESTS: ${{ matrix.rerun_disabled_tests && '1' || '0' }}
|
||||||
TESTS_TO_INCLUDE: ${{ inputs.tests-to-include }}
|
TESTS_TO_INCLUDE: ${{ inputs.tests-to-include }}
|
||||||
DASHBOARD_TAG: ${{ inputs.dashboard-tag }}
|
DASHBOARD_TAG: ${{ inputs.dashboard-tag }}
|
||||||
HUGGING_FACE_HUB_TOKEN: ${{ secrets.HUGGING_FACE_HUB_TOKEN }}
|
|
||||||
timeout-minutes: ${{ fromJson(steps.test-timeout.outputs.timeout) }}
|
timeout-minutes: ${{ fromJson(steps.test-timeout.outputs.timeout) }}
|
||||||
run: |
|
run: |
|
||||||
set -x
|
set -x
|
||||||
@ -248,7 +236,6 @@ jobs:
|
|||||||
-e GITHUB_RUN_ATTEMPT \
|
-e GITHUB_RUN_ATTEMPT \
|
||||||
-e JOB_ID \
|
-e JOB_ID \
|
||||||
-e JOB_NAME \
|
-e JOB_NAME \
|
||||||
-e BASE_SHA \
|
|
||||||
-e BRANCH \
|
-e BRANCH \
|
||||||
-e SHA1 \
|
-e SHA1 \
|
||||||
-e AWS_DEFAULT_REGION \
|
-e AWS_DEFAULT_REGION \
|
||||||
@ -266,12 +253,10 @@ jobs:
|
|||||||
-e PYTORCH_TEST_CUDA_MEM_LEAK_CHECK \
|
-e PYTORCH_TEST_CUDA_MEM_LEAK_CHECK \
|
||||||
-e PYTORCH_TEST_RERUN_DISABLED_TESTS \
|
-e PYTORCH_TEST_RERUN_DISABLED_TESTS \
|
||||||
-e TESTS_TO_INCLUDE \
|
-e TESTS_TO_INCLUDE \
|
||||||
-e HUGGING_FACE_HUB_TOKEN \
|
|
||||||
-e DASHBOARD_TAG \
|
-e DASHBOARD_TAG \
|
||||||
--env-file="${RUNNER_TEMP}/github_env_${GITHUB_RUN_ID}" \
|
--env-file="${RUNNER_TEMP}/github_env_${GITHUB_RUN_ID}" \
|
||||||
--ulimit stack=10485760:83886080 \
|
--ulimit stack=10485760:83886080 \
|
||||||
--ulimit core=0 \
|
--ulimit core=0 \
|
||||||
--env-file="/tmp/github_env_${GITHUB_RUN_ID}" \
|
|
||||||
--security-opt seccomp=unconfined \
|
--security-opt seccomp=unconfined \
|
||||||
--cap-add=SYS_PTRACE \
|
--cap-add=SYS_PTRACE \
|
||||||
--shm-size="8g" \
|
--shm-size="8g" \
|
||||||
|
5
.github/workflows/_win-build.yml
vendored
5
.github/workflows/_win-build.yml
vendored
@ -84,6 +84,9 @@ jobs:
|
|||||||
# in https://github.com/actions/checkout/issues/1018
|
# in https://github.com/actions/checkout/issues/1018
|
||||||
git config --global core.fsmonitor false
|
git config --global core.fsmonitor false
|
||||||
|
|
||||||
|
- name: Clean up leftover processes on non-ephemeral Windows runner
|
||||||
|
uses: pytorch/test-infra/.github/actions/cleanup-runner@main
|
||||||
|
|
||||||
- name: Setup SSH (Click me for login details)
|
- name: Setup SSH (Click me for login details)
|
||||||
uses: pytorch/test-infra/.github/actions/setup-ssh@main
|
uses: pytorch/test-infra/.github/actions/setup-ssh@main
|
||||||
with:
|
with:
|
||||||
@ -148,7 +151,7 @@ jobs:
|
|||||||
BUILD_WHEEL: 1
|
BUILD_WHEEL: 1
|
||||||
MAX_JOBS: 8
|
MAX_JOBS: 8
|
||||||
CUDA_VERSION: ${{ inputs.cuda-version }}
|
CUDA_VERSION: ${{ inputs.cuda-version }}
|
||||||
PYTHON_VERSION: "3.10"
|
PYTHON_VERSION: "3.9"
|
||||||
SCCACHE_BUCKET: "ossci-compiler-cache"
|
SCCACHE_BUCKET: "ossci-compiler-cache"
|
||||||
SCCACHE_S3_KEY_PREFIX: ${{ github.workflow }}
|
SCCACHE_S3_KEY_PREFIX: ${{ github.workflow }}
|
||||||
SCCACHE_REGION: us-east-1
|
SCCACHE_REGION: us-east-1
|
||||||
|
26
.github/workflows/_win-test.yml
vendored
26
.github/workflows/_win-test.yml
vendored
@ -77,6 +77,9 @@ jobs:
|
|||||||
# in https://github.com/actions/checkout/issues/1018
|
# in https://github.com/actions/checkout/issues/1018
|
||||||
git config --global core.fsmonitor false
|
git config --global core.fsmonitor false
|
||||||
|
|
||||||
|
- name: Clean up leftover processes on non-ephemeral Windows runner
|
||||||
|
uses: pytorch/test-infra/.github/actions/cleanup-runner@main
|
||||||
|
|
||||||
- name: Setup SSH (Click me for login details)
|
- name: Setup SSH (Click me for login details)
|
||||||
uses: pytorch/test-infra/.github/actions/setup-ssh@main
|
uses: pytorch/test-infra/.github/actions/setup-ssh@main
|
||||||
with:
|
with:
|
||||||
@ -103,6 +106,18 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
cuda-version: ${{ inputs.cuda-version }}
|
cuda-version: ${{ inputs.cuda-version }}
|
||||||
|
|
||||||
|
# TODO: Move to a requirements.txt file for windows
|
||||||
|
- name: Install pip dependencies
|
||||||
|
uses: nick-fields/retry@7152eba30c6575329ac0576536151aca5a72780e # v3.0.0
|
||||||
|
with:
|
||||||
|
shell: bash
|
||||||
|
timeout_minutes: 5
|
||||||
|
max_attempts: 5
|
||||||
|
retry_wait_seconds: 30
|
||||||
|
command: |
|
||||||
|
set -eu
|
||||||
|
python3 -m pip install 'xdoctest>=1.1.0'
|
||||||
|
|
||||||
- name: Get workflow job id
|
- name: Get workflow job id
|
||||||
id: get-job-id
|
id: get-job-id
|
||||||
uses: ./.github/actions/get-workflow-job-id
|
uses: ./.github/actions/get-workflow-job-id
|
||||||
@ -169,7 +184,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
USE_CUDA: ${{ inputs.cuda-version != 'cpu' && '1' || '0' }}
|
USE_CUDA: ${{ inputs.cuda-version != 'cpu' && '1' || '0' }}
|
||||||
INSTALL_WINDOWS_SDK: 1
|
INSTALL_WINDOWS_SDK: 1
|
||||||
PYTHON_VERSION: "3.10"
|
PYTHON_VERSION: 3.9
|
||||||
CONTINUE_THROUGH_ERROR: ${{ steps.keep-going.outputs.keep-going }}
|
CONTINUE_THROUGH_ERROR: ${{ steps.keep-going.outputs.keep-going }}
|
||||||
VERBOSE_TEST_LOGS: ${{ steps.keep-going.outputs.ci-verbose-test-logs }}
|
VERBOSE_TEST_LOGS: ${{ steps.keep-going.outputs.ci-verbose-test-logs }}
|
||||||
TEST_SHOWLOCALS: ${{ steps.keep-going.outputs.ci-test-showlocals }}
|
TEST_SHOWLOCALS: ${{ steps.keep-going.outputs.ci-test-showlocals }}
|
||||||
@ -257,6 +272,15 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: python3 .github/scripts/parse_ref.py
|
run: python3 .github/scripts/parse_ref.py
|
||||||
|
|
||||||
|
- name: Uninstall PyTorch
|
||||||
|
if: always()
|
||||||
|
continue-on-error: true
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
# This step removes PyTorch installed by the test to give a clean slate
|
||||||
|
# to the next job
|
||||||
|
python3 -mpip uninstall -y torch
|
||||||
|
|
||||||
- name: Teardown Windows
|
- name: Teardown Windows
|
||||||
uses: ./.github/actions/teardown-win
|
uses: ./.github/actions/teardown-win
|
||||||
if: always()
|
if: always()
|
||||||
|
60
.github/workflows/b200-symm-mem.yml
vendored
60
.github/workflows/b200-symm-mem.yml
vendored
@ -1,60 +0,0 @@
|
|||||||
name: Limited CI for symmetric memory tests on B200
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- .github/workflows/b200-symm-mem.yml
|
|
||||||
workflow_dispatch:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- ciflow/b200-symm-mem/*
|
|
||||||
schedule:
|
|
||||||
- cron: 22 8 * * * # about 1:22am PDT
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}-${{ github.event_name == 'workflow_dispatch' }}-${{ github.event_name == 'schedule' }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
id-token: write
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
get-label-type:
|
|
||||||
if: github.repository_owner == 'pytorch'
|
|
||||||
name: get-label-type
|
|
||||||
uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main
|
|
||||||
with:
|
|
||||||
triggering_actor: ${{ github.triggering_actor }}
|
|
||||||
issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }}
|
|
||||||
curr_branch: ${{ github.head_ref || github.ref_name }}
|
|
||||||
curr_ref_type: ${{ github.ref_type }}
|
|
||||||
|
|
||||||
linux-jammy-cuda12_8-py3_10-gcc11-sm100-build-symm:
|
|
||||||
name: linux-jammy-cuda12.8-py3.10-gcc11-sm100-symm
|
|
||||||
uses: ./.github/workflows/_linux-build.yml
|
|
||||||
needs: get-label-type
|
|
||||||
with:
|
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
|
||||||
runner: linux.12xlarge.memory
|
|
||||||
build-environment: linux-jammy-cuda12.8-py3.10-gcc11-sm100-symm
|
|
||||||
docker-image-name: ci-image:pytorch-linux-jammy-cuda12.8-cudnn9-py3-gcc11
|
|
||||||
cuda-arch-list: '10.0'
|
|
||||||
test-matrix: |
|
|
||||||
{ include: [
|
|
||||||
{ config: "b200-symm-mem", shard: 1, num_shards: 1, runner: "linux.dgx.b200.8" },
|
|
||||||
]}
|
|
||||||
secrets: inherit
|
|
||||||
|
|
||||||
linux-jammy-cuda12_8-py3_10-gcc11-sm100-test:
|
|
||||||
name: linux-jammy-cuda12.8-py3.10-gcc11-sm100-symm
|
|
||||||
uses: ./.github/workflows/_linux-test.yml
|
|
||||||
needs:
|
|
||||||
- linux-jammy-cuda12_8-py3_10-gcc11-sm100-build-symm
|
|
||||||
with:
|
|
||||||
build-environment: linux-jammy-cuda12.8-py3.10-gcc11-sm100-symm
|
|
||||||
docker-image: ${{ needs.linux-jammy-cuda12_8-py3_10-gcc11-sm100-build-symm.outputs.docker-image }}
|
|
||||||
test-matrix: ${{ needs.linux-jammy-cuda12_8-py3_10-gcc11-sm100-build-symm.outputs.test-matrix }}
|
|
||||||
aws-role-to-assume: arn:aws:iam::308535385114:role/gha_workflow_s3_and_ecr_read_only
|
|
||||||
secrets: inherit
|
|
2
.github/workflows/build-almalinux-images.yml
vendored
2
.github/workflows/build-almalinux-images.yml
vendored
@ -36,7 +36,7 @@ jobs:
|
|||||||
runs-on: linux.9xlarge.ephemeral
|
runs-on: linux.9xlarge.ephemeral
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
tag: ["cuda12.6", "cuda12.8", "cuda12.9", "cuda13.0", "rocm6.4", "rocm7.0", "cpu"]
|
tag: ["cuda12.6", "cuda12.8", "cuda12.9", "cuda13.0", "rocm6.3", "rocm6.4", "cpu"]
|
||||||
steps:
|
steps:
|
||||||
- name: Build docker image
|
- name: Build docker image
|
||||||
uses: pytorch/pytorch/.github/actions/binary-docker-build@main
|
uses: pytorch/pytorch/.github/actions/binary-docker-build@main
|
||||||
|
2
.github/workflows/build-libtorch-images.yml
vendored
2
.github/workflows/build-libtorch-images.yml
vendored
@ -52,8 +52,8 @@ jobs:
|
|||||||
{ tag: "cuda12.9" },
|
{ tag: "cuda12.9" },
|
||||||
{ tag: "cuda12.8" },
|
{ tag: "cuda12.8" },
|
||||||
{ tag: "cuda12.6" },
|
{ tag: "cuda12.6" },
|
||||||
|
{ tag: "rocm6.3" },
|
||||||
{ tag: "rocm6.4" },
|
{ tag: "rocm6.4" },
|
||||||
{ tag: "rocm7.0" },
|
|
||||||
{ tag: "cpu" },
|
{ tag: "cpu" },
|
||||||
]
|
]
|
||||||
steps:
|
steps:
|
||||||
|
2
.github/workflows/build-magma-rocm-linux.yml
vendored
2
.github/workflows/build-magma-rocm-linux.yml
vendored
@ -34,7 +34,7 @@ jobs:
|
|||||||
id-token: write
|
id-token: write
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
rocm_version: ["70", "64"]
|
rocm_version: ["64", "63"]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout PyTorch
|
- name: Checkout PyTorch
|
||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
3
.github/workflows/build-manywheel-images.yml
vendored
3
.github/workflows/build-manywheel-images.yml
vendored
@ -52,10 +52,11 @@ jobs:
|
|||||||
{ name: "manylinuxaarch64-builder", tag: "cuda13.0", runner: "linux.arm64.2xlarge.ephemeral" },
|
{ name: "manylinuxaarch64-builder", tag: "cuda13.0", runner: "linux.arm64.2xlarge.ephemeral" },
|
||||||
{ name: "manylinuxaarch64-builder", tag: "cuda12.8", runner: "linux.arm64.2xlarge.ephemeral" },
|
{ name: "manylinuxaarch64-builder", tag: "cuda12.8", runner: "linux.arm64.2xlarge.ephemeral" },
|
||||||
{ name: "manylinuxaarch64-builder", tag: "cuda12.6", runner: "linux.arm64.2xlarge.ephemeral" },
|
{ name: "manylinuxaarch64-builder", tag: "cuda12.6", runner: "linux.arm64.2xlarge.ephemeral" },
|
||||||
|
{ name: "manylinux2_28-builder", tag: "rocm6.3", runner: "linux.9xlarge.ephemeral" },
|
||||||
{ name: "manylinux2_28-builder", tag: "rocm6.4", runner: "linux.9xlarge.ephemeral" },
|
{ name: "manylinux2_28-builder", tag: "rocm6.4", runner: "linux.9xlarge.ephemeral" },
|
||||||
{ name: "manylinux2_28-builder", tag: "rocm7.0", runner: "linux.9xlarge.ephemeral" },
|
|
||||||
{ name: "manylinux2_28-builder", tag: "cpu", runner: "linux.9xlarge.ephemeral" },
|
{ name: "manylinux2_28-builder", tag: "cpu", runner: "linux.9xlarge.ephemeral" },
|
||||||
{ name: "manylinux2_28_aarch64-builder", tag: "cpu-aarch64", runner: "linux.arm64.2xlarge.ephemeral" },
|
{ name: "manylinux2_28_aarch64-builder", tag: "cpu-aarch64", runner: "linux.arm64.2xlarge.ephemeral" },
|
||||||
|
{ name: "manylinuxcxx11-abi-builder", tag: "cpu-cxx11-abi", runner: "linux.9xlarge.ephemeral" },
|
||||||
{ name: "manylinux2_28-builder", tag: "xpu", runner: "linux.9xlarge.ephemeral" },
|
{ name: "manylinux2_28-builder", tag: "xpu", runner: "linux.9xlarge.ephemeral" },
|
||||||
]
|
]
|
||||||
runs-on: ${{ needs.get-label-type.outputs.label-type }}${{ matrix.runner }}
|
runs-on: ${{ needs.get-label-type.outputs.label-type }}${{ matrix.runner }}
|
||||||
|
9
.github/workflows/build-triton-wheel.yml
vendored
9
.github/workflows/build-triton-wheel.yml
vendored
@ -50,12 +50,12 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
py_vers: [ "3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t" ]
|
py_vers: [ "3.9", "3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t" ]
|
||||||
device: ["cuda", "rocm", "xpu", "aarch64"]
|
device: ["cuda", "rocm", "xpu", "aarch64"]
|
||||||
docker-image: ["pytorch/manylinux2_28-builder:cpu"]
|
docker-image: ["pytorch/manylinux2_28-builder:cpu"]
|
||||||
include:
|
include:
|
||||||
- device: "rocm"
|
- device: "rocm"
|
||||||
rocm_version: "7.0"
|
rocm_version: "6.4"
|
||||||
runs_on: "${{ needs.get-label-type.outputs.label-type }}linux.4xlarge"
|
runs_on: "${{ needs.get-label-type.outputs.label-type }}linux.4xlarge"
|
||||||
- device: "cuda"
|
- device: "cuda"
|
||||||
rocm_version: ""
|
rocm_version: ""
|
||||||
@ -108,6 +108,9 @@ jobs:
|
|||||||
|
|
||||||
# Determine python executable for given version
|
# Determine python executable for given version
|
||||||
case $PY_VERS in
|
case $PY_VERS in
|
||||||
|
3.9)
|
||||||
|
PYTHON_EXECUTABLE=/opt/python/cp39-cp39/bin/python
|
||||||
|
;;
|
||||||
3.10)
|
3.10)
|
||||||
PYTHON_EXECUTABLE=/opt/python/cp310-cp310/bin/python
|
PYTHON_EXECUTABLE=/opt/python/cp310-cp310/bin/python
|
||||||
;;
|
;;
|
||||||
@ -191,7 +194,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
py_vers: [ "3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t" ]
|
py_vers: [ "3.9", "3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t" ]
|
||||||
device: ["xpu"]
|
device: ["xpu"]
|
||||||
timeout-minutes: 40
|
timeout-minutes: 40
|
||||||
env:
|
env:
|
||||||
|
45
.github/workflows/build-vllm-wheel.yml
vendored
45
.github/workflows/build-vllm-wheel.yml
vendored
@ -12,9 +12,6 @@ on:
|
|||||||
paths:
|
paths:
|
||||||
- .github/workflows/build-vllm-wheel.yml
|
- .github/workflows/build-vllm-wheel.yml
|
||||||
- .github/ci_commit_pins/vllm.txt
|
- .github/ci_commit_pins/vllm.txt
|
||||||
schedule:
|
|
||||||
# every morning at 01:30PM UTC, 9:30AM EST, 6:30AM PST
|
|
||||||
- cron: 30 13 * * *
|
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}-${{ github.event_name == 'workflow_dispatch' }}
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}-${{ github.event_name == 'workflow_dispatch' }}
|
||||||
@ -27,33 +24,21 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
python-version: [ '3.12' ]
|
python-version: [ '3.12' ]
|
||||||
# TODO (huydhn): Add cu130 after https://github.com/vllm-project/vllm/issues/24464 is resolved
|
# TODO (huydhn): Add cu130 https://github.com/pytorch/pytorch/pull/162000#issuecomment-3261541554
|
||||||
platform: [ 'manylinux_2_28_x86_64', 'manylinux_2_28_aarch64' ]
|
|
||||||
device: [ 'cu128', 'cu129' ]
|
device: [ 'cu128', 'cu129' ]
|
||||||
|
runner: [ 'linux.12xlarge.memory' ]
|
||||||
include:
|
include:
|
||||||
- platform: manylinux_2_28_x86_64
|
- device: cu128
|
||||||
device: cu128
|
|
||||||
manylinux-image: 'pytorch/manylinux2_28-builder:cuda12.8'
|
manylinux-image: 'pytorch/manylinux2_28-builder:cuda12.8'
|
||||||
runner: linux.12xlarge.memory
|
- device: cu129
|
||||||
- platform: manylinux_2_28_x86_64
|
|
||||||
device: cu129
|
|
||||||
manylinux-image: 'pytorch/manylinux2_28-builder:cuda12.9'
|
manylinux-image: 'pytorch/manylinux2_28-builder:cuda12.9'
|
||||||
runner: linux.12xlarge.memory
|
name: "Build ${{ matrix.device }} vLLM wheel"
|
||||||
- platform: manylinux_2_28_aarch64
|
|
||||||
device: cu128
|
|
||||||
manylinux-image: 'pytorch/manylinuxaarch64-builder:cuda12.8'
|
|
||||||
runner: linux.arm64.r7g.12xlarge.memory
|
|
||||||
- platform: manylinux_2_28_aarch64
|
|
||||||
device: cu129
|
|
||||||
manylinux-image: 'pytorch/manylinuxaarch64-builder:cuda12.9'
|
|
||||||
runner: linux.arm64.r7g.12xlarge.memory
|
|
||||||
name: "Build ${{ matrix.device }} vLLM wheel on ${{ matrix.platform }}"
|
|
||||||
runs-on: ${{ matrix.runner }}
|
runs-on: ${{ matrix.runner }}
|
||||||
timeout-minutes: 480
|
timeout-minutes: 480
|
||||||
env:
|
env:
|
||||||
PY_VERS: ${{ matrix.python-version }}
|
PY_VERS: ${{ matrix.python-version }}
|
||||||
MANYLINUX_IMAGE: ${{ matrix.manylinux-image }}
|
MANYLINUX_IMAGE: ${{ matrix.manylinux-image }}
|
||||||
PLATFORM: ${{ matrix.platform }}
|
PLATFORM: 'manylinux_2_28_x86_64'
|
||||||
BUILD_DEVICE: ${{ matrix.device }}
|
BUILD_DEVICE: ${{ matrix.device }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup SSH (Click me for login details)
|
- name: Setup SSH (Click me for login details)
|
||||||
@ -151,7 +136,7 @@ jobs:
|
|||||||
|
|
||||||
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
|
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
|
||||||
with:
|
with:
|
||||||
name: vllm-wheel-${{ matrix.device }}-${{ matrix.platform }}-${{ matrix.python-version }}
|
name: vllm-wheel-${{ matrix.device }}-${{ matrix.python-version }}-${{ env.PLATFORM }}
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
path: ${{ runner.temp }}/artifacts/externals/vllm/wheels/*.whl
|
path: ${{ runner.temp }}/artifacts/externals/vllm/wheels/*.whl
|
||||||
|
|
||||||
@ -161,29 +146,27 @@ jobs:
|
|||||||
|
|
||||||
# Copied from build-triton-wheel workflow (mostly)
|
# Copied from build-triton-wheel workflow (mostly)
|
||||||
upload-wheel:
|
upload-wheel:
|
||||||
name: "Upload ${{ matrix.device }} vLLM wheel on ${{ matrix.platform }}"
|
name: "Upload ${{ matrix.device }} vLLM wheel"
|
||||||
needs:
|
needs:
|
||||||
- build-wheel
|
- build-wheel
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
platform: [ 'manylinux_2_28_x86_64', 'manylinux_2_28_aarch64' ]
|
|
||||||
device: [ 'cu128', 'cu129' ]
|
device: [ 'cu128', 'cu129' ]
|
||||||
env:
|
env:
|
||||||
PLATFORM: ${{ matrix.platform }}
|
|
||||||
BUILD_DEVICE: ${{ matrix.device }}
|
BUILD_DEVICE: ${{ matrix.device }}
|
||||||
permissions:
|
permissions:
|
||||||
id-token: write
|
id-token: write
|
||||||
contents: read
|
contents: read
|
||||||
container:
|
container:
|
||||||
image: continuumio/miniconda3:4.12.0
|
image: continuumio/miniconda3:4.12.0
|
||||||
environment: ${{ ((github.event_name == 'push' && github.event.ref == 'refs/heads/main') || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && 'nightly-wheel-upload' || '' }}
|
environment: ${{ (github.event_name == 'push' && github.event.ref == 'refs/heads/main') && 'nightly-wheel-upload' || '' }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
- name: Configure AWS credentials(PyTorch account) for main
|
- name: Configure AWS credentials(PyTorch account) for main
|
||||||
if: ${{ (github.event_name == 'push' && github.event.ref == 'refs/heads/main') || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
|
if: ${{ github.event_name == 'push' && github.event.ref == 'refs/heads/main' }}
|
||||||
uses: aws-actions/configure-aws-credentials@ececac1a45f3b08a01d2dd070d28d111c5fe6722 # v4.1.0
|
uses: aws-actions/configure-aws-credentials@ececac1a45f3b08a01d2dd070d28d111c5fe6722 # v4.1.0
|
||||||
with:
|
with:
|
||||||
role-to-assume: arn:aws:iam::749337293305:role/gha_workflow_nightly_build_wheels
|
role-to-assume: arn:aws:iam::749337293305:role/gha_workflow_nightly_build_wheels
|
||||||
@ -207,15 +190,15 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
set -eux
|
set -eux
|
||||||
mkdir -p "${RUNNER_TEMP}/artifacts/"
|
mkdir -p "${RUNNER_TEMP}/artifacts/"
|
||||||
mv "${RUNNER_TEMP}"/artifacts-all/vllm-wheel-"${BUILD_DEVICE}"-"${PLATFORM}"-*/* "${RUNNER_TEMP}/artifacts/"
|
mv "${RUNNER_TEMP}"/artifacts-all/vllm-wheel-"${BUILD_DEVICE}"-*/* "${RUNNER_TEMP}/artifacts/"
|
||||||
|
|
||||||
- name: Set DRY_RUN
|
- name: Set DRY_RUN (only for tagged pushes)
|
||||||
if: ${{ (github.event_name == 'push' && (github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/tags/v'))) || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
|
if: ${{ github.event_name == 'push' && (github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/tags/v')) }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
echo "DRY_RUN=disabled" >> "$GITHUB_ENV"
|
echo "DRY_RUN=disabled" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Set UPLOAD_CHANNEL
|
- name: Set UPLOAD_CHANNEL (only for tagged pushes)
|
||||||
if: ${{ github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v') }}
|
if: ${{ github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v') }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
59
.github/workflows/create_release.yml
vendored
59
.github/workflows/create_release.yml
vendored
@ -35,7 +35,6 @@ jobs:
|
|||||||
contents: write
|
contents: write
|
||||||
outputs:
|
outputs:
|
||||||
pt_release_name: ${{ steps.release_name.outputs.pt_release_name }}
|
pt_release_name: ${{ steps.release_name.outputs.pt_release_name }}
|
||||||
pt_pep517_release_name: ${{ steps.release_name.outputs.pt_pep517_release_name }}
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
@ -54,12 +53,8 @@ jobs:
|
|||||||
tag_or_branch="${tag_or_branch#refs/heads/}"
|
tag_or_branch="${tag_or_branch#refs/heads/}"
|
||||||
# replace directory separators with _ in branch name
|
# replace directory separators with _ in branch name
|
||||||
tag_or_branch="${tag_or_branch//\//_}"
|
tag_or_branch="${tag_or_branch//\//_}"
|
||||||
torch_version="$(python -c 'from tools.generate_torch_version import get_torch_version; print(get_torch_version())')"
|
echo "PT_RELEASE_NAME=pytorch-$tag_or_branch" >> "$GITHUB_ENV"
|
||||||
{
|
echo "PT_RELEASE_FILE=pytorch-$tag_or_branch.tar.gz" >> "$GITHUB_ENV"
|
||||||
echo "PT_RELEASE_NAME=pytorch-$tag_or_branch";
|
|
||||||
echo "PT_RELEASE_FILE=pytorch-$tag_or_branch.tar.gz";
|
|
||||||
echo "PT_PEP517_RELEASE_FILE=torch-${torch_version}.tar.gz";
|
|
||||||
} >> "$GITHUB_ENV"
|
|
||||||
- name: Checkout optional submodules
|
- name: Checkout optional submodules
|
||||||
run: python3 tools/optional_submodules.py
|
run: python3 tools/optional_submodules.py
|
||||||
- name: Copy docs requirements for inclusion
|
- name: Copy docs requirements for inclusion
|
||||||
@ -69,47 +64,30 @@ jobs:
|
|||||||
cp .ci/docker/requirements-docs.txt docs/requirements.txt
|
cp .ci/docker/requirements-docs.txt docs/requirements.txt
|
||||||
- name: Create source distribution
|
- name: Create source distribution
|
||||||
run: |
|
run: |
|
||||||
# Create new folder with specified name so extracting the archive yields that
|
# Create new folder with specified name so extracting the archive yields that
|
||||||
rm -rf "/tmp/$PT_RELEASE_NAME"
|
rm -rf "/tmp/$PT_RELEASE_NAME"
|
||||||
cp -r "$PWD" "/tmp/$PT_RELEASE_NAME"
|
cp -r "$PWD" "/tmp/$PT_RELEASE_NAME"
|
||||||
mv "/tmp/$PT_RELEASE_NAME" .
|
mv "/tmp/$PT_RELEASE_NAME" .
|
||||||
# Cleanup
|
# Cleanup
|
||||||
rm -rf "$PT_RELEASE_NAME"/{.circleci,.ci}
|
rm -rf "$PT_RELEASE_NAME"/{.circleci,.ci}
|
||||||
find "$PT_RELEASE_NAME" -name '.git*' -exec rm -rv {} \; || true
|
find "$PT_RELEASE_NAME" -name '.git*' -exec rm -rv {} \; || true
|
||||||
# Create archive
|
# Create archive
|
||||||
tar -czf "$PT_RELEASE_FILE" "$PT_RELEASE_NAME"
|
tar -czf "$PT_RELEASE_FILE" "$PT_RELEASE_NAME"
|
||||||
echo "Created source archive $PT_RELEASE_FILE with content: $(ls -a "$PT_RELEASE_NAME")"
|
echo "Created source archive $PT_RELEASE_FILE with content: $(ls -a "$PT_RELEASE_NAME")"
|
||||||
- name: Create PEP 517 compatible source distribution
|
|
||||||
run: |
|
|
||||||
pip install build==1.2.2.post1 || exit 1
|
|
||||||
python -m build --sdist || exit 1
|
|
||||||
cd dist || exit 1
|
|
||||||
- name: Upload source distribution for release
|
- name: Upload source distribution for release
|
||||||
if: ${{ github.event_name == 'release' }}
|
if: ${{ github.event_name == 'release' }}
|
||||||
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2
|
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2
|
||||||
with:
|
with:
|
||||||
files: |
|
files: ${{env.PT_RELEASE_FILE}}
|
||||||
${{ env.PT_RELEASE_FILE }}
|
- name: Upload source distribution to GHA artifacts for release tags
|
||||||
${{ env.PT_PEP517_RELEASE_FILE }}
|
|
||||||
- name: Upload source distribution to GHA artifacts # for release tags
|
|
||||||
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && contains(github.ref, 'rc') }}
|
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && contains(github.ref, 'rc') }}
|
||||||
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
|
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
|
||||||
with:
|
with:
|
||||||
name: ${{ env.PT_RELEASE_FILE }}
|
name: ${{ env.PT_RELEASE_FILE }}
|
||||||
path: ${{ env.PT_RELEASE_FILE }}
|
path: ${{ env.PT_RELEASE_FILE }}
|
||||||
- name: Upload PEP 517 source distribution to GHA artifacts # for release tags
|
|
||||||
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && contains(github.ref, 'rc') }}
|
|
||||||
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
|
|
||||||
with:
|
|
||||||
name: ${{ env.PT_PEP517_RELEASE_FILE }}
|
|
||||||
path: dist/${{ env.PT_PEP517_RELEASE_FILE }}
|
|
||||||
- name: Set output
|
- name: Set output
|
||||||
id: release_name
|
id: release_name
|
||||||
run: |
|
run: echo "pt_release_name=${{ env.PT_RELEASE_NAME }}.tar.gz" >> "${GITHUB_OUTPUT}"
|
||||||
{
|
|
||||||
echo "pt_release_name=${{ env.PT_RELEASE_FILE }}";
|
|
||||||
echo "pt_pep517_release_name=${{ env.PT_PEP517_RELEASE_FILE }}";
|
|
||||||
} >> "${GITHUB_OUTPUT}"
|
|
||||||
|
|
||||||
upload_source_code_to_s3:
|
upload_source_code_to_s3:
|
||||||
if: ${{ github.repository == 'pytorch/pytorch' && github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && contains(github.ref, 'rc') }}
|
if: ${{ github.repository == 'pytorch/pytorch' && github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && contains(github.ref, 'rc') }}
|
||||||
@ -125,9 +103,6 @@ jobs:
|
|||||||
- uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7
|
- uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7
|
||||||
with:
|
with:
|
||||||
name: ${{ needs.release.outputs.pt_release_name }}
|
name: ${{ needs.release.outputs.pt_release_name }}
|
||||||
- uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7
|
|
||||||
with:
|
|
||||||
name: ${{ needs.release.outputs.pt_pep517_release_name }}
|
|
||||||
- name: Configure AWS credentials(PyTorch account)
|
- name: Configure AWS credentials(PyTorch account)
|
||||||
uses: aws-actions/configure-aws-credentials@ececac1a45f3b08a01d2dd070d28d111c5fe6722 # v4.1.0
|
uses: aws-actions/configure-aws-credentials@ececac1a45f3b08a01d2dd070d28d111c5fe6722 # v4.1.0
|
||||||
with:
|
with:
|
||||||
@ -138,9 +113,7 @@ jobs:
|
|||||||
s3-bucket: pytorch
|
s3-bucket: pytorch
|
||||||
s3-prefix: source_code/test
|
s3-prefix: source_code/test
|
||||||
if-no-files-found: warn
|
if-no-files-found: warn
|
||||||
path: |
|
path: ${{ needs.release.outputs.pt_release_name }}
|
||||||
${{ needs.release.outputs.pt_release_name }}
|
|
||||||
${{ needs.release.outputs.pt_pep517_release_name }}
|
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}-${{ github.event_name }}
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}-${{ github.event_name }}
|
||||||
|
6
.github/workflows/docker-builds.yml
vendored
6
.github/workflows/docker-builds.yml
vendored
@ -59,6 +59,7 @@ jobs:
|
|||||||
pytorch-linux-jammy-py3.13-clang12,
|
pytorch-linux-jammy-py3.13-clang12,
|
||||||
pytorch-linux-jammy-rocm-n-py3,
|
pytorch-linux-jammy-rocm-n-py3,
|
||||||
pytorch-linux-noble-rocm-n-py3,
|
pytorch-linux-noble-rocm-n-py3,
|
||||||
|
pytorch-linux-noble-rocm-alpha-py3,
|
||||||
pytorch-linux-jammy-rocm-n-py3-benchmarks,
|
pytorch-linux-jammy-rocm-n-py3-benchmarks,
|
||||||
pytorch-linux-jammy-cuda12.8-cudnn9-py3.10-clang12,
|
pytorch-linux-jammy-cuda12.8-cudnn9-py3.10-clang12,
|
||||||
pytorch-linux-jammy-py3.10-gcc11,
|
pytorch-linux-jammy-py3.10-gcc11,
|
||||||
@ -69,8 +70,9 @@ jobs:
|
|||||||
pytorch-linux-jammy-py3-clang18-asan,
|
pytorch-linux-jammy-py3-clang18-asan,
|
||||||
pytorch-linux-jammy-py3-clang12-onnx,
|
pytorch-linux-jammy-py3-clang12-onnx,
|
||||||
pytorch-linux-jammy-linter,
|
pytorch-linux-jammy-linter,
|
||||||
pytorch-linux-jammy-cuda12.8-cudnn9-py3.10-linter,
|
pytorch-linux-jammy-cuda12.8-cudnn9-py3.9-linter,
|
||||||
pytorch-linux-jammy-py3-clang12-executorch,
|
# Executorch pin needs update
|
||||||
|
# pytorch-linux-jammy-py3-clang12-executorch,
|
||||||
pytorch-linux-jammy-py3.12-triton-cpu,
|
pytorch-linux-jammy-py3.12-triton-cpu,
|
||||||
pytorch-linux-noble-riscv64-py3.12-gcc14
|
pytorch-linux-noble-riscv64-py3.12-gcc14
|
||||||
]
|
]
|
||||||
|
56
.github/workflows/generated-linux-aarch64-binary-manywheel-nightly.yml
generated
vendored
56
.github/workflows/generated-linux-aarch64-binary-manywheel-nightly.yml
generated
vendored
@ -62,7 +62,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cpu-aarch64
|
DOCKER_IMAGE_TAG_PREFIX: cpu-aarch64
|
||||||
DESIRED_PYTHON: "3.10"
|
DESIRED_PYTHON: "3.10"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_10-cpu-aarch64
|
build_name: manywheel-py3_10-cpu-aarch64
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -128,7 +128,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda12.6
|
DOCKER_IMAGE_TAG_PREFIX: cuda12.6
|
||||||
DESIRED_PYTHON: "3.10"
|
DESIRED_PYTHON: "3.10"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_10-cuda-aarch64-12_6
|
build_name: manywheel-py3_10-cuda-aarch64-12_6
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -174,7 +174,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda12.8
|
DOCKER_IMAGE_TAG_PREFIX: cuda12.8
|
||||||
DESIRED_PYTHON: "3.10"
|
DESIRED_PYTHON: "3.10"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_10-cuda-aarch64-12_8
|
build_name: manywheel-py3_10-cuda-aarch64-12_8
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -220,7 +220,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda13.0
|
DOCKER_IMAGE_TAG_PREFIX: cuda13.0
|
||||||
DESIRED_PYTHON: "3.10"
|
DESIRED_PYTHON: "3.10"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_10-cuda-aarch64-13_0
|
build_name: manywheel-py3_10-cuda-aarch64-13_0
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -265,7 +265,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cpu-aarch64
|
DOCKER_IMAGE_TAG_PREFIX: cpu-aarch64
|
||||||
DESIRED_PYTHON: "3.11"
|
DESIRED_PYTHON: "3.11"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_11-cpu-aarch64
|
build_name: manywheel-py3_11-cpu-aarch64
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -331,7 +331,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda12.6
|
DOCKER_IMAGE_TAG_PREFIX: cuda12.6
|
||||||
DESIRED_PYTHON: "3.11"
|
DESIRED_PYTHON: "3.11"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_11-cuda-aarch64-12_6
|
build_name: manywheel-py3_11-cuda-aarch64-12_6
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -377,7 +377,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda12.8
|
DOCKER_IMAGE_TAG_PREFIX: cuda12.8
|
||||||
DESIRED_PYTHON: "3.11"
|
DESIRED_PYTHON: "3.11"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_11-cuda-aarch64-12_8
|
build_name: manywheel-py3_11-cuda-aarch64-12_8
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -423,7 +423,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda13.0
|
DOCKER_IMAGE_TAG_PREFIX: cuda13.0
|
||||||
DESIRED_PYTHON: "3.11"
|
DESIRED_PYTHON: "3.11"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_11-cuda-aarch64-13_0
|
build_name: manywheel-py3_11-cuda-aarch64-13_0
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -468,7 +468,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cpu-aarch64
|
DOCKER_IMAGE_TAG_PREFIX: cpu-aarch64
|
||||||
DESIRED_PYTHON: "3.12"
|
DESIRED_PYTHON: "3.12"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_12-cpu-aarch64
|
build_name: manywheel-py3_12-cpu-aarch64
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -534,7 +534,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda12.6
|
DOCKER_IMAGE_TAG_PREFIX: cuda12.6
|
||||||
DESIRED_PYTHON: "3.12"
|
DESIRED_PYTHON: "3.12"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_12-cuda-aarch64-12_6
|
build_name: manywheel-py3_12-cuda-aarch64-12_6
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -580,7 +580,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda12.8
|
DOCKER_IMAGE_TAG_PREFIX: cuda12.8
|
||||||
DESIRED_PYTHON: "3.12"
|
DESIRED_PYTHON: "3.12"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_12-cuda-aarch64-12_8
|
build_name: manywheel-py3_12-cuda-aarch64-12_8
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -626,7 +626,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda13.0
|
DOCKER_IMAGE_TAG_PREFIX: cuda13.0
|
||||||
DESIRED_PYTHON: "3.12"
|
DESIRED_PYTHON: "3.12"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_12-cuda-aarch64-13_0
|
build_name: manywheel-py3_12-cuda-aarch64-13_0
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -671,7 +671,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cpu-aarch64
|
DOCKER_IMAGE_TAG_PREFIX: cpu-aarch64
|
||||||
DESIRED_PYTHON: "3.13"
|
DESIRED_PYTHON: "3.13"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_13-cpu-aarch64
|
build_name: manywheel-py3_13-cpu-aarch64
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -737,7 +737,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda12.6
|
DOCKER_IMAGE_TAG_PREFIX: cuda12.6
|
||||||
DESIRED_PYTHON: "3.13"
|
DESIRED_PYTHON: "3.13"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_13-cuda-aarch64-12_6
|
build_name: manywheel-py3_13-cuda-aarch64-12_6
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -783,7 +783,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda12.8
|
DOCKER_IMAGE_TAG_PREFIX: cuda12.8
|
||||||
DESIRED_PYTHON: "3.13"
|
DESIRED_PYTHON: "3.13"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_13-cuda-aarch64-12_8
|
build_name: manywheel-py3_13-cuda-aarch64-12_8
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -829,7 +829,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda13.0
|
DOCKER_IMAGE_TAG_PREFIX: cuda13.0
|
||||||
DESIRED_PYTHON: "3.13"
|
DESIRED_PYTHON: "3.13"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_13-cuda-aarch64-13_0
|
build_name: manywheel-py3_13-cuda-aarch64-13_0
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -874,7 +874,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cpu-aarch64
|
DOCKER_IMAGE_TAG_PREFIX: cpu-aarch64
|
||||||
DESIRED_PYTHON: "3.13t"
|
DESIRED_PYTHON: "3.13t"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_13t-cpu-aarch64
|
build_name: manywheel-py3_13t-cpu-aarch64
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -940,7 +940,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda12.6
|
DOCKER_IMAGE_TAG_PREFIX: cuda12.6
|
||||||
DESIRED_PYTHON: "3.13t"
|
DESIRED_PYTHON: "3.13t"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_13t-cuda-aarch64-12_6
|
build_name: manywheel-py3_13t-cuda-aarch64-12_6
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -986,7 +986,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda12.8
|
DOCKER_IMAGE_TAG_PREFIX: cuda12.8
|
||||||
DESIRED_PYTHON: "3.13t"
|
DESIRED_PYTHON: "3.13t"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_13t-cuda-aarch64-12_8
|
build_name: manywheel-py3_13t-cuda-aarch64-12_8
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -1032,7 +1032,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda13.0
|
DOCKER_IMAGE_TAG_PREFIX: cuda13.0
|
||||||
DESIRED_PYTHON: "3.13t"
|
DESIRED_PYTHON: "3.13t"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_13t-cuda-aarch64-13_0
|
build_name: manywheel-py3_13t-cuda-aarch64-13_0
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -1077,7 +1077,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cpu-aarch64
|
DOCKER_IMAGE_TAG_PREFIX: cpu-aarch64
|
||||||
DESIRED_PYTHON: "3.14"
|
DESIRED_PYTHON: "3.14"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_14-cpu-aarch64
|
build_name: manywheel-py3_14-cpu-aarch64
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -1143,7 +1143,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda12.6
|
DOCKER_IMAGE_TAG_PREFIX: cuda12.6
|
||||||
DESIRED_PYTHON: "3.14"
|
DESIRED_PYTHON: "3.14"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_14-cuda-aarch64-12_6
|
build_name: manywheel-py3_14-cuda-aarch64-12_6
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -1189,7 +1189,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda12.8
|
DOCKER_IMAGE_TAG_PREFIX: cuda12.8
|
||||||
DESIRED_PYTHON: "3.14"
|
DESIRED_PYTHON: "3.14"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_14-cuda-aarch64-12_8
|
build_name: manywheel-py3_14-cuda-aarch64-12_8
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -1235,7 +1235,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda13.0
|
DOCKER_IMAGE_TAG_PREFIX: cuda13.0
|
||||||
DESIRED_PYTHON: "3.14"
|
DESIRED_PYTHON: "3.14"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_14-cuda-aarch64-13_0
|
build_name: manywheel-py3_14-cuda-aarch64-13_0
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -1280,7 +1280,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cpu-aarch64
|
DOCKER_IMAGE_TAG_PREFIX: cpu-aarch64
|
||||||
DESIRED_PYTHON: "3.14t"
|
DESIRED_PYTHON: "3.14t"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_14t-cpu-aarch64
|
build_name: manywheel-py3_14t-cpu-aarch64
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -1346,7 +1346,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda12.6
|
DOCKER_IMAGE_TAG_PREFIX: cuda12.6
|
||||||
DESIRED_PYTHON: "3.14t"
|
DESIRED_PYTHON: "3.14t"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_14t-cuda-aarch64-12_6
|
build_name: manywheel-py3_14t-cuda-aarch64-12_6
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -1392,7 +1392,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda12.8
|
DOCKER_IMAGE_TAG_PREFIX: cuda12.8
|
||||||
DESIRED_PYTHON: "3.14t"
|
DESIRED_PYTHON: "3.14t"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_14t-cuda-aarch64-12_8
|
build_name: manywheel-py3_14t-cuda-aarch64-12_8
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
@ -1438,7 +1438,7 @@ jobs:
|
|||||||
DOCKER_IMAGE_TAG_PREFIX: cuda13.0
|
DOCKER_IMAGE_TAG_PREFIX: cuda13.0
|
||||||
DESIRED_PYTHON: "3.14t"
|
DESIRED_PYTHON: "3.14t"
|
||||||
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
runner_prefix: "${{ needs.get-label-type.outputs.label-type }}"
|
||||||
runs_on: linux.arm64.r7g.12xlarge.memory
|
runs_on: linux.arm64.m7g.4xlarge.ephemeral
|
||||||
ALPINE_IMAGE: "arm64v8/alpine"
|
ALPINE_IMAGE: "arm64v8/alpine"
|
||||||
build_name: manywheel-py3_14t-cuda-aarch64-13_0
|
build_name: manywheel-py3_14t-cuda-aarch64-13_0
|
||||||
build_environment: linux-aarch64-binary-manywheel
|
build_environment: linux-aarch64-binary-manywheel
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user