rust-ml / rust-ml/linfa

Investigate discrepancy between non-BLAS and BLAS versions of `linfa-preprocessing`

Open
#254 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement help wanted
Dominant language
Rust
Stars
4.7k
Forks
334
Avg merge
39m
Merged PRs (30d)
1

Description

The iai_fit_transform_tf_idf, iai_zca_bench, and iai_cholesky_bench benchmarks take noticeably more cycles with non-BLAS builds compared to BLAS builds. This is especially bad for iai_fit_transform_tf_idf, which takes around 6 times as long without BLAS. We should fix whatever issue is causing non-BLAS builds to be so much slower.

The benchmarks come from here and the relevant parts are below:

iai_fit_transform_tf_idf
  Instructions:          5960889325 (+578.7082%)
  L1 Accesses:           8486540657 (+598.1243%)
  L2 Accesses:             33019866 (+995.8834%)
  RAM Accesses:             1502558 (+758.9531%)
  Estimated Cycles:      8704229517 (+603.7655%)

iai_zca_bench
  Instructions:           608404933 (+4.710235%)
  L1 Accesses:            741514513 (+1.982326%)
  L2 Accesses:             25116941 (+25.19884%)
  RAM Accesses:             3292475 (-0.800950%)
  Estimated Cycles:       982335843 (+4.107730%)

iai_cholesky_bench
  Instructions:           536186203 (+6.262738%)
  L1 Accesses:            646261524 (+3.727183%)
  L2 Accesses:             24747630 (+25.58514%)
  RAM Accesses:             3277475 (+0.113386%)
  Estimated Cycles:       884711299 (+5.807638%)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running and comparing the iai_fit_transform_tf_idf, iai_zca_bench, and iai_cholesky_bench benchmarks in non-BLAS and BLAS builds. Trace the relevant linfa-preprocessing paths to identify the source of the cycle discrepancy. Done means the non-BLAS builds no longer show the reported performance gap, with benchmark results confirming the improvement.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
machine-learning, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.