当前位置: 首页 > news >正文

做网站要实名吗搜索引擎调词工具

做网站要实名吗,搜索引擎调词工具,新闻最新消息10条,网站 流程 工具核心模式驱动(Kernel Mode Driver) KMD主入口点在内存中接收一个推理作业,从多个可用的作业中选择要执行的作业(如果在多进程系统上),并将其提交给核心引擎调度程序。该核心引擎调度程序负责处理来自NVDLA的中断,调度每…

核心模式驱动(Kernel Mode Driver)

KMD主入口点在内存中接收一个推理作业,从多个可用的作业中选择要执行的作业(如果在多进程系统上),并将其提交给核心引擎调度程序。该核心引擎调度程序负责处理来自NVDLA的中断,调度每个独立功能块上的层,并根据层的完成情况更新任何依赖关系。调度器使用来自依赖图的信息来确定后续层何时准备好被调度,这允许编译器以优化的方式决定层的调度,并避免KMD不同实现的性能差异。

核心引擎接口

神经网络被转换成硬件层,以便在DLA硬件上执行。这些层使用依赖图相互连接,并由被称为引擎调度器(engine scheduler)的模块在DLA上执行,这个调度器负责更新依赖计数处理事件编程硬件层。它是DLA软件的核心模块,可跨不同操作系统移植。可移植层应该使用底层的接口来启用核心引擎模块,核心引擎模块也被称为固件(firmware),因为相同的源代码将用于配套控制器的固件中。

KMD一般的执行顺序如下:

1)probe期间用固件注册驱动程序

int32_t dla_register_driver(void **engine_context,void *driver_context)

此函数必须在启动时调用一次,以初始化DLA引擎调度程序,并在提交任何任务之前向固件注册驱动程序。将指针传递到@param driver_context中的驱动程序上下文,当固件调用可移植层的任何函数时,该上下文作为param传递。它还更新指向引擎上下文的指针,该指针必须在此后任何对固件的函数调用中传递。

参数

engine_context–指向引擎特定数据的指针;

driver_context–指向驱动程序特定数据的指针。

返回

0表示成功,负值表示错误

2)驱动程序提交任务信息以供执行

dla_task_descriptor类型

任务描述符结构体,该结构包括执行神经网络所需的所有信息,例如层数、依赖图地址等。

int32_t dla_execute_task(void *engine_context,void *task_data)

该函数初始化子引擎(sub-engines)并开始任务执行,从硬件接收的事件触发进一步的编程和层调度。

参数:

engine_context–dla_register_driver()中收到的引擎特定数据;

task_data–读取任务信息时要传递的任务特定数据。

返回

0表示成功,负值表示错误

3)固件对硬件层进行编程(后面移植层进行介绍)

4)从硬件接收到中断;

int32_t dla_isr_handler(void * engine_context)

当接收到DLA中断时,调用该函数,可移植层应该使用该平台支持的机制注册它自己的处理程序,并从处理程序中调用这个函数。当固件在进程上下文中对层进行编程时,对该函数的调用必须受到锁的保护,以防止处理中断。

参数

engine_context–dla_register_driver()中收到的引擎特定数据;

返回

0表示成功,负值表示错误

5)中断后处理事件的下半部分调用程序

int32_t dla_process_events(void *engine_context, uint32_t *task_complete)

中断处理程序只是记录事件,并不处理这些事件,中断处理程序完成后,可移植层必须在线程/进程上下文中调用该函数。

参数

engine_context–dla_register_driver()中收到的引擎特定数据;

task_complete–指向指示任务完成的参数指针,如果所有层都被处理,firmare向其写入1。

返回

0表示成功,负值表示错误

6)清理任务和引擎状态

void dla_clear_task(void *engine_context)

此函数重置引擎调度程序状态,包括操作描述符缓存、错误值、子引擎状态、事件等,并从固件中清除先前的任务状态。任务完成后,可移植层可以调用该函数,调用它不是强制性的,但是调用它将确保在下一个任务执行之前保持干净的状态。

参数

engine_context–dla_register_driver()中收到的引擎特定数据。

返回

0表示成功,负值表示错误。

可移植层

核心引擎模块(固件)独立于操作系统,但它仍然需要一些操作系统服务,如内存分配、读/写IO寄存器、中断通知,在KMD实现的可移植层应该为核心引擎模块提供以下接口的实现

固件编程硬件层

uint32_t dla_reg_read(void * driver_context,uint32_t addr)

读取DLA硬件寄存器,可移植层负责使用正确的基址,并在需要时负责任何IO映射。

参数

driver_context–dla_register_driver()中接收的驱动程序特定数据;

addr–寄存器偏移。

返回

寄存器值

void dla_reg_write(void *driver_context,uint32_t addr,uint32_t reg)

写DLA硬件寄存器,可移植层负责使用正确的基址,并在需要时负责任何IO映射。

参数

driver_context–dla_register_driver()中接收的驱动程序特定数据;

addr–寄存器偏移;

reg–要写入的值。

int32_t dla_read_DMA_address(struct dla_task_desc *task_desc,int16_t index,void *dst)

从地址列表中指定的索引处读取DMA地址,功能块编程操作使用该函数为功能块中DMA引擎读取地址。

参数

task_desc–正在执行的任务的任务描述符;

index–地址列表中的索引;

dst–指向更新地址的目标指针。

返回

0表示成功,错误代码表示失败。

int 32_t dla_read_CPU_address(struct dla_task_desc *task _ desc,int16_t index,void *dst)

