MIC的异步传输
关于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的异步传输的更多相关文章
- MIC性能优化策略
MIC性能优化主要包括系统级和内核级:系统级优化包括节点之间,CPU与MIC之间的负载均衡优化:MIC内存空间优化:计算与IO并行优化:IO与IO并行优化:数据传递优化:网络性能优化:硬盘性能优化等. ...
- js中XMLHttpRequest对象实现GET、POST异步传输
js中XMLHttpRequest对象实现GET.POST异步传输 /* * 统一XHR接口 */ function createXHR() { // IE7+,Firefox, Opera, Chr ...
- [转]C#网络编程(异步传输字符串) - Part.3
本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part3.aspx 这篇文章我们将前进一大步,使用异步的方式 ...
- Opensuse enable sound and mic card
Install application pavucontrol Run pavucontrol You will see the configuration about sound card and ...
- Line in和Mic in的区别及使用
Line in和Mic in的区别及使用 我们的电脑声卡上,一般都会有Line in和Mic in两个接口,翻译成中文就是“线性输入”和“麦克风输入”,这两个都是输入端口,但是还是有区别的: 1.Li ...
- AJAX— 异步传输
AJAX异步传输 AJAX— 异步传输 AJAX浏览器与服务器异步传输数据,通过异步请求大大减少数据信息访问量,通俗:AJAX对局部刷新而不是对整个页面刷新,AJAX使得程序更快,更友好. AJAX处 ...
- 双MIC安卓手机录音问题
最近项目中解决了噪音问题和杂音问题后,用户向我们反馈(同时我们也发现)另外一个问题.部分直播间左右耳麦音量大小不一样,也就是左右声道音量大小不一样.找了几款反馈过来的手机,分别是荣耀3X.盖世3和联想 ...
- 六、Socket之UDP异步传输文件-实现稳定的文件传输
上一篇文章五.Socket之UDP异步传输文件-实现传输中取消传送中,还遗留了一个传输文件最大的问题,就是传输过程中丢包,这样在文件传输过程中就会卡住了,这篇文章就来解决文件传输中的丢包问题,实现稳定 ...
- 二、Socket之UDP异步传输文件
上一篇文章一.Socket之UDP异步传输文件中,实现了文件的基本传输,但是传输过程中的信息是看不到的,这一篇是对上一篇进行了一些改进,并且可以了解传输的信息(加入了Log),还加入了接收或者拒绝接收 ...
随机推荐
- 「PKUWC 2018」随机算法 (60分部分分做法)
明天就是CTSC的DAY 2了qwq,晚上敲敲暴力攒攒RP,果断随便看了个题就是打暴力hhhhh 前50% O(3^N) 暴力没什么好说的,我们设F[S][s]为已经选了S集合中的点,并且这个集合中的 ...
- 第一讲work(axe)
1,Dao package com.songyan.Dao; public interface Axe { public void chop(); } package com.songyan.Dao; ...
- Linux Whois命令安装与使用
大家都知道查看域名的详细信息,都是跑去whois服务器去查询,如 http://whois.chinaz.com 其实在Linux下直接有一个whois的命令,不过需要安装jwhois才可以,以Cen ...
- Jackson的高级应用(转)
Jackson 是当前用的比较广泛的,用来序列化和反序列化 JSON 的 Java 的开源框架.Jackson 社 区相对比较活跃,更新速度也比较快, 从 Github 中的统计来看,Jackson ...
- ARM32 Linux kernel virtual address space
http://thinkiii.blogspot.jp/2014/02/arm32-linux-kernel-virtual-address-space.html The 32-bit ARM C ...
- SQL的连接(外连接、内连接、交叉连接和自连接)
在查询多个表时,我们经常会用到连接查询,连接是关系型数据库的主要特点,也是它区别于其他类型的数据库管理系统的一个标志. 一.什么是连接查询 连接查询:根据两个表或者多个表的列之间的关系,来从这些表中查 ...
- 【Node.js】4.从一个例子切入Node js的规范
在开始之前,需要明确的一点就是, ①Node应用是由模块组成的,每一个文件都是一个模块,有自己的作用域. ②在这个文件里定义的变量,函数,类都是私有的,对其他的文件不可见. ③在一个文件中,也就是在一 ...
- 手把手教你AndroidStudio多渠道打包
最近不断有朋友向我咨询AndroidStudio多渠道的打包方法,今天整理一下之前积累的打包套路,写一篇文章,手把手的教给大家. 说到多渠道,这里不得不提一下友盟统计,友盟统计是大家日常 ...
- 鸟哥的linux私房菜学习记录之计算机概论
- HTML5的测试总结
HTML5其实也是web的一种,所以基本的web测试的一些重点,HTML5上都要过一遍,不过也有其特殊之处. [需求设计测试] 需求是否合理.是否有更好的实现方法或者功能的遗漏,以及原型图测试,包括用 ...