burn_dispatch/ops/
transaction.rs1use 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}