hsail gate commands
Tom Rodriguez
tom.rodriguez at oracle.com
Wed Jan 15 14:15:05 PST 2014
dladdr can also be used to figure it out directly.
tom
On Jan 15, 2014, at 2:07 PM, Doug Simon <doug.simon at oracle.com> wrote:
>
> On Jan 15, 2014, at 10:46 PM, Deneau, Tom <tom.deneau at amd.com> wrote:
>
>> Doug --
>>
>> how does the JNI_OnLoad know what path it was loaded from?
>> or would the java side have to pass this information down?
>
> The Java side has to pass this down. One way to do it would be to define a static String field in some class in the Okra Java library and assign it the path before calling System.load(). Inside JNI_OnLoad, the JNI interface can be used to find the class and read the field.
>
> -Doug
>
>>> -----Original Message-----
>>> From: Doug Simon [mailto:doug.simon at oracle.com]
>>> Sent: Wednesday, January 15, 2014 3:11 PM
>>> To: Deneau, Tom
>>> Cc: graal-dev at openjdk.java.net
>>> Subject: Re: hsail gate commands
>>>
>>> Hi Tom,
>>>
>>> A quick glance through the HSAIL C++ layer seems to indicate that it
>>> should be able to lazily initialize the HSAIL library linkage (currently
>>> done in gnu::Hsail::probe_linkage()). This means it should be deferrable
>>> until after the Java part of the Okra library has had a chance to
>>> extract the native library file (and hsailasm executable) into the file
>>> system. Then you would call System.load() to load the library. There's
>>> still the problem of how to communicate the absolute path of the native
>>> library to the os::dll_load call. There may be a more elegant solution,
>>> but I'd suggest using the JNI_OnLoad[1] mechanism. Inside the JNI_OnLoad
>>> function in the Okra native library, you can set an environment variable
>>> (e.g., OKRA_DLL_PATH) which gnu::Hsail::probe_linkage can then use. Note
>>> that the environment variable has to be set this way as there's no way
>>> to set an environment variable from Java.
>>>
>>> By the time you finish all this hackery, you may start thinking that
>>> simply porting the HSAIL simulator/toolchain to Java might be easier ;-)
>>>
>>> [1]
>>> http://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/invocation.html#
>>> JNI_OnLoad
>>>
>>> On Jan 15, 2014, at 9:05 PM, Deneau, Tom <tom.deneau at amd.com> wrote:
>>>
>>>> Doug --
>>>>
>>>> One complication I saw here.
>>>> The native library file is used both from the java side (using
>>>> loadLibrary) and from the hotspot side (using os::dll_load followed by
>>> looking up the specific functions it needs).
>>>> And the hotspot attempt to load happens first (from gpu::init()).
>>>>
>>>> So anything the java side would have done with resources in the .jar
>>>> file and temp directories wouldn't have been done yet.
>>>>
>>>> -- Tom
>>>>
>>>>
>>>>> -----Original Message-----
>>>>> From: Doug Simon [mailto:doug.simon at oracle.com]
>>>>> Sent: Tuesday, January 14, 2014 3:27 AM
>>>>> To: Deneau, Tom
>>>>> Cc: graal-dev at openjdk.java.net
>>>>> Subject: Re: hsail gate commands
>>>>>
>>>>>
>>>>> On Jan 13, 2014, at 8:52 PM, Deneau, Tom <tom.deneau at amd.com> wrote:
>>>>>
>>>>>> Doug --
>>>>>>
>>>>>> Using the techniques in
>>>>>> http://frommyplayground.com/how-to-load-native-jni-library-from-jar/
>>>>>> that you sent, would it be acceptable to leave hsailasm as a
>>>>>> separate
>>>>> executable which gets unjarred into the system temporary directory
>>>>> and then executed from there using an absolute pathname?
>>>>>
>>>>> Sounds feasible and reasonable to me.
>>>>>
>>>>>>
>>>>>> -- Tom
>>>>>>
>>>>>>
>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Doug Simon [mailto:doug.simon at oracle.com]
>>>>>>> Sent: Sunday, January 12, 2014 2:29 PM
>>>>>>> To: Deneau, Tom
>>>>>>> Subject: Re: hsail gate commands
>>>>>>>
>>>>>>>
>>>>>>> On Jan 9, 2014, at 9:50 PM, Deneau, Tom <tom.deneau at amd.com> wrote:
>>>>>>>
>>>>>>>> Doug --
>>>>>>>>
>>>>>>>> We'll take a look at your suggestion.
>>>>>>>
>>>>>>> Great.
>>>>>>>
>>>>>>> BTW, you guys may want to bring
>>>>>>> https://wiki.openjdk.java.net/display/Sumatra/The+HSAIL+Simulator
>>>>>>> more up to date at some point. At least you can remove the "(webrev
>>>>>>> under review)" qualifications.
>>>>>>>
>>>>>>> -Doug
>>>>>>>
>>>>>>>>> -----Original Message-----
>>>>>>>>> From: Doug Simon [mailto:doug.simon at oracle.com]
>>>>>>>>> Sent: Thursday, January 09, 2014 1:38 PM
>>>>>>>>> To: Deneau, Tom
>>>>>>>>> Cc: graal-dev at openjdk.java.net
>>>>>>>>> Subject: Re: hsail gate commands
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Jan 9, 2014, at 6:51 PM, Tom Rodriguez
>>>>>>>>> <tom.rodriguez at oracle.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> It would still be great if there would be some way to
>>>>>>>>>>>>> incorporate
>>>>>>>>> the hsail simulator into the gate...
>>>>>>>>>>>>
>>>>>>>>>>>> A good start would be if you could provide us with a patch for
>>>>>>>>>>>> `mx',
>>>>>>>>> that adds a command which sets up the HSAIL simulator properly.
>>>>>>>>> Currently our gate is running on Linux, but this might change in
>>>>>>>>> the future, so keep in mind that this should potentially work on
>>>>>>>>> all platforms (Linux, MacOSX, Windows).
>>>>>>>>>>>>
>>>>>>>>>>>> Our gate server is basically executing `mx gate' to validate
>>>>>>>>> changes. That includes building, bootstrap tests, unittest, etc.
>>>>>>>>> If that command was successful on our gate server, the changes
>>>>>>>>> are accepted and pushed to the repository. Having the `mx gate'
>>>>>>>>> command, one can reproduce the gate process on his/her local
>>>>> machine.
>>>>>>>>> Therefore it would be important that one can easily and reliable
>>>>>>>>> set up the HSAIL environment if it is part of the gate process.
>>>>>>>>>>>
>>>>>>>>>>> Given the dependencies for building the simulator[1] and the
>>>>>>>>>>> fact it
>>>>>>>>> only currently runs on linux, I don't think it will be that easy
>>>>>>>>> to come up with an mx command.
>>>>>>>>>>
>>>>>>>>>> What precompiling an okra distribution for linux that mx can
>>>>>>> download?
>>>>>>>>>
>>>>>>>>> If Okra used a self contained JNI library, that might just work.
>>>>>>>>> However, the way it is deployed now involves having the hsailasm
>>>>>>>>> executable on your PATH. Also, LD_LIBRARY_PATH has to be setup to
>>>>>>>>> find the JNI library itself.
>>>>>>>>>
>>>>>>>>> @AMD guys: How hard would it be to make the Okra JNI be self
>>>>>>>>> contained library and include the hsailasm functionality? If
>>>>>>>>> that's possible, you could bundle the JNI library inside the Okra
>>>>>>>>> jar using a technique like
>>>>>>>>> http://frommyplayground.com/how-to-load-native-jni-library-from-j
>>>>>>>>> ar
>>>>>>>>> /
>>>>>>> to avoid having to set up PATH or LD_LIBRARY_PATH.
>>>>>>>>>
>>>>>>>>> -Doug
>>>>>>>>>
>>>>>>>>>>> [1]
>>>>>>>>>>> https://github.com/HSAFoundation/Okra-Interface-to-HSAIL-Simula
>>>>>>>>>>> to
>>>>>>>>>>> r#
>>>>>>>>>>> ok
>>>>>>>>>>> ra-interface-to-hsail-simulator
>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>>>> From: graal-dev-bounces at openjdk.java.net [mailto:graal-dev-
>>>>>>>>>>>>>> bounces at openjdk.java.net] On Behalf Of Deneau, Tom
>>>>>>>>>>>>>> Sent: Monday, December 16, 2013 11:24 AM
>>>>>>>>>>>>>> To: Doug Simon
>>>>>>>>>>>>>> Cc: graal-dev at openjdk.java.net
>>>>>>>>>>>>>> Subject: RE: hsail gate commands
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> OK, I see why there is no error when running mx --vm server
>>>>>>>>>>>>>> unittest hsail
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> At some point (I don't recall why, maybe at Oracle's
>>>>>>>>>>>>>> request??), we put in some code in KernelTester that if it
>>>>>>>>>>>>>> could not find the okra simulator files would just silently
>>>>>>>>>>>>>> not run the tests (which I guess counts as a pass).
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> No the hsail simulator is not a java app at all.
>>>>>>>>>>>>>> The page at
>>>>>>>>>>>>>> https://wiki.openjdk.java.net/display/Sumatra/The+HSAIL+Simu
>>>>>>>>>>>>>> la to r should describe how to build it and what environment
>>>>>>>>>>>>>> variables to set up to use it...
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> -- Tom
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>>>>> From: Doug Simon [mailto:doug.simon at oracle.com]
>>>>>>>>>>>>>>> Sent: Monday, December 16, 2013 11:02 AM
>>>>>>>>>>>>>>> To: Deneau, Tom
>>>>>>>>>>>>>>> Cc: graal-dev at openjdk.java.net
>>>>>>>>>>>>>>> Subject: Re: hsail gate commands
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Dec 16, 2013, at 5:48 PM, Deneau, Tom
>>>>>>>>>>>>>>> <tom.deneau at amd.com>
>>>>>>>>> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Doug --
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I see.
>>>>>>>>>>>>>>>> I don't understand why the tests would run without error
>>>>>>>>>>>>>>>> if the simulator and associated assembler is missing
>>> but...
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> What error are you seeing?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Is there a way we can get the HSAIL simulator into the
>>>>>>>>>>>>>>>> gate
>>>>>>>>>>>>>>> infrastructure?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Is it a pure Java app yet? That would certainly make it
>>>>>>> trivial.
>>>>>>>>>>>>>>> In any case, I'll defer to Bernhard or Gilles to answer
>>>>>>>>>>>>>>> this since they are the maintainers of this infrastructure.
>>>>>>>>>>>>>>> Can you please send instructions on how to
>>>>>>>>>>>>>>> install/use/configure the
>>>>>>>>> simulator.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> -Doug
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>>>>>>> From: Doug Simon [mailto:doug.simon at oracle.com]
>>>>>>>>>>>>>>>>> Sent: Monday, December 16, 2013 10:36 AM
>>>>>>>>>>>>>>>>> To: Deneau, Tom
>>>>>>>>>>>>>>>>> Cc: graal-dev at openjdk.java.net
>>>>>>>>>>>>>>>>> Subject: Re: hsail gate commands
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Dec 16, 2013, at 5:21 PM, Deneau, Tom
>>>>>>>>>>>>>>>>> <tom.deneau at amd.com>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Doug --
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I noticed in syncing with the trunk as of last Friday
>>>>>>>>>>>>>>>>>> that all of our
>>>>>>>>>>>>>>>>> HSAIL test cases broke. The cause was some imperfect
>>>>>>>>>>>>>>>>> code in our HSAILAssembler for compare instructions which
>>>>>>>>>>>>>>>>> when presented with an unordered compare could generate
>>>>>>>>>>>>>>>>> code that would not assemble, and was easy to fix.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> But I was wondering how this made it past the gate.
>>>>>>>>>>>>>>>>>> Can you describe what gate commands are used regarding
>>>>>>> hsail?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> We simply run 'mx gate' which will include running all
>>>>>>>>>>>>>>>>> the HSAIL unit tests.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On my Mac with the latest bits:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> $ mx --vm server unittest hsail executing junit tests
>>>>> now...
>>>>>>>>>>>>>>>>> (107 test classes) JUnit version 4.8
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>
>>> ........................................................................
>>>>>>>>>>>>>>>>> ...........I................I......
>>>>>>>>>>>>>>>>> Time: 5.525
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> OK (105 tests)
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Keep in mind I (and the gate infrastructure) don't have
>>>>>>>>>>>>>>>>> the HSAIL simulator.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> -Doug
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
>
More information about the graal-dev
mailing list