【MIC学习笔记】记录几个用法

into
使用into可以将一个变量的值上传到另外一个变量中, 比如in (a into(b))
, 表示将CPU上变量a的值赋给MIC上的变量b, 也可以out(b into(c))
将MIC上变量b的值传回给CPU上的变量c. 需要注意的地方是into 只能用于in或者out中, 不能用于inout或者nocopy中. 下面是使用示例:
C
1 |
|
alloc_if 和 free_if
对于指针变量来说, 每次执行offload都会为其分配新的内存, 当offload执行完之后, 就会将该内存释放掉. 为了能够重用前面offload所开辟的空间, mic提供了alloc_if和free_if来显示指定是否为offload的指针变量(非指针变量使用alloc_if和free_if会报错)分配新的内存以及执行完offload后是否释放该内存. 下面是具体含义:
- alloc_if(1) - offload时为指针分配新的内存
- alloc_if(0) - offload时不开辟新的内存, 而是使用前面保留的内存
- free_if(1) - offload执行完成后, 释放掉为该指针分配的内存
- free_if(0) - offload执行完成后, 不释放指针对应的内存
默认值是alloc_if(1) 和 free_if(1), 为了使程序更加清晰, 我们预定义几个宏
C
1 |
下面是具体的示例代码:
C
1 |
|
还有一个问题就是重用内存的时候好像是不需要两个变量名相同, 看下面的代码
C
1 | void retain() { |
首先执行retain, 然后在执行reuse, 程序仍然可以正常运行.
Applying the target Attribute to Multiple Declarations
当有多个变量或者函数需要在MIC上使用时, 我们可以采用一种较为方便的声明方式为这些变量和函数加上 target(mic) 的属性, 下面是声明方式:
C
1 |
|
在两个#pragma之间声明的变量和函数都可以在mic上运行, 如果要声明共享虚拟内存模式下使用的共享变量和函数, 可以采用下面的形式
C
1 |
|
下面是一个示例:
C
1 |
|
- 本文标题:【MIC学习笔记】记录几个用法
- 创建时间:2015-12-08 16:53:26
- 本文链接:https://firebase.076666.xyz/posts/94f0.html
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!