微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 众核多计算模式系统的构建

众核多计算模式系统的构建

时间:01-16 来源:3721RD 点击:



2.3共享内存缓冲技术

众核计算单元在对主控机请求的计算任务加载前,必须获取来自主控机的任务数据,为了实现对任务数据的接收和发送,需要建立相应的数据缓冲区。传统的方法是采用消息队列和基于共享内存信号灯的方式来建立和管理数据缓冲区,但当数据的写入和读取速度差别较大时,容易造成数据缓冲区的阻塞。因此采用一种可滑动动态共享内存缓冲技术,如图5所示。

在众核控制单元的存储空间中申请存储空间作为存放数据的缓冲池,按需要建立指定数量的单向指针链表,每个指针链表代表一个数据缓冲区,在众核处理系统的计算模式切换时,可根据并行任务数目的变化修改指针链表的节点数,使每个数据缓冲区占用的存储空间按需滑动,以提高整个数据缓池数据的传递效率。

2.4计算库动态加载

在对计算任务的执行函数进行加载时,采用动态共享库的方式,因为动态链接的共享库具有动态加载、封装实现、节省内存等优点,可以把众核计算单元的执行函数与逻辑控制程序相隔离,降低了众核计算与逻辑控制的耦合度,增加了可扩展性和灵活性。

在动态加载计算库前,需要将执行函数编译生成动态共享库,进而在程序中进行显示调用。当调用时使用动态加载API,该过程首先调用dlopen以打开指定名字的动态共享库,并获得共享对象的句柄;而后通过调用dlsym,根据动态共享库操作句柄与符号获取该符号对应的函数的执行代码地址;在取得执行代码地址后,就可以根据共享库提供的接口调用与计算任务对应的执行函数,将执行函数发射到众核计算单元,由众核计算单元根据执行函数的配置参数组织计算资源进行计算;当不会再调用共享对象时调用dlclose关闭指定句柄的动态共享库。

3结语

针对复杂应用领域计算任务对多种计算模式的需求,本文研究了众核处理机结构,根据NVIDIA KeplerGK110架构中Hyper-Q与CUDA流的特性,构建了可单任务并行计算、多任务并行计算、多任务流式计算间动态切换的众核多计算模式系统,能够提高实时计算平台的灵活性,以适应不同的任务计算需求。下一步的研究方向是挖掘GPU中硬件工作链路与SM(Streaming Mul-tiprocessor)间的映射机制。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top