Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Je kunt ook een cookievrije versie van de website bezoeken met minder functionaliteit. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 47 reacties, 24.984 views •

Een Amerikaanse promovendus aan de Indiana University heeft de gpu-programmeertaal Harlan ontwikkeld. Hoewel Harlan code compileert naar OpenCL, zou de programmeertaal door meer abstracties eenvoudiger zijn en meer lijken op scripttalen als Ruby en Python.

Volgens Eric Holk, de developer van Harlan, was een van de uitgangspunten bij de ontwikkeling hoe de nieuwe taal er precies uit zou moeten zien om gpu's zo goed mogelijk te kunnen benutten. Daarmee zouden knelpunten in bestaande programmeertalen, die vooral zijn gericht voor het schrijven van code voor cpu's, bij het aansturen van grafische processors opgelost kunnen worden.

De nieuwe taal hanteert een syntax die is gebaseerd op Scheme, een dialect van de 'oer-programmeertaal' Lisp, al experimenteerde Holk ook met een syntax die lijkt op C. Harlan hanteert een hoge mate van abstractie en zou dan ook bij de hogere programmeertalen als Ruby en Python thuishoren. Uiteindelijk wordt de code gecompileerd naar OpenCL-code.

Volgens Holk kan Harlan goed gebruikt worden om het schrijven van complexe parallelle processen te vereenvoudigen. De programmeertaal zou dan ook goed kunnen dienen als een alternatief voor C-code op Cuda, het gpgpu-platform van Nvidia. De code van Harlan is beschikbaar op GitHub.

Nvidia NV10-gpu

Reacties (47)

Een voorbeeldje zou wel op zijn plaats zijn!
artikel niet goed gelezen?

De code van Harlan is beschikbaar op GitHub. ;)
Ik vind het behoorlijk ontoepasselijk om in het wild aan te nemen dat elke IT'er of bezoeker van tweakers bekent moet zijn met GitHub of dergelijke code opslagplaats (whatever). Peter vraagt of er een voorbeeld geplaatst kan worden, volkomen terecht.
Een gem bezoeker van tweakers hoeft ook niet github te kennen maar als je programmeert (waarom ben je anders interesseert in een voorbeeld) is het nu ook weer niet zo'n sprong om te bedenken dat bij de code van een compiler ook een voorbeeld van taal die hij slikt. Die retorische vraag is niet erg sjeik maar jouw een knee-jerk reactie ook niet, het mag allemaal wel wat vriendelijker. O+

..Wat schept overigens mijn verbazing: geen duidelijk linkje naar voorbeeld code maar via omweg kan je hier wel het een en ander zien.

Tja als je scheme kent zijn er volgens mij niet erg veel verrassingen. :>

//edit
Hier is overigens de website van de maker:
http://www.cs.indiana.edu/~eholk/

[Reactie gewijzigd door Mr_Light op 3 juli 2013 20:51]

Ik doelde het niet eens als dat ik zelf opgezocht had, het staat gewoon onder in het artikel. Ik weet alleen niet hoe je zelf een qoute maakt op tweakers :X
Ik weet alleen niet hoe je zelf een qoute maakt op tweakers :X
Je gebruikt gewoon de quote-tags, zie de N(ever) R(ead) A(nswers) aka de FAQ.

[Reactie gewijzigd door Freee!! op 4 juli 2013 12:12]

Ja, dat zal best wel. Maar een beetje journalist kan ook de moeite doen om een voorbeeld zelf te plaatsen. Tuurlijk kan ik het op github gaan opzoeken, maar goed, daarvoor zit ik niet op tweakers.
Dit is veel interessanter!
Google gebruiken is ook zo moeilijk he :+
http://www.i-programmer.i...ws/2013/July/A/harlan.jpg
->
http://www.i-programmer.i...ublic-for-gpu-coding.html
-> aankondiging: http://blog.theincredible...ng-the-release-of-harlan/ (met meer vb tekst)

[Reactie gewijzigd door masauri op 3 juli 2013 18:20]

Google gebruikt het eigen renderscript ipv OpenCL, naar eigen zeggen om de hogere abstracties van renderscript. Zou mooi zijn als het koppige Google het propriertery renderscript verlaat en zich op Harlan/OpenCL richt.

http://stackoverflow.com/...rscript-instead-of-opencl
Google gebruiken is ook zo moeilijk he
http://www.i-programmer.i...ws/2013/July/A/harlan.jpg
Dat lijkt inderdaad verdacht veel op Lisp
Google gebruiken is ook zo moeilijk he
Als je zo begint, kan tweakers net zo goed alleen de kop van het artikel plaatsen en daaronder "details: zie google".
Ja, precies, gewoon Google. Waarom uberhaubt nog nieuwsrapportage? Je kan toch gewoon de nieuwste dingen zelf opzoeken?

