CIRCT 24.0.0git
Loading...
Searching...
No Matches
esitester.cpp File Reference
#include "esi/Accelerator.h"
#include "esi/CLI.h"
#include "esi/Manifest.h"
#include "esi/Services.h"
#include "esi/TypedPorts.h"
#include <algorithm>
#include <atomic>
#include <chrono>
#include <cstdlib>
#include <cstring>
#include <future>
#include <iostream>
#include <map>
#include <memory>
#include <random>
#include <span>
#include <sstream>
#include <stdexcept>
#include <vector>
Include dependency graph for esitester.cpp:

Go to the source code of this file.

Classes

struct  StreamingAddArg
 Packed struct representing a parallel window argument for StreamingAdder. More...
struct  StreamingAddResult
 Packed struct representing a parallel window result for StreamingAdder. More...
struct  StreamingAddTranslatedArg
 Test the StreamingAdder module using message translation. More...
struct  StreamingAddTranslatedResult
 Translated result struct for StreamingAdder. More...
struct  Coord
 Test the CoordTranslator module using message translation. More...
struct  CoordTranslateArg
 Translated argument struct for CoordTranslator. More...
struct  CoordTranslateResult
 Translated result struct for CoordTranslator. More...
struct  SerialCoordHeader
struct  SerialCoordData
struct  SerialCoordInput
struct  SerialCoordBurst
struct  SerialCoordOutputHeader
struct  SerialCoordOutputData
union  SerialCoordOutputFrame
struct  SerialCoordOutputBatch
 Deserialized result batch from the serial coord translator. More...
class  SerialCoordOutputBatch::TypeDeserializer

Functions

static void callbackTest (AcceleratorConnection *, Accelerator *, uint32_t iterations)
static void hostmemTest (AcceleratorConnection *, Accelerator *, const std::vector< uint32_t > &widths, bool write, bool read)
static void hostmemBandwidthTest (AcceleratorConnection *conn, Accelerator *acc, uint32_t xferCount, const std::vector< uint32_t > &widths, bool read, bool write)
static void dmaTest (AcceleratorConnection *, Accelerator *, const std::vector< uint32_t > &widths, bool read, bool write)
static void bandwidthTest (AcceleratorConnection *, Accelerator *, const std::vector< uint32_t > &widths, uint32_t xferCount, bool read, bool write, bool checkData)
static uint8_t esitesterDataByte (uint32_t index, size_t byte)
static uint8_t enginePatternByte (uint32_t index, size_t byte, size_t bitWidth)
static void loopbackAddTest (AcceleratorConnection *, Accelerator *, uint32_t iterations, bool pipeline)
static void aggregateHostmemBandwidthTest (AcceleratorConnection *, Accelerator *, uint32_t width, uint32_t xferCount, bool read, bool write)
static void streamingAddTest (AcceleratorConnection *conn, Accelerator *accel, uint32_t addAmt, uint32_t numItems)
 Test the StreamingAdder module.
static void streamingAddTranslatedTest (AcceleratorConnection *, Accelerator *, uint32_t addAmt, uint32_t numItems)
static void coordTranslateTest (AcceleratorConnection *, Accelerator *, uint32_t xTrans, uint32_t yTrans, uint32_t numCoords)
static void serialCoordTranslateTest (AcceleratorConnection *, Accelerator *, uint32_t xTrans, uint32_t yTrans, uint32_t numCoords, size_t batchSizeLimit)
static void autoSerialCoordTranslateTest (AcceleratorConnection *, Accelerator *, uint32_t xTrans, uint32_t yTrans, uint32_t numCoords)
static void channelTest (AcceleratorConnection *, Accelerator *, uint32_t iterations)
static void resetTest (AcceleratorConnection *, Accelerator *)
static std::string defaultWidthsStr ()
static std::string formatBandwidth (double bytesPerSec)
static std::string humanBytes (uint64_t bytes)
static std::string humanTimeUS (uint64_t us)
static void * alignedAllocCompat (std::size_t alignment, std::size_t size)
static void alignedFreeCompat (void *ptr)
int main (int argc, const char *argv[])
static void checkBurstCommandRegisters (services::MMIO::MMIORegion &mmio, uint64_t address, uint64_t flits)
static void hostmemWriteTest (Accelerator *acc, esi::services::HostMem::HostMemRegion &region, uint32_t width)
 Test the hostmem write functionality.
