Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Examples Catalog

The TAPA repository includes two sets of example designs. Small self-contained examples live under tests/apps/. Larger benchmarks live under tests/regression/.


Small examples

These are the complete contents of tests/apps/. Each one builds and runs under software simulation with no FPGA and no vendor tools.

ExampleProblem typeKey TAPA featureLocation
vaddVector additionBasic streams + mmaptests/apps/vadd
async_mmapVector addition, decoupled memoryasync_mmap request/response channelstests/apps/async_mmap
bandwidthMemory bandwidth benchmarkasync_mmap over many HBM channelstests/apps/bandwidth
cannonCannon's matrix multiply2D stream arrays, systolictests/apps/cannon
gemvMatrix-vector multiplyStream reductiontests/apps/gemv
graphGraph traversalLarge per-task local bufferstests/apps/graph
ignoreCustom-RTL placeholder[[tapa::target("ignore")]]tests/apps/ignore
jacobiStencil computationEnd-of-transmission (close())tests/apps/jacobi
networkPacket switchingpeek, detached tasks, hierarchical taskstests/apps/network
templatedParameterized kernelsTemplated leaf taskstests/apps/templated

Tip

tests/functional/ holds smaller single-feature designs used as regression tests — shared-mmap, detached, eot, peek, custom-rtl, parallel-emulation, and others. They are the shortest working reference for one specific feature.


Full-scale benchmarks

These live under tests/regression/. Most are full-scale artifacts from published papers; the repository-only benchmarks are described below the table.

ExampleProblem typeKey featurePublished in
autosaMatrix multiplicationAutoSA-generated systolic array for U250 and U55CFPGA'21
callipeplaConjugate gradientMixed-precision solver over 26 HBM channelsFPGA'23
cnnCNN systolic arrayMulti-SLR AutoSA designFPGA'21
lu_decomposeLU decompositionMulti-SLR AutoSA designFPGA'21
knnK-nearest neighbors18-way HBM searchFPT'20
page_rankPageRankHBM graph processing with replicated tasksFCCM'21
serpens-16ch, 24ch, 32chSparse SpMVSame Serpens architecture at three HBM parallelism levelsDAC'22
Sextans U55C, split BRAM/URAMSparse SpMMStreaming HBM architecture with fixed and runtime dimensionsFPGA'22
spmv-hisparse-mmapSparse SpMVHiSparse mmap-based data pathFPGA'22
hbm-bandwidthHBM bandwidthasync_mmap over all 32 HBM channelsRepository-only
hbm-bandwidth-1-chHBM bandwidthMinimal single-channel async_mmap baselineRepository-only
stencil-dilateImage dilation15 parallel 512-bit, 13-point stencil pipelinesRepository-only

Repository-only benchmarks

  • hbm-bandwidth drives independent asynchronous readers and writers on all 32 HBM channels to stress aggregate memory bandwidth.
  • hbm-bandwidth-1-ch is the corresponding one-channel baseline, useful for isolating the async_mmap protocol without the full replicated design.
  • stencil-dilate partitions a fixed 4096 × 4096 grid over 15 memory-channel pipelines and computes a 13-point maximum (morphological dilation) stencil.

Note

These are large designs: they need Vitis HLS and are meant for evaluating frequency and resource usage, not for learning the API. Start with tests/apps/ for that. Designs with TAPA hosts expose manual -xosim targets. KNN fast cosimulation uses one tile per processing element while its canonical XO retains 64; the full-size stencil workload can run for hours under xsim, so use an appropriate --test_timeout override. New designs are added over time — check tests/regression/ in the repository for the current list.


Next step: Common Errors