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;
8use crate::backends::*;
9
10impl TransactionOps<Self> for Dispatch {
11    async fn tr_execute(
12        transaction: TransactionPrimitive<Self>,
13    ) -> Result<TransactionPrimitiveData, ExecutionError> {
14        let first_tensor = transaction
15            .read_floats
16            .first()
17            .or(transaction.read_ints.first())
18            .or(transaction.read_bools.first());
19
20        match first_tensor {
21            Some(tensor) => {
22                transaction_op!(transaction, tensor)
23            }
24            None => Ok(TransactionPrimitiveData::default()),
25        }
26    }
27}