MIC中函数和变量的声明
c++/c使用
__declspec(target(mic))函数或变量声明
或
__attribute__((target(mic)))函数或变量声明
举例如下:
__attribute__((target(mic))) int a;
__attribute__((target(mic))) void func();
如果变量或函数较多,MIC问为我们提供了批量声明的办法,让我们一次可以申请多个函数或变量,并且函数或变量,并且函数和变量可以混合声明。
#pragma offload_attribute([push,]target(target-name))
// 变量或函数声明
#pragma offload_atrribute(pop|{target(none)})
C/C++有两种方法:
#pragma offload_attribute(push,target(mic))
//函数或变量声明
#pragma offload_attribute (pop)
或
#pragma offload_attribute(target(mic))
//函数或变量声明
#pragma offload_arrtibute (target(none))
举例如下:
#pragma offload_attribute(push,target(mic))
inta;
float func();
#pragma offload_attribute(pop)
这里注意attribute前后均是两个下划线,示例代码如下:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define LEN 5
__attribute__((target(mic))) void funcheck(int h){
#ifdef __MIC__
printf("Index on MIC: %d \n",h);
#else
printf("Index on CPU: %d \n",h);
#endif
} int main(int argc,int** argv){
int i;
#pragma offload target(mic)
for(i=;i<LEN;i++){
funcheck(i);
}
return ;
}
MIC前后也均是两个下划线,这段代码中__MIC__是MIC提供的一个宏定义,这个宏定义用来检查程序是否运行在设备端,也就是MIC端,需要注意的是,这个定义不能在offload代码段内检查!
编译 icc -o demo demo.c
执行 ./demo
结果如下:
Index on MIC: 0
Index on MIC: 1
Index on MIC: 2
Index on MIC: 3
Index on MIC: 4
MIC中函数和变量的声明的更多相关文章
- Javascript中函数及变量定义的提升
<html> <head> <title>函数提升</title> <script language="javascript" ...
- js函数和变量的声明与执行顺序
一.函数执行顺序 1.正常顺序 function f(){ alert(2); } f(); //alert 2 所有浏览器都能测试通过. 2.倒序调用 f(); //alert 2 function ...
- 代码中函数、变量、常量 / bss段、data段、text段 /sct文件、.map文件的关系[实例分析arm代码(mdk)]
函数代码://demo.c #include<stdio.h> #include<stdlib.h> , global2 = , global3 = ; void functi ...
- c++ 中关于一些变量不能声明的问题
j0,j1,jn,y0,y1,yn被c++中某些函数占用了,所以是不能被声明的,今天就遇到了这个问题,结果我在自己写的程序中找了半天都没找到重复申明的y1
- 关于gcc编译器中函数不用进行原型声明的解释
经过大量实验和参考网上的说法得出一个结论: gcc编译器中,函数可以不用提前进行原型声明,编译器会把函数调用同时认为是声明.需要注意的是,由于函数调用的时候并没有写明函数返回值,这是gcc把调用当成声 ...
- JavaScript中函数的变量提升问题
函数的大体分三种,一种是函数的声明,一种是函数表达式(又称为函数的字面量) 1.函数的声明 => function myFn(){}; 2.函数的表达式 => var myFn = fun ...
- C语言函数及变量的声明与定义的区别
变量: 1.声明变量不需要建立存储空间,如:extern int a; 2.定义变量需要建立存储空间,如:int a:或者 int b=10:无论变量是否赋值,只要定义它,即占用空间. 3.int a ...
- Spark-Core RDD中函数(变量)传递
我们进行 Spark 进行编程的时候,初始化工作是在driver端完成的,而实际的运行程序是在executor端进行,所以就涉及到了进程间的通讯,数据是需要序列化的 1.传递函数 import org ...
- 浅谈javascript函数,变量声明及作用域
javascript函数跟变量的声明.作用域这些概念网上都已经讲烂了. 这里写个博客,也相当于做个笔记. 变量声明 首先看个例子: var globalVar = "gv"; fu ...
随机推荐
- luogu P1284 三角形牧场
题目描述 和所有人一样,奶牛喜欢变化.它们正在设想新造型的牧场.奶牛建筑师Hei想建造围有漂亮白色栅栏的三角形牧场.她拥有N(3≤N≤40)块木板,每块的长度Li(1≤Li≤40)都是整数,她想用所有 ...
- 【bzoj4318】【OSU!】期望dp——维护多个期望值递推
[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=62369739 Description osu 是 ...
- cf 546C Soldier and Cards
题目链接:C. Soldier and Cards Two bored soldiers are playing card war. Their card deck consists of exact ...
- 几个有用的PHP.ini配置项-路径和目录
几个有用的PHP.ini配置项-路径和目录 路径和目录1.include_path = string作用域:PHP_INI_ALL默认值:NULL此参数指定的路径是include().require( ...
- 129 - Krypton Factor
/*UVa129 - Krypton Factor --回溯问题.看例子可知道确定该字符串是按照从左到右依次考虑每个位置,当前位置填不上所有的字符时,需要回溯. -- */ #define _CRT_ ...
- 针对访问uri 限制ip
在虚拟主机配置文件中加入如下字段: <filesmatch "(.*)admin(.*)"> Order deny,allow ...
- c++之map函数/迭代器
参考文献:https://www.cnblogs.com/fnlingnzb-learner/p/5833051.html #include <iostream> #include < ...
- haproxy + rabbitmq + keepalived的高可用环境搭建
一.rabbitmq的搭建:参考rabbimq的安装及集群设置 二.安装和配置haproxy 1.安装haproxyyum install haproxy 2.安装rsysloga. 检查rsyslo ...
- osgconv使用指南(转)
osgconv是一种用来读取3D数据库以及对它们实施一些简单的操作的实用应用程序,同时也被称作 一种专用3D数据库工具. 用osgconv把其他格式的文件转换为OSG所支持的格式 osgconv是一种 ...
- 修改PHP上传文件的大小限制(post)
在PHP的默认配置情况下,当上传的文件大小超出一定的限制时,我们将得到如下的错误提示信息: Warning: POST Content-Length of 625523488 bytes exceed ...