标签存档: 领域专用语言

Diderot: 领域专用语言实现的可移植的并行科学可视化与图像分析(Diderot: a Domain-Specific Language for Portable Parallel Scientific Visualization and Image Analysis)

随着科学数据越来越大以及数据处理分析越来越复杂,科学可视化系统面临两个重要的挑战:
1)数据在可视化之前的预处理与分析需要更灵活的并行计算
2)数据分析过程中涉及到的复杂数学计算需要抽象成简单的函数调用

领域专用语言可以很好地解决以上两个问题。本文提出的Diderot[1]系统主要从以下几个方面解决这两个问题。
1)可移植的并行设计,使用基于POSIX标准的pthread实现线程级。
2)定义strand(股),并使用strand创建线程,线程的一次执行就叫做strand的一次迭代。此外,strand还支持线程之间的通信。
3)抽象复杂的数学计算。简化导数,梯度,卷积,张量计算过程。将这些复杂的计算封装成简单函数调用。在代码中支持直接使用这些数学计算的操作符。
4)封装成C/C++的API。方便其他使用C/C++开发的程序调用。
5)卷积计算操作(如clamp, mirror以及wrap等操作)。

Diderot提供对一些数据描述的简化操作。主要从支持以下抽象代码实现的

image(2)[] I = image(“hand.nrrd”);

其中(2)表示hand.nrrd数据为二维数据,[]表示变量的个数。[]中间空表示标量,[3]表示三维向量,[3,3]表示3×3矩阵。

继续阅读 »