从指定索引处的地址列表中读取CPU可访问的地址,引擎调度程序使用此函数从内存缓冲区读取数据,运行引擎调度程序的处理器必须能够访问此函数返回的地址。

参数

task_desc–正在执行的任务的任务描述符;

index–地址列表中的索引;

dst–指向更新地址的目标指针。

返回

0表示成功,错误代码表示失败

int32_t dla_data _read(void *driver_context,void *task_data,uint64_t src,void *dst,uint32_t size,uint64_t offset)

这个函数从本地内存中UMD传递的缓冲区读取数据,经过的缓冲区地址在地址列表中共享,神经网络描述符包含这些缓冲区地址列表中的索引。固件将这些数据从UMD共享的缓冲区读入本地缓冲区,以使用这些信息。

参数

driver_context–dla_register_driver()中接收的驱动程序特定数据;

task_data–dla_execute_task()中接收的特定于任务的数据;

src–地址列表中的索引;

dst–本地存储器地址;

大小–数据大小;

offset–从UMD缓冲区开始的偏移量。

返回

0表示成功,错误代码表示失败

int32_t dla_data_write(void *driver _ context,void *task_data,void *src,uint64_t dst,uint32_t size,uint64_t offset)

此函数将数据从本地缓冲区写入UMD传递的缓冲区,经过的缓冲区地址在地址列表中共享,网络描述符包含这些缓冲区地址列表中的索引。固件将此数据从本地缓冲区写入UMD共享的缓冲区,以更新信息。

参数

driver_context–dla_register_driver()中接收的驱动程序特定数据;

task_data–dla_execute_task()中接收的特定于任务的数据;

src–本地存储器地址;

dst–地址列表中的索引;

大小–数据大小;

Offset–从UMD缓冲区开始的偏移量。

返回

0表示成功,错误代码表示失败。

DESTINATION_PROCESSOR

运行固件的处理器将访问内存。

DESTINATION_DMA

内存将由NVDLA DMA引擎访问

int32_t dla_get_dma_address(void * driver_context,void *task_data,int16_t index,void *dst_ptr,uint32_t destination)

UMD共享的一些缓冲区由负责DLA硬件编程的处理器访问,在有头配置的情况下,它将是伴随协控制器,而在无头配置的情况下,它将是主CPU。此外,一些缓冲区由子引擎内的DLA DMA引擎访问。根据配置,此函数应返回目标用户可访问的正确地址。

参数

driver_context–dla_register_driver()中接收的驱动程序特定数据;

task_data–dla_execute_task()中接收的特定于任务的数据;

index–地址列表中的索引;

dst_ptr–指向更新地址的指针;

destination–DMA地址、DESTINATION_PROCESSOR或DESTINATION_DMA的目的地用户。

int64_t dla_get_time_us(void)

以微秒为单位读取系统时间。

返回

以微秒为单位的时间值。

void *dla_memset(void *src,int ch,uint64_t len)

用常量字节ch填充src指向的存储区的len字节长度。

参数

src–存储区地址;

ch–要填充的字节;

len–要填充的内存区域的长度。

返回

存储区地址。

void *dla_memcpy(void *dest,const void *src,uint64_t len)

参数

dest–目标存储区地址;

src–源存储区地址;

len–要复制的内存区域的长度。

返回

目标存储区地址

void dla_debug(const char *str,...)

将调试消息打印到控制台

参数

str–格式化字符串和变量参数

void dla_info(const char *str,...)

将信息消息打印到控制台

参数

str–格式化字符串和变量参数

void dla_warn(const char *str,...)

将警告消息打印到控制台

参数

str–格式化字符串和变量参数

void dla_error(const char *str,...)

将错误消息打印到控制台

参数

str–格式化字符串和变量参数。

http://www.mnyf.cn/news/51285.html

相关文章:

  • 用python做的电商网站事件营销的案例有哪些
  • 网站描本链接怎么做百度快照手机版网页版
  • 杨凌网站建设推广电商运营入门基础知识
  • 摄影网站建设方案网红营销
  • 郑州外贸网站建设哪家好百度新闻
  • 门户网站手机版推广普通话手抄报一等奖
  • 网站限制流量百度app客服人工在线咨询
  • wordpress表单录入郑州百度推广seo
  • wordpress 自动替换百度快照优化推广
  • 如何把反邪教网站做的接地气今日新闻热点10条
  • 网站建设报价方案seo 优化案例
  • wordpress抓取别人网站运营网站
  • 佛山有那些定制网站建设公司营销方法
  • 金华农村网站建设关键词林俊杰歌词
  • 怎样建公司网站重庆可靠的关键词优化研发
  • 宁波网站建设费用seo公司是什么意思
  • 慈溪怎么做网站百度搜索资源平台token
  • 法院网站建设工作成效下列关于友情链接说法正确的是
  • html演示网站管理系统
  • 成都网站建设找亮帅怎样申请网站
  • 怎么看别人网站怎么做的最近国际时事热点事件
  • 建站塔山双喜网站推广步骤
  • 在线商城网站备案武汉疫情最新动态
  • 企业建站业务还能做吗宁波seo外包推广公司
  • 俄罗斯网站制作优化的含义
  • 动态网站开发的技术开发小程序
  • 网站建设公司 中企动力公司媒体公关公司
  • 云教育科技网站建设重庆seo论
  • 做网站一天网页设计与制作作业成品
  • 做外卖有哪些网站seo建站工具