|
CIRCT 24.0.0git
|
#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>
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 ®ion, uint32_t width) |
| Test the hostmem write functionality. | |
| static void | hostmemReadTest (Accelerator *acc, esi::services::HostMem::HostMemRegion ®ion, 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 ®ion, uint32_t width, uint32_t xferCount) |
| static void | hostmemReadBandwidthTest (AcceleratorConnection *conn, Accelerator *acc, esi::services::HostMem::HostMemRegion ®ion, uint32_t width, uint32_t xferCount) |
Variables | |
| constexpr std::array< uint32_t, 8 > | defaultWidths |
| static constexpr uint64_t | kEsitesterSeqSeed = 0x5A5A5A5A5A5A5A5AULL |
|
static |
Definition at line 1515 of file esitester.cpp.
References esi::services::TelemetryService::Metric::connect(), formatBandwidth(), esi::BundlePort::getAs(), humanBytes(), humanTimeUS(), esi::Logger::info(), and esi::services::HostMem::start().
Referenced by main().
|
static |
Definition at line 158 of file esitester.cpp.
Referenced by coordTranslateTest(), and streamingAddTranslatedTest().
|
static |
Definition at line 172 of file esitester.cpp.
Referenced by coordTranslateTest(), and streamingAddTranslatedTest().
|
static |
Definition at line 2527 of file esitester.cpp.
References esi::TypedWritePort< T, SkipTypeCheck >::connect(), esi::ReadChannelPort::connect(), esi::TypedWritePort< T, SkipTypeCheck >::disconnect(), esi::ReadChannelPort::disconnect(), esi::HWModule::getChildren(), esi::Logger::info(), esi::ReadChannelPort::read(), and esi::TypedWritePort< T, SkipTypeCheck >::write().
Referenced by main().
|
static |
Definition at line 851 of file esitester.cpp.
References esi::ReadChannelPort::connect(), esi::Logger::debug(), esi::ReadChannelPort::disconnect(), enginePatternByte(), engineWireBytes(), formatBandwidth(), esi::BundlePort::getAs(), esi::BundlePort::getRawRead(), esi::Logger::info(), esi::ReadChannelPort::read(), and esi::toHex().
Referenced by bandwidthTest().
|
static |
Definition at line 1045 of file esitester.cpp.
References bandwidthReadTest(), and bandwidthWriteTest().
Referenced by main().
|
static |
Definition at line 936 of file esitester.cpp.
References esi::services::TelemetryService::Metric::connect(), esi::WriteChannelPort::connect(), esi::Logger::debug(), esi::WriteChannelPort::disconnect(), enginePatternBytes(), enginePayloadFold(), engineWireBytes(), formatBandwidth(), esi::BundlePort::getAs(), esi::BundlePort::getRawWrite(), esi::Logger::info(), esi::services::TelemetryService::Metric::readInt(), esi::toHex(), and esi::WriteChannelPort::write().
Referenced by bandwidthTest().
|
static |
Definition at line 399 of file esitester.cpp.
References esi::HWModule::getChildren().
Referenced by main().
|
static |
Definition at line 2647 of file esitester.cpp.
References esi::MessageData::as(), esi::MessageData::from(), esi::HWModule::getChildren(), esi::Logger::info(), and esi::toHex().
Referenced by main().
|
static |
Definition at line 453 of file esitester.cpp.
References esi::services::MMIO::MMIORegion::read(), and esi::toHex().
Referenced by hostmemReadTest(), and hostmemWriteTest().
|
static |
Definition at line 2075 of file esitester.cpp.
References alignedAllocCompat(), alignedFreeCompat(), CoordTranslateArg::allocSize(), CoordTranslateResult::allocSize(), CoordTranslateResult::coords(), CoordTranslateArg::coordsLength, esi::Logger::debug(), esi::MessageData::getBytes(), esi::HWModule::getChildren(), esi::MessageData::getSize(), esi::Logger::info(), Coord::x, and Coord::y.
Referenced by main().
|
static |
|
static |
Definition at line 688 of file esitester.cpp.
References esi::ReadChannelPort::connect(), esi::Logger::debug(), esi::ReadChannelPort::disconnect(), enginePatternByte(), esi::BundlePort::getAs(), esi::BundlePort::getRawRead(), esi::Logger::info(), esi::ReadChannelPort::read(), and esi::toHex().
Referenced by dmaTest().
|
static |
Definition at line 792 of file esitester.cpp.
References dmaReadTest(), and dmaWriteTest().
Referenced by main().
|
static |
Definition at line 735 of file esitester.cpp.
References esi::WriteChannelPort::connect(), esi::WriteChannelPort::disconnect(), esi::BundlePort::getAs(), esi::BundlePort::getRawWrite(), esi::Logger::info(), esi::toString(), and esi::WriteChannelPort::tryWrite().
Referenced by dmaTest().
|
static |
Definition at line 818 of file esitester.cpp.
References engineWireBytes(), and esitesterDataByte().
Referenced by bandwidthReadTest(), dmaReadTest(), enginePatternBytes(), and enginePayloadFold().
|
static |
Definition at line 826 of file esitester.cpp.
References enginePatternByte(), and engineWireBytes().
Referenced by bandwidthWriteTest().
|
static |
Definition at line 834 of file esitester.cpp.
References enginePatternByte(), and engineWireBytes().
Referenced by bandwidthWriteTest().
|
static |
Definition at line 816 of file esitester.cpp.
Referenced by bandwidthReadTest(), bandwidthWriteTest(), enginePatternByte(), enginePatternBytes(), and enginePayloadFold().
|
inlinestatic |
Definition at line 1065 of file esitester.cpp.
References kEsitesterSeqSeed.
Referenced by enginePatternByte(), and esitesterHostmemByte().
|
inlinestatic |
Definition at line 1084 of file esitester.cpp.
References esitesterHostmemByte(), and hostmemWireBytes().
Referenced by hostmemReadBandwidthTest().
|
static |
Definition at line 1072 of file esitester.cpp.
References esitesterDataByte(), and hostmemWireBytes().
Referenced by esitesterElemFold(), hostmemReadBandwidthTest(), and hostmemWriteBandwidthTest().
|
static |
Definition at line 100 of file esitester.cpp.
Referenced by aggregateHostmemBandwidthTest(), bandwidthReadTest(), bandwidthWriteTest(), hostmemReadBandwidthTest(), and hostmemWriteBandwidthTest().
|
static |
Definition at line 1333 of file esitester.cpp.
References hostmemReadBandwidthTest(), hostmemWriteBandwidthTest(), and esi::services::HostMem::start().
Referenced by main().
|
static |
Definition at line 1230 of file esitester.cpp.
References esi::services::TelemetryService::Metric::connect(), esitesterElemFold(), esitesterHostmemByte(), esi::services::HostMem::HostMemRegion::flush(), formatBandwidth(), esi::BundlePort::getAs(), esi::services::HostMem::HostMemRegion::getDevicePtr(), esi::services::HostMem::HostMemRegion::getPtr(), hostmemWireBytes(), esi::Logger::info(), and esi::services::TelemetryService::Metric::readInt().
Referenced by hostmemBandwidthTest().
|
static |
Definition at line 561 of file esitester.cpp.
References checkBurstCommandRegisters(), esi::services::HostMem::HostMemRegion::flush(), esi::BundlePort::getAs(), esi::services::HostMem::HostMemRegion::getDevicePtr(), esi::services::HostMem::HostMemRegion::getPtr(), and esi::toHex().
Referenced by hostmemTest().
|
static |
Definition at line 652 of file esitester.cpp.
References hostmemReadTest(), hostmemWriteTest(), esi::services::HostMem::start(), and esi::toHex().
Referenced by main(), and resetTest().
|
static |
Definition at line 1070 of file esitester.cpp.
Referenced by esitesterElemFold(), esitesterHostmemByte(), hostmemReadBandwidthTest(), and hostmemWriteBandwidthTest().
|
static |
Definition at line 1106 of file esitester.cpp.
References esi::services::TelemetryService::Metric::connect(), esitesterHostmemByte(), esi::services::HostMem::HostMemRegion::flush(), formatBandwidth(), esi::BundlePort::getAs(), esi::services::HostMem::HostMemRegion::getDevicePtr(), esi::services::HostMem::HostMemRegion::getPtr(), esi::services::HostMem::HostMemRegion::getSize(), hostmemWireBytes(), esi::Logger::info(), and esi::services::TelemetryService::Metric::readInt().
Referenced by hostmemBandwidthTest().
|
static |
Test the hostmem write functionality.
Definition at line 475 of file esitester.cpp.
References checkBurstCommandRegisters(), esi::services::HostMem::HostMemRegion::flush(), esi::BundlePort::getAs(), esi::services::HostMem::HostMemRegion::getDevicePtr(), esi::services::HostMem::HostMemRegion::getPtr(), and print().
Referenced by hostmemTest().
|
static |
Definition at line 121 of file esitester.cpp.
Referenced by aggregateHostmemBandwidthTest().
|
static |
Definition at line 137 of file esitester.cpp.
Referenced by aggregateHostmemBandwidthTest().
|
static |
Definition at line 1349 of file esitester.cpp.
References esi::MessageData::as(), esi::HWModule::getChildren(), esi::Logger::info(), and esi::toHex().
Referenced by main().
| int main | ( | int | argc, |
| const char * | argv[] | ||
| ) |
Definition at line 180 of file esitester.cpp.
References aggregateHostmemBandwidthTest(), autoSerialCoordTranslateTest(), bandwidthTest(), esi::Manifest::buildAccelerator(), callbackTest(), channelTest(), esi::CliParser::connect(), coordTranslateTest(), defaultWidths, defaultWidthsStr(), dmaTest(), esi::Logger::error(), esi::CliParser::esiParse(), esi::CliParser::getContext(), esi::Context::getLogger(), hostmemBandwidthTest(), hostmemTest(), esi::Logger::info(), loopbackAddTest(), resetTest(), serialCoordTranslateTest(), streamingAddTest(), and streamingAddTranslatedTest().
|
static |
Definition at line 1458 of file esitester.cpp.
References esi::HWModule::getChildren(), hostmemTest(), and esi::Logger::info().
Referenced by main().
|
static |
Definition at line 2384 of file esitester.cpp.
References esi::TypedWritePort< T, SkipTypeCheck >::connect(), esi::ReadChannelPort::connect(), esi::TypedWritePort< T, SkipTypeCheck >::disconnect(), esi::ReadChannelPort::disconnect(), esi::HWModule::getChildren(), esi::Logger::info(), esi::ReadChannelPort::read(), and esi::TypedWritePort< T, SkipTypeCheck >::write().
Referenced by main().
|
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 1723 of file esitester.cpp.
References StreamingAddArg::addAmt, esi::WriteChannelPort::connect(), esi::ReadChannelPort::connect(), esi::Logger::debug(), esi::WriteChannelPort::disconnect(), esi::ReadChannelPort::disconnect(), esi::MessageData::getBytes(), esi::HWModule::getChildren(), esi::MessageData::getSize(), esi::Logger::info(), StreamingAddArg::input, StreamingAddArg::last, StreamingAddResult::last, esi::ReadChannelPort::read(), and esi::WriteChannelPort::write().
Referenced by main().
|
static |
Definition at line 1888 of file esitester.cpp.
References alignedAllocCompat(), alignedFreeCompat(), StreamingAddTranslatedArg::allocSize(), StreamingAddTranslatedResult::allocSize(), esi::WriteChannelPort::connect(), esi::ReadChannelPort::connect(), StreamingAddTranslatedResult::data(), esi::Logger::debug(), esi::WriteChannelPort::disconnect(), esi::ReadChannelPort::disconnect(), esi::MessageData::getBytes(), esi::HWModule::getChildren(), esi::MessageData::getSize(), esi::Logger::info(), StreamingAddTranslatedArg::inputLength, esi::ReadChannelPort::read(), and esi::WriteChannelPort::write().
Referenced by main().
|
constexpr |
Definition at line 87 of file esitester.cpp.
Referenced by defaultWidthsStr(), and main().
|
staticconstexpr |
Definition at line 1059 of file esitester.cpp.
Referenced by esitesterDataByte().