static void hostmemReadTest (Accelerator *acc, esi::services::HostMem::HostMemRegion &region, uint32_t width)
static void dmaReadTest (AcceleratorConnection *conn, Accelerator *acc, size_t width)
static void dmaWriteTest (AcceleratorConnection *conn, Accelerator *acc, size_t width)
static size_t engineWireBytes (size_t bitWidth)
static std::vector< uint8_t > enginePatternBytes (uint32_t index, size_t bitWidth)
static uint64_t enginePayloadFold (uint32_t index, size_t bitWidth)
static void bandwidthReadTest (AcceleratorConnection *conn, Accelerator *acc, size_t width, size_t xferCount, bool checkData)
static void bandwidthWriteTest (AcceleratorConnection *conn, Accelerator *acc, size_t width, size_t xferCount, bool checkData)
static size_t hostmemWireBytes (uint32_t width)
static uint8_t esitesterHostmemByte (uint32_t index, size_t byte, uint32_t width)
static uint64_t esitesterElemFold (uint32_t i, uint32_t width)
static void hostmemWriteBandwidthTest (AcceleratorConnection *conn, Accelerator *acc, esi::services::HostMem::HostMemRegion &region, uint32_t width, uint32_t xferCount)
static void hostmemReadBandwidthTest (AcceleratorConnection *conn, Accelerator *acc, esi::services::HostMem::HostMemRegion &region, uint32_t width, uint32_t xferCount)

Variables

constexpr std::array< uint32_t, 8 > defaultWidths
static constexpr uint64_t kEsitesterSeqSeed = 0x5A5A5A5A5A5A5A5AULL

Function Documentation

◆ aggregateHostmemBandwidthTest()

void aggregateHostmemBandwidthTest ( AcceleratorConnection * conn,
Accelerator * acc,
uint32_t width,
uint32_t xferCount,
bool read,
bool write )
static

◆ alignedAllocCompat()

void * alignedAllocCompat ( std::size_t alignment,
std::size_t size )
static

Definition at line 158 of file esitester.cpp.

Referenced by coordTranslateTest(), and streamingAddTranslatedTest().

◆ alignedFreeCompat()

void alignedFreeCompat ( void * ptr)
static

Definition at line 172 of file esitester.cpp.

Referenced by coordTranslateTest(), and streamingAddTranslatedTest().

◆ autoSerialCoordTranslateTest()

◆ bandwidthReadTest()

void bandwidthReadTest ( AcceleratorConnection * conn,
Accelerator * acc,
size_t width,
size_t xferCount,
bool checkData )
static

◆ bandwidthTest()

void bandwidthTest ( AcceleratorConnection * conn,
Accelerator * acc,
const std::vector< uint32_t > & widths,
uint32_t xferCount,
bool read,
bool write,
bool checkData )
static

Definition at line 1047 of file esitester.cpp.

References bandwidthReadTest(), and bandwidthWriteTest().

Referenced by main().

◆ bandwidthWriteTest()

◆ callbackTest()

void callbackTest ( AcceleratorConnection * conn,
Accelerator * accel,
uint32_t iterations )
static

Definition at line 399 of file esitester.cpp.

References esi::HWModule::getChildren().

Referenced by main().

◆ channelTest()

void channelTest ( AcceleratorConnection * conn,
Accelerator * accel,
uint32_t iterations )
static

◆ checkBurstCommandRegisters()

void checkBurstCommandRegisters ( services::MMIO::MMIORegion & mmio,
uint64_t address,
uint64_t flits )
static

Definition at line 453 of file esitester.cpp.

References esi::services::MMIO::MMIORegion::read(), and esi::toHex().

Referenced by hostmemReadTest(), and hostmemWriteTest().

◆ coordTranslateTest()

◆ defaultWidthsStr()

std::string defaultWidthsStr ( )
static

Definition at line 89 of file esitester.cpp.

References defaultWidths.

Referenced by main().

◆ dmaReadTest()

◆ dmaTest()

void dmaTest ( AcceleratorConnection * conn,
Accelerator * acc,
const std::vector< uint32_t > & widths,
bool read,
bool write )
static

Definition at line 794 of file esitester.cpp.

References dmaReadTest(), dmaWriteTest(), and success().

Referenced by main().

◆ dmaWriteTest()

void dmaWriteTest ( AcceleratorConnection * conn,
Accelerator * acc,
size_t width )
static

◆ enginePatternByte()

uint8_t enginePatternByte ( uint32_t index,
size_t byte,
size_t bitWidth )
static

◆ enginePatternBytes()

std::vector< uint8_t > enginePatternBytes ( uint32_t index,
size_t bitWidth )
static

Definition at line 828 of file esitester.cpp.

References enginePatternByte(), and engineWireBytes().

Referenced by bandwidthWriteTest().

◆ enginePayloadFold()

uint64_t enginePayloadFold ( uint32_t index,
size_t bitWidth )
static

