2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

YashanDB|yasboot 执行 cluster status 命令失败的处理办法

数据库砖家

数据库

使用 JDBC 批量插入 YashanDB GIS 空间数据的示例

数据库砖家

数据库

一键多环境构建——用 Hvigor 玩转 HarmonyOS Next

鸿蒙魔法师

鸿蒙 HarmonyOS HarmonyOS NEXT Harmony5

通过 JDBC 向 YashanDB 批量插入空间数据的标准写法

数据库砖家

数据库

天润融通重磅亮相AWS香港峰会,阐述“业务专家 + AI员工”新模式

天润融通

SD-WAN怎么实现企业海外网络访问?

Ogcloud

SD-WAN 企业组网 海外网络加速 海外网络访问 海外网络连接

RocketMQ高级使用

量贩潮汐·WholesaleTide

RocketMQ

深入解析金仓数据库的模式:创建、管理与应用

金仓技术

KingBase 金仓数据库

跨国视频会议总断线?教你这3个实用方法

Ogcloud

跨国网络 跨国网络专线 国际网络 跨国视频会议

YashanDB|启动 yasom 报错 sqlite connection error 的处理思路

数据库砖家

数据库

虚拟机中的 YashanDB 无法从本机访问的处理办法

数据库砖家

数据库

YashanDB 收集统计信息时报 YAS-00507 错误的处理方法

数据库砖家

数据库

告别传统运维繁琐:OpsPilot 对话式交互让 K8s 集群管理更轻松

嘉为蓝鲸

k8s 智能运维 #WeOps OpsPilot

埃文科技大模型领域研究再获突破!两篇创新论文入选国际顶会KDD 2025

郑州埃文科技

大模型

【ITSM运营】问题管理全景图:从识别到复盘的闭环优化体系

嘉为蓝鲸

AIOPS ITSM 智能运维

YashanDB|yasql 使用 as sysdba 登录失败的排查思路

数据库砖家

数据库

YashanDB 安装时报 SSH 认证失败错误的处理方法

数据库砖家

数据库

如何在 YashanDB 备机上安全进行备份与恢复操作

数据库砖家

数据库

时序数据库 TimechoDB v2.0.3 发布 | 支持元数据导入导出脚本适配表模型等功能

Apache IoTDB

YashanDB 使用 imp 导入时报 YAS-08023 的原因与处理办法

数据库砖家

数据库

想要给软件加点功能啥的,源码是必须要有的

程序员郭顺发

Timer-XL 时序大模型论文入选 ICLR 2025,通用与时序场景性能均达到领先水平

Apache IoTDB

金贝旗舰级新品闪光灯亮相PE展,首日体验者络绎不绝

科技热闻

Python 查询 GBK 编码的 YashanDB CLOB 字段数据被截断的原因与修复

数据库砖家

数据库

AARRR模型是什么,包括哪些阶段?一文弄懂PM必备的思维模型!

职场工具箱

人工智能 产品 AI 产品经理 AIGC

详解中间件

量贩潮汐·WholesaleTide

中间件 js

Hive 初始化 YashanDB 报错 YAS-04209 的原因与处理办法

数据库砖家

数据库

使用 Druid 查询 GIS 空间数据时报 read time out 的排查与规避方法

数据库砖家

数据库

YashanDB 登录报 YAS-02143:密码中含特殊字符的处理方法

数据库砖家

数据库

YashanDB 使用 listagg 报 YAS-02511 的原因及解决方案

数据库砖家

数据库

从被动响应到主动预防:AI驱动下的运维流程革命

嘉为蓝鲸

AIOPS 智能运维 DeepSeek

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