'CUDA runtime API' term explain meaning of the term in order to translate into other languag

Dear all,

I’m currently interpreting CUDA best performance guide into Russian. While thinking of ways to translate ‘CUDA runtime API’ term I understood that I misunderstood something here External Image. Ok, it is an API, evidently, that is - an interface for programming. It is definitely related to CUDA, therefore CUDA API. But why runtime? “As is” that means that the interface itself is employed only when an application actually starts, doesn’t it? Then, since driver API is simply an interface of the driver, there is no straight connection between “runtime” and “driver” . So probably I misunderstand something?

There are two ways to get user space CUDA commands running on the GPU - either “speak” driver level commands directly (aka “driver API”), or use a higher level of abstraction where an intermediate library “speaks” driver level commands for you (aka “runtime API”). So basically the runtime API is an additional level of abstraction which hides the nuts and bolts of the driver from the programmer. The translation is mostly done at runtime (as opposed to the driver API where you have to present everything to the compiler), hence the name.

WOW! Thanks for the explanation, now that makes sense to me. External Media

Well, some of what you write using the Runtime API gets translated to driver instructions at runtime but a bunch of things are done statically. That’s why you need a special compiler for code written with Runtime API which allows you to use the kernel<<<…>>> syntax among other things. It does require an extra DLL to run compared to Driver API which, thanks to talking to the driver directly, uses a DLL bundled with video drivers.

The name “runtime” is slightly misleading and not really descriptive. I don’t know about Russian but there’s no single word for “runtime” in Polish.

To make this more confusing, there are two kinds of “runtime”. Something may be done “at runtime”, meaning at the moment the program is executed, or something may be “a runtime”, meaning an execution environment of some sort. I’m not quite sure what was the intended meaning for the API.

When I write in Polish, I usually translate those API’s as “high level” and “low level”, with original names given for reference (in English).

That’s the key point of the question :)

For now I’m using “an execution environment of some sort” in my translation, but not quite sure if it gives reader a truthful understanding of the term…