在这里简单总结一下driver API的大致特点,主要是解释其中几个重要的概念。
下面是driver API中几个常见的术语:
dirver API的核心为定义了一系列object,通过handle来显式控制object。
context
context类比CPU process,resource以及其他action被封装在context中,每个CPU thread每个时刻只能有一个current context。context可通过cuCtxCreate()来创建,cuCtxCreate()会将创建的context push到该host thread的context stack的top,使其成为当前host thread的current context。同时,每个context都有一个counter,记录其被多少个thread引用。counter在cuCtxCreate()时初始化为1,之后每被一个thread通过cuCtxAttach()引用一次,则usage count加1,每被cuCtxDetach()一次,count减1,当减为0时该context会被销毁。
与cuCtxCreate()功能相反的一个函数为: cuCtxDestroy();
通过cuCtxPopCurrent()可以将当前host thread的current context解耦成为float context&