Definition at line 836 of file esitester.cpp.

References enginePatternByte(), and engineWireBytes().

Referenced by bandwidthWriteTest().

◆ engineWireBytes()

size_t engineWireBytes ( size_t bitWidth)
static

◆ esitesterDataByte()

uint8_t esitesterDataByte ( uint32_t index,
size_t byte )
inlinestatic

Definition at line 1067 of file esitester.cpp.

References kEsitesterSeqSeed.

Referenced by enginePatternByte(), and esitesterHostmemByte().

◆ esitesterElemFold()

uint64_t esitesterElemFold ( uint32_t i,
uint32_t width )
inlinestatic

Definition at line 1086 of file esitester.cpp.

References esitesterHostmemByte(), and hostmemWireBytes().

Referenced by hostmemReadBandwidthTest().

◆ esitesterHostmemByte()

uint8_t esitesterHostmemByte ( uint32_t index,
size_t byte,
uint32_t width )
static

◆ formatBandwidth()

std::string formatBandwidth ( double bytesPerSec)
static

◆ hostmemBandwidthTest()

void hostmemBandwidthTest ( AcceleratorConnection * conn,
Accelerator * acc,
uint32_t xferCount,
const std::vector< uint32_t > & widths,
bool read,
bool write )
static

◆ hostmemReadBandwidthTest()

◆ hostmemReadTest()

◆ hostmemTest()

void hostmemTest ( AcceleratorConnection * conn,
Accelerator * acc,
const std::vector< uint32_t > & widths,
bool write,
bool read )
static

Definition at line 652 of file esitester.cpp.

References hostmemReadTest(), hostmemWriteTest(), esi::services::HostMem::start(), and esi::toHex().

Referenced by main(), and resetTest().

◆ hostmemWireBytes()

size_t hostmemWireBytes ( uint32_t width)
static

◆ hostmemWriteBandwidthTest()

◆ hostmemWriteTest()

void hostmemWriteTest ( Accelerator * acc,
esi::services::HostMem::HostMemRegion & region,
uint32_t width )
static

◆ humanBytes()

std::string humanBytes ( uint64_t bytes)
static

Definition at line 121 of file esitester.cpp.

Referenced by aggregateHostmemBandwidthTest().

◆ humanTimeUS()

std::string humanTimeUS ( uint64_t us)
static

Definition at line 137 of file esitester.cpp.

Referenced by aggregateHostmemBandwidthTest().

◆ loopbackAddTest()

void loopbackAddTest ( AcceleratorConnection * conn,
Accelerator * accel,
uint32_t iterations,
bool pipeline )
static

Definition at line 1354 of file esitester.cpp.

References esi::MessageData::as(), esi::HWModule::getChildren(), esi::Logger::info(), and esi::toHex().

Referenced by main().

◆ main()

◆ resetTest()

void resetTest ( AcceleratorConnection * conn,
Accelerator * accel )
static

Definition at line 1463 of file esitester.cpp.

References esi::HWModule::getChildren(), hostmemTest(), and esi::Logger::info().

Referenced by main().

◆ serialCoordTranslateTest()

◆ streamingAddTest()

void streamingAddTest ( AcceleratorConnection * conn,
Accelerator * accel,
uint32_t addAmt,
uint32_t numItems )
static

Test the StreamingAdder module.

This module takes a struct containing an add_amt and a list of uint32s, adds add_amt to each element, and returns the resulting list. The data is streamed using windowed types.

Definition at line 1731 of file esitester.cpp.

References StreamingAddArg::addAmt, esi::ReadChannelPort::connect(), esi::WriteChannelPort::connect(), esi::Logger::debug(), esi::ReadChannelPort::disconnect(), esi::WriteChannelPort::disconnect(), esi::MessageData::getBytes(), esi::HWModule::getChildren(), esi::MessageData::getSize(), esi::Logger::info(), StreamingAddArg::input, StreamingAddArg::last, esi::ReadChannelPort::read(), and esi::WriteChannelPort::write().

Referenced by main().

◆ streamingAddTranslatedTest()

Variable Documentation

◆ defaultWidths

std::array<uint32_t, 8> defaultWidths
constexpr
Initial value:
= {24, 32, 64, 72,
128, 256, 512, 534}

Definition at line 87 of file esitester.cpp.

Referenced by defaultWidthsStr(), and main().

◆ kEsitesterSeqSeed

uint64_t kEsitesterSeqSeed = 0x5A5A5A5A5A5A5A5AULL
staticconstexpr

Definition at line 1061 of file esitester.cpp.

Referenced by esitesterDataByte().