Skip to main content

burn_dispatch/ops/
transaction.rs

1use burn_backend::{
2    ExecutionError,
3    ops::{TransactionOps, TransactionPrimitive, TransactionPrimitiveData},
4};
5
6use crate::Dispatch;
7use crate::backends::*;
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}