分佈式操作層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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章