MIC C编程(offload模式)

MIC C编程(offload模式)

编程特点

简单---隐藏大量细节,语法与OpenMPI类似(不需要开辟空间)

灵活---OpenMP MPI(但是用的不多)pThread等多种方式

传统---CPU编程一脉相承

 

MIC C扩展语言结构

编译指导方式(#pragma

offload

--表示之后的代码段将使用offload模式运行

  运行在其他设备上(MIC

--标识内存传递参数,传递过程对用户透明

  不需要手动写代码控制何时传入、何时传出

  不需要手动申请卡上内存空间

  不需要讲卡上内存与主机端内存空间手动对应

 

简单示例

#pragma offload target(mic)

for(i=0;i<LEN;i++)

{

printf(“Index:%d\n”,i);

}

循环和printf语句在MIC上执行,没有数据传输

此时循环是串行的,因为没有并行引语

 

 

offload语法

#pragma offload specifier[,specifier...]

specifier

示例

含义

target

target(mic:0)

使用什么设备运行

if

if(N>1000)

是否使用该设备

in

in(p:length(LEN) alloc_if(1))

数据传入device

out

out(p:length(LEN))

数据从device传出

inout

inout(p:length(LEN) align(8))

数据既传入又传出

nocopy

nocopy(p)

只开辟空间不传递

signal

signal(tag)

发送信号

wait

wait(tag1,tag2)

等待信号

mandatory

mandatory

必须用MIC运行

 

 

 

 

 

 

其中in/out/inout/nocopy可用的属性有

属性

示例

含义

length

length(LEN)

元素个数

alloc_if

alloc_if(1)

是否开辟内存

free_if

free_if(N>0)

offload后是否释放

align

align(8)

对齐

alloc

alloc(p[10:100])

开辟数组一部分

into

into(p[10:100])

传递数组一部分

 

 

 

语法详解target

#pragma offload target(mic)  mic这里目前只支持MIC

--这是必须使用的属性

--表示下面的代码段使用M

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mic与gpu对比,GPGPU与MIC定位相似,两者都是相对于CPU具有较高性价比的高性能解决方案,甚至连外形都是一样使用PCI-E插槽的板卡。但对于“核”这个概念来说,两者却有很大的不同。GPGPU中所说的核,以CUDA为例,是指一个SP(即流处理器),SP的功能只有计算,以NVIDIA的Fermi GPU为例,32个SP组成一个SM(流处理器群),一个SM 才有两个控制单元。也就是说每16个GPU的“核”,必须执行同一条指令。而MIC得设计思路与GPGPU完全不同。MIC的每个“核”,可以简单看作一个X86核心,也就是与现有PC机或小型服务器上的CPU核心相同的核。因此MIC编程可以最大限度地沿袭已有CPU上的并行程序,甚至可以一定程度上认为MIC上的每个“核”都是独立的节点,亦即将MIC作为一个超小型的集群。MIC的“核”虽然是x86架构,虽然单核的功能比GPGPU的核强大不少,但要指望单兵作战接近主流CPU,暂时还是不现实的。MIC依靠和GPGPU一样,靠人海战术。说起“人数”,GPGPU动辄上百核,MIC只有几十核,几十单核性能再强,在并行应用中也掀不起多少浪花。由于MIC的核心是Intel的CPU,核心数即使上不去了,Intel处理器可以超线程。在MIC上,每个核心能同时并发执行4个线程,而且这4个线程被Intel成为“硬件线程”,其性能大幅提升,几乎可以把每个线程看作真正的核心。因此,MIC“执行核”的数量,核GPGPU实际差不多。 另外,MIC采用了SMP结构,以一致性共享缓存为中心,这种设计使得MIC可以使用传统CPU的编程模型,而不需要针对性的硬件,设计新的程序结构。 MIC对现有程序改动之小还体现在编程简易性和工具方面。编程简易性上,MIC常用的offload模式只需要加上少数几条编译指导语句,就可以使程序利用MIC进行运算,而此时的程序源代码,是可以与传统的CPU程序共用的,减少了维护成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值