# Atomic Resolution Brownian Dynamics (ARBD 2.0-alpha)

Brownian dynamics (BD) simulation is method for studying biomolecules,
ions, and nanomaterials that balances detail with computational
efficiency.

This development branch of ARBD has the aim of scaling ARBD up to
larger systems and accelerating to the hardware limits, while making
it easier to maintain diverse features. In particular we are seeking
speed and good scaling on multi-GPU clusters.

It is currently non-functional as many developments remain.

## Building

### Dependencies

Linux workstation with CUDA-compatible GPU (minimum 3.5 compute capability)
  - CMake >= 3.9
  - gcc >= 4.9
  - cuda >= 9.0  (> 11.5 recommended)

### Build process

From the root arbd directory (where this README is found), run:
```
## Determine the compute capability of your CUDA-enabled graphics card
export CMAKE_CUDA_ARCHITECTURES="35;50;75;80"   ;# especially important for CMake < 3.24.0
## export CUDA_INCLUDE_DIRS="$CUDA_HOME/include" ;# optionally be explicit about cuda include paths; usually not needed
cmake -S src -B build &&
(
  cd build
  make -j
)
```

If your CUDA toolkit is installed in a nonstandard location that CMake
is unable to find, you may provide use the environement variable
`CMAKE_CUDA_COMPILER` to specify the path to nvcc. You may also find
it neccesary to set the environment variable `CUDA_INCLUDE_DIRS` if
compilation fails due to the compiler being unable to find <cuda.h>.

Note that ARBD has been developed using CUDA-9.0 and targets NVIDIA
GPUs featuring 6.0 compute capability. The code should work with
devices with compute capability >=2.0, but there are no guarantees.

## Authors

ARBD2 is being developed by the Aksimentiev group
(http://bionano.physics.illinois.edu).

  - Christopher Maffeo <mailto:cmaffeo2@illinois.edu>
  - Han-yi Chao

Please direct questions or problems to Chris.