-
Notifications
You must be signed in to change notification settings - Fork 622
158 lines (151 loc) · 6.13 KB
/
nightly_pytorch_jni.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
name: nightly pytorch jni release
on:
# To trigger this workflow manually, you can use the following curl command:
# curl -XPOST -u "USERNAME:PERSONAL_TOKEN" -H "Accept: application/vnd.github.everest-preview+json" -H "Content-Type: application/json" https://api.github.com/repos/awslabs/djl/dispatches --data '{"event_type": "nightly-jni-build"}'
# Make sure you create your personal token with repo access. Follow steps in
# https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line
# to create your personal token.
repository_dispatch:
types: [nightly-jni-build]
schedule:
- cron: '0 5 * * *'
jobs:
build-pytorch-jni-cpu:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system: [macos-latest, ubuntu-18.04, windows-latest]
steps:
- uses: actions/checkout@v1
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- uses: actions/cache@v1
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Workaround for startup run
run: ./gradlew jar clean
- name: Release JNI prep
run: ./gradlew :pytorch:pytorch-native:compileJNI
- name: Test with Gradle
run: ./gradlew :integration:test "-Dai.djl.default_engine=PyTorch"
- name: Upload compiled jni library
uses: actions/upload-artifact@v1
if: always()
with:
name: jnilib-${{ runner.os }}
path: pytorch/pytorch-native/jnilib
build-pytorch-jni-linux-gpu:
runs-on: ubuntu-latest
container: nvidia/cuda:10.1-cudnn7-devel-ubuntu16.04
steps:
- uses: actions/checkout@v1
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- uses: actions/cache@v1
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Install Environment
run: |
apt update
apt-get install -y cmake curl
- name: Release JNI prep
run: ./gradlew :pytorch:pytorch-native:releaseJNI
- name: Upload compiled jni library
uses: actions/upload-artifact@v1
if: always()
with:
name: jnilib-${{ runner.os }}-GPU
path: pytorch/pytorch-native/jnilib
build-pytorch-jni-windows-gpu:
runs-on: windows-latest
steps:
- uses: actions/checkout@v1
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- uses: actions/cache@v1
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Remove unused stuff to save disk space
shell: cmd
run: rm.exe -Rf "C:\Program Files (x86)\Android" "C:\Program Files\dotnet" "%CONDA%" "%GOROOT_1_10_X64%" "%GOROOT_1_11_X64%" "%GOROOT_1_12_X64%" "%GOROOT_1_13_X64%" "C:\hostedtoolcache\windows\Ruby" "C:\Rust"
- name: Instal CUDA
shell: cmd
run: |
curl.exe -L http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_426.00_windows.exe -o cuda.exe
curl.exe -L http://developer.nvidia.com/compute/cuda/9.2/Prod2/local_installers2/cuda_9.2.148_windows -o cuda92.exe
curl.exe -L https://developer.download.nvidia.com/compute/redist/cudnn/v7.6.4/cudnn-10.1-windows7-x64-v7.6.4.38.zip -o cudnn.zip
cuda.exe -s
cuda92.exe -s
mkdir cuda
unzip.exe cudnn.zip
cp.exe -a cuda/include cuda/lib cuda/bin "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1/"
cp.exe -a cuda/include cuda/lib cuda/bin "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.2/"
- name: Release JNI
shell: cmd
run: |
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
set "CUDA_PATH=%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v10.1"
set "CUDA_PATH_V10_1=%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v10.1"
set "CUDA_PATH_V9_2=%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v9.2"
set "PATH=%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin;%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v10.1\libnvvp;%PATH%"
gradlew :pytorch:pytorch-native:releaseJNI
- name: Upload compiled jni library
uses: actions/upload-artifact@v1
if: always()
with:
name: jnilib-${{ runner.os }}-GPU
path: pytorch/pytorch-native/jnilib
publish:
runs-on: ubuntu-18.04
needs: [build-pytorch-jni-cpu, build-pytorch-jni-linux-gpu, build-pytorch-jni-windows-gpu]
steps:
- uses: actions/checkout@v2
- name: Download compiledJNI Mac
uses: actions/download-artifact@v1
with:
name: jnilib-macOS
path: jnilib
- name: Download releaseJNI Windows GPU
uses: actions/download-artifact@v1
with:
name: jnilib-Windows-GPU
path: jnilib
- name: Download compiledJNI Windows
uses: actions/download-artifact@v1
with:
name: jnilib-Windows
path: jnilib
- name: Download releaseJNI Linux GPU
uses: actions/download-artifact@v1
with:
name: jnilib-Linux-GPU
path: jnilib
- name: Download compiledJNI Linux CPU
uses: actions/download-artifact@v1
with:
name: jnilib-Linux
path: jnilib
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-2
- name: Copy files to S3 with the AWS CLI
run: |
aws s3 sync jnilib s3://djl-ai/publish/pytorch-1.4.0/jnilib