...
首页> 外文期刊>Procedia Computer Science >GPGPU kernel implementation and refinement using Obsidian
【24h】

GPGPU kernel implementation and refinement using Obsidian

机译:使用Obsidian的GPGPU内核实现和完善

获取原文
           

摘要

Obsidian is a domain specific language for data-parallel programming on graphics processors (GPUs). It is embedded in the functional programming language Haskell. The user writes code using constructs familiar from Haskell (like map and reduce), recursion and some specially designed combinators for combining GPU programs. NVIDIA CUDA code is generated from these high level descriptions, and passed to the nvcc compiler?[1]. Currently, we consider only the generation of single kernels, and not their coordination.This paper is focussed on how the user should work with Obsidian, starting with an obviously correct (or welltested) description of the required function, and refining it by the introduction of constructs to give finer control of the computation on the GPU. For some combinators, this approach results in CUDA code with satisfactory performance, promising increased productivity, as the high level descriptions are short and uncluttered. But for other combinators, the performance of generated code is not yet satisfactory. Ways to tackle this problem and plans to integrate Obsidian with another higher-level embedded language for GPU programming in Haskell are briefly discussed.
机译:黑曜石是用于图形处理器(GPU)上的数据并行编程的领域特定语言。它嵌入在功能编程语言Haskell中。用户使用Haskell熟悉的构造(例如map和reduce),递归和一些专门设计的用于组合GPU程序的组合器来编写代码。 NVIDIA CUDA代码是从这些高级描述生成的,并传递给nvcc编译器?[1]。当前,我们仅考虑单个内核的生成,而不考虑它们的协调。本文着重于用户应如何使用Obsidian,首先是对所需功能的明显正确(或经过测试)的描述,并通过介绍对其进行完善。可以更好地控制GPU上的计算的结构。对于某些组合器,由于高级描述简短且整洁,因此此方法可导致CUDA代码具有令人满意的性能,并有望提高生产率。但是对于其他组合器,生成的代码的性能还不能令人满意。简要讨论了解决此问题的方法以及计划将Obsidian与另一种用于Haskell中的GPU编程的高级嵌入式语言集成的方法。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号