Hi all,
I am trying to build X10 source in Eclipse (helios). I checked out all the
modules (common, compiler, constraints, dist, doc, man, ..., tut) from the
trunk as separate java projects. I am using JRE 1.6, and the polyglot-epl.jar.
When I try to build the runtime module with ant (version 1.7.1), I get the
following error:
Buildfile: /Documents/X10Src/x10.runtime/build.xml
init:
check-xrx:
gen-xrx:
[echo] Building Java sources for XRX
[echo] x10c -c x10/array/Array.x10 x10/array/BaseDist.x10
x10/array/Dist.x10 x10/array/DistArray.x10 x10/array/EmptyRegion.x10
x10/array/FullRegion.x10 x10/array/Layout.x10 x10/array/Mat.x10
x10/util/concurrent/atomic/AtomicInteger.x10
x10/util/concurrent/atomic/AtomicLong.x10
x10/util/concurrent/atomic/AtomicReference.x10
x10/util/concurrent/atomic/Fences.x10
[exec] Exception in thread "main" java.lang.Error: Unresolved compilation
problems:
[exec] The import polyglot.frontend.ForgivingVisitorGoal cannot be
resolved
[exec] The method getILexStream() from the type X10Lexer refers to the
missing type ILexStream
[exec] The method getIPrsStream() from the type X10Parser refers to
the missing type IPrsStream
[exec] The method TypesInitializedForCommandLineBarrier() is undefined
for the type ExtensionInfo.X10Scheduler
[exec] ForgivingVisitorGoal cannot be resolved to a type
[exec] ForgivingVisitorGoal cannot be resolved to a type
[exec] ForgivingVisitorGoal cannot be resolved to a type
[exec] ForgivingVisitorGoal cannot be resolved to a type
[exec] at x10.ExtensionInfo.<init>(ExtensionInfo.java:41)
[exec] at x10c.ExtensionInfo.<init>(ExtensionInfo.java:31)
[exec] at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[exec] at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
[exec] at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
[exec] at
java.lang.reflect.Constructor.newInstance(Constructor.java:513)
[exec] at java.lang.Class.newInstance0(Class.java:355)
[exec] at java.lang.Class.newInstance(Class.java:308)
[exec] at polyglot.main.Main.loadExtension(Main.java:189)
[exec] at polyglot.main.Main.getExtensionInfo(Main.java:64)
[exec] at polyglot.main.Main.start(Main.java:90)
[exec] at polyglot.main.Main.start(Main.java:74)
[exec] at polyglot.main.Main.main(Main.java:166)
BUILD FAILED
/Documents/X10Src/x10.runtime/build.xml:236: exec returned: 1
The builds of common, compiler and constraints modules are successful though.
Can anyone suggest me what might be the problem here?
Thanks,
Jeeva P.
U of Alberta
On 2010-08-02, at 4:42 AM, [email protected] wrote:
> Send X10-users mailing list submissions to
> [email protected]
>
> To subscribe or unsubscribe via the World Wide Web, visit
> https://lists.sourceforge.net/lists/listinfo/x10-users
> or, via email, send a message with subject or body 'help' to
> [email protected]
>
> You can reach the person managing the list at
> [email protected]
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of X10-users digest..."
> Today's Topics:
>
> 1. Re: Proper use of distributions (Igor Peshansky)
> 2. Some questions about X10 and PGAS (mohammed elsaeedy)
> 3. Re: Some questions about X10 and PGAS (Dave Hudak)
> 4. Re: Some questions about X10 and PGAS (mohammed elsaeedy)
> 5. Re: Some questions about X10 and PGAS (Dave Hudak)
>
> From: Igor Peshansky <[email protected]>
> Date: July 30, 2010 8:01:11 AM MDT
> To: Mailing list for users of the X10 programming language
> <[email protected]>
> Subject: Re: [X10-users] Proper use of distributions
> Reply-To: Mailing list for users of the X10 programming language
> <[email protected]>
>
>
> Hi, Dave,
>
> You are accessing the method size() of the *field* a_prefix_sum
> of the current object (i.e., "this"). However, the message says
> that the *target* of the method *must be local* to the place you
> are running in. It then says what it thinks that place is, and
> what it knows about the place where the method target lives.
>
> So, the message says:
>
>>
> /Users/dhudak/osc/research/x10/tutorial/examples/GoodPrefixSum/src/PrefixSum.x10:42:
>> Place type error: either method target should be local or
>> method should be global.
>> Method target: PrefixSum.this.a_prefix_sum
>> Method target place: null
>> Current place: PrefixSum#this.home
>> Method: size
>
> The target is "this.a_prefix_sum", and the home place of that
> object is "null" (which is to say "unknown" -- we ought to improve
> our error messages). The compiler knows that since you are
> within a non-global instance method of class PrefixSum, you must
> be running in the place where the current instance lives, namely
> "PrefixSum#this.home".
>
> You need to tell the compiler that the field a_prefix_sum lives
> in the same place as the enclosing object. The simplest way to
> do this is to change the declaration of the field to say:
>
> val a_prefix_sum: Array[Int](1)!;
>
> or, in a more expanded form
>
> val a_prefix_sum: Array[Int](1){self.home==this.home};
>
> This says that the home place of the object the field refers to
> (self.home) must be the same as the home place of the object that
> contains the field (this.home). The compiler will statically
> verify that fact. Since you always initialize that field with a
> new object created in the constructor, the compiler knows that
> it must have been created at the place where the enclosing object
> is being constructed, so you don't have to change anything else
> in the code.
>
> Incidentally, this is a classic example of an underspecified type:
> the type you specify is a supertype of the type you actually need.
>
> However, while the type is underspecified, it is essentially
> harmless, because the parts of the program we discussed so far do
> access the object in the correct place, even if the static type
> information does not reflect that. Your original issue is
> different.
>
> You are invoking place_str() in a place that is not the home place
> of the enclosing object, and thus the dynamic check (which the
> compiler inserted for you) fails. When compiling with
> -STATIC_CALLS, you will get a (legitimate) static error at that
> point.
>
> If you intend to call a method from a place that is not the home
> place of the object, you need to mark it "global". You also need
> to ensure that all the data it accesses is either also marked
> "global", or retrieved via an "at (this)" (same as "at (this.home)").
> In your particular case, the method place_str() should be global,
> as should the field a_prefix_sum.
>
> Note that you may have more errors of this kind in the parts of
> the program that you have not posted to the list. Please address
> them accordingly.
>
> The rule of thumb is that once you start writing multi-place code,
> you should stop relying on the compiler to insert the dynamic
> checks for you, but instead bite the bullet, build with -STATIC_CALLS,
> and fix the errors.
>
> Hope this helps,
> Igor
>
> Dave Hudak <[email protected]> wrote on 07/30/2010 09:10:49 AM:
>
>> Hi Igor (and all),
>>
>> Here is the output from the compiler:
>>
>> dhu...@oscnet166 125%> x10c++ -STATIC_CALLS -o Driver Driver.x10
>> PrefixSum.x10 AsyncPrefixSum.x10 DistPrefixSum.x10
>>
> /Users/dhudak/osc/research/x10/tutorial/examples/GoodPrefixSum/src/AsyncPrefixSum.
>> x10:48: Place type error: either method target should be local or
>> method should be global.
>> Method target: AsyncPrefixSum.this.a_prefix_sum
>> Method target place: null
>> Current place: AsyncPrefixSum#this.home
>> Method: size
>>
> /Users/dhudak/osc/research/x10/tutorial/examples/GoodPrefixSum/src/AsyncPrefixSum.
>> x10:49: Place type error: either method target should be local or
>> method should be global.
>> Method target: AsyncPrefixSum.this.a_prefix_sum
>> Method target place: null
>> Current place: AsyncPrefixSum#this.home
>> Method: size
>>
> /Users/dhudak/osc/research/x10/tutorial/examples/GoodPrefixSum/src/PrefixSum.
>> x10:42: Place type error: either method target should be local or
>> method should be global.
>> Method target: PrefixSum.this.a_prefix_sum
>> Method target place: null
>> Current place: PrefixSum#this.home
>> Method: size
>>
> /Users/dhudak/osc/research/x10/tutorial/examples/GoodPrefixSum/src/DistPrefixSum.
>> x10:61: Place type error: either method target should be local or
>> method should be global.
>> Method target: DistPrefixSum.this
>> Method target place: null
>> Current place: p
>> Method: place_str
>> 4 errors.
>>
>> Let's focus on the third error, since that is from the "easiest"
>> implementation (single activity, single place). The code is attached.
>> I think my problem boils down to a lack of understanding about
>> referencing an object's fields and exactly what "this" means.
>>
>> I start out by declaring a class whose objects will allocate an array.
>> I provide 3 constructors (a default and 2 initialization
>> constructors). Constructors seem to use "this" for their definition -
>> is that correct?
>>
>> public class PrefixSum {
>>
>> val a_prefix_sum: Array[Int](1);
>>
>> public def this() {
>> a_prefix_sum = new Array[Int]([1..2], (Point)=>0);
>> }
>>
>> public def this(length:Int) {
>> a_prefix_sum = new Array[Int]([1..length], (Point)=>0);
>> for ((i) in a_prefix_sum) {
>> a_prefix_sum([i]) = i;
>> }
>> }
>>
>> public def this(a:Array[Int](1))
>> {
>> a_prefix_sum = new Array[Int](a.region, (Point)=>0);
>> for ((i) in a_prefix_sum) {
>> a_prefix_sum([i]) = a([i]);
>> }
>> }
>>
>> ...then, I get the following error on the following code:
>>
>>
> /Users/dhudak/osc/research/x10/tutorial/examples/GoodPrefixSum/src/PrefixSum.
>> x10:42: Place type error: either method target should be local or
>> method should be global.
>> Method target: PrefixSum.this.a_prefix_sum
>> Method target place: null
>> Current place: PrefixSum#this.home
>> Method: size
>>
>> public def str_end():String
>> {
>> return a_prefix_sum([a_prefix_sum.size()]).toString();
>> }
>>
>> So, it looks like accessing the "size" field of a_prefix_sum goes
>> through "this" - which is the class PrefixSum???
>>
>> Thanks,
>> Dave
>>
>>
>> On Jul 29, 2010, at 3:08 PM, Igor Peshansky wrote:
>>
>>> Hi, Dave,
>>>
>>> You're accessing a field (or calling a method) of a remote object
>>> reference. If you ran the compiler with the -STATIC_CALLS flag,
>>> you would have gotten a compile-time error. As it is, the
>>> compiler inserts a dynamic check for you, which then fails at
>>> runtime.
>>>
>>> Try compiling your program with -STATIC_CALLS, and see what the
>>> compiler reports.
>>>
>>> Hope this helps,
>>> Igor
>>> P.S. Judging by your stack trace, you seem to be running on a Mac.
>>> There was a bug with printing Mac stack traces in X10 2.0.5 which
>>> is fixed in SVN HEAD (so it will work better in the next release).
>>>
>>> Dave Hudak <[email protected]> wrote on 07/29/2010 12:53:18 PM:
>>>
>>>> Hi All,
>>>>
>>>> I took Igor's advice on using a cell to pass results back to the
>>>> calling place. I recoded my function for translating a distarray
> into
>>>> a string as follows. The "boo/hoo" statements are line counters:
>>>>
>>>> public def place_str(): String
>>>> {
>>>> Console.OUT.println("hoo");
>>>> var s : String = ""; //var is mutable
>>>> Console.OUT.println("hoo1");
>>>> var first : Boolean = true; //var
>>>> declaration must include type
>>>> Console.OUT.println("place_str "+here.id);
>>>> for (pt in a_prefix_sum | here) {
>>>> if (first) {
>>>> first = false;
>>>> }
>>>> else {
>>>> s += ", ";
>>>> }
>>>> Console.OUT.println("place_str point = "+pt);
>>>> s += a_prefix_sum(pt).toString(); //works because
>>>> toString is global
>>>> }
>>>> return s;
>>>> }
>>>>
>>>> public def str():String
>>>> {
>>>> var s : String = ""; //var is mutable
>>>> for (p in a_prefix_sum.dist.places()) {
>>>> Console.OUT.println("str "+p.id);
>>>> val z = new Cell[String](null);
>>>> Console.OUT.println("boo");
>>>> val h = here;
>>>> Console.OUT.println("boo2");
>>>> at (p) {
>>>> Console.OUT.println("boo3");
>>>> val q = place_str();
>>>> Console.OUT.println("boo4");
>>>> at (h) z.set(q);
>>>> Console.OUT.println("boo5");
>>>> }
>>>> s += z();
>>>> if (p.id != (Place.MAX_PLACES - 1)) {
>>>> s += ", ";
>>>> } //if
>>>> Console.OUT.println("s = "+s);
>>>> } //for i
>>>> return s;
>>>> }
>>>>
>>>> I am causing an exception when I call the place_str method from any
>>>> place other that place 0. Here is the output:
>>>>
>>>> dhu...@oscnet166 77%> mpirun -np 8 Driver
>>>> <...snip>
>>>> str 0
>>>> boo
>>>> boo2
>>>> boo3
>>>> hoo
>>>> hoo1
>>>> place_str 0
>>>> place_str point = (1)
>>>> place_str point = (2)
>>>> place_str point = (3)
>>>> place_str point = (4)
>>>> boo4
>>>> boo5
>>>> s = 1, 2, 3, 4,
>>>> str 1
>>>> boo
>>>> boo2
>>>> boo3
>>>> Uncaught exception at place 0: x10.lang.ClassCastException (home==1):
>
>>>> DistPrefixSum{self.home==here}
>>>> x10.lang.ClassCastException (home==1): DistPrefixSum{self.home==here}
>>>> at x10::lang::Throwable::fillInStackTrace()
>>>>
>>>> Any ideas?
>>>>
>>>> Thanks,
>>>> Dave
>>>> On Jul 28, 2010, at 8:05 PM, Igor Peshansky wrote:
>>>>
>>>>> Igor Peshansky/Watson/i...@ibmus wrote on 07/28/2010 07:15:02 PM:
>>>>>
>>>>>> Dave Hudak <[email protected]> wrote on 07/28/2010 02:37:22 PM:
>>>>>>
>>>>>>> Hi All,
>>>>>>>
>>>>>>> I am trying to write a class that will do a prefix sum on an
> array.
>>> I
>>>>>>> have written the single-place version and a single-place version
>>> that
>>>>>>> uses multiple activities to compute the sums. I am now trying to
>>>>>>> write the distributed version. Both classes are included (I will
>>>>>>> eventually write an interface for these classes).
>>>>>>>
>>>>>>> I have been able to write the constructors and call them without
>>> run-
>>>>>>> time exceptions occurring. Now, I want to write a function that
>>>>>>> returns a single string representation of a dist array. I wrote a
>
>>>>>>> function that should create a string representation of all dist
>>> array
>>>>>>> elements at a given location (I called it place_str), and then I
>>> want
>>>>>>> to loop over all places:
>>>>>>>
>>>>>>> (from DistPrefixSum.x10):
>>>>>>>
>>>>>>> public def str():String
>>>>>>> {
>>>>>>> var s : String = ""; //var is mutable
>>>>>>> for (var place_id:int=0; place_id<Place.MAX_PLACES;
> place_id++)
>>>
>>>>> {
>>>>>>> s += at (Place.places(place_id)) place_str();
>>>>>>> if (place_id != (Place.MAX_PLACES - 1)) {
>>>>>>> s += ", ";
>>>>>>> } //if
>>>>>>> } //for i
>>>>>>> return s;
>>>>>>> }
>>>>>>>
>>>>>>> My error occurs on the at statement:
>>>>>>>
>>>>>>> dhu...@oscnet166 35%> x10c++ -O -o Driver Driver.x10 PrefixSum.x10
>
>>>>>>> AsyncPrefixSum.x10 DistPrefixSum.x10
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
> /Users/dhudak/osc/research/x10/tutorial/examples/GoodPrefixSum/src/DistPrefixSum.
>>>>>>> x10:49: Local variable "place_id" is accessed from an inner class
> or
>>> a
>>>>>>> closure, and must be declared final or shared.
>>>>>>> 1 error.
>>>>>>>
>>>>>>> Does anyone have any recommendations? Creating a single string
> from
>>> a
>>>>>>> dist array of integers is a reduction just like finding the sum or
>
>>> max
>>>>>>> of the entries, so I figure its well understood...
>>>>>>
>>>>>> Dave,
>>>>>>
>>>>>> This is a bug in the typechecking of at expressions. You can work
>>>>> around
>>>>>> this by changing the body of the for loop to
>>>>>>
>>>>>> val z = new Cell[String](null);
>>>>>> val h = here;
>>>>>> at (Place.places(place_id)) { val q = place_str(); at (h)
>>>>> z.set(q);
>>>>>> }
>>>>>> s += z();
>>>>>> if (place_id != (Place.MAX_PLACES - 1)) {
>>>>>> s += ", ";
>>>>>> } //if
>>>>>>
>>>>>> The above code is less efficient, but it should work.
>>>>>> I've opened a JIRA issue:
>>> http://jira.codehaus.org/browse/XTENLANG-1632
>>>>> .
>>>>>> Please watch that issue for updates on the fix.
>>>>>> Igor
>>>>>
>>>>> Dave,
>>>>>
>>>>> The fix turned out to be simple. This is now fixed in SVN HEAD
>>> (r15224),
>>>>> and will be available in the next X10 release (or you can build from
>
>>> SVN
>>>>> to pick up the fix).
>>>>> Igor
> --
> Igor Peshansky (note the spelling change!)
> IBM T.J. Watson Research Center
> X10: Parallel Productivity and Performance (http://x10-lang.org/)
> XJ: No More Pain for XML's Gain (http://www.research.ibm.com/xj/)
> "I hear and I forget. I see and I remember. I do and I understand" --
> Confucius
>
>
>
>
>
>
> From: mohammed elsaeedy <[email protected]>
> Date: August 1, 2010 5:47:05 AM MDT
> To: Mailing list for users of the X10 programming language
> <[email protected]>
> Subject: [X10-users] Some questions about X10 and PGAS
> Reply-To: Mailing list for users of the X10 programming language
> <[email protected]>
>
>
> Dear List,
>
> I have some questions regarding PGAS and X10,
>
> 1) One of the goals for PGAS languages is:
> *One-sided communication for improved inter-process performance, *how is
> that achieved, if I'm compiling with an x10rt of MPI flavor, which is
> eventually a *Two**-sided communication.*
> *
> *
> *2)How is the "async" implemented under the hoods? is it POSIX threads or is
> it OpenMP?*
> *
> *
> *3) X10 and Chapel are APGAS, what is the difference between APGAS and PGAS
> langauges?
> *
> --
> Thank you for your concern.
> Regards,
> Mohammed El Sayed
>
>
>
>
> From: Dave Hudak <[email protected]>
> Date: August 1, 2010 11:55:21 AM MDT
> To: Mailing list for users of the X10 programming language
> <[email protected]>
> Subject: Re: [X10-users] Some questions about X10 and PGAS
> Reply-To: Mailing list for users of the X10 programming language
> <[email protected]>
>
>
>
> On Aug 1, 2010, at 7:47 AM, mohammed elsaeedy wrote:
>
>> Dear List,
>>
>> I have some questions regarding PGAS and X10,
>>
>> 1) One of the goals for PGAS languages is:
>> *One-sided communication for improved inter-process performance, *how is
>> that achieved, if I'm compiling with an x10rt of MPI flavor, which is
>> eventually a *Two**-sided communication.*
>> *
>> *
>> *2)How is the "async" implemented under the hoods? is it POSIX threads or is
>> it OpenMP?*
>> *
>> *
>> *3) X10 and Chapel are APGAS, what is the difference between APGAS and PGAS
>> langauges?
>
> I'll try this one. APGAS is shorthand for "asynchronous PGAS". Traditional
> PGAS implementations (UPC and Co-Array FORTRAN) use an MPI-style execution
> called SPMD (single-program, multiple data) in which a fixed number of
> parallel threads are created at the beginning of the program and all exist
> until the end of the program. In asynchronous PGAS, the programmer can
> create threads during the execution of the program (e.g., using the async or
> at commands in X10).
>
> Thanks,
> Dave
>
>> *
>> --
>> Thank you for your concern.
>> Regards,
>> Mohammed El Sayed
>> ------------------------------------------------------------------------------
>> The Palm PDK Hot Apps Program offers developers who use the
>> Plug-In Development Kit to bring their C/C++ apps to Palm for a share
>> of $1 Million in cash or HP Products. Visit us here for more details:
>> http://p.sf.net/sfu/dev2dev-palm
>> _______________________________________________
>> X10-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/x10-users
>
> ---
> David E. Hudak, Ph.D. [email protected]
> Program Director, HPC Engineering
> Ohio Supercomputer Center
> http://www.osc.edu
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> From: mohammed elsaeedy <[email protected]>
> Date: August 1, 2010 12:32:40 PM MDT
> To: Mailing list for users of the X10 programming language
> <[email protected]>
> Subject: Re: [X10-users] Some questions about X10 and PGAS
> Reply-To: Mailing list for users of the X10 programming language
> <[email protected]>
>
>
> Dear David,
>
>
> Thank you for your reply, but does that mean the traditional PGAS
> programming language does not present Intra-level parallelism (as in
> threads)? and it only provides Inter-level parallelism as in executing on
> different Processing Elements.
> Where as APGAS, provides both level of parallelism.
>
> am I right?
> I hope I get my other questions answered too :)
>
> Thank you all
>
> On Sun, Aug 1, 2010 at 1:55 PM, Dave Hudak <[email protected]> wrote:
>
>>
>> On Aug 1, 2010, at 7:47 AM, mohammed elsaeedy wrote:
>>
>>> Dear List,
>>>
>>> I have some questions regarding PGAS and X10,
>>>
>>> 1) One of the goals for PGAS languages is:
>>> *One-sided communication for improved inter-process performance, *how is
>>> that achieved, if I'm compiling with an x10rt of MPI flavor, which is
>>> eventually a *Two**-sided communication.*
>>> *
>>> *
>>> *2)How is the "async" implemented under the hoods? is it POSIX threads or
>> is
>>> it OpenMP?*
>>> *
>>> *
>>> *3) X10 and Chapel are APGAS, what is the difference between APGAS and
>> PGAS
>>> langauges?
>>
>> I'll try this one. APGAS is shorthand for "asynchronous PGAS".
>> Traditional PGAS implementations (UPC and Co-Array FORTRAN) use an
>> MPI-style execution called SPMD (single-program, multiple data) in which a
>> fixed number of parallel threads are created at the beginning of the program
>> and all exist until the end of the program. In asynchronous PGAS, the
>> programmer can create threads during the execution of the program (e.g.,
>> using the async or at commands in X10).
>>
>> Thanks,
>> Dave
>>
>>> *
>>> --
>>> Thank you for your concern.
>>> Regards,
>>> Mohammed El Sayed
>>>
>> ------------------------------------------------------------------------------
>>> The Palm PDK Hot Apps Program offers developers who use the
>>> Plug-In Development Kit to bring their C/C++ apps to Palm for a share
>>> of $1 Million in cash or HP Products. Visit us here for more details:
>>> http://p.sf.net/sfu/dev2dev-palm
>>> _______________________________________________
>>> X10-users mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/x10-users
>>
>> ---
>> David E. Hudak, Ph.D. [email protected]
>> Program Director, HPC Engineering
>> Ohio Supercomputer Center
>> http://www.osc.edu
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> The Palm PDK Hot Apps Program offers developers who use the
>> Plug-In Development Kit to bring their C/C++ apps to Palm for a share
>> of $1 Million in cash or HP Products. Visit us here for more details:
>> http://p.sf.net/sfu/dev2dev-palm
>> _______________________________________________
>> X10-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/x10-users
>>
>
>
>
> --
> Thank you for your concern.
> Regards,
> Mohammed El Sayed
>
>
>
>
> From: Dave Hudak <[email protected]>
> Date: August 2, 2010 4:42:15 AM MDT
> To: Mailing list for users of the X10 programming language
> <[email protected]>
> Subject: Re: [X10-users] Some questions about X10 and PGAS
> Reply-To: Mailing list for users of the X10 programming language
> <[email protected]>
>
>
>
> On Aug 1, 2010, at 2:32 PM, mohammed elsaeedy wrote:
>
>> Dear David,
>>
>>
>> Thank you for your reply, but does that mean the traditional PGAS
>> programming language does not present Intra-level parallelism (as in
>> threads)? and it only provides Inter-level parallelism as in executing on
>> different Processing Elements.
>> Where as APGAS, provides both level of parallelism.
>>
>> am I right?
>
> Correct. APGAS environments (in theory) make it easier to program
> multi-level parallel applications. As hybrid architectures become more
> common (think clusters of multicore nodes or clusters of nodes each
> containing an accelerator like a GPU), multilevel parallelism will be
> necessary to fully utilize the machine. Of course, multilevel parallelism
> can be created outside of APGAS: lots of programmers are combining MPI +
> OpenMP or MPI + CUDA.
>
> Dave
>
>> I hope I get my other questions answered too :)
>>
>> Thank you all
>>
>> On Sun, Aug 1, 2010 at 1:55 PM, Dave Hudak <[email protected]> wrote:
>>
>>>
>>> On Aug 1, 2010, at 7:47 AM, mohammed elsaeedy wrote:
>>>
>>>> Dear List,
>>>>
>>>> I have some questions regarding PGAS and X10,
>>>>
>>>> 1) One of the goals for PGAS languages is:
>>>> *One-sided communication for improved inter-process performance, *how is
>>>> that achieved, if I'm compiling with an x10rt of MPI flavor, which is
>>>> eventually a *Two**-sided communication.*
>>>> *
>>>> *
>>>> *2)How is the "async" implemented under the hoods? is it POSIX threads or
>>> is
>>>> it OpenMP?*
>>>> *
>>>> *
>>>> *3) X10 and Chapel are APGAS, what is the difference between APGAS and
>>> PGAS
>>>> langauges?
>>>
>>> I'll try this one. APGAS is shorthand for "asynchronous PGAS".
>>> Traditional PGAS implementations (UPC and Co-Array FORTRAN) use an
>>> MPI-style execution called SPMD (single-program, multiple data) in which a
>>> fixed number of parallel threads are created at the beginning of the program
>>> and all exist until the end of the program. In asynchronous PGAS, the
>>> programmer can create threads during the execution of the program (e.g.,
>>> using the async or at commands in X10).
>>>
>>> Thanks,
>>> Dave
>>>
>>>> *
>>>> --
>>>> Thank you for your concern.
>>>> Regards,
>>>> Mohammed El Sayed
>>>>
>>> ------------------------------------------------------------------------------
>>>> The Palm PDK Hot Apps Program offers developers who use the
>>>> Plug-In Development Kit to bring their C/C++ apps to Palm for a share
>>>> of $1 Million in cash or HP Products. Visit us here for more details:
>>>> http://p.sf.net/sfu/dev2dev-palm
>>>> _______________________________________________
>>>> X10-users mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/x10-users
>>>
>>> ---
>>> David E. Hudak, Ph.D. [email protected]
>>> Program Director, HPC Engineering
>>> Ohio Supercomputer Center
>>> http://www.osc.edu
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> The Palm PDK Hot Apps Program offers developers who use the
>>> Plug-In Development Kit to bring their C/C++ apps to Palm for a share
>>> of $1 Million in cash or HP Products. Visit us here for more details:
>>> http://p.sf.net/sfu/dev2dev-palm
>>> _______________________________________________
>>> X10-users mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/x10-users
>>>
>>
>>
>>
>> --
>> Thank you for your concern.
>> Regards,
>> Mohammed El Sayed
>> ------------------------------------------------------------------------------
>> The Palm PDK Hot Apps Program offers developers who use the
>> Plug-In Development Kit to bring their C/C++ apps to Palm for a share
>> of $1 Million in cash or HP Products. Visit us here for more details:
>> http://p.sf.net/sfu/dev2dev-palm
>> _______________________________________________
>> X10-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/x10-users
>
> ---
> David E. Hudak, Ph.D. [email protected]
> Program Director, HPC Engineering
> Ohio Supercomputer Center
> http://www.osc.edu
>
>
>
>
>
>
>
>
>
>
>
>
>
> ------------------------------------------------------------------------------
> The Palm PDK Hot Apps Program offers developers who use the
> Plug-In Development Kit to bring their C/C++ apps to Palm for a share
> of $1 Million in cash or HP Products. Visit us here for more details:
> http://p.sf.net/sfu/dev2dev-palm_______________________________________________
> X10-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/x10-users
------------------------------------------------------------------------------
This SF.net email is sponsored by
Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev
_______________________________________________
X10-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/x10-users