# tree_d_3d.kernels.tests.test_metal_kernels

*module*

The Metal versions of the kernels on the GPU of an Apple-silicon Mac, against the CPU.

Each test calls a ``<name>_metal.py`` function and the Pyccel (or NumPy) version
with the same arrays. The GPU computes in float32, so the results agree to about
1e-5 of the largest value. Skipped without MLX and a Metal GPU.

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

## tree_d_3d.kernels.tests.test_metal_kernels.SOFTENING

*attribute* · *module attribute*

```python
SOFTENING = 0.01
```

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

## tree_d_3d.kernels.tests.test_metal_kernels.TOL

*attribute* · *module attribute*

```python
TOL = {'rtol': 0.0, 'atol': 3e-05}
```

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

## tree_d_3d.kernels.tests.test_metal_kernels.pytestmark

*attribute* · *module attribute*

```python
pytestmark = pytest.mark.skipif(not metal_available(), reason='MLX with a Metal GPU is not available')
```

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

## tree_d_3d.kernels.tests.test_metal_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_metal_kernels.py#L43-L57)

## tree_d_3d.kernels.tests.test_metal_kernels.test_direct_sums

*function*

```python
def test_direct_sums(system, name, metal)
```

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

## tree_d_3d.kernels.tests.test_metal_kernels.test_direct_sums_report_coincident_charges

*function*

```python
def test_direct_sums_report_coincident_charges(name, metal)
```

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

## tree_d_3d.kernels.tests.test_metal_kernels.test_pair_energy

*function*

```python
def test_pair_energy(system)
```

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

## tree_d_3d.kernels.tests.test_metal_kernels.test_tree_evaluation

*function*

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

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