-
Notifications
You must be signed in to change notification settings - Fork 478
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[SYSTEMDS-3548] Optimize IO path Python interface for SystemDS #2154
base: main
Are you sure you want to change the base?
Conversation
This commit fixes the load_numpy string performance test case. It keeps the CLI usage consistent with the other test cases, but converts the dtype to the correct one internally.
This commit fixes the array boolean convert breaking for row numbers above 64. It also adds a bit more error handling to prevent cases like this in the future.
This commit parallelizes the column processing in the pandas DataFrame to FrameBlock conversion.
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2154 +/- ##
=========================================
Coverage 72.03% 72.03%
+ Complexity 43937 43935 -2
=========================================
Files 1441 1441
Lines 166106 166110 +4
Branches 32428 32431 +3
=========================================
+ Hits 119655 119659 +4
- Misses 37199 37204 +5
+ Partials 9252 9247 -5 ☔ View full report in Codecov by Sentry. |
LGTM! Thank you for your contribution @Nakroma! |
LGTM as well. How did you measure the time? |
@Baunsgaard I used the IO benchmark scripts for the figure provided above: https://github.com/apache/systemds/blob/main/scripts/perftest/runAllIO.sh |
Great! Then you can get better numbers:
Modify the script to start the context not in the 'run' part, instead move it to the 'setup' part, and remember to shut down the system with ctx.close() after you are done measuring. |
@Baunsgaard Okey yeah that makes sense - pushed a commit for that 👍 I didnt move it to the setup but rather inside the global context, so .close() time is not included in the timing and also to support the |
what are the times then? |
So there is some more constant time, the building of the frameblock a few lines before the I looked at the profiling a bit more and it seems like most time is spent on socket communication between Java and Python. My assumption would be that this adds quite a bit of overhead and doesn't parallelize well. |
Draft for the student project
SYSTEMDS-3548
.Current contributions: