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;
}