ostnam / rust-wfa

MIT License
11 stars 1 forks source link

parallelism #12

Open jianshu93 opened 2 years ago

jianshu93 commented 2 years ago

Hell Ostnam,

Many thanks for this implementation, I think the original one was paralleled right, is that a big difference to do it in Rust, e.g. based on rayon?

Thanks,

Jianshu

jianshu93 commented 2 years ago

And how about the BiWFA one, which is also memory efficient. -ultralow option in the orginal WFA2lib.

Thanks,

Jianshu

ostnam commented 2 years ago

Hi,

Thank you for your suggestions.

After grepping the reference codebase, I've found that they indeed use OpenMP to parallelize some parts of the algorithm. It seems like they added it in this commit.

I'm pretty sure that implementing parallelism will require some level of rewriting the core methods to pass the borrow checker, since they all take &mut self of the entire WavefrontState struct.

Regarding bi-WFA, I wasn't aware of its existence, but it definitely looks like a worthwhile addition.

To be honest, my implementation is far behind the reference one and I do not currently have much time to spend on it (and I don't expect to in the foreseeable future). Since there's interest from other bioinformatics researchers like you in an efficient WFA implementation in Rust, I think it would be better to centralize that effort in rust-bio.

ostnam commented 2 years ago

I have written a comment here to try to get other people involved.