News & Events

  • Harlan: New programming language accelerates GPU computing

    Date: 09/13/2013

    It’s an interesting irony of computing that programs – and the programming languages in which they are written – are often much longer-lived than the computing platforms they run on. Computers are constantly evolving as hardware continues to advance, and one of the features of higher-level programming languages is to insulate programmers from those changes. There is a tension however. While programmers need to be able to express their programs independently of particular and ever-changing computers, programmers also want to take advantage themselves, of new features on new computing platforms.  Adding new capabilities to existing languages in order to keep up with hardware can result in unwieldy systems.

    [Depicted to the right is a GeForce 6800 Ultra 512MB NV48 ES GPU. Image courtesy]

    One important architectural development is the incorporation of graphics processing units (GPUs) into high-performance computing platforms.  GPUs will likely be an important technology in the move to exascale computing.


    Harlan, developed by Eric Holk, a computer science Ph.D. candidate at Indiana University, US, is a newly released high-level language available for general purpose GPU computing. “The programming models that we have been using are becoming increasingly harder to manage when you scale them up, so we need to be looking at new ways of programming machines.” Holk says.

    “One thing researchers who want to use GPUs struggle with, is how to write applications for machines with two different processors and multiple types of parallelism,” says Andrew Lumsdaine,director of the Center for Research in Extreme Scale Technologies (CREST), part of the Pervasive Technology Institute at Indiana University.

    “GPUs are highly parallel, but have a different kind of parallelism than multicore CPUs. We’re investigating productive mechanisms for programming machines overall and integrating these approaches into programming,” Lumsdaine says.

    Harlan makes it easy for programmers to point out where parallelism is available, what computation they may need, and what data they will likely work with. This gives the language runtime maximum flexibility in mapping programs to different devices.

    For the original article, please check this out.