4 ms·
OpenCL is a language designed for writing programs where performance is important. I'm not sure how you could abstract away from it or compile down to it withou
by panic 15y ago
OpenCL is a language designed for writing programs where performance is important. I'm not sure how you could abstract away from it or compile down to it without losing some control over the code's performance characteristics.
A compiler would be better off compiling directly to either native code (if running on a CPU) or something like PTX (for NVidia GPUs).
- scott_s 15y agoYou'll probably lose some performance, but you can also make disproportionately large productivity gains. Performance loss generally isn't the largest limitation, but rather expressivity. That is, by providing higher-level abstractions, you're also saying "this is how you need to write your computations." In other words, you define a programming model. If the problem you want to solve does not cleanly map to that programming model, then you can't use it. We've been playing this game every since Fortran was first invented. Yeah, you probably could get better performance if you wrote your application one level of abstraction lower, but once you get a sufficiently sophisticated compiler, the performance benefit is marginal compared to the programming time and effort. Further, libraries tend not to be written directly in assembly, and will often rely on other libraries. I could see implementing something similar to what MS showed purely as a C++ library.