Graal and Clojure

Thomas Wuerthinger thomas.wuerthinger at oracle.com
Wed Apr 16 11:13:49 UTC 2014


Cool! It is very exciting to see so much progress with Clojure running on the GPU via Graal. - thomas

On 07 Apr 2014, at 08:20, Jules Gosnell <jules_gosnell at yahoo.com> wrote:

> Good news - I reapplied the -XX:-UseHSAILDeoptimization flag (last time I tried it the code had not yet made it into my jdk8/graal build) and a lot of the instability mentioned in my last mail disappeared - particularly in the simulator. Many more tests also passed :-)
> 
> http://ouroboros.dyndns-free.com/ci/job/clumatra-hardware-acceleration/
> http://ouroboros.dyndns-free.com/ci/view/clumatra/job/clumatra-simulated-acceleration/
> 
> 
> Jules
> 
> On 06/04/14 15:22, Jules Gosnell wrote:
>> So, Guys,
>> 
>> Here is the promised update on Clumatra - an effort to get Clojure up
>> and running on top of Graal/Okra/HSA.
>> 
>> - I now have a working Ubuntu/AMD HSA box.
>> 
>> - I have a Jenkins nightly build of JDK8 / Graal :
>> 
>> http://ouroboros.dyndns-free.com/ci/view/clumatra/job/graal/
>> 
>> - if useful, you can download the latest linux/64 tgz here (it is 300mb
>> - I'm going to look at shrinking it:
>> 
>> http://ouroboros.dyndns-free.com/clumatra/jdk1.8.0-graal.tgz
>> 
>> - I have builds of Clumatra without, with simulated and with hardware
>> based HSA :
>> 
>> http://ouroboros.dyndns-free.com/ci/view/clumatra/
>> 
>> - The clumatra testsuite is growing - results have been a bit unstable
>> recently as I learnt which tests completely take out or hang the
>> jdk8/graal jvm and which can be trusted to succeed / fail in a well
>> behaved fashion:
>> 
>> http://ouroboros.dyndns-free.com/ci/view/clumatra/job/clumatra-hardware-acceleration/
>> 
>> 
>> I am working on a reflection/macro based solution, which will
>> automagically create tests for all methods of all classes that I want
>> tests for. When I bring this online in a couple of weeks the number of
>> tests should jump dramatically.
>> 
>> Please feel free to inspect test results etc on my Jenkins and let me
>> know whether they are helpful and whether they can be made more useful
>> in any way. currently some of them seem to indicate problems in the okra
>> backend. This is when graal seems to run happily but I get back the
>> wrong result from my test:
>> 
>> e.g.
>> 
>> http://ouroboros.dyndns-free.com/ci/view/clumatra/job/clumatra-hardware-acceleration/83/testReport/clumatra/core-test/long_unchecked_inc_test/
>> 
>> 
>> I run the test via graal/okra twice and once in pure clojure - so you
>> see three results. The last one is the expected one, the first two the
>> ones returned from the GPU.
>> 
>> Other tests let me know that graal is not yet implementing various
>> features of jvm bytecode - e.g.
>> 
>> http://ouroboros.dyndns-free.com/ci/view/clumatra/job/clumatra-hardware-acceleration/83/testReport/clumatra/core-test/long_my_static_inc_test/
>> 
>> 
>> Unfortunately the test report does not seem to be capturing the HSAIL
>> logging that you can see in the console output... My guess is that it is
>> captured by redirecting clojure's usual output stream, but this is not
>> the same one as being used by Graal...
>> 
>> http://ouroboros.dyndns-free.com/ci/view/clumatra/job/clumatra-hardware-acceleration/83/console
>> 
>> 
>> 
>> That's enough for now. I'll post with more progress as and when.
>> 
>> 
>> 
>> Jules
>> 
>> 
>> 
>> On 31/03/14 23:40, Caspole, Eric wrote:
>>> Hi Jules,
>>> I updated everything and got Clumatra running on the real hardware today.
>>> 
>>> In project.clj, I used this:
>>> 
>>>   :jvm-opts ["-server" "-ea" "-esa" "-Xms1g" "-Xmx1g"
>>>              "-verbosegc" "-G:Log=CodeGen"
>>>              "-XX:+GPUOffload" "-XX:+TraceGPUInteraction"]
>>> 
>>> Then make sure your /path/to/okra/dist/bin is in the PATH and
>>> LD_LIBRARY_PATH.
>>> 
>>> When it is using the simulator, you will see this:
>>> [HSAIL] using
>>> _OKRA_SIM_LIB_PATH_=/tmp/okraresource.dir_2595501614013009358/libokra_x86_64.so
>>> 
>>> 
>>> With hardware or external okra you will see this:
>>> 
>>> [HSAIL] library is libokra_x86_64.so
>>> 
>>> Regards,
>>> Eric
>>> 
>>> 
>>> ________________________________________
>>> From: Jules Gosnell [jules_gosnell at yahoo.com]
>>> Sent: Thursday, March 20, 2014 5:27 PM
>>> To: Caspole, Eric; graal-dev at openjdk.java.net;
>>> sumatra-dev at openjdk.java.net
>>> Subject: Re: Graal and Clojure
>>> 
>>> Eric,
>>> 
>>> I just checked support to Clumatra for running individual unit tests
>>> from the CLI - should be enough to get you set up with your debugger.
>>> 
>>> All details at the bottom of the README.
>>> 
>>> https://github.com/JulesGosnell/clumatra
>>> 
>>> I'm afraid you will need to install maven if you don't already have it -
>>> for some reason lein does not seem to have a test-jar target.
>>> 
>>> It is still a little rough around the edges, but better than nothing :-)
>>> 
>>> I also just bought my HSA h/w - should be up and running next week
>>> sometime. Did you figure out how to enable native-mode Okra ?
>>> 
>>> catch you later,
>>> 
>>> 
>>> Jules
>>> 
>>> 
>>> 
>>> On 17/03/14 22:20, Eric Caspole wrote:
>>>> Hi everybody,
>>>> I was setting up a new HSA system today and I installed Clumatra and got
>>>> it working under the simulator. I have a real HSA system not too
>>>> different from this:
>>>> 
>>>> http://code.google.com/p/aparapi/wiki/SettingUpLinuxHSAMachineForAparapi
>>>> 
>>>> In the clojure/lein/maven based system there is so much harness I can't
>>>> immediately see how to switch in the real hardware version of Okra
>>>> instead of the simulator Okra that gets installed into maven and
>>>> exploded in /tmp when the tests run.
>>>> 
>>>> Jules, could you show how to bypass the harness etc to switch the Okra?
>>>> Can I just run 1 test with a simple java command line? This makes it a
>>>> lot easier to use a debugger which I will definitely want to do.
>>>> 
>>>> Otherwise this is a cool project and we already found 1 or 2 issues we
>>>> can fix in HSAIL Graal related to your clojure tests.
>>>> Regards,
>>>> Eric
>>>> 
>>>> 
>>>> 
>>>> On 03/17/2014 06:43 AM, Doug Simon wrote:
>>>>> Hi Julian,
>>>>> 
>>>>> In terms of what to test, I’ll leave it up to the Sumatra developers
>>>>> at AMD and Oracle to comment on what may be interesting.
>>>>> 
>>>>> As far as I know, no one in the Graal team is that familiar with
>>>>> Clojure. This actually makes the value of having Clojure tests
>>>>> integrated into our gate system somewhat problematic -
>>>>> debugging/fixing failures may be difficult. I’d suggest you report
>>>>> failures your discover on the sumatra-dev and graal-dev lists and we
>>>>> can resolve them that way for now.
>>>>> 
>>>>> In addition, for Graal we’re always interested in benchmark suites for
>>>>> JVM hosted languages. Can you recommend any well known and trusted
>>>>> Clojure benchmarks we should consider?
>>>>> 
>>>>> -Doug
>>>>> 
>>>>> On Mar 17, 2014, at 12:35 AM, Jules Gosnell <jules_gosnell at yahoo.com>
>>>>> wrote:
>>>>> 
>>>>>> Doug,
>>>>>> 
>>>>>> Sorry it has taken me a while to get back - I've been busy playing
>>>>>> with code.
>>>>>> 
>>>>>> I currently have a small clojure testsuite up and running. I plan to
>>>>>> broaden this and then think about providing it in a junit-compatible
>>>>>> way to your project.
>>>>>> 
>>>>>> I still haven't made up my mind exactly what I should be testing. It
>>>>>> seems unnecessary to duplicate all your tests in Clojure, since you
>>>>>> are already guarding against regression in these areas - I think I
>>>>>> will start out with a fairly general set of tests as I probe for
>>>>>> particular problem areas for Clojure, into which I may dive for more
>>>>>> detail - time will tell... if you have any ideas, please let me know.
>>>>>> 
>>>>>> I've checked my stuff in at github, if anyone is interested - here is
>>>>>> the project:
>>>>>> 
>>>>>> https://github.com/JulesGosnell/clumatra
>>>>>> 
>>>>>> here is some clojure that I reverse engineered from GraalKernelTester:
>>>>>> 
>>>>>> https://github.com/JulesGosnell/clumatra/blob/master/src/clumatra/core.clj
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> and here are the first successful tests:
>>>>>> 
>>>>>> https://github.com/JulesGosnell/clumatra/blob/master/test/clumatra/core_test.clj
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> not very pretty yet - I am still feeling my way.
>>>>>> 
>>>>>> cheers
>>>>>> 
>>>>>> 
>>>>>> Jules
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On 06/03/14 10:24, Doug Simon wrote:
>>>>>>> Hi Julian,
>>>>>>> 
>>>>>>> This looks very interesting and will be an good alternative testing
>>>>>>> vector for the Sumatra work as it matures. If Clojure tests can
>>>>>>> somehow be made to run from Junit, then I’m sure we can try
>>>>>>> integrating it into our testing.
>>>>>>> 
>>>>>>> -Doug
>>>>>>> 
>>>>>>> On Mar 6, 2014, at 12:56 AM, Julian Gosnell
>>>>>>> <jules_gosnell at yahoo.com> wrote:
>>>>>>> 
>>>>>>>> Guys,
>>>>>>>> 
>>>>>>>> I just built the Java8 / Graal / Okra stack and managed to run some
>>>>>>>> very simple Clojure copying the contents of one int array into
>>>>>>>> another one on Okra.
>>>>>>>> 
>>>>>>>> https://groups.google.com/forum/#!topic/clojure/JpjK__NTR5Y
>>>>>>>> 
>>>>>>>> 
>>>>>>>> I find the ramifications of this very exciting :-)
>>>>>>>> 
>>>>>>>> I understand that fn-ality is limited at the moment - but I am keen
>>>>>>>> to keep testing and to help ensure early visibility of Clojure
>>>>>>>> related issues to both communities - perhaps even the submission of
>>>>>>>> a Clojure testsuite if Graal developers thought that useful.
>>>>>>>> 
>>>>>>>> I'd be very interested in your thoughts on Graal / Clojure.
>>>>>>>> 
>>>>>>>> regards,
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Jules
>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>> 
>>>> 
>>> 
>>> 
>>> 
>>> 
>> 
> 



More information about the graal-dev mailing list