AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

数据可视化、数据分析常用的表格组件都有哪些?(三)

百度开发者中心

数据可视化 百度智能云 数据分析工具

软件测试/测试开发丨接口测试配置的数据驱动

测试人

软件测试 自动化测试 测试开发

玩转AIGC,5分钟 Serverless 部署 Stable Diffustion 服务

Serverless Devs

Serverless AIGC Stable Diffustion

OpenHarmony 3.2 Release版本到来,全面提升复杂带屏设备体验

极客天地

软件测试/测试开发丨接口测试APIObject 模式、原则与应用

测试人

软件测试 自动化测试 接口测试 测试开发

flutter系列之:如何自定义动画路由

程序那些事

flutter 架构 大前端 程序那些事

火爆的低代码开发具有哪些技术特点?

力软低代码开发平台

为什么要使用CDN?CDN有什么优势?

海拥(haiyong.site)

三周年连更

深入了解 WebAssembly —— 一种新的 Web 可执行文件格式

NGINX开源社区

nginx webassembly

CSA GCR大会正式发布全球首个云渗透测试认证专家课程,腾讯安全获评“特别贡献单位”

腾讯安全云鼎实验室

云安全

10分钟带你徒手做个Java线程池

华为云开发者联盟

Java 开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜

selenium源码通读·8 |webdriver/common/keys.py-Keys类分析

Python 自动化测试 测试框架 源码剖析 selenium

OMG!这个Ins快拍保存到相册的办法绝了!还在犹豫什么,都给我冲!

frank

Instagram

国家工信安全中心权威认证!

百度开发者中心

工业互联网 百度飞桨 文心一言

GPU 加速药物研发与基因组学分析

百度开发者中心

GPU服务器

数据可视化、数据分析常用的图表都有哪些?(二)

百度开发者中心

数据可视化 #百度智能云# 数据分析可视化

数据生产压力突增23倍,平台“可观测性”如何帮这家制造集团排忧解难? | 奇点云技术分享

奇点云

数据中台 可观测性 制造业 奇点云

CloudQuery 社区版回归直播即将开启

BinTools图尔兹

直播 社区版

3DCAT实时云渲染助力广府庙会元宇宙焕新亮相,开启线上奇趣之旅!

3DCAT实时渲染

元宇宙 实时渲染云 3D实时云渲染

TitanIDE 新版本来袭,全新“效能看板”上线

行云创新

ide

建设司库管理体系,数智化转型打破数据壁垒

智达方通

全球司库 司库体系建设 司库管理体系 智达方通

数据可视化、数据分析常用的图表都有哪些?(一)

百度开发者中心

数据可视化 #百度智能云# 数据分析可视化

软件测试/测试开发丨接口测试通用 API 封装实战

测试人

软件测试 自动化测试 接口测试 测试开发

selenium源码通读·7 |webdriver/common/by.py-By类分析

测试 自动化测试 测试框架 源码剖析 selenium

浪潮海岳低代码平台inBuilder开源社区版正式发布

inBuilder低代码平台

开源 低代码平台

精选AI工具合集,效率神器!不止ChatGPT

Finovy Cloud

人工智能 AI

押题率90%!2023Java岗面试99题(含答案):JVM+Spring+MySQL+线程池+锁

程序知音

Java 后端 java面试 Java进阶 Java面试题

如何实现多存储文件传输,镭速提供多存储文件传输解决方案

镭速

OpenHarmony开发者大会召开 携手共建使能千行百业的数字底座

极客天地

软件测试/测试开发丨接口测试数据的数据驱动

测试人

软件测试 自动化测试 接口测试 数据驱动 测试开发

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