4 ms·
> powered by WGPU, a cross-platform graphics API that targets Vulkan (Linux), Metal (Mac), and DX12 (Windows). The fact that they are using WGPU, which appears
by zoogeny 2y ago
> powered by WGPU, a cross-platform graphics API that targets Vulkan (Linux), Metal (Mac), and DX12 (Windows).
The fact that they are using WGPU, which appears to be a Python native implementation of WebGPU, suggests there is an interesting possible extended case. As a few other comments suggest, if one knows that the data is available on a machine in a cluster rather than on the local machine of a user, it might make sense to start up a server, expose a port and pass along the data over http to be rendered in a browser. That would make it shareable across the lab. The limit would be the data bandwidth over http (e.g. for the 3 million point case) but it seems like for simpler cases it would be very useful.
That would lead to an interesting exercise of defining a protocol for transferring plot points over http in such a way they could be handed over to a the browser WebGPU interface efficiently. Perhaps even a more efficient representation is possible with some pre-processing on the server side?
- mkl 2y agoWGPU is a Rust thing more than a Python thing.
- zoogeny 2y agoFair, I was looking at the wgpu-py [1] page but only skimmed it. It does indeed look like a wrapper over wgpu-native [2] which is written in Rust. 1. https://github.com/pygfx/wgpu-py https://github.com/pygfx/wgpu-py 2. https://github.com/gfx-rs/wgpu-native https://github.com/gfx-rs/wgpu-native
- almarklein 2y agoTo clarify this a bit, wgpu is a Rust implementation of WebGPU, just like Dawn is a C++ implementation of WebGPU (by Google). Both projects expose a C-api following webgpu.h. wgpu-py Should eventually be able to work with both. (Disclaimer: I'm the author of wgpu-py)
- kushalkolar 2y ago> the data is available on a machine in a cluster rather than on the local machine of a user jupyter-rfb lets you do remote rendering for this, render to a remote frame buffer and send over a jpeg byte stream. We and a number of our scientific users use it like this. https://fastplotlib.org/ver/dev/user_guide/faq.html#what-frameworks-does-fastplotlib-support https://fastplotlib.org/ver/dev/user_guide/faq.html#what-fra... > defining a protocol for transferring plot points This sounds more like GSP, which Cyrille Rossant (who's made some posts here) works on, it has a slightly different kind of use case.
- zoogeny 2y agoWhat is GSP in this context? Searching Python GSP brings up Generalized Sequence Pattern (GSP) algorithm [1] and Graph Signal Processing [2], neither of which seem to be a protocol. I also found "Generic Signaling Protocol" and "Global Sequence Protocol" which also don't seem relevant. Forgive me if GSP is some well know thing which I am just not familiar with. 1. https://github.com/jacksonpradolima/gsp-py https://github.com/jacksonpradolima/gsp-py 2. https://pygsp.readthedocs.io/en/stable/ https://pygsp.readthedocs.io/en/stable/
- bglazer 2y agoGraphics Server Protocol Forgive me for doing this, but I used an LLM to find that. They’re exceptionally useful for disambiguation tasks like this. Knowing what an acronym refers to is very useful for next token prediction, so they’re quite good at it. It’s usually trivial to figure out if they’re hallucinating with a search engine. [1] https://news.ycombinator.com/item?id=43335769 https://news.ycombinator.com/item?id=43335769
- kushalkolar 2y agoI don't think it's ready yet and I think it might be private at the moment, Cyrille can comment more on it. But if I understand correctly it's a protocol for serializing graphical objects, pretty neat idea.
- Swannie 2y agoWhat you describe sounds a bit like Graphistry: https://pygraphistry.readthedocs.io/en/latest/performance.html#flexible-gpu-use-client-and-server https://pygraphistry.readthedocs.io/en/latest/performance.ht...