分布式操作层Distributed Operation Layer(DOL)入门

DOL是什么?

分布式操作层DOL是一个编程框架,用于自动将应用自动映射到多处理器SHAPES框架平台上,主要由3个部分组成:

(1)DOL应用编程接口

定义了一系列的编程接口,让编程人员可以在不了解底层硬件的情况下进行编程。使用相关的API可以完成SHAPES平台上的分布式、并行应用。

(2)DOL功能仿真

为编程提供了测试应用的功能。另外还可以在应用层面获得性能参数。

(3)DOL映射优化

探索从应用到SHAPES平台的最优映射,可以用XML文件在抽象层面描述一个映射关系。


DOL编程流程

(1)定义功能节点

(2)定义每个节点的通信端口

(3)节点代码实现

(4)节点-处理器映射


DOL编程结构

一个功能节点的实现分为一个.h文件和一个.c文件。

.h文件包含如下内容:

#ifndef CONSUMER_H
#define CONSUMER_H

#include <dol.h>
#include "global.h"
//定义数据传输端口
#define PORT_IN 1
//定义存储节点运行状态的结构体
typedef struct _local_states {
    char name[10];
    int index;
    int len;
} Consumer_State;
//定义节点的初始化函数init和运行函数fire
void consumer_init(DOLProcess *);
int consumer_fire(DOLProcess *);

#endif

.c文件包含以下内容:

#include <stdio.h>
//初始化函数init函数实现
#include "consumer.h"
void consumer_init(DOLProcess *p) {
    sprintf(p->local->name, "consumer");
    p->local->index = 0;
    p->local->len = LENGTH;
}
//运行函数fire函数实现
int consumer_fire(DOLProcess *p) {
    float c;
    if (p->local->index < p->local->len) {
        DOL_read((void*)PORT_IN, &c, sizeof(float), p);
        printf("%s: %f\n", p->local->name, c);
        p->local->index++;
    }

    if (p->local->index >= p->local->len) {
        DOL_detach(p);
        return -1;
    }

    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值