关于signal和wait,属于异步传输的语法,即CPU端无需等待offload语句返回,即可异步运行下面的代码。一般用于启动MIC代码段后,并发执行CPU代码,达到同步执行的目的。另外一种用法是使用offload_transfer和offload_wait语句,这两个语句与offload类似,但只负责数据传输,后面不加入计算代码。其中offload_transfer支持的参数与offload语句相同,offload_wait语句仅支持target,if,wait三个参数。两种用法的signal和wait的使用方法是相同的,signal语句在offload代码段结束后发送一个信号,wiat语句负责接收,所以二者一定是成对使用,但是wait语句可以一次等待多个信号,所以二者语句数量未必相等。signal和wait的参数tag,在C语言中,是传输的其中的一个数组的指针,即in/out/inout中的一个数组名,同时传输多个数组的时候,能且只能signal/wait一个数组名。例如:

 int counter;
float *in1;
counter=;
__attribute__((target(mic))) mic_compute;
cpu_cpmpute();
while(counter>){
#pragma offload target(mic:0) signal(in1)
{
mic_compute();
}
cpu_compute();//此时函数与上面的MIC函数并发执行
#pragma offload_wait target(mic:0) wait(in)
counter--;
}

例子中定义了一个MIC计算函数mic_compute和一个CPU计算函数cpu_compute。当程序执行到offload语句时,MIC端执行mic_compute并将控制权交回CPU线程,CPU在得到控制权后,执行cpu_compute函数。cpu_compute函数执行完成后,执行offload_wait语句,offload_wait查看之前offload语句发出的signal信号是否已经到达,如果没有到达,则等待,否则继续执行下面的语句,即counter自减。

MIC语句offload中有if的用法,可以根据条件判断是否将该代码放到设备端运行。如果if中的表达式为假,则代码放到CPU端运行,否则放到MIC端运行。

#pragma offload target(mic)  if(N>1000)

意为当N>1000时使用MIC进行计算,否则使用CPU端进行计算。

MIC的异步传输的更多相关文章

  1. MIC性能优化策略

    MIC性能优化主要包括系统级和内核级:系统级优化包括节点之间,CPU与MIC之间的负载均衡优化:MIC内存空间优化:计算与IO并行优化:IO与IO并行优化:数据传递优化:网络性能优化:硬盘性能优化等. ...

  2. js中XMLHttpRequest对象实现GET、POST异步传输

    js中XMLHttpRequest对象实现GET.POST异步传输 /* * 统一XHR接口 */ function createXHR() { // IE7+,Firefox, Opera, Chr ...

  3. [转]C#网络编程(异步传输字符串) - Part.3

    本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part3.aspx 这篇文章我们将前进一大步,使用异步的方式 ...

  4. Opensuse enable sound and mic card

    Install application pavucontrol Run pavucontrol You will see the configuration about sound card and ...

  5. Line in和Mic in的区别及使用

    Line in和Mic in的区别及使用 我们的电脑声卡上,一般都会有Line in和Mic in两个接口,翻译成中文就是“线性输入”和“麦克风输入”,这两个都是输入端口,但是还是有区别的: 1.Li ...

  6. AJAX— 异步传输

    AJAX异步传输 AJAX— 异步传输 AJAX浏览器与服务器异步传输数据,通过异步请求大大减少数据信息访问量,通俗:AJAX对局部刷新而不是对整个页面刷新,AJAX使得程序更快,更友好. AJAX处 ...

  7. 双MIC安卓手机录音问题

    最近项目中解决了噪音问题和杂音问题后,用户向我们反馈(同时我们也发现)另外一个问题.部分直播间左右耳麦音量大小不一样,也就是左右声道音量大小不一样.找了几款反馈过来的手机,分别是荣耀3X.盖世3和联想 ...

  8. 六、Socket之UDP异步传输文件-实现稳定的文件传输

    上一篇文章五.Socket之UDP异步传输文件-实现传输中取消传送中,还遗留了一个传输文件最大的问题,就是传输过程中丢包,这样在文件传输过程中就会卡住了,这篇文章就来解决文件传输中的丢包问题,实现稳定 ...

  9. 二、Socket之UDP异步传输文件

    上一篇文章一.Socket之UDP异步传输文件中,实现了文件的基本传输,但是传输过程中的信息是看不到的,这一篇是对上一篇进行了一些改进,并且可以了解传输的信息(加入了Log),还加入了接收或者拒绝接收 ...

随机推荐

  1. HashSet、LinkedHashSet和TreeSet

    关键技术: HashSet采用散列函数对元素进行排序,是专门为快速查询而设计的.存入HashSet的对象必须定义hashCode方法. TreeSet采用红黑树的数据结构进行排序元素,使用它可以从Se ...

  2. JD2

    Business Requirement Support l Develops and communicates plan to manage vendor review of requirement ...

  3. mysql如何用jsp代码进行数据库备份

    mysql如何用jsp代码进行数据库备份 //导出 String mysql="mysqldump -uroot -proot --opt databasename > d:/test ...

  4. 【转载】GCC 预处理器选项

    预处理器选项(Preprocessor Option) 下列选项针对C预处理器,预处理器用在正式编译以前,对C 源文件进行某种处理. 如果指定了`-E'选项, GCC只进行预处理工作.下面的某些选项必 ...

  5. Linux文本过滤命令grep、awk、sed

    grep的使用: 一.grep一般格式: grep [选项] 基本正则表达式 [文件] 这里的正则表达式可以为字符串.在grep命令中输入字符串参数时,最好将其用双引号括起来.调用变量时也可以使用双引 ...

  6. Javascript 内置值、typeof运算符、true/false判断

    一.内置值       true       false         null         undefined       NaN       Infinity   二.typeof运算结果 ...

  7. ANGULARJS: UNDERSTANDING DIRECTIVE SCOPE

    https://www.3pillarglobal.com/insights/angularjs-understanding-directive-scope --------------------- ...

  8. 【共享单车】—— React后台管理系统开发手记:权限设置和菜单调整(未完)

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

  9. redis学习笔记——数据类型

    对象处理机制 Redis 构建了自己的类型系统,这个系统的主要功能包括:• redisObject 对象.• 基于redisObject 对象的类型检查.• 基于redisObject 对象的显式多态 ...

  10. Angular 学习笔记——ng-disable

    <!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <met ...