写点什么

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:051548
用户头像

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

关注

评论

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

5G 和 Wi-Fi 市场与技术的一些思考系列之二

李伟-晨泳

☕️从Java8到Java17的新特性(一):Java8 的新特性

看山

Java java8

聊聊 C 语言和 ABAP 这两门编程语言的关系

汪子熙

c++ 编程语言 C语言 abap 3月月更

Python迎来31岁生日,蝉联年度编程语言排行榜冠军

Python猫

Python

小程序电商微服务设计

唐尤华

架构实战营

一文搞定 Flutter 底部弹窗实现

岛上码农

flutter 跨平台 ios开发 Android开发 3月月更

大数据培训十大Hive调优技巧

@零度

大数据 hive调优

Jetpack Compose之 在Compose中使用Navigation导航

黄林晴

android Compose JetPack

Kubernetes API规范:为optional的字段使用pointer

工程师薛昭君

API Kubernetes 集群

RocketMQ的tag还有这个“坑”!

中间件兴趣圈

RocketMQ tag 消息过滤

计算机编码规则之:Base64编码

程序那些事

Java base64 nio 程序那些事 3月月更

Redis集群架构剖析(3):集群处理redis-cli指令

非晓为骁

redis 架构 分布式 redis cluster

如何在新公司快速落地

Hockor

HertzBeat赫兹节拍 v1.0.beta.6 发布,Linux监控来啦

TanCloud探云

开源 APM 监控 告警

深入浅出 Vue3 核心知识点

百瓶技术

Vue 前端 VUE 3.0 源码 vue3.0

春分耕种时,AI“现身”田间地头

百度大脑

网络安全:绕过MSF的一次渗透测试

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

WebAssembly技术_JS调用C函数示例_传递参数、方法导出

DS小龙哥

webassembly 3月月更

presto是如何保证作业内存不会发生冲突和溢出

华为云开发者联盟

内存 presto 内存计算引擎 System Pool general Pool

《软件开发的201个原则》思考:4. 高质量软件是可以实现的

非晓为骁

个人成长 软件工程 软件开发

最好的 6 个 React Table 组件详细亲测推荐

蒋川

React

科幻变现实:喷下即疗愈,生物3D打印绘就生命密码图

脑极体

昇腾CANN论文上榜CVPR,全景图像生成算法交互性再增强!

华为云开发者联盟

CVPR CANN 图像生成 昇腾AI处理器 图像布局

云效DevOps全家桶评测征集令重磅来袭!免费使用云效全套功能

阿里云云效

云计算 阿里云 DevOps 云原生

一周热点回顾|虎符交易所上线多链合一;俄央行称加强监控加密资产等P2P交易

区块链前沿News

区块链 虎符交易所

如何消除代码山中那一大坨参数列表

华为云开发者联盟

代码 软件设计 参数 全局变量 参数列表

743 网络延迟时间

好吃不贵

Redis:在windows环境安装Redis

喀拉峻

redis

Rust的Cow类型

Shine

rust cow

多场景推进 服务网格在联通的落地实践(下)

百度大脑

使用 ABAP 开发的一个基于 Web Socket 的小工具,能提高程序员日常工作效率

汪子熙

自动化 前端开发 websocket 程序员进阶 3月月更

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