Commit 3b29e8df authored by Yukikaze-CZR's avatar Yukikaze-CZR
Browse files

Merge remote-tracking branch 'upstream/0.6.0' into 0.6.0

parents 615d1ac2 60895e5e
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -20,6 +20,12 @@

namespace faiss {

/*
 * Use pin memory to build Readonly Inverted list will accelerate cuda memory copy, but it will downgrade cpu ivf search
 * performance. read only inverted list structure will also make ivf search performance not stable. ISSUE 500 mention
 * this problem. Best performance is the original inverted list with non pin memory.
 */

PageLockMemory::PageLockMemory(size_t size) : nbytes(size) {
    CUDA_VERIFY(cudaHostAlloc(&data, size, 0));
}
+94 −14
Original line number Diff line number Diff line
# Install Milvus from Source Code

## Software requirements
- [Build from source](#build-from-source)
- [Compile Milvus on Docker](#compile-milvus-on-docker)

If you encounter any problems/issues compiling Milvus from source, please refer to [Troubleshooting](#troubleshooting).

## Build from source

### Requirements

- Ubuntu 18.04 or higher

@@ -8,21 +15,21 @@
  
- CMake 3.12 or higher

##### For GPU version, you will also need:
##### For GPU-enabled version, you will also need:

- CUDA 10.0 or higher
- NVIDIA driver 418 or higher

## Compilation
### Compilation

### Step 1 Install dependencies
#### Step 1 Install dependencies

```shell
$ cd [Milvus root path]/core
$ ./ubuntu_build_deps.sh
```

### Step 2 Build
#### Step 2 Build

```shell
$ cd [Milvus root path]/core
@@ -31,7 +38,7 @@ or
$ ./build.sh -t Release
```

By default, it will build CPU version. To build GPU version, add `-g` option
By default, it will build CPU-only version. To build GPU version, add `-g` option
```shell
$ ./build.sh -g
```
@@ -43,7 +50,7 @@ $./build.sh -h

When the build is completed, all the stuff that you need in order to run Milvus will be installed under `[Milvus root path]/core/milvus`.

## Launch Milvus server
### Launch Milvus server

```shell
$ cd [Milvus root path]/core/milvus
@@ -68,14 +75,87 @@ To stop Milvus server, run:
$ ./stop_server.sh
```

## Compile Milvus on Docker

With the following Docker images, you should be able to compile Milvus on any Linux platform that run Docker. To build a GPU supported Milvus, you neeed to install [NVIDIA Docker](https://github.com/NVIDIA/nvidia-docker/) first.

### Step 1 Pull Milvus Docker images

Pull CPU-only image:

```shell
$ docker pull milvusdb/milvus-cpu-build-env:v0.6.0-ubuntu18.04
```

Pull GPU-enabled image:

```shell
$ docker pull milvusdb/milvus-gpu-build-env:v0.6.0-ubuntu18.04
```
### Step 2 Start the Docker container

Start a CPU-only container:

```shell
$ docker run -it -p 19530:19530 -d milvusdb/milvus-cpu-build-env:v0.6.0-ubuntu18.04
```

Start a GPU container:

```shell
$ docker run — runtime=nvidia -it -p 19530:19530 -d milvusdb/milvus-gpu-build-env:v0.6.0-ubuntu18.04
```
To enter the container:

```shell
$ docker exec -it [container_id] bash
```
### Step 3 Download Milvus source code

Download Milvus source code:

```shell
$ cd /home
$ wget https://github.com/milvus-io/milvus/archive/0.6.0.tar.gz
```

Extract the source package:

```shell
$ tar xvf ./v0.6.0.tar.gz
```

The source code is extracted into a folder called `milvus-0.6.0`. To enter its core directory:

```shell
$ cd ./milvus-0.6.0/core
```
### Step 4 Compile Milvus in the container

If you are using a CPU-only image, compile it like this:
```shell
$ ./build.sh -t Release
```

If you are using a GPU-enabled image, you need to add a `-g` parameter:
```shell
$ ./build.sh -g -t Release
```

Then start Milvus server:
```shell
$ ./start_server.sh
```

## Troubleshooting
1. If you encounter the following error when compiling: 
`protocol https not supported or disabled in libcurl`.
First, make sure you have `libcurl4-openssl-dev` installed in your system.
Then try reinstall CMake from source with `--system-curl` option:
Then try reinstalling the latest CMake from source with `--system-curl` option:

   ```shell
   $ ./bootstrap --system-curl 
   $ make 
   $ sudo make install
   ```
If the `--system-curl` command doesn't work, you can also reinstall CMake in **Ubuntu Software** on your local computer.