4 ms·
> Once you have allowed that proprietary cr*p into your C++ codebase People have been doing that all the time for every kind of codebase. It's just part of the
by fg137 17d ago
> Once you have allowed that proprietary cr*p into your C++ codebase
People have been doing that all the time for every kind of codebase. It's just part of the business. I don't see how it's worth having any emotions or opinions about it. Seems like you are wasting your energy.
Are win32 APIs proprietary? So you decide to use them, use a wrapper/UI framework, or don't develop for Windows. Easy choice.
Developing for embedded devices? So you read the manufacturers manual and implement based on the spec, use some sort of HAL if they are available, or you don't have a job. Even simpler.
- jacobgorm 17d agoCUDA is not an API, CUDA is a language, so you cannot make that comparison.
- esseph 17d ago> The CUDA runtime is a special case of one of the libraries provided by the CUDA Toolkit. The CUDA runtime provides both an API and some language extensions to handle common tasks such as allocating memory, copying data between GPUs and other GPUs or CPUs, and launching kernels. The API components of the CUDA runtime are referred to as the CUDA runtime API. From: https://docs.nvidia.com/cuda/cuda-programming-guide/01-introduction/cuda-platform.html https://docs.nvidia.com/cuda/cuda-programming-guide/01-intro...
- pjmlp 17d agoCUDA is neither an API, nor a language, it is an ecosystem.
- fc417fc802 17d agoThat's a nice way of saying that it's a dependency clusterfuck. I've never understood why we can't just expose the GPU ISA directly the way the CPU does. It's all getting compiled down at the end of the day so someone has to write a compiler for it either way. We'd be substantially better off IMO if it was all built directly into LLVM and then let middleware sort out the details.
- pjmlp 17d agoBecause even CPUs rather use JIT runtimes to deal with the various kinds of ISAs that exist. Naturally plenty of folks rather use software that doesn't take advantage of the hardware they paid for.
- imtringued 17d agoThat would require vendors to either stick with a single backwards compatible ISA like intel did for x86 or document how their graphics cards work. CPUs manage this by changing the internal micro-architecture, but historically GPUs only needed to support a graphics API and used that abstraction layer to freely change the hardware.
- dev_hugepages 17d agoIf i'm not mistaken, this already exists, and the assembly language here is called PTX https://llvm.org/docs/NVPTXUsage.html https://llvm.org/docs/NVPTXUsage.html
- pjmlp 17d agoPTX is a bytecode format, the CUDA driver JIT compiles it when uploading into the cards.
- fc417fc802 17d agoCan't the same also be said of much of the x86 vocabulary at this point? I appreciate that we can upload SPIR-V directly. The API still feels overly obtuse but it's not so bad. SYCL gets close but is language specific.
- deleted 17d ago[deleted]
- worik 17d ago> Are win32 APIs proprietary? Yes. And crap. Not in my code bases.
- josephg 17d agoIf you're going to make apps in windows, you need to call their proprietary API somehow. Maybe you do it via a wrapper library, or via electron or something. But that's the same thing, just with more indirection.
- ux266478 17d agoFind a way to get ring 0 without touching any system APIs and you can just make your own APIs. My programs shall never say "please."
- estebank 17d agoYour programs shall never grace my systems.
- DeepSeaTortoise 17d agoWhat makes you think he'll let you have a say in this? Btw, you wanna buy some ~~dea~~ usb sticks?
- rfgplk 17d ago> If you're going to make apps in windows, you need to call their proprietary API somehow. Maybe you do it via a wrapper library, or via electron or something. But that's the same thing, just with more indirection. Not even close to being true. You can invoke syscalls directly, just needs a bit of reverse engineering. I wrote a bare metal libc library, with (not a whole lot of) effort I'm fully able to interface with the kernel/open windows etc. Fully statically linked, no libc, no win32, compiled on Linux executed on Windows. The problem is this isn't really well documented _at all_, and I even ended up attempting to get in touch with the Windows kernel dev team to give me the actual internal syscalls/endpoints, but they refuse to cooperate. Which is why writing anything for Windows is entirely pointless.
- infamouscow 17d agoMany software engineers forget they're employee of a business.
- jacobgorm 16d agoIf that business makes it money selling a cross-platform AI inference engine, as was the case for my previous startup, it is bad business to tie yourself to single platform. I managed to build a single code base that would support CPUs, OpenCL, Metal, CUDA, D3D12, and WebGPU from a single set of kernel sources. As a single developer, there was no way I would have been able to, at the time, maintain separate code paths and GPU kernels for each of those platform, in addition to training the models etc.
- Hendrikto 17d ago> I don't see how it's worth having any emotions or opinions about it. Ironic, seeing as that is an opinion about it. Also weird telling people in an online discussion forum not to have opinions.
- da_chicken 17d agoOh, does that mean I get to say you're ironic because, literally, they didn't tell anyone to do anything. They said they didn't understand the worth of the opinion. You're interpretation is selectively literal in order to be rhetorical. Does that mean someone else gets say I'm being ironic because I'm selectively literal in order to be rhetorical? Well, okay, I guess it's harder now.
- deleted 17d ago[deleted]
- TheGamerUncle 16d agoYou're interpretation is selectively literal in order to be rhetorical. Where do you think you are ? Most of us are in tech/IT/research the population in the spectrum here is orders of magnitude bigger than the avg on real life. SO yeah people will be literal in order to be rhetorical. Not even selectively, this is the one site where you NEED to use /s unironically.
- bigyabai 17d agoThat opinion is work-ethic related, not CUDA-related. The stance is reasonable too; why complain about characteristics of CUDA that can't be changed? Your job as a CUDA engineer isn't to decide whether or not a proprietary API/compiler is the right call. Your boss made that choice for you when they hired you, and you accept the tradeoff if you want to keep working there. It's like someone protesting Dotnet because they wish they spent the rest of their life working with Perl instead. You can do that, but it's a completely different job with different pay grades and demands.
- unethical_ban 16d agoA pedantic dissection of someone saying "why get worked up about it".
- MisterTea 17d ago> I don't see how it's worth having any emotions or opinions about it. Seems like you are wasting your energy. Some people only care about the easiest path to their pay check. Some people actually care about software engineering. I tend to prefer the latter but hamstrung by the former.
- qweqwe14 16d agoHave you considered that maybe, just maybe, you can have both an easy path to your paycheck and care about software engineering? You also might have an incorrect definition of "software engineering" in mind
- like_any_other 16d ago> It's just part of the business. I don't see how it's worth having any emotions or opinions about it. It's called foresight. The ability to see that vendor lock-in is against our long-term interests. Your windows comparison is apt - now we have tons of software tied to windows, making it hard to leave that spyware-infested OS.
- throwaway27448 16d ago> People have been doing that all the time for every kind of codebase. It's just part of the business. What is your ecosystem where this is true? Embedded or industrial, maybe? I'm guessing you assume other people also use the same windows or embedded systems you're referring to. That's an insane thought: nobody would use this if they had any chance, and you intentionally chose this misery. Obviously, you don't need to live this way. You can be free. Breathe.
- kode-targz 15d ago> It's just part of business. I don't see how it's worth having any emotions or opinions about it. Because we're engineers? Hackers? You know, hacker news? We're supposed to care about the craft, its quality, and our long-term interests, not the shareholders, not the executives, and definitely not Microsoft and NVIDIA. If you really think this isn't a discussion worth having then you don't belong in this domain at all and you shouldn't be an engineer.