snarkvm-algorithms 0.8.0

Algorithms for a decentralized virtual machine
Documentation
## Build Guide

### 1. Install CUDA toolkit

The easiest way to install the CUDA toolkit on linux is to run:
- Linux:
  ```bash
  sudo apt update
  sudo apt install nvidia-cuda-toolkit
  
  nvcc --version
  ```

The alternative is to follow the instructions below:

- Windows or Linux - https://developer.nvidia.com/cuda-downloads
- macOS - https://developer.nvidia.com/nvidia-cuda-toolkit-developer-tools-mac-hosts


### 2. Build the snarkVM MSM CUDA Program

This may be necessary to ensure the compatibility of your GPU drivers.

```
  cd snarkVM/algorithms/src/msm/variable_base/blst_377_cuda
  ./build.sh
```

### 3. Benchmark the GPU implementations

#### Benchmark POSW:

Native:
```bash
  cd snarkVM/dpc
  cargo bench --bench posw 
```

GPU:
```bash
  cd snarkVM/dpc
  cargo bench --bench posw --features "snarkvm-algorithms/cuda"
```

#### Benchmark Transactions:

Native:
```bash
  cd snarkVM/dpc
  cargo bench --bench transaction 
```

GPU:
```bash
  cd snarkVM/dpc
  cargo bench --bench transaction --features "snarkvm-algorithms/cuda"
```