Files
tfhe-rs/tfhe/docs/configuration/gpu_acceleration/gpu_operations.md
2025-07-07 09:44:43 +02:00

41 lines
6.5 KiB
Markdown

# GPU operations
This document outlines the GPU operations supported in TFHE-rs.
The GPU backend includes the following operations for both signed and unsigned encrypted integers:
| name | symbol | `Enc`/`Enc` | `Enc`/ `Int` |
|-----------------------------------------------------------------------------------------------------------------------------------|-----------------|----------------------|----------------------------|
| [Neg](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.neg-1) | `-` | :heavy\_check\_mark: | N/A |
| [Add](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.add-1) | `+` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Sub](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.sub-1) | `-` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Mul](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.mul-1) | `*` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Div](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.div-1) | `/` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Rem](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.rem-1) | `%` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Not](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.not-1) | `!` | :heavy\_check\_mark: | N/A |
| [BitAnd](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.bitand-1) | `&` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [BitOr](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.bitor-1) | `\|` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [BitXor](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.bitxor-1) | `^` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Shr](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.shr-1) | `>>` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Shl](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.shl-1) | `<<` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Rotate right](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.rotate_right-3) | `rotate_right` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Rotate left](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.rotate_left-3) | `rotate_left` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Min](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.min-1) | `min` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Max](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.max-1) | `max` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Greater than](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.gt-2) | `gt` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Greater or equal than](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.ge-2) | `ge` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Lower than](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.lt-2) | `lt` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Lower or equal than](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.le-2) | `le` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Equal](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.eq-2) | `eq` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Not Equal](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.ne-2) | `ne` | :heavy\_check\_mark: | :heavy\_check\_mark: |
| [Cast (into dest type)](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.cast_into) | `cast_into` | :heavy\_check\_mark: | N/A |
| [Cast (from src type)](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.cast_from-2) | `cast_from` | :heavy\_check\_mark: | N/A |
| [Ternary operator](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.select) | `select` | :heavy\_check\_mark: | :heavy\_multiplication\_x: |
| [Integer logarithm](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.ilog2) | `ilog2` | :heavy\_check\_mark: | N/A |
| [Count trailing/leading ones](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.leading_ones) | `leading_zeros` | :heavy\_check\_mark: | N/A |
| [Count trailing/leading zeros](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.leading_zeros) | `leading_ones` | :heavy\_check\_mark: | N/A |
| [Oblivious Pseudo Random Generation](https://docs.rs/tfhe/latest/tfhe/struct.FheInt.html#method.generate_oblivious_pseudo_random) | `oprf` | :heavy\_check\_mark: | N/A |
{% hint style="info" %}
All operations follow the same syntax as the one described in [here](../../fhe-computation/operations/README.md).
{% endhint %}