daphne-project/daphne

Connect `numDistinctApprox`-kernel to DaphneDSL

オープン

#958 opened on 2025/04/18

 (0 件のコメント) (0 件のリアクション) (0 人の担当者)C++ (84 件のフォーク)auto 404
good first issue

Repository metrics

Stars
 (80 個のスター)
PR merge metrics
 (PR metrics pending)

説明

Motivation: The number of distinct values in a matrix is an interesting data characteristic that can be used in multiple ways. As calculating the exact number of distinct values can be quite costly, DAPHNE implements a numDistinctApprox-kernel that uses the k-minimum values approach to approximate the number of distinct values. So far, this kernel has not been connected to DaphneDSL yet. Hence, DAPHNE users cannot use it.

Task: Connect the numDistinctApprox-kernel to DaphneDSL. To this end you should:

  • Have a look at the kernel in src/runtime/local/kernels/numDistinctApprox.h.
  • Make sure that it gets instantiated/precompiled for a couple of relevant combinations of data types (e.g., DenseMatrix and CSRMatrix) and value types (e.g., double and int64_t) in src/runtime/local/kernels.json.
  • Add a DaphneIR operation NumDistinctApproxOp in src/ir/daphneir/DaphneOps.td. See also the MLIR documentation.
  • Add a DaphneDSL built-in function numDistinctApprox that generates a NumDistinctApproxOp in the IR in src/parser/daphnedsl/DaphneDSLBuiltins.cpp.
  • Add script-level test cases for the new DaphneDSL built-in function in test/api/cli/operations/. See the guidelines on testing in DAPHNE. Unit tests for the kernel do already exist in test/runtime/local/NumDistinctApproxTest.cpp.

コントリビューターガイド