Skip to content
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

Separating/Moving the vectorized functions #59

Closed
aminya opened this issue Nov 26, 2019 · 7 comments
Closed

Separating/Moving the vectorized functions #59

aminya opened this issue Nov 26, 2019 · 7 comments

Comments

@aminya
Copy link

aminya commented Nov 26, 2019

Is it possible to move the vectorized functions that this package provides to a separate file or repository?

Now the vectorized library is mixed with other features that this package introduces (which are different things), and SIMD.jl has 2000 lines of code, which makes it hard for new developers to contribute.

It will help to add more functions to the library (and to hopefully merge it to Julia as a standard library later).

Personally, I am interested to contribute to this package by adding more functions.

@eschnett
Copy link
Owner

The file SIMD.jl has grown quite large. I'd be happy to split it into multiple files or sub-modules. I don't think it's worthwhile splitting it into multiple package yet.

@KristofferC
Copy link
Collaborator

KristofferC commented Nov 26, 2019

FWIW, I experimented a little bit with a different design (but with the same end goal as SIMD.jl) in https://github.com/KristofferC/SIMDIntrinsics.jl.

My idea was to have one file where a mapping from LLVM intrinsics on Tuple{VecElement...} was defined (https://github.com/KristofferC/SIMDIntrinsics.jl/blob/master/src/LLVM.jl). This should be as a direct mapping as possible (no bounds checking, zero based indexing etc etc). Then the Vec interface is built on top of that (https://github.com/KristofferC/SIMDIntrinsics.jl/blob/master/src/SIMD.jl). I thought this would give a bit cleaner separation between the parts that "talks" directly to LLVM and the higher level julia interface, similar as to how one often write quite low level julia functions that does ccall and then build the higher level on top of those julia functions. I didn't really finish because it didn't feel so "impactful" to work on but might take it up again at some point.

@eschnett
Copy link
Owner

@KristofferC That also sounds like a good idea. SIMD.jl started as low-level interface, but has since then gathered a few convenience functions. Keeping these separate makes sense.

@aminya
Copy link
Author

aminya commented Nov 26, 2019

The file SIMD.jl has grown quite large. I'd be happy to split it into multiple files or sub-modules. I don't think it's worthwhile splitting it into multiple package yet.

My idea is to write vectorized functions libraries similar to VML.jl in Julia. So I thought separating things can help this.

@KristofferC
Copy link
Collaborator

I don't think it will really help, at least not in any meaningful way. Best to just start working instead.

@KristofferC
Copy link
Collaborator

Doesn't seem like there is anything concrete to do here.

@aminya
Copy link
Author

aminya commented Feb 22, 2020

But I think #63 is a good move regarding this issue. Thank you for making that PR!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants