4 ms·
> How can I find places that have these interesting problems to solve? And then, how does one go about "trying" to solve them? [...] On a related note, a LOT of
by segfaultbuserr 4y ago
> How can I find places that have these interesting problems to solve? And then, how does one go about "trying" to solve them? [...] On a related note, a LOT of software suffers from suboptimal performance but it's not usually so bad that it obviously impacts the electric bill.
In scientific computing and HPC, I believe the solution to many problems can be accelerated significantly. For example, redesigning the algorithms in a way that can be benefited from GPUs. Unfortunately, it's not just a matter of rewriting the code, sometimes they require one to completely reinvent the algorithms in order to transform them to a form suitable for modern hardware, and it takes expert-level knowledge of the underlying mathematics and physics to do so. So many people just choose to keep running the decade-old existing code.
- dotnet00 4y agoAs someone dealing with this right now, the challenges are multilayered. You need someone who's an expert at the underlying math and physics, then they also need to understand optimal GPU programming patterns and need to be convinced of the value of GPU acceleration in the first place. On top of that, the expert maintaining the HPC code has most likely personally contributed a lot of the things the code is using to run efficiently on CPUs, so proposing large design changes for GPU acceleration also leads to ego clashes because they (somewhat reasonably) don't just want to completely throw out most of their own R&D. For the application I'm working with, it has taken ~2 years just to get through basic issues like convincing the scientists of the value of GPU acceleration, striking a balance between their existing methods and restructuring large parts for GPU, and convincing them that instead they'll end up having a lot of room to explore new things like methods which utilize both CPU and GPU.
- nikonyrh 4y agoWhat language do you use, CUDA-flavored C? I have found Numba's GPU JIT to be a great alternative, since you get to write Python.
- dotnet00 4y agoYep, CUDA-flavored C/C++. We looked into Python-based solutions but in the end they didn't really meet the scientist's requirements for the code (things like maintaining the existing experience for some people in other labs who have been using the C/C++ library directly).