
The diagram above shows a back and forth interaction of Host and Chimera. An example of this can be found in tests/static_data_tests/host_sync.cpp
File:
/src/synchronization.hppLines 34–40 /**
* @brief Stall the Chimera pipeline until a Tensor transfer is complete.
* @tparam TensorType
* @param tensor Tensor to barrier on
*/
template <typename TensorType>
void barrier(TensorType& tensor) {
File:
/src/synchronization.hppLines 48–54 /**
* @brief Raise a Chimera software interrupt to the host. The interrupt can be blocking or non-blocking as defined by
interruptMode.
* @param interruptMode Interrupt mode
* @param code Interrupt code to be associated with the interrupt
*/
void swInterrupt(SWInterruptMode interruptMode, const std::uint8_t code) {
File:
/src/synchronization.hppLines 66–75 /**
* @brief Barrier on a tensor and then raise a software interrupt to the host. The interrupt can be blocking or
non-blocking as defined by interruptMode.
* @tparam TensorType
* @param tensor Tensor to barrier on
* @param interruptMode Interrupt mode. Blocking or Non-blocking
* @param code Interrupt code to be associated with the interrupt
*/
template <typename TensorType>
void hostSync(TensorType& tensor, SWInterruptMode interruptMode, std::uint8_t code) {