4 ms·
I've debated with cliff click about this before actually. There was a consensus that the JVM can support certain kinds of operations for that stuff (eg: basic S
by agibsonccc 10y ago
I've debated with cliff click about this before actually. There was a consensus that the JVM can support certain kinds of operations for that stuff (eg: basic SIMD) with that coding style. It can't do everything though.
It's a lot better to go JNI for 99% of this stuff though.
I'd also love to know when java has first class support for gpus (you know where hpc actually runs?).
I'll continue relying on c++ for that stuff. It's also what nvidia supports first class.
If you have any first hand experience with this stuff
I'd also love to hear your thoughts on this as well.
Better yet: Here's a mailing list where these people (including me) sit.
Go ahead and peruse it. I've learned a lot being on here.
I'm STILL of the opinion the JVM
can't do most of these
things well after having run the numbers:
https://groups.google.com/forum/#!forum/mechanical-sympathy https://groups.google.com/forum/#!forum/mechanical-sympathy
For cpu I'll be sticking with openmp for the long term. Don't even get me started with cpu specific optimizations (eg: different intel generations)
- deleted 10y ago[deleted]
- _asummers 10y agoFair enough, I personally don't have first hand experience with the super tight loop stuff on the JVM (though that seems like it'd be fun!). The JVM has always been fast enough for MY needs, but I realize that's not true for everyone. Thanks for the link, that seems like a good mailing list.
- agibsonccc 10y agoNah I mean this stuff IS hard. That's why I offered that mailing list. Like I said a lot of people from azul and a lot of the hardcore jvm heads sit on there. If there's a way to make java faster for that great. You are are right that the jvm DOES support some of the tight loop stuff. It's harder to do and leads to messy code though. In C++ you can write maintainable code and add pragmas. It's a lot cleaner and with javacpp (https://github.com/bytedeco/javacpp https://github.com/bytedeco/javacpp) we just generate the jni bindings. We found that to be easier in practice. I'm admittedly not THAT familiar with the jvm internals. I have just tried to get it to work and have did enough reading to know jni will just be cleaner for that stuff. The JVM is certainly fast enough, just mainly for distributed systems code (eg: databases, message queues) Honestly that's what makes it appealing for me. I can write fast production systems and tweak it where necessary for the HPC apps. Java provides a fast and safe baseline for 90% of the stuff I'd want it to do. We tried for about a year to get it to work for lin alg and finally said screw it let's just do c++.