• 【MIC学习笔记】CPU和MIC异步计算及数据传输

    异步计算

    当使用#pragma offload target(mic) 方式分载时, cpu会等待offload的代码块执行完再继续往下执行, 如果不希望等待offload, 我们可以使用cpu和mic异步计算的方式. 具体方法为在offload的时候添加一个信号量, 如下面的形式:

    1
    2
    3
    4
    5
    6
    char signal_var;

    #pragma offload target(mic:0)signal(&signal_var)
    {
    ...
    }

    此时offload 的代码就会异步执行, 需要注意的一点是要制定mic的编号(如上面的target(mic:0)), 如果需要等待offload执行完后在往下执行, 可以使用offload_wait, 如下面的形式

    1
    #pragma offload_wait target(mic:0) wait(&signal_var)
  • 【MIC学习笔记】共享虚拟内存模式

    前言

    使用#pragma offload target(mic) 方式将程序分载到MIC上计算是比较常用的方式, 但是这种方式只支持一维指针, 如果有较为复杂的数据结构, 比如二维指针, 树, 链表等结构则需要将这些数据结构转换为一维结构(如果可以), 否则不能将数据传到MIC上去. 为了满足复杂的数据结构, mic提供了共享虚拟内存的方式, 即将mic的内存和cpu的内存看做共享同一块虚拟内存, 在共享内存中的数据被cpu和mic共享, 不需要使用offload将数据在cpu和mic之间相互传递.

  • 简单工厂模式

    学习python有一年了,在工作中经常使用,不过多是一些基础操作和简单库的使用,受朋友打击,想学习一些深层次的内容,所以从本篇开始学习设计模式,首先是简单工厂模式。其实很早就将设计模式作为学习过程中的一环,不过以前基础薄弱,想来用不到高深的设计模式,...
  • 【MIC学习笔记】记录几个用法

    into

    使用into可以将一个变量的值上传到另外一个变量中, 比如in (a into(b)), 表示将CPU上变量a的值赋给MIC上的变量b, 也可以out(b into(c)) 将MIC上变量b的值传回给CPU上的变量c. 需要注意的地方是into 只能用于in或者out中, 不能用于inout或者nocopy中. 下面是使用示例:

  • ubuntu下sublime text3无法输入中文的解决办法

    最后系统换为ubuntu,发生了一大堆问题,也解决了一大堆问题。因为写前端代码我现在离不了sublime, 不曾想在ubuntu中装好sublime后竟然无法输入中文,吓哭…

  • windows免密码ssh登录linux

    工作需要从windows下免密码登录linux执行任务,主要利用的是ssh-key生成密钥,并添加到账户目录下,以达到目的。 准备如果是linux相互之间添加公钥,可以使用内置的ssh命令,但是从windows下ssh登录linux,需要先下载win...
  • 一些微不足道的小事

    不知如何开口

    最近时常在想,人是为了什么而活着? 有人说是为了梦想,有人说是为了自己,有人说是为了父母,有人说我也没办法,既然来到了这个世上那就好好活着吧…人生不易,仔细一想好好活着还真的挺不容易。且不说如今高的离谱的房价,且不说如今寻求一份谋生职业的艰辛,单看这世间复杂的人与人就足够一个人理一辈子了吧。可是同时,活着也很是简单的,因为这个世上有你爱的人和爱你的人,人间自有真情在,正是这些情谊支撑着我们走过一道道坎坷,一份份迷茫。

  • 【MIC学习笔记】in/out/inout详细用法

    下面的代码主要使用in作为测试, out和inout的用法应该是类似的, 下面主要以代码为主, 并且附带执行结果。

  • 【MIC学习笔记】Offload Using a Pragma

    这种方式对应于我们前面所说的非共享内存模型,这里记录一下它的基本用法

    定义MIC使用的函数和变量

    如果是局部变量, 那么我们不需要做额外的工作, 如果全局变量或者函数, 要在mic上使用它们, 则需要使用下面的方式声明或者定义:

    1
    2
    3
    4
    __declspec( target (mic)) function-declaration
    __declspec( target (mic)) variable-declaration
    __attribute__ (( target (mic))) function-declaration
    __attribute__ (( target (mic))) variable-declaration

    其中__declspec可以用于windows或者linux系统, 而_attribute__只能用于linux.

  • 【MIC学习笔记】HelloWorld

    什么是MIC

    以下摘自”MIC高性能编程指南”

    通常提及MIC系列, 会提及以下几个名词: MIC(Many Integrated Core), Knights系列(如Knights Corner. KNC), Intel® Xeon PhiTM(官方中文译名:英特尔® 至强融核TM). MIC作为这个系列的架构名称, 类似于CPU, 是对采用这种架构的产品的总称. Knights 系列, 是Intel公司推出的MIC产品的研发代号, 类似于Ivy Bridge, 是内部研发人员对某一代产品的命名,不用于商业用途, 例如第一代正式产品锁采用的,就是Knights Corner架构. 提到具体KNx的架构, 与MIC架构相比, 可以看做是面向对象中父类与子类的关系, MIC架构是父类, 而KNx则是子类. Intel® Xeon PhiTM则是产品线的总称, 类似于Pentium、 Xeon等产品系列, Intel® Xeon PhiTM 是Intel公司推出的基于MIC架构的高性能计算协处理器卡的系列产品名称.