1+ name : Build Torch-TensorRT wheel on Linux with Future TensorRT Versions
2+
3+ on :
4+ workflow_call :
5+ inputs :
6+ repository :
7+ description : ' Repository to checkout, defaults to ""'
8+ default : " "
9+ type : string
10+ ref :
11+ description : ' Reference to checkout, defaults to "nightly"'
12+ default : " nightly"
13+ type : string
14+ test-infra-repository :
15+ description : " Test infra repository to use"
16+ default : " pytorch/test-infra"
17+ type : string
18+ test-infra-ref :
19+ description : " Test infra reference to use"
20+ default : " "
21+ type : string
22+ build-matrix :
23+ description : " Build matrix to utilize"
24+ default : " "
25+ type : string
26+ pre-script :
27+ description : " Pre script to run prior to build"
28+ default : " "
29+ type : string
30+ post-script :
31+ description : " Post script to run prior to build"
32+ default : " "
33+ type : string
34+ smoke-test-script :
35+ description : " Script for Smoke Test for a specific domain"
36+ default : " "
37+ type : string
38+ env-var-script :
39+ description : " Script that sets Domain-Specific Environment Variables"
40+ default : " "
41+ type : string
42+ package-name :
43+ description : " Name of the actual python package that is imported"
44+ default : " "
45+ type : string
46+ trigger-event :
47+ description : " Trigger Event in caller that determines whether or not to upload"
48+ default : " "
49+ type : string
50+ cache-path :
51+ description : " The path(s) on the runner to cache or restore. The path is relative to repository."
52+ default : " "
53+ type : string
54+ cache-key :
55+ description : " The key created when saving a cache and the key used to search for a cache."
56+ default : " "
57+ type : string
58+ architecture :
59+ description : Architecture to build for x86_64 for default Linux, or aarch64 for Linux aarch64 builds
60+ required : false
61+ type : string
62+ default : x86_64
63+ submodules :
64+ description : Works as stated in actions/checkout, but the default value is recursive
65+ required : false
66+ type : string
67+ default : recursive
68+ setup-miniconda :
69+ description : Set to true if setup-miniconda is needed
70+ required : false
71+ type : boolean
72+ default : true
73+
74+ permissions :
75+ id-token : write
76+ contents : read
77+
78+ jobs :
79+ build :
80+ strategy :
81+ fail-fast : false
82+ matrix : ${{ fromJSON(inputs.build-matrix) }}
83+ env :
84+ PYTHON_VERSION : ${{ matrix.python_version }}
85+ PACKAGE_TYPE : wheel
86+ REPOSITORY : ${{ inputs.repository }}
87+ REF : ${{ inputs.ref }}
88+ CU_VERSION : ${{ matrix.desired_cuda }}
89+ UPLOAD_TO_BASE_BUCKET : ${{ matrix.upload_to_base_bucket }}
90+ ARCH : ${{ inputs.architecture }}
91+ TENSORRT_STRIP_PREFIX : ${{ matrix.tensorrt.strip_prefix }}
92+ TENSORRT_VERSION : ${{ matrix.tensorrt.version }}
93+ TENSORRT_URLS : ${{ matrix.tensorrt.urls }}
94+ TENSORRT_SHA256 : ${{ matrix.tensorrt.sha256 }}
95+ UPLOAD_ARTIFACT_NAME : pytorch_tensorrt_${{ matrix.tensorrt.version }}_${{ matrix.python_version }}_${{ matrix.desired_cuda }}_${{ inputs.architecture }}
96+ name : build_tensorrt${{ matrix.tensorrt.version }}_py${{matrix.python_version}}_${{matrix.desired_cuda}}
97+ runs-on : ${{ matrix.validation_runner }}
98+ container :
99+ image : ${{ matrix.container_image }}
100+ options : ${{ matrix.gpu_arch_type == 'cuda' && '--gpus all' || ' ' }}
101+ # If a build is taking longer than 120 minutes on these runners we need
102+ # to have a conversation
103+ timeout-minutes : 120
104+
105+ steps :
106+ - name : Clean workspace
107+ shell : bash -l {0}
108+ run : |
109+ set -x
110+ echo "::group::Cleanup debug output"
111+ rm -rf "${GITHUB_WORKSPACE}"
112+ mkdir -p "${GITHUB_WORKSPACE}"
113+ if [[ "${{ inputs.architecture }}" = "aarch64" ]]; then
114+ rm -rf "${RUNNER_TEMP}/*"
115+ fi
116+ echo "::endgroup::"
117+ - uses : actions/checkout@v3
118+ with :
119+ # Support the use case where we need to checkout someone's fork
120+ repository : ${{ inputs.test-infra-repository }}
121+ ref : ${{ inputs.test-infra-ref }}
122+ path : test-infra
123+ - uses : actions/checkout@v3
124+ if : ${{ env.ARCH == 'aarch64' }}
125+ with :
126+ # Support the use case where we need to checkout someone's fork
127+ repository : " pytorch/builder"
128+ ref : " main"
129+ path : builder
130+ - name : Set linux aarch64 CI
131+ if : ${{ inputs.architecture == 'aarch64' }}
132+ shell : bash -l {0}
133+ env :
134+ DESIRED_PYTHON : ${{ matrix.python_version }}
135+ run : |
136+ set +e
137+ # TODO: This is temporary aarch64 setup script, this should be integrated into aarch64 docker.
138+ ${GITHUB_WORKSPACE}/builder/aarch64_linux/aarch64_ci_setup.sh
139+ echo "/opt/conda/bin" >> $GITHUB_PATH
140+ set -e
141+ - uses : ./test-infra/.github/actions/set-channel
142+ - name : Set PYTORCH_VERSION
143+ if : ${{ env.CHANNEL == 'test' }}
144+ run : |
145+ # When building RC, set the version to be the current candidate version,
146+ # otherwise, leave it alone so nightly will pick up the latest
147+ echo "PYTORCH_VERSION=${{ matrix.stable_version }}" >> "${GITHUB_ENV}"
148+ - uses : ./test-infra/.github/actions/setup-binary-builds
149+ env :
150+ PLATFORM : ${{ inputs.architecture == 'aarch64' && 'linux-aarch64' || ''}}
151+ with :
152+ repository : ${{ inputs.repository }}
153+ ref : ${{ inputs.ref }}
154+ submodules : ${{ inputs.submodules }}
155+ setup-miniconda : ${{ inputs.setup-miniconda }}
156+ python-version : ${{ env.PYTHON_VERSION }}
157+ cuda-version : ${{ env.CU_VERSION }}
158+ arch : ${{ env.ARCH }}
159+ - name : Combine Env Var and Build Env Files
160+ if : ${{ inputs.env-var-script != '' }}
161+ working-directory : ${{ inputs.repository }}
162+ shell : bash -l {0}
163+ run : |
164+ cat "${{ inputs.env-var-script }}" >> "${BUILD_ENV_FILE}"
165+ - name : Install torch dependency
166+ shell : bash -l {0}
167+ run : |
168+ set -x
169+ # shellcheck disable=SC1090
170+ source "${BUILD_ENV_FILE}"
171+ # shellcheck disable=SC2086
172+ ${CONDA_RUN} ${PIP_INSTALL_TORCH}
173+ - name : Run Pre-Script with Caching
174+ if : ${{ inputs.pre-script != '' }}
175+ uses : ./test-infra/.github/actions/run-script-with-cache
176+ with :
177+ cache-path : ${{ inputs.cache-path }}
178+ cache-key : ${{ inputs.cache-key }}
179+ repository : ${{ inputs.repository }}
180+ script : ${{ inputs.pre-script }}
181+ - name : Build clean
182+ working-directory : ${{ inputs.repository }}
183+ shell : bash -l {0}
184+ run : |
185+ set -x
186+ source "${BUILD_ENV_FILE}"
187+ ${CONDA_RUN} python setup.py clean
188+ - name : Build the wheel (bdist_wheel)
189+ working-directory : ${{ inputs.repository }}
190+ shell : bash -l {0}
191+ run : |
192+ set -x
193+ source "${BUILD_ENV_FILE}"
194+ ${CONDA_RUN} python setup.py bdist_wheel
195+
196+ - name : Run Post-Script
197+ if : ${{ inputs.post-script != '' }}
198+ uses : ./test-infra/.github/actions/run-script-with-cache
199+ with :
200+ repository : ${{ inputs.repository }}
201+ script : ${{ inputs.post-script }}
202+ - name : Smoke Test
203+ shell : bash -l {0}
204+ env :
205+ PACKAGE_NAME : ${{ inputs.package-name }}
206+ SMOKE_TEST_SCRIPT : ${{ inputs.smoke-test-script }}
207+ run : |
208+ set -x
209+ source "${BUILD_ENV_FILE}"
210+ # TODO: add smoke test for the auditwheel tarball built
211+
212+ # NB: Only upload to GitHub after passing smoke tests
213+ - name : Upload wheel to GitHub
214+ continue-on-error : true
215+ uses : actions/upload-artifact@v3
216+ with :
217+ name : ${{ env.UPLOAD_ARTIFACT_NAME }}
218+ path : ${{ inputs.repository }}/dist
219+
220+ concurrency :
221+ group : ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }}-${{ inputs.repository }}-${{ github.event_name == 'workflow_dispatch' }}-${{ inputs.job-name }}
222+ cancel-in-progress : true
0 commit comments