-
Notifications
You must be signed in to change notification settings - Fork 171
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
Multi threading #201
base: master
Are you sure you want to change the base?
Multi threading #201
Conversation
compiled and tested on -- FreeBSD clang version 14.0.5 (https://github.com/llvm/llvm-project.git llvmorg-14.0.5-0-gc12386ae247c) Target: x86_64-unknown-freebsd13.2 Thread model: posix --
Is there an ETA on this ? |
- eliminate redundant buffer
… logic work correctly.
…uffer for each thread seems to be larger in fewer channel process cases.
prefetch coefft to cache memory
@SoapGentoo , @arthurt , what do you think? I guess we can add it when it's ready. |
src/CMakeLists.txt
Outdated
@@ -43,6 +43,16 @@ add_library(samplerate | |||
# ALIAS to use if libsamplerate is included from other project with add_subdirectory() | |||
add_library(SampleRate::samplerate ALIAS samplerate) | |||
|
|||
if(MULTI_THREADING) | |||
if(WIN32) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess we need to check MSVC
variable. MinGW compiler probably will fail.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
commit: 7348582
Hi. @evpobr Sorry for that I did some commits after you had reviewed the code once. I have no more changes to this branch planned, so I'm leaving this up to you (or, maintainers) unless I find bugs. One thing I'm aware of is that if you are actually releasing it, adding converter types like "SRC_SINC_BEST_QUALITY_MT" may be an idea to have both ST and MT versions switchable in one library. |
… to the single-thread version. note: the (single-thread) implementation may have some underlying bug here because the number of output frames is seemingly inconsistent depending on the combinations of src_ratio, input frames, and number of channels. The fix should be out of scope for this PR (MultiThreading).
Just wondering what's left here ? |
Hello @luzpaz. This PR works well enough at least on my machine. |
@ss3git , are the results bitwise identical to the reference implementation? |
Hi, @evpobr . I've already forgotten a lot of the details though, the core calculation part is intended to be bitwise identical to the reference implementation (if you mean the single-thread version). Since the single-thread implementation seems to have input/output processing variance depending on the number of channels processed (e.g. #206), I am not hundred percent sure if the outputs "always" match. |
Good idea. |
Sorry to bump, just wondering if there has been any more progress ? |
Experimental multi-thread implementation. (disabled by default with BUILD_MULTI_THREADING build option.)
Related issue: Parallelize resampling (with high delay) #176
compiled and tested on
FreeBSD clang version 14.0.5 (https://github.com/llvm/llvm-project.git llvmorg-14.0.5-0-gc12386ae247c)
Target: x86_64-unknown-freebsd13.2
Thread model: posix