build.md 10.6 KB
Newer Older
WRH's avatar
WRH committed
1
2
## Build MMCV from source

3
### Build mmcv-full
WRH's avatar
WRH committed
4

5
Before installing mmcv-full, make sure that PyTorch has been successfully installed following the [PyTorch official installation guide](https://pytorch.org/get-started/locally/#start-locally). This can be verified using the following command
WRH's avatar
WRH committed
6
7

```bash
8
python -c 'import torch;print(torch.__version__)'
WRH's avatar
WRH committed
9
10
```

11
If version information is output, then PyTorch is installed.
12

13
14
15
```{note}
- To compile ONNX Runtime custom operators, please refer to [How to build custom operators for ONNX Runtime](https://mmcv.readthedocs.io/en/latest/deployment/onnxruntime_op.html#how-to-build-custom-operators-for-onnx-runtime)
- To compile TensorRT customization, please refer to [How to build TensorRT plugins in MMCV](https://mmcv.readthedocs.io/en/latest/deployment/tensorrt_plugin.html#how-to-build-tensorrt-plugins-in-mmcv)
16
17
```

18
19
20
21
22
```{note}
If you would like to use `opencv-python-headless` instead of `opencv-python`,
e.g., in a minimum container environment or servers without GUI,
you can first install it before installing MMCV to skip the installation of `opencv-python`.
```
WRH's avatar
WRH committed
23

24
#### Build on Linux
WRH's avatar
WRH committed
25

26
1. Clone the repo
WRH's avatar
WRH committed
27

28
29
30
31
   ```bash
   git clone https://github.com/open-mmlab/mmcv.git
   cd mmcv
   ```
WRH's avatar
WRH committed
32

33
2. Install `ninja` and `psutil` to speed up the compilation
WRH's avatar
WRH committed
34

35
36
37
   ```bash
   pip install -r requirements/optional.txt
   ```
WRH's avatar
WRH committed
38

39
3. Check the nvcc version (requires 9.2+. Skip if no GPU available.)
WRH's avatar
WRH committed
40

41
42
43
   ```bash
   nvcc --version
   ```
WRH's avatar
WRH committed
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
   If the above command outputs the following message, it means that the nvcc setting is OK, otherwise you need to set CUDA_HOME.

   ```
   nvcc: NVIDIA (R) Cuda compiler driver
   Copyright (c) 2005-2020 NVIDIA Corporation
   Built on Mon_Nov_30_19:08:53_PST_2020
   Cuda compilation tools, release 11.2, V11.2.67
   Build cuda_11.2.r11.2/compiler.29373293_0
   ```

   :::{note}
   If you want to support ROCm, you can refer to [AMD ROCm](https://rocmdocs.amd.com/en/latest/Installation_Guide/Installation-Guide.html) to install ROCm.
   :::

4. Check the gcc version (requires 5.4+)

   ```bash
   gcc --version
   ```

5. Start building (takes 10+ min)

   ```bash
   MMCV_WITH_OPS=1 pip install -e . -v
   ```

6. Validate the installation

   ```bash
   python .dev_scripts/check_installation.py
   ```

   If no error is reported by the above command, the installation is successful. If there is an error reported, please check [Frequently Asked Questions](../faq.md) to see if there is already a solution.

   If no solution is found, please feel free to open an [issue](https://github.com/open-mmlab/mmcv/issues).

#### Build on macOS
WRH's avatar
WRH committed
82

Zaida Zhou's avatar
Zaida Zhou committed
83
```{note}
84
If you are using a mac with an M1 chip, install the nightly version of PyTorch, otherwise you will encounter the problem in [issues#2218](https://github.com/open-mmlab/mmcv/issues/2218).
Zaida Zhou's avatar
Zaida Zhou committed
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
1. Clone the repo

   ```bash
   git clone https://github.com/open-mmlab/mmcv.git
   cd mmcv
   ```

2. Install `ninja` and `psutil` to speed up the compilation

   ```bash
   pip install -r requirements/optional.txt
   ```

3. Start building

   ```bash
   MMCV_WITH_OPS=1 pip install -e .
   ```

4. Validate the installation

   ```bash
   python .dev_scripts/check_installation.py
   ```

   If no error is reported by the above command, the installation is successful. If there is an error reported, please check [Frequently Asked Questions](../faq.md) to see if there is already a solution.

   If no solution is found, please feel free to open an [issue](https://github.com/open-mmlab/mmcv/issues).

#### Build on Windows
WRH's avatar
WRH committed
117
118
119
120

Building MMCV on Windows is a bit more complicated than that on Linux.
The following instructions show how to get this accomplished.

121
##### Prerequisite
WRH's avatar
WRH committed
122
123
124
125
126
127
128
129
130
131
132
133
134
135

The following software is required for building MMCV on windows.
Install them first.

- [Git](https://git-scm.com/download/win)
  - During installation, tick **add git to Path**.
- [Visual Studio Community 2019](https://visualstudio.microsoft.com)
  - A compiler for C++ and CUDA codes.
- [Miniconda](https://docs.conda.io/en/latest/miniconda.html)
  - Official distributions of Python should work too.
- [CUDA 10.2](https://developer.nvidia.com/cuda-10.2-download-archive)
  - Not required for building CPU version.
  - Customize the installation if necessary. As a recommendation, skip the driver installation if a newer version is already installed.

136
137
138
```{note}
You should know how to set up environment variables, especially `Path`, on Windows. The following instruction relies heavily on this skill.
```
WRH's avatar
WRH committed
139

140
##### Common steps
WRH's avatar
WRH committed
141
142
143

1. Launch Anaconda prompt from Windows Start menu

144
   Do not use raw `cmd.exe` s instruction is based on PowerShell syntax.
WRH's avatar
WRH committed
145

146
2. Create a new conda environment
WRH's avatar
WRH committed
147

148
149
150
   ```powershell
   (base) PS C:\Users\xxx> conda create --name mmcv python=3.7
   (base) PS C:\Users\xxx> conda activate mmcv  # make sure to activate environment before any operation
151
   ```
WRH's avatar
WRH committed
152

153
3. Install PyTorch. Choose a version based on your need.
WRH's avatar
WRH committed
154

155
156
157
158
159
   ```powershell
   # CUDA version
   (mmcv) PS C:\Users\xxx> conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
   # CPU version
   (mmcv) PS C:\Users\xxx> conda install install pytorch torchvision cpuonly -c pytorch
160
   ```
WRH's avatar
WRH committed
161

162
4. Clone the repo
WRH's avatar
WRH committed
163

164
165
166
   ```powershell
   (mmcv) PS C:\Users\xxx> git clone https://github.com/open-mmlab/mmcv.git
   (mmcv) PS C:\Users\xxx\mmcv> cd mmcv
167
   ```
WRH's avatar
WRH committed
168

169
5. Install `ninja` and `psutil` to speed up the compilation
WRH's avatar
WRH committed
170

171
172
   ```powershell
   (mmcv) PS C:\Users\xxx\mmcv> pip install -r requirements/optional.txt
173
   ```
174

175
6. Install required Python packages
176

177
178
   ```shell
   (mmcv) PS C:\Users\xxx\mmcv> pip install -r requirements/runtime.txt
179
   ```
WRH's avatar
WRH committed
180

181
7. Set up MSVC compiler
WRH's avatar
WRH committed
182

183
   Set Environment variable, add `C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\Hostx86\x64` to `PATH`, so that `cl.exe` will be available in prompt, as shown below.
WRH's avatar
WRH committed
184

185
186
   ```powershell
   (mmcv) PS C:\Users\xxx\mmcv> cl
187
188
   Microsoft (R) C/C++ Optimizing  Compiler Version 19.27.29111 for x64
   Copyright (C) Microsoft Corporation.   All rights reserved.
WRH's avatar
WRH committed
189

190
191
   usage: cl [ option... ] filename... [ / link linkoption... ]
   ```
WRH's avatar
WRH committed
192

193
   For compatibility, we use the x86-hosted and x64-targeted compiler. note `Hostx86\x64` in the path.
WRH's avatar
WRH committed
194

195
   You may want to change the system language to English because pytorch will parse text output from `cl.exe` to check its version. However only utf-8 is recognized. Navigate to Control Panel -> Region -> Administrative -> Language for Non-Unicode programs and change it to English.
WRH's avatar
WRH committed
196

197
##### Build and install MMCV
WRH's avatar
WRH committed
198

199
mmcv-full can be built in two ways:
WRH's avatar
WRH committed
200

201
1. Full version (CPU ops)
WRH's avatar
WRH committed
202

203
   Module `ops` will be compiled as a pytorch extension, but only x86 code will be compiled. The compiled ops can be executed on CPU only.
WRH's avatar
WRH committed
204

205
2. Full version (CUDA ops)
206

207
   Both x86 and CUDA codes of `ops` module will be compiled. The compiled version can be run on both CPU and CUDA-enabled GPU (if implemented).
WRH's avatar
WRH committed
208

209
###### CPU version
WRH's avatar
WRH committed
210

211
1. Set up environment variables
WRH's avatar
WRH committed
212

213
214
   ```powershell
   (mmcv) PS C:\Users\xxx\mmcv> $env:MMCV_WITH_OPS = 1
215
   ```
WRH's avatar
WRH committed
216

217
2. Build and install
WRH's avatar
WRH committed
218

219
220
221
222
223
224
   ```powershell
   (mmcv) PS C:\Users\xxx\mmcv> python setup.py build_ext
   (mmcv) PS C:\Users\xxx\mmcv> python setup.py develop
   ```

###### GPU version
225

226
2. Make sure `CUDA_PATH` or `CUDA_HOME` is already set in `envs` via `ls env:`, desired output is shown as below:
WRH's avatar
WRH committed
227

228
229
   ```powershell
   (mmcv) PS C:\Users\xxx\mmcv> ls env:
WRH's avatar
WRH committed
230
231
232
233
234
235
236
237

   Name                           Value
   ----                           -----
   CUDA_PATH                      C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2
   CUDA_PATH_V10_1                C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
   CUDA_PATH_V10_2                C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2
   ```

238
   This should already be done by CUDA installer. If not, or you have multiple version of CUDA toolkit installed, set it with
WRH's avatar
WRH committed
239

240
241
   ```powershell
   (mmcv) PS C:\Users\xxx\mmcv> $env:CUDA_HOME = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2"
WRH's avatar
WRH committed
242
   # OR
243
   (mmcv) PS C:\Users\xxx\mmcv> $env:CUDA_HOME = $env:CUDA_PATH_V10_2 # if CUDA_PATH_V10_2 is in envs:
WRH's avatar
WRH committed
244
245
   ```

246
3. Set CUDA target arch
WRH's avatar
WRH committed
247
248

   ```shell
249
250
   # Here you need to change to the target architecture corresponding to your GPU
   (mmcv) PS C:\Users\xxx\mmcv> $env:TORCH_CUDA_ARCH_LIST="7.5"
WRH's avatar
WRH committed
251
252
   ```

253
254
   :::{note}
   Check your the compute capability of your GPU from [here](https://developer.nvidia.com/cuda-gpus).
WRH's avatar
WRH committed
255

256
257
258
259
260
261
   ```powershell
   (mmcv) PS C:\Users\xxx\mmcv> &"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\demo_suite\deviceQuery.exe"
   Device 0: "NVIDIA GeForce GTX 1660 SUPER"
   CUDA Driver Version / Runtime Version          11.7 / 11.1
   CUDA Capability Major/Minor version number:    7.5
   ```
WRH's avatar
WRH committed
262

263
264
265
266
267
268
   The 7.5 above indicates the target architecture. Note: You need to replace v10.2 with your CUDA version in the above command.
   :::

4. Build and install

   ```powershell
WRH's avatar
WRH committed
269
   # build
270
   python setup.py build_ext # if success, cl will be launched to compile ops
WRH's avatar
WRH committed
271
272
273
274
   # install
   python setup.py develop
   ```

275
276
277
278
279
280
281
282
   ```{note}
   If you are compiling against PyTorch 1.6.0, you might meet some errors from PyTorch as described in [this issue](https://github.com/pytorch/pytorch/issues/42467). Follow [this pull request](https://github.com/pytorch/pytorch/pull/43380/files) to modify the source code in your local PyTorch installation.
   ```

##### Validate installation

```powershell
(mmcv) PS C:\Users\xxx\mmcv> python .dev_scripts/check_installation.py
283
```
WRH's avatar
WRH committed
284

285
286
287
288
289
290
291
292
If no error is reported by the above command, the installation is successful. If there is an error reported, please check [Frequently Asked Questions](../faq.md) to see if there is already a solution.
If no solution is found, please feel free to open an [issue](https://github.com/open-mmlab/mmcv/issues).

### Build mmcv

If you need to use PyTorch-related modules, make sure PyTorch has been successfully installed in your environment by referring to the [PyTorch official installation guide](https://github.com/pytorch/pytorch#installation).

1. Clone the repo
293

294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
   ```bash
   git clone https://github.com/open-mmlab/mmcv.git
   cd mmcv
   ```

2. Start building

   ```bash
   pip install -e . -v
   ```

3. Validate installation

   ```bash
   python -c 'import mmcv;print(mmcv.__version__)'
   ```

### Build mmcv-full on IPU machine
312
313
314

Firstly, you need to apply for an IPU cloud machine, see [here](https://www.graphcore.ai/ipus-in-the-cloud).

315
#### Option 1: Docker
316
317

1. Pull docker
318

319
320
321
   ```bash
   docker pull graphcore/pytorch
   ```
322
323
324

2. Build MMCV under same python environment

325
#### Option 2: Install from SDK
326
327
328
329

1. Build MMCV

2. Use pip to install sdk according to [IPU PyTorch document](https://docs.graphcore.ai/projects/poptorch-user-guide/en/latest/installation.html). Also, you need to apply for machine and sdk to Graphcore.