Dat het gebrekt aan ook maar enige inhoudelijke rapportage is wel degelijk een typisch ding voor slechte rapportage. Nieuws meer dan artikelen zegmaar. Heeft bijna volledige overhand bij Tweakers. Alleen als er berijkbare bedrijven bij gemoeit zijn hebben ze nog eigen waarde tegenwoordig.
Een voorbeeldje zou wel op zijn plaats zijn!
U vraagt, wij zoeken een Harlan voorbeeldje.
Een voorbeeldje zou wel op zijn plaats zijn!
Hier dan de hello world...
(module
(define (main)
(print "Hello, World!")
(return 0)))
in de test dir op Gitlab zijn er veel voorbeelden ( https://github.com/eholk/harlan/blob/master/test/ )
klik op voorbeeld.kfc...

hij zal dan dus wel van kip houden :P (kfc haha ja kweet t flauw...)
wel jammer dat er niet een C compiler is, dan zou het porten van bestaande code vereenvoudigd kunnen worden...
Dit werkt ook op AMD Gpu's

Getting Started

Harlan is known to build and run on the following operating systems.
•Mac OS X 10.6 (Snow Leopard)
•Mac OS X 10.7 (Lion)
•Mac OS X 10.8 (Mountain Lion)
•Various flavors of Linux

Others will probably work as well.

Harlan requires an OpenCL implementation as well as Petite Chez Scheme. Below are several OpenCL implementations that should work.
•Intel OpenCL SDK
•NVIDIA CUDA Toolkit
•AMD Accelerated Parallel Processing (APP) SDK

Petite Cheze Scheme can be downloaded from http://www.scheme.com/download.

Once all the prerequisites are installed, you can compile and run the test suite as follows.


Nice, heb hier meer dan 5Tflop aan Gpu's in mijn system zitten
hopelijk gaan veel software bedrijven, van Cuda af, en gaan ze iets onderstaeunen wat bijde ( Amd en Nvidia )
ondersteunen
Eerder op *nix (OS X en Linux)
Naja, er is altijd een overweging qua productiviteit / prestatie. Maar dat maakt dit nieuws wat incompleet, aangezien er geen benchmarks zijn, waar je kan zien hoe de performance is van de getransformeerde OpenCL code vs native OpenCL code. Ook in OpenCL zijn er nog hardware specifieke optimalisaties mogelijk etc.
Uit zijn paper voortkomend met zijn werk met rust:
We wrote several benchmarks both in Rust and OpenCL in
order to show that the benefits of programming kernels in Rust
do not come at a prohibitive performance penalty. We tested
vector addition, matrix multiplication, Cholesky factorization
and Jacobi iteration. For each benchmark, we wrote a version
purely in Rust, a version that uses the Rust OpenCL bindings
to call a kernel written in OpenCL C, and a version that uses a
C program as the host for calling OpenCL kernels
These results show that our strategy is capable of generating
high performance GPU code. Combined with Rust’s zero-cost
abstraction philosophy this provides a compelling environment
for programming GPUs.
Als we dat combineren met het artikel waar het nieuws naar verwijst:
“Harlan could potentially generate better GPU code, although the code that actually runs may not have as much resemblance to what the programmer wrote,”
Das natuurlijk wij van wc-eend.. maar ja de enige 'zinnige' benchmarks zijn die die je zelf draaid ;)

[Reactie gewijzigd door Mr_Light op 3 juli 2013 21:20]

AMD was toch juist na IBM de tweede die volledige openCL ondersteund, kan berichten nog goed herinneren. en vorig jaar berichten dat het AMD was die als eerste volledige werkende implantatie heeft van openCL 1.2, en nog steeds aanvoerder was van opencl implantatie lijst. ;)

http://www.techpowerup.co...-opencl-1-2-solution.html

Weet niet of er iets is veranderd afgelopen jaar, maar AMD was koploper in openCL implantatie.
Het is inderdaad wel abstractielaag op abstractielaag, maar goed dat heeft het succes van een technologie nooit in de weg gestaan (zie de tweakers.net website waar je dit schrijft, JavaScript code in een browser framework, weer bovenop een OS)
The hate... Take a chillpill...
Jij hebt overduidelijk nog nooit bitcoins proberen minen met een nvidia, en die snelheid vergeleken met een AMD gpu.
Lijkt een beetje op Compute Shader op het eerste oog, maar helaas werkt dat alleen op DirectX11, wat dan weer niet werkt op alle operating systems.

[Reactie gewijzigd door Wolfos op 3 juli 2013 18:36]

Waarom zouden bestaande talen niet aangepast kunnen worden met nieuwe functies, zodat ze hetzelfde bereiken, welke santax er gebruikt word maakt toch niet zoveel uit, gaat toch om de functie die ze ermee kunnen maken.

Je kan toch de c syntax gebruiken om functie te maken die gewoon hetzelfde doet als de nieuwe taal. Nieuwe taal is niks meer dan nieuwe syntax, op de achtergrond zullen z toch beide naar instructie vertaal moeten worden.
Omdat de bestaande talen voor GPGPU alleen deze zijn:

CUDA - Proprietary van NVidia
Compute Shader - Proprietary van Microsoft
OpenCL - Alleen specificatie, geregeld door Kronos

Niet iets dat iedereen kan aanpassen dus.

[Reactie gewijzigd door Wolfos op 3 juli 2013 18:56]

Ja je hebt het over C talen wat eigenlijk nu de bulk is van wat nu gangbaar is.

C like. HSML Cg cuda OpenCL

De kern van meer waarde is juist dat men high level programmertaal gebruikt. En dat heeft meer met productiviteit en toegankelijkheid van gpgpu programeren te maken. En leesbaarheid dus veel begrijpelijker taal voor mensen.

Low naar highlevel.

Machinecode -> Asambler -> C like -> C++ -> ..... -> script taal.

Dit zijn de gardaties van wat een proscesor leest tot wat gewoon leesbaar syntax voor mensen is.

MS heeft bijvoorbeeld C++ Amp. Zodat gpgpu redelijk toegankelijker is met standaard C++ vanuit de C++ compiler.
En leesbaarheid dus veel begrijpelijker taal voor mensen.
Juist Lisp vind ik behoorlijk slecht qua leesbaarheid
Wat zou de toegevoegde waarde van de c-syntax zijn dan?

Ik bedoel het basisconcept is simpelweg anders, dus dan kan je wel alles in c-syntax willen proppen maar een groot gedeelte gaat waarschijnlijk niet passen en een groot gedeelte gaat niet aanwezig zijn.
Wat is de toegevoegde waarde van deze nieuwe syntax dan? net zo weinig als de c-syntax.. (niet dat ik de c-syntax fijn vindt ofzo)..
Als ik het goed begrijp doet Harlan voor OpenCL hetzelfde wat CoffeeScript/TypeScript doen voor JavaScript: sneller/makkelijker programmeren maar uiteindelijk code in de onderliggende taal genereren.
Je hebt natuurlijk wel gelijk dat Gomez12 zijn argument even hard tegen de nu gebruikte syntax spreekt, maar...
Wat is de toegevoegde waarde van deze nieuwe syntax dan?
Nieuwe syntax??? Harlan gebruikt LISP-syntax, en LISP is toch meer dan 10 jaar ouder dan BCPL, wat een zeer vroege voorloper van C is.

Die klassieke syntax gaat er trouwens voor zorgen dat deze taal geen succes wordt, hoewel het idee misschien erg goed is. LISP wordt zo ongeveer alleen nog gebruikt door Emacs-goeroes en programmeertaal-onderzoekers die nieuwe concepten willen uitproberen zonder veel tijd aan een fatsoenlijke parser te besteden. Die nieuwe concepten bereiken soms wel de markt, de LISP-syntax gelukkig niet.
Wat noem je een bestaande taal? Harlan is een dialect van Scheme, een bestaande taal.
C leent zich minder voor GPU programming omdat C in essentie een lineaire taal is; voortgekomen uit het procedureel programeren.
Scheme daarentegen is een functionele taal, wat het uitermate geschikt maakt om de kracht van de paralelle berekeningen uit te voeren waar een GPU zo krachtig in is.
Voor degene die Scheme niet kennen; Scheme is de meest dominante voorvader van Javascript. Alleen heeft de maken van Javascript (onder druk van het management) de Java (en C) stijl van curly braces overgenomen.
Great, Yet Another Pointless Programming Language... Ik wordt er ondertussen een beetje moe van, iedereen wil graag zijn eigen scheet promoten..
Ik weet niet of Harlan veel toevoeging bied maar het is gewoon gebaseerd op C taal. Ik programmeer in Cuda opzicht best te doen, het is gewoon C taal. Mensen die in C kunnen programmeren en het concept pointer beheeresen komen met Cuda wel uit.

Het is eigenlijk best interrestan dat er mensen nog mee bezig zijn en er tijd insteken. Hopelijk gaat de populariteit van GPU programmeren omhoog . :)
Dat gaat het zeker, vooral omdat intel de GPU tegenwoordig meelevert in Haswell.
"Compiler van een compiler", lijkt me niet fijn. Het zal altijd afhangkelijk en achter openCL aan lopen. OpenCL is opzichzelf ook prima programmeerbaar. (Personelijk vind ik CUDA veel fijner).

Op dit item kan niet meer gereageerd worden.



Apple iPhone 6Samsung Galaxy Note 4Apple iPad Air 2FIFA 15Motorola Nexus 6Call of Duty: Advanced WarfareApple WatchWorld of Warcraft: Warlords of Draenor, PC (Windows)Microsoft Xbox One 500GBWebsites en communities

© 1998 - 2014 Tweakers.net B.V. Tweakers is onderdeel van De Persgroep en partner van Computable, Autotrack en Carsom.nl Hosting door True