Figure 2 - uploaded by Bo Joel Svensson
Content may be subject to copyright.
Schematic diagram of the NVIDIA 8800 GPU

Schematic diagram of the NVIDIA 8800 GPU

Source publication
Article
Full-text available
Abstract This thesis describes the implementation of Obsidian, an embed- ded language for data-parallel programming. The programming style used in Obsidian borrows many,ideas from the hardware descrip- tion language Lava. In lava combinators are are used to combine circuits into larger circuits. Obsidian uses the idea of combinators from Lava, but...

Context in source publication

Context 1
... are up to 16 such "multiprocessors" within the single GPU. Figure 2 shows a schematic picture of the architecture. ...

Similar publications

Article
Full-text available
The prevalence of cheap and powerful consumer level graphics accelerated hardware introduces a significant growth of 3D applications. In this paper, we have proposed a GPU-accelerated blind and robust watermarking approach to the 3D polygon meshes on the basis of the geometry image transform and image watermarking, which performs watermark embeddin...
Article
Full-text available
We have developed CUDA-enabled version of a general purpose molecular dynamics simulation code for GPU. Imple-mentation details including parallelization scheme and performance optimization are described. Here we have focused on the non-bonded force calculation because it is most time consuming part in molecular dynamics simulation. Timing results...

Citations

... NESL is a portable nested dataparallel language of the early 90s which allowed high-level, concise descriptions of nested data-parallel programs. • Obsidian [42] is a data-parallel language embedded in Haskell which targets GPU programming. The current version is implemented for NVIDIA's CUDA. ...
Article
Parallel programming faces two major challenges: how to efficiently map computations to different parallel hardware architectures, and how to do it in a modular way, i.e., without rewriting the problem solving code. We propose to treat dependencies as first class entities in programs. Programming a highly parallel machine or chip can then be formulated as finding an efficient embedding of the computation’s data dependency into the underlying hardware’s communication layout. With the data dependency pattern of a computation extracted as an explicit entity in a program, one has a powerful tool to deal with parallelism.
... The previous version however, was very limited in what you could express. This older version is described in [25]. There is a clear opportunity to perform classic compiler optimisations on the IC formed by running an Obsidian program. ...
... Obsidian provides a good interface for experimenting with algorithms on GPUs. The earlier version described in [25] showed that it is possible to generate efficient CUDA code from the kind of high level descriptions we are interested in. For the kernel level, the work in progress described in this paper enhances the expressive power of Obsidian, extending the range of algorithms that can be described, as well as the degree of control exercised by the user. ...
Conference Paper
Full-text available
We present a domain specific language, embedded in Haskell, for general purpose parallel programming on GPUs. Our intention is to explore the use of connection patterns in parallel programming. We briefly present our earlier work on hardware generation, and outline the current state of GPU architectures and programming models. Finally, we present the current status of the Obsidian project, which aims to make GPU programming easier, without relinquishing detailed control of GPU resources. Both a programming example and some details of the implementation are presented. This is a report on work in progress.
Article
DSLs (domain-specific languages) make programs shorter and easier to write. They can be stand-alone - for example, LaTeX, Makefiles, and SQL - or they can be embedded in a host language. You might think that DSLs embedded in high-level languages would be abstract or mathematically oriented, far from the nitty-gritty of low-level programming. This is not the case. This article demonstrates how high-level EDSLs (embedded DSLs) really can ease low-level programming. There is no contradiction.