7-1. Join Implementation Summary - 2023.1 English

Vitis Libraries

Release Date
2023-12-20
Version
2023.1 English

Join primitives are summarized in the following table:

Hash-Join-MPU It performs hash join with a multi-process-unit design, and stores only hash table in URAM. The small table is cached in DDR/HBM banks during execution.
Hash-Join-v3 The storage of the small table is optimized, and provide an efficient way to handle hash overflow. Overall it has better performance than Hash-Join-v2.
Hash-Join-v4 Implements a bloom filter in hash join to further improve the efficiency in accessing small table which is cached in DDR/HBM.
Hash-Semi-Join It performs hash semi join based on the framework of Hash-Join-MPU, in which the Join function is replaced by Semi-Join function.
Hash-Anti-Join It performs hash anti join based on the framework of Hash-Join-v3, in which the Probe and Join function is re-designed to realize the logic of Anti-Join
Hash-Multi-Join It can use a parameter as control flag to perform hash join, hash semi-join and hash anti-join. It also shares the most of the logic in Hash-Join-v3.
Merge-Join It performs inner join with two tables both pre-sorted with the join key.
Merge-Left-Join It performs left join with two tables both pre-sorted with the join key.
Nested-Loop-Join On FPGA, hash-based joins are typically preferred with unique keys, and a nested loop is often used to join a table with duplications with another table.