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

Add CuPy support #1985

Open
djhoese opened this issue Feb 11, 2021 · 4 comments
Open

Add CuPy support #1985

djhoese opened this issue Feb 11, 2021 · 4 comments

Comments

@djhoese
Copy link
Member

djhoese commented Feb 11, 2021

CuPy (https://docs.cupy.dev/en/stable/index.html) is a numpy-compatible array library that uses CUDA for improved performance. What this means is that CuPy arrays live on and are computed on the GPU. It should be theoretically possible to share a CUDA buffer (or however CuPy stores the array data) with OpenGL and therefore VisPy.

This would allow for some really unique workflows where users could do very complex calculations in-GPU with CuPy and visualize them "instantly" without having to copy data back and forth between GPU and CPU memory.

@djhoese
Copy link
Member Author

djhoese commented Mar 17, 2021

See #1986 for some more in-depth cuda talk.

@brisvag
Copy link
Collaborator

brisvag commented Sep 7, 2021

This would be amazing, I found myself toying with interactive tools ideas lately, and every time the bottleneck ended up being this. I'd love to be able to simply replace my numpy with cupy and get direct access to vispy's texture buffers!

@djhoese
Copy link
Member Author

djhoese commented Sep 7, 2021

@brisvag What type of work are you doing? Your use case sounds like the opposite of what I had in mind here. My thought is that VisPy could visualize the results of CuPy work (read only). By saying "access to vispy's texture buffers" are you saying you want to read what vispy has produced and use it in CuPy?

@brisvag
Copy link
Collaborator

brisvag commented Sep 7, 2021

No, I think we mean the same thing, I just expressed myself poorly :) I'd like to be able to visualize quickly and in real time what happens to the data. This becomes unwieldy when working with big volumes, because every single time they are updated vispy had to make a copy of the data and transfer it to GPU memory. I tried to dive in the gloo and cupy code and understand where exactly the data gets passed to the buffer and how, but it quickly became clear that this is way over my level :)

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

No branches or pull requests

2 participants