hsail gate commands -- webrev
Deneau, Tom
tom.deneau at amd.com
Thu Jan 23 15:21:43 PST 2014
OK, there is a version 3 up now at
http://cr.openjdk.java.net/~tdeneau/graal-webrevs/webrev-lazy-native-hsail-library-open-v3/webrev
along with newer associated .jar files which now pass when using verbose:jni
-- Tom
> -----Original Message-----
> From: Doug Simon [mailto:doug.simon at oracle.com]
> Sent: Thursday, January 23, 2014 3:41 PM
> To: Deneau, Tom
> Cc: graal-dev at openjdk.java.net
> Subject: Re: hsail gate commands -- webrev
>
>
> On Jan 23, 2014, at 10:36 PM, Deneau, Tom <tom.deneau at amd.com> wrote:
>
> > Doug --
> >
> > I had just put everything in one source jar
>
> Ok, then lines 34 and 35 need s/@OKRA@/@OKRAWITHSIM@/. However, it would
> be more uniform for each jar to have its own source jar.
>
> -Doug
>
> >> -----Original Message-----
> >> From: Doug Simon [mailto:doug.simon at oracle.com]
> >> Sent: Thursday, January 23, 2014 3:17 PM
> >> To: Deneau, Tom
> >> Cc: Gilles Duboscq; graal-dev at openjdk.java.net
> >> Subject: Re: hsail gate commands -- webrev
> >>
> >> Also:
> >>
> >> mx/projects:
> >>
> >> 27 library at OKRA@path=lib/okra-1.5.jar
> >> 28 library at OKRA@urls=http://cr.openjdk.java.net/~tdeneau/okra-
> 1.5.jar
> >> 29 library at OKRA@sourcePath=lib/okra-1.5-src.jar
> >> 30 library at OKRA@sourceUrls=http://cr.openjdk.java.net/~tdeneau/okra-
> >> 1.5-src.jar
> >> 31
> >> 32 library at OKRAWITHSIM@path=lib/okra-1.5-with-sim.jar
> >> 33
> library at OKRAWITHSIM@urls=http://cr.openjdk.java.net/~tdeneau/okra-
> >> 1.5-with-sim.jar
> >> 34 library at OKRA@sourcePath=lib/okra-1.5-src.jar
> >> 35 library at OKRA@sourceUrls=http://cr.openjdk.java.net/~tdeneau/okra-
> >> 1.5-src.jar
> >>
> >> Lines 34 and 35 are identical to lines 29 and 30 which I'm sure is
> not
> >> what is intended. It would be nice to have the source for okra-1.5-
> with-
> >> sim.jar as well.
> >>
> >> On Jan 23, 2014, at 10:13 PM, Deneau, Tom <tom.deneau at amd.com> wrote:
> >>
> >>> Yes, that makes sense, I will send the next revision.
> >>>
> >>>
> >>>
> >>>> -----Original Message-----
> >>>> From: Doug Simon [mailto:doug.simon at oracle.com]
> >>>> Sent: Thursday, January 23, 2014 2:50 PM
> >>>> To: Gilles Duboscq
> >>>> Cc: Deneau, Tom; graal-dev at openjdk.java.net
> >>>> Subject: Re: hsail gate commands -- webrev
> >>>>
> >>>> We should introduce a LibraryLocator interface in OkraContext:
> >>>>
> >>>> interface LibraryLocator {
> >>>> String getPath();
> >>>> }
> >>>>
> >>>> and have OkraSimLoader implement that interface. Then OkraSimLoader
> >>>> does the unjarring in its constructor and is used in
> >>>> OkraContext.loadOkraNativeLibrary() as follows:
> >>>>
> >>>> ...
> >>>> if (isNativeLibraryLoaded) return;
> >>>> String libraryPath = null;
> >>>> try {
> >>>> Class c = Class.forName("com.amd.okra.OkraSimLoader", true,
> >>>> ClassLoader.getSystemClassLoader())
> >>>> libraryPath = ((LibraryLocator) c.newInstance()).getPath();
> >>>> System.load(okraLibraryFullName);
> >>>> isNativeLibraryLoaded = true;
> >>>> return;
> >>>> } catch (InstantiationException | IllegalAccessException |
> >>>> UnsatisfiedLinkError | ClassNotFoundException e) {
> >>>> // fall through to other mechanisms for loading library
> >>>> }
> >>>>
> >>>> -Doug
> >>>>
> >>>> On Jan 23, 2014, at 8:13 PM, Gilles Duboscq <duboscq at ssw.jku.at>
> >> wrote:
> >>>>
> >>>>> Tom,
> >>>>>
> >>>>> This last version doesn't work for me when running unit tests:
> >>>>> The content of okra-1.5.jar is being copied inside graal.jar which
> >>>>> means that OkraContext is on the boot classpath but
> >>>>> okra-1.5-with-sim.jar (and so OkraSimLoader) is only on the
> >> classpath.
> >>>>> This means that when hotspot tries to link the native methods in
> >>>>> OkraContext it looks inside the libraries loaded for the system
> >>>>> class loader while OkraSimLoader registered its library with the
> >>>>> application's classloader.
> >>>>>
> >>>>> We could append okra-1.5-with-sim.jar to the bootclasspath but i'm
> >>>>> not so sure about mx support for this. Doug, what do you think?
> >>>>>
> >>>>> -Gilles
> >>>>>
> >>>>> On Thu, Jan 23, 2014 at 1:02 AM, Tom Deneau <tom.deneau at amd.com>
> >>>> wrote:
> >>>>>> Doug --
> >>>>>>
> >>>>>> OK, there is now a v2 webrev supporting the changes we talked
> about
> >>>>>> http://cr.openjdk.java.net/~tdeneau/graal-webrevs/webrev-lazy-
> nativ
> >>>>>> e- hsail-library-open-v2/webrev/ (ignore the
> HSAILCompilationResult
> >>>>>> being listed, a webrev quirk)
> >>>>>>
> >>>>>> and 3 new .jar files with the okra side changes...
> >>>>>>
> >>>>>> Now only the regular okra class files go into graal.jar.
> >>>>>> The special functionality is in a separate OkraSimLoader class
> and
> >>>>>> that class and the resources appear in the okra-1.5.-with-sim.jar
> >>>>>>
> >>>>>> And there is a separate jar file for okra sources.
> >>>>>>
> >>>>>> -- Tom
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> -----Original Message-----
> >>>>>>> From: Deneau, Tom
> >>>>>>> Sent: Wednesday, January 22, 2014 1:19 PM
> >>>>>>> To: 'Doug Simon'
> >>>>>>> Cc: Tom Rodriguez; graal-dev at openjdk.java.net
> >>>>>>> Subject: RE: hsail gate commands -- webrev
> >>>>>>>
> >>>>>>> Doug --
> >>>>>>>
> >>>>>>> There is a newer .jar file (same name) up on cr.openjdk.java.net
> >>>>>>> now that includes the changes you asked for
> >>>>>>> * includes the sources
> >>>>>>> * deletes the temporary .hsail and .o files
> >>>>>>>
> >>>>>>> Can you make the okraLibExists() change which you mention below
> >>>>>>> without a new webrev?
> >>>>>>>
> >>>>>>> -- Tom
> >>>>>>>
> >>>>>>>
> >>>>>>>> -----Original Message-----
> >>>>>>>> From: Doug Simon [mailto:doug.simon at oracle.com]
> >>>>>>>> Sent: Wednesday, January 22, 2014 5:58 AM
> >>>>>>>> To: Deneau, Tom
> >>>>>>>> Cc: Tom Rodriguez; graal-dev at openjdk.java.net
> >>>>>>>> Subject: Re: hsail gate commands -- webrev
> >>>>>>>>
> >>>>>>>> This all seems to work - nice job. Just a few requests/comments
> >>>>>>>> before I integrate.
> >>>>>>>>
> >>>>>>>> HSAILCompilationResult.java:
> >>>>>>>>
> >>>>>>>> 60 // this test of okraLib existence is to allow the
> loading
> >>>> of
> >>>>>>>> the
> >>>>>>>> 61 // native library from the jar file if it is not already
> >> on
> >>>>>>> the
> >>>>>>>> path
> >>>>>>>> 62 private static boolean okraLibExists =
> >>>>>>>> OkraUtil.okraLibExists();
> >>>>>>>>
> >>>>>>>> The above assignment produces a "value of field is not used"
> >>>>>>>> warning in Eclipse. It seems that all you want here is the
> >>>>>>>> side-effect of the call to OkraUtil.okraLibExists(). If that's
> >>>>>>>> the case, just put the call in a static initializer block and
> >>>>>>>> delete
> >>>> the field:
> >>>>>>>>
> >>>>>>>> static {
> >>>>>>>> OkraUtil.okraLibExists();
> >>>>>>>> }
> >>>>>>>>
> >>>>>>>> However, I tried just commenting out the line altogether and
> the
> >>>>>>>> unit tests seemed to still run fine. Which begs the question,
> do
> >>>>>>>> you really need this here?
> >>>>>>>>
> >>>>>>>> Can you also please update (and re-upload) okra-with-sim.jar to
> >>>>>>>> include the Java sources (just like okra-1.2.jar had). This
> helps
> >>>>>>>> with debugging the code in Eclipse.
> >>>>>>>>
> >>>>>>>> -Doug
> >>>>>>>>
> >>>>>>>> On Jan 21, 2014, at 6:07 PM, Deneau, Tom <tom.deneau at amd.com>
> >>>> wrote:
> >>>>>>>>
> >>>>>>>>> All --
> >>>>>>>>>
> >>>>>>>>> I have uploaded a webrev to allow use of the hsail simulator
> >>>>>>>>> without
> >>>>>>>> setting up any PATH or LD_LIBRARY_PATH variables to make it
> >>>>>>>> easier to run the hsail junit tests as part of the graal gate:
> >>>>>>>>>
> >>>>>>>>> http://cr.openjdk.java.net/~tdeneau/graal-webrevs/webrev-lazy-
> na
> >>>>>>>>> ti
> >>>>>>>>> ve
> >>>>>>>>> -h
> >>>>>>>>> sail-library-open/webrev/
> >>>>>>>>>
> >>>>>>>>> * The main change was in gpu_hsail.cpp to lazily load the
> native
> >>>>>>>> library,
> >>>>>>>>> (waiting until it is really needed). It always tries the
> >>>>>>>>> original
> >>>>>>>> LD_LIBRARY_PATH
> >>>>>>>>> as a first try, and only if that doesn't work, it will try
> >>>>>>>>> the environment variable _OKRA_SIM_LIB_PATH_ (which will have
> >>>>>>>>> been
> >>>>>>>> set up by the
> >>>>>>>>> java side which will have copied the native library and
> >>>>>>>>> hsailasm
> >>>>>>>> to a temporary
> >>>>>>>>> directory if necessary)
> >>>>>>>>>
> >>>>>>>>> * HSAILCompilationResult, added a call the the JNI side to get
> >>>>>>>>> it to
> >>>>>>>> load the native library
> >>>>>>>>> from the jar file if it needs to.
> >>>>>>>>>
> >>>>>>>>> * mx/projects changed to use the newly built okra-with-sim.jar
> >>>>>>>>> which
> >>>>>>>> has been uploaded to
> >>>>>>>>> my cr.openjdk.java.net directory (the old okra.jar came from
> >>>>>>>>> there
> >>>>>>>> as well).
> >>>>>>>>> This jar file contains the prebuilt binaries but can also be
> >>>>>>>>> built
> >>>>>>>> from sources
> >>>>>>>>> following the instructions at
> >>>>>>>>>
> >>>>>>>>> https://github.com/HSAFoundation/Okra-Interface-to-HSAIL-
> Simulat
> >>>>>>>>> or
> >>>>>>>>>
> >>>>>>>>> To test:
> >>>>>>>>> * make sure not only that the okra/dist/bin directory
> >>>>>>>>> is removed from PATH and LD_LIBRARY_PATH but also that it is
> >>>>>>>>> not
> >>>>>>>> one of the directories
> >>>>>>>>> listed under "ldconfig -p"
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> The changes to the okra.jar file and the native library are
> not
> >>>>>>>>> part of this webrev, but if interested, these changes can be
> >>>>>>>>> viewed as a pull request on the github directory
> >>>>>>>>> https://github.com/HSAFoundation/Okra-Interface-to-HSAIL-
> Simulat
> >>>>>>>>> or
> >>>>>>>>> /p
> >>>>>>>>> ul
> >>>>>>>>> l/11
> >>>>>>>>>
> >>>>>>>>> * Again, the native library loading as performed by the
> >>>>>>>>> OkraContext
> >>>>>>>> class
> >>>>>>>>> first tries the original PATH and LD_LIBRARY_PATH strategy
> >>>>>>>>> before
> >>>>>>>> reverting
> >>>>>>>>> to using a temporary directory. It looks in the jar file
> that
> >>>>>>>> OkraContext.class
> >>>>>>>>> was loaded from and copies anything in resources/okra to a
> >>>>>>>> temporary directory.
> >>>>>>>>> Then it tries to load the native library from there.
> >>>>>>>>>
> >>>>>>>>> * the native library itself now contains an on_load function
> >>>>>>>>> with attribute((constructor)) which gets executed as the .so
> >>>>>>>>> file
> >>>>>>>> gets loaded.
> >>>>>>>>> It does the following:
> >>>>>>>>> * finds out where it was loaded from (using dladdr)
> >>>>>>>>> * appends that directory to PATH and LD_LIBRARY_PATH (this
> >>>>>>>> allows
> >>>>>>>>> a later invoke of hsailasm to work)
> >>>>>>>>> * sets an environment variable _OKRA_SIM_LIB_PATH_. This
> >>>>>>>>> env
> >>>>>>>> var
> >>>>>>>>> is used later by the JVM when it wants to load the
> native
> >>>>>>>> library
> >>>>>>>>> and discover its C-based entry points.
> >>>>>>>>>
> >>>>>>>>> -- Tom
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>> -----Original Message-----
> >>>>>>>>>> From: Tom Rodriguez [mailto:tom.rodriguez at oracle.com]
> >>>>>>>>>> Sent: Wednesday, January 15, 2014 4:15 PM
> >>>>>>>>>> To: Douglas Simon
> >>>>>>>>>> Cc: Deneau, Tom; graal-dev at openjdk.java.net
> >>>>>>>>>> Subject: Re: hsail gate commands
> >>>>>>>>>>
> >>>>>>>>>> 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.
> >>>>>>>>>> ht
> >>>>>>>>>> ml#
> >>>>>>>>>>>>> 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-
> librar
> >>>>>>>>>>>>>>>> y-
> >>>>>>>>>>>>>>>> fr
> >>>>>>>>>>>>>>>> om
> >>>>>>>>>>>>>>>> -
> >>>>>>>>>> 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+Simulat
> >>>>>>>>>> or
> >>>>>>>>>>>>>>>>> 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-
> lib
> >>>>>>>>>>>>>>>>>>> ra
> >>>>>>>>>>>>>>>>>>> ry
> >>>>>>>>>>>>>>>>>>> -
> >>>>>>>>>> from-j
> >>>>>>>>>>>>>>>>>>> ar
> >>>>>>>>>>>>>>>>>>> /
> >>>>>>>>>>>>>>>>> to avoid having to set up PATH or LD_LIBRARY_PATH.
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> -Doug
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> [1]
> >>>>>>>>>>>>>>>>>>>>> https://github.com/HSAFoundation/Okra-Interface-
> to-H
> >>>>>>>>>>>>>>>>>>>>> SA
> >>>>>>>>>>>>>>>>>>>>> IL
> >>>>>>>>>>>>>>>>>>>>> -
> >>>>>>>>>> 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