写点什么

Harlan 对富数据结构、树、多维数组以及高阶过程提供支持

  • 2013-07-28
  • 本文字数:1838 字

    阅读完需:约 6 分钟

Harlan 是一种全新的、GPU 计算领域的专用开发编程语言,它对富数据结构、树以及多维数组提供了原生支持。Harlan 可以在 Mac OS X 10.6、Mac OS X 10.7、Mac OS X 10.8 和其他版本的 Linux 上运行。

Harlan 需要一个 OpenCL 的实现,如 Intel 的 OpenCL SDK NVIDIA 的 CUDA 工具包 AMD 加速并行处理(APP)SDK 以及 Petite Chez Scheme 。此外,它还对高阶过程提供了支持。

为了进一步了解编程语言 Harlan,InfoQ 对美国印第安纳大学的博士生 Eric Holk 进行了采访。

InfoQ:使用 Harlan 构建应用的基本要求是什么?

Harlan 致力于在各种硬件上工作。使用 Harlan 编写的应用程序可以在任何设备上运行,只要该设备上有某种 OpenCL 实现。因为编译器本身是用 Chez Scheme 写的,所以用户需要安装 Chez Scheme 或 Petite Chez Scheme。为了让大家在进行 Harlan 语言实验时更加方便,我们一直在最小化 Harlan 运行需求方面努力。

InfoQ:您能向读者介绍一些使用 Harlan 开发的软件应用程序吗?

从设计方面而言,Harlan 是一种通用的数据并行计算语言,因此它可以应用在多种程序中。Harlan 提供了大量的高阶编程功能,如自定义数据类型以及高阶过程,这在现有面向 GPU 的编程语言中是很少见的。

作为编译器的编写者,我对使用 Harlan 来加速某些程序分析任务的方面非常感兴趣,我一直在探索其可能性。我们曾经进行的一些基准测试显示,Harlan 在传统科学的应用程序上运行得非常好。Harlan 语言自身的特性还使其支持非传统的 GPU 应用,如图表分析或者光线追踪。

InfoQ:Harlan 兼容 Windows 7 和 Windows 8 吗?

很遗憾,目前不兼容。也就是说,Harlan 现在不太可能在 Windows 上运行。但是,大部分代码是可移植的,只是需要根据运行时系统进行一些小小的修改。

InfoQ 的:Harlan 对图形渲染有帮助吗?

其实,Harlan 真正关注的重点是通用计算,而不是具体的图形渲染。也就是说,程序将实际运行在 GPU 上,并且可以使用 Harlan 编写很多图形处理任务。

InfoQ:您能使用 Harlan 向读者们演示一个简单的 Hello World 应用吗?

Hello World 的代码如下所示:

复制代码
(module
(define (main)
(println "Hello, World!")
(return 0))) >

上面的示例其实并没有体现 Harlan 并行的特性,所以没有什么意思。下面是另一个程序,展示了如何计算两个矢量之间的点积:

复制代码
(module
(define (main)
(let ((X (vector 1 2 3 4))
(Y (vector 4 3 2 1)))
(let ((dot (reduce + (kernel ((x X) (y Y))
(* x y)))))
(println dot)
(return 0)))))

读者可以使用不同的表达式来创建更长的矢量,从而对 (vector 1 2 3 4) 和 (vector 4 3 2 1) 进行替换。

Harlan 使用的是类 Scheme 的 S- 表达式语法,因此示例中才会有这么多的括号。部分原因是因为编译器是用 Schema 写的,所以自然选择和 S- 表达式一起使用。当然,S- 表达式也支持特定的语言特性——比如 Harlan 的宏系统,很难使用包含更多传统语法的语言来实现。

InfoQ:Harlan 的主要功能同时支持 NVIDIA 和 ATI 的 GPU 吗?

Harlan 被编译为 OpenCL,这是一个生成运算层(Generate Computing Layer),支持大多数 GPU、CPU 以及其他加速器。它也因此不支持最新的功能。比如,Harlan 目前不支持 CUDA 中新的动态并行(Dynamic Parallelism)功能。我想可能这种情况过段时间会有所改观。Harlan 目前还无法大量使用 GPU 上的不同的内存,但这是未来我关注的研究领域之一。

InfoQ:您能再与我们介绍下有关 Harlan 支持高阶过程方面的内容吗?

