Slow SVD
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 30/100
- Issue type
- Bug
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- python
- Domain
- performance
Research direction
Start by reproducing the reported 1000x1000 benchmark using af.svd and compare it with NumPy's svd on the Radeon HD 7950/FGLRX and Debian Jessie setup described in the issue. Check the existing SVD implementation and its backend path; done means identifying and addressing the cause of the timing gap, with the benchmark showing improved results.
Written by the indexing model from the issue text.
Description
I found AF's SVD implementation is quite slow comparing to DGEMM with Radeon HD 7950/FGLRX driver on Debian Jessie:
In [47]: from pylab import randn, svd
In [48]: x_0 = randn(1000, 1000)
In [49]: %time y_0 = svd(x_0)
CPU times: user 1.24 s, sys: 1.01 s, total: 2.24 s
Wall time: 287 ms
In [50]: x_1 = af.Array(x_0.ctypes.data, x_0.shape, 'd')
In [51]: %time y_1 = af.svd(x_1)
CPU times: user 3.64 s, sys: 3.97 s, total: 7.62 s
Wall time: 3.25 s
AF's SVD takes more than 9 times of Numpy's SVD to solve the same matrix, However, the in DGEMM, AF is faster (but not much) than Numpy:
In [75]: from pylab import dot
In [76]: %time z_0 = dot(x_0.transpose(), x_0)
CPU times: user 52 ms, sys: 20 ms, total: 72 ms
Wall time: 10.6 ms
In [77]: %time z_1 = af.matmul(x_1.T, x_1)
CPU times: user 0 ns, sys: 0 ns, total: 0 ns
Wall time: 8.38 ms
I am wondering if there are anything I should tune/adjust before proceeding.
- Dominant language
- Python
- Stars
- 422
- Forks
- 63
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from arrayfire/arrayfire-python
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
arrayfire/arrayfire-python#271 ·
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
arrayfire/arrayfire-python#270 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
arrayfire/arrayfire-python#269 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 38/100
arrayfire/arrayfire-python#268 · 1 comment ·
-
Difficulty 3/5 1-2 days Newbie friendliness 48/100
arrayfire/arrayfire-python#267 · 1 comment · 1 reaction ·
All issues in arrayfire/arrayfire-python
Similar issues
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
canonical/paas-charm#368 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
tech debt
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
StevenBlack/hosts#3256 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
qualcomm/qai-appbuilder#275 ·