Add ARM64 SIMD support for sparse CPU math

Đang mở
#7,740 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
35/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
csharp

Hướng nghiên cứu

Start in src/Microsoft.ML.CpuMath/CpuMathUtils.netcoreapp.cs at DotProductSparse (lines 397-425) and indexed AddScale (lines 197-225), then inspect the existing x86 optimized paths and scalar fallback. Investigate ARM64 SIMD options and benchmark different entry counts and index layouts, including tails. Done means beneficial ARM64 paths preserve other paths and fallback behavior, with correctness, intrinsics-disabled, L-BFGS, save/load, and prediction validation.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

area-Core enhancement tenet-performance

Is your feature request related to a problem? Please describe.
CpuMathUtils.DotProductSparse and indexed AddScale currently use scalar loops on ARM64. Their optimized paths depend on SSE/AVX. These operations are used in sparse L-BFGS training and linear-model prediction.

Describe the solution you'd like
Investigate ARM64 SIMD implementations for these two operations. Preserve the existing x86 paths and scalar fallback. Enable the new paths only where benchmarks show a benefit.

Validation should cover:

  • Different stored-entry counts and index layouts, including short inputs and scalar tails.
  • Correctness against scalar reference results, with hardware intrinsics enabled and disabled.
  • L-BFGS training, model save/load, and prediction.

Describe alternatives you've considered
Retain scalar loops where SIMD does not improve performance, especially for short inputs. Dense TensorPrimitives operations are not a direct replacement for indexed sparse math.

Additional context
Related: #6875 migrated dense operations to TensorPrimitives but left these sparse operations unchanged.

Relevant source: DotProductSparse and indexed AddScale.

Ngôn ngữ chính
C#
Star
9.4k
Fork
2k
Merge trung bình
2 ngày 18 giờ
Pull request đã merge (30 ngày)
64

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của dotnet/machinelearning

Tất cả issue của dotnet/machinelearning

Issue tương tự

Thêm issue về C#

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.