I would like to inquire about the current work/roadmap the Sentis team has regarding support for the WebGL and WebGPU platforms and more particularly the following issues.
-GPUPixel: There seems to be issues with running Sentis with GPUPixel, especially regarding memory leaks. Will there be support and maintenance for GPUPixel like for GPUCompute? I understand the motivation to use the latter for WebGPU but I believe targeting WebGL is still relevant since it is more accessible at the moment and can target more devices/browsers.
I have opened a thread regarding the subject but not sure when to expect a reply on how to fix it as I’m short on time for a project.
-Optimization for mobile browsers: Do you have any best practices/tips to optimize performance for mobile browsers, including on mid-range/budget devices?
We have no plans to remove or deprecate support for the GPUPixel backend. We understand its usefulness for platforms and devices that can’t run the GPUCompute backend. Some operators fundamentally cannot effectively be run on the GPUPixel backend due to the lack of random write. We will add support for GPUPixel with new features and operators wherever it makes sense to.
We will take a look at the memory leaks, that is a bug in our code.
The main optimizations we suggest that you can do are:
stay updated to the latest Sentis, we are adding small performance improvements all the time
export your model with fixed dimensions, dynamic dimensions can make it difficult to optimize a model, you can do this in Sentis by creating a functional graph and then serializing it as a .sentis file, we look to expand this capability
try and avoid unnecessary branches and ops in your model, e.g. multiple matrix multiplications concatenated together may be expressible as a single batched matrix multiplication
make sure the GPU is the best backend for you by profiling, if your model is small and the results need to be read back on CPU for gameplay, then CPU might be the better backend
split the worker execution across frames and/or use async execution to split up the workload and free up the main thread for smooth gameplay
Thanks for the advice, does this mean that the issue in the following thread is indeed caused by the memory issue? And do you have any idea of a workaround?