其实,大约在一个星期前,Harlan 才对高阶过程提供基本的支持。

高阶过程是函数式编程语言的主要部分。通常,在命令式语言中,除了调用函数之外,用户基本上做不了什么事。但在函数式语言中,如 Scheme、ML、Haskell 甚至是 JavaScript,用户可以将其他函数作为某个函数的参数、创建新的函数以及返回函数等。用户甚至可以把这些函数放到数据结构中。

常见的“映射”就是一种​​高阶函数,其参数是一个函数和一个列表,它会调用传入的函数对列表中的每一个元素进行处理,并将处理结果保存为一个新列表,并返回。下面是一个 Scheme 的示例:

(let ((ls (list 1 2 3 4))) (map add1 ls))这里首先创建了一个包含数字 1、2、3、4 的列表,然后通过调用 add1 这个过程,将其参数增加 1,也就是说,列表中的每个元素将增加 1。结果如下:

(2 3 4 5)

查看英文原文: Harlan with Support for Rich Data Structures, Trees, Ragged Arrays and Higher Order Procedures

2013-07-28 04:051398
用户头像

发布了 36 篇内容, 共 14.3 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

HTTP和HTTPS是什么 二者区别是什么

肥晨

11月月更 http和https http工作原理

网络地址转换(NAT)(一)

我叫于豆豆吖.

11月月更

小平台SEO服务崛起:有搜索习惯和需求就有SEO服务

石头IT视角

跟着卷卷龙一起学Camera--MIPI 02

卷卷龙

ISP camera 11月月更

计算机网络:组帧

timerring

计算机网络 11月月更

写给关系数据库开发者的 TDengine 入门指南

TDengine

数据库 tdengine 时序数据库

一文搞懂Go读写Excel文件

闫同学

Go 后端 11月月更

dns-client占用cpu过高的问题解决方案

我是一个茶壶

win10 DNS 11月月更

GoFrame的gmap相比Go原生的map,天然支持排序和有序遍历!?

王中阳Go

Go golang 高效工作 学习方法 11月月更

uniapp简单入门

格斗家不爱在外太空沉思

vue.js uniapp 11月月更

前端面经

肥晨

前端面试题 11月月更 前端面筋 超全面试题

如何免安装使用 Python?推荐 17 个在线的 Python 解释器!

Python猫

Python

聊聊香港优才(56/100)

hackstoic

2022-11-02:以下go语言代码输出什么?A:编译错误;B:apple;C:ant;D:panic。 package main import “fmt“ func main() {

福大大架构师每日一题

golang 福大大 选择题

【Linux】调试器-gdb使用

过眼云烟

学习 记录 11月月更

从1024开始,我们漫谈编程的本质

闫同学

编程 编译原理 11月月更

互联网安全架构设计原则

阿泽🧸

互联网安全 11月月更

🚀使用“release-it”一气呵成:version、tag、changelog 等

小鑫同学

前端 nodejs 11月月更

【愚公系列】2022年11月 Go教学课程 039-文件操作

愚公搬代码

11月月更

Apache Beam基本架构

穿过生命散发芬芳

11月月更 Apache Beam

第一篇文章 | 记录我的Java学习之路 | 一切从零开始

祖国滴花骨朵儿

学习笔记 Java学习 零基础 11月月更

微信小程序—制作一个简单的跑步小程序

格斗家不爱在外太空沉思

JavaScript 微信小程序 11月月更

JavaScript的垃圾回收机制

肥晨

js 垃圾回收机制 11月月更

uniapp多端分享(app,小程序,公众号)

格斗家不爱在外太空沉思

vue.js uniapp 11月月更

Matplotlib基础教程之折线图

芯动大师

Python matplotlib 11月月更

python小知识-python序列化

AIWeker

Python 人工智能 python小知识 11月月更

1024共码未来(一览中华风华,API First)

叶秋学长

程序员 API 1024 11月月更

快速创建软件安装包-ClickOnce

沙漠尽头的狼

从柯里化讲起,一网打尽 JavaScript 重要的高阶函数

掘金安东尼

前端 11月月更

铸剑记:2022国产手机自研技术演义

脑极体

web--文件上传

我是一个茶壶

WEB安全 文件上传 11月月更

Harlan对富数据结构、树、多维数组以及高阶过程提供支持_语言 & 开发_Anand Narayanaswamy_InfoQ精选文章