Skip to main content

burn_dispatch/ops/
transaction.rs

1use alloc::vec::Vec;
2use burn_backend::{
3    ExecutionError,
4    ops::{TransactionOps, TransactionPrimitive, TransactionPrimitiveData},
5};
6
7use crate::Dispatch;
8
9impl TransactionOps<Self> for Dispatch {
10    async fn tr_execute(
11        transaction: TransactionPrimitive<Self>,
12    ) -> Result<TransactionPrimitiveData, ExecutionError> {
13        let first_tensor = transaction
14            .read_floats
15            .first()
16            .or(transaction.read_ints.first())
17            .or(transaction.read_bools.first());
18
19        match first_tensor {
20            Some(tensor) => {
21                transaction_op!(transaction, tensor)
22            }
23            None => Ok(TransactionPrimitiveData::default()),
24        }
25    }
26}