# tree_d_3d.kernels.tests.test_cuda_kernels

*module*

The CUDA versions of the Barnes-Hut and FMM kernels on a GPU, against the CPU.

Each test runs :class:`FlatQuadtree`, :func:`direct_field` or a kernel on CuPy
arrays (the CUDA versions) and on NumPy arrays (the Pyccel versions). Without CuPy
they are skipped; ``test_barnes_hut_kernels_emulated`` runs the same CUDA sources
on the CPU, and ``tree_d_3d/tests/test_cupy_path.py`` the solver's
CuPy code path with a fake CuPy.

[View source](https://github.com/max-models/tree-d-3d/blob/devel/src/tree_d_3d/kernels/tests/test_cuda_kernels.py#L1-L1)

## tree_d_3d.kernels.tests.test_cuda_kernels.ROOT

*attribute* · *module attribute*

```python
ROOT = Quad(0.0, 0.0, 1.0)
```

[View source](https://github.com/max-models/tree-d-3d/blob/devel/src/tree_d_3d/kernels/tests/test_cuda_kernels.py#L24-L24)

## tree_d_3d.kernels.tests.test_cuda_kernels.TOL

*attribute* · *module attribute*

```python
TOL = {'rtol': 1e-10, 'atol': 1e-10}
```

[View source](https://github.com/max-models/tree-d-3d/blob/devel/src/tree_d_3d/kernels/tests/test_cuda_kernels.py#L25-L25)

## tree_d_3d.kernels.tests.test_cuda_kernels.pytestmark

*attribute* · *module attribute*

```python
pytestmark = pytest.mark.skipif(not xp.cupy_available(), reason='CuPy not installed or not functional')
```

[View source](https://github.com/max-models/tree-d-3d/blob/devel/src/tree_d_3d/kernels/tests/test_cuda_kernels.py#L20-L22)

## tree_d_3d.kernels.tests.test_cuda_kernels.system

*function*

```python
def system()
```

[View source](https://github.com/max-models/tree-d-3d/blob/devel/src/tree_d_3d/kernels/tests/test_cuda_kernels.py#L28-L42)

## tree_d_3d.kernels.tests.test_cuda_kernels.test_coincident_charges_are_reported_on_the_gpu

*function*

```python
def test_coincident_charges_are_reported_on_the_gpu()
```

[View source](https://github.com/max-models/tree-d-3d/blob/devel/src/tree_d_3d/kernels/tests/test_cuda_kernels.py#L146-L149)

## tree_d_3d.kernels.tests.test_cuda_kernels.test_every_kernel_has_a_cuda_version

*function*

```python
def test_every_kernel_has_a_cuda_version()
```

[View source](https://github.com/max-models/tree-d-3d/blob/devel/src/tree_d_3d/kernels/tests/test_cuda_kernels.py#L56-L58)

## tree_d_3d.kernels.tests.test_cuda_kernels.test_fmm

*function*

```python
def test_fmm(system, potential)
```

[View source](https://github.com/max-models/tree-d-3d/blob/devel/src/tree_d_3d/kernels/tests/test_cuda_kernels.py#L99-L111)

## tree_d_3d.kernels.tests.test_cuda_kernels.test_pair_energy_and_soften_pairs

*function*

```python
def test_pair_energy_and_soften_pairs(system)
```

[View source](https://github.com/max-models/tree-d-3d/blob/devel/src/tree_d_3d/kernels/tests/test_cuda_kernels.py#L114-L143)

## tree_d_3d.kernels.tests.test_cuda_kernels.test_tree_and_direct_evaluation

*function*

```python
def test_tree_and_direct_evaluation(system, kernel)
```

[View source](https://github.com/max-models/tree-d-3d/blob/devel/src/tree_d_3d/kernels/tests/test_cuda_kernels.py#L81-L96)

## tree_d_3d.kernels.tests.test_cuda_kernels.test_tree_build_is_identical

*function*

```python
def test_tree_build_is_identical(system, leaf_capacity)
```

[View source](https://github.com/max-models/tree-d-3d/blob/devel/src/tree_d_3d/kernels/tests/test_cuda_kernels.py#L61-L78)
