Hello,

I tried the workaround you suggested. Again, I 'm getting the same error...
:(

x10c: ----------
     1. ERROR in /u1/msc/kp167/Desktop/x10/uniComm.java (at line 435)
      SumReducer $_obj = new SumReducer((java.lang.System[]) null);
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     The constructor Reducible.SumReducer(System[]) is undefined
     ----------
     2. ERROR in /u1/msc/kp167/Desktop/x10/uniComm.java (at line 437)
      return $_deserialize_body($_obj, $deserializer);
      ^^^^^^^^^^^^^^^^^^
     The method $_deserialize_body(uniComm.SumReducer, X10JavaDeserializer)
in the type uniComm.SumReducer is not applicable for the arguments
(Reducible.SumReducer, X10JavaDeserializer)
     ----------
     2 problems (2 errors)
x10c: Non-zero return code: 255
2 errors.

Regards,
Konstantina


2013/7/2 Mikio Takeuchi <mikio.takeu...@gmail.com>

> Hi,
>
> It was a problem of Java codegen that caused name clash between your
> SumReducer with Reducible.SumReducer.
> I fixed it in r25712 (trunk) and r25713 (2.3.1.2 branch).
> As Yuki suggested, you can rename SumReducer or just use
> Reducible.SumReducer as workaround.
>
> Thanks for reporting the problem.
> -- Mikio
>
>
> 2013/7/2 Yuki Makino <mak...@jp.ibm.com>
>
>> Hi,
>>
>> It seems that something happens in the compiler, and it is caused
>> by a collision between your SumReducer and x10.lang.Reducible.SumReducer
>> [T].
>>
>> The following is reduced code to reproduce the symptom:
>> public class A {
>> def m() {
>>         val a = finish(SumReducer()) {
>>                 offer 1.0;
>>         };
>> }
>> static struct SumReducer implements Reducible[Double] {
>>         public def zero() = 0.0;
>>         public operator this(a:Double, b:Double) = (a + b);
>> }
>> }
>>
>> As a workaround, please try utilizing x10.lang.Reducible.SumReducer[T] (or
>> renaming your struct) as the following:
>> public class A {
>>
>> def m() {
>>         val a = finish(Reducible.SumReducer[Double]()) {
>>                 offer 1.0;
>>         };
>> }
>>
>> //static struct SumReducer implements Reducible[Double] {
>> //      public def zero() = 0.0;
>> //      public operator this(a:Double, b:Double) = (a + b);
>> //}
>> }
>>
>> Regards,
>> Yuki MAKINO
>>
>>
>>
>> From:   Konstantina Panagiotopoulou <kwno...@hotmail.com>
>> To:     Mailing list for users of the X10 programming language
>>             <x10-users@lists.sourceforge.net>
>> Date:   2013/07/01 20:47
>> Subject:        Re: [X10-users] Performance tuning for the N Body problem
>>
>>
>>
>> So this is the code...I have ommitted some parts to make it more clear...
>>
>> the error I get is the following
>>
>> x10c: ----------
>>      1. ERROR in /home/kwnouli/Desktop/x10/uniComm.java (at line 421)
>>       SumReducer $_obj = new SumReducer((java.lang.System[]) null);
>>       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>      The constructor Reducible.SumReducer(System[]) is undefined
>>      ----------
>>      2. ERROR in /home/kwnouli/Desktop/x10/uniComm.java (at line 423)
>>       return $_deserialize_body($_obj, $deserializer);
>>       ^^^^^^^^^^^^^^^^^^
>>      The method $_deserialize_body(uniComm.SumReducer,
>> X10JavaDeserializer)
>> in the type uniComm.SumReducer is not applicable for the arguments
>> (Reducible.SumReducer, X10JavaDeserializer)
>>      ----------
>>      2 problems (2 errors)
>> x10c: Non-zero return code: 255
>> 2 errors.
>>
>>
>> And I cannot understand why it tries to deserialize the body object since
>> I
>> only need the e: Double value...
>>
>> Am I missing something?
>> Thanks again Josh
>>
>> Regards,
>> Konstantina
>>
>>
>>
>> 2013/7/1 Konstantina Panagiotopoulou <kwno...@hotmail.com>
>>   Hey Josh,
>>
>>   I used the code you provided above.
>>
>>
>>   public def Advance(dt:double) {
>>   val directEnergy = finish(SumReducer()) {
>>
>>
>>                   finish ateach(pl in bodies) {
>>
>>   var e:Double = 0.0;
>>
>>
>>                   val myBodies : Rail[Body] =bodies(pl);
>>                       val toSent = new Rail[Body](myBodies.size as Int,
>>   (i:Int)=>new Body(myBodies(i).mass,myBodies(i).posx, myBodies(i).posy,
>>   myBodies(i).posz, myBodies(i).velx, myBodies(i).vely,
>> myBodies(i).velz));
>>                     val nextPlace = here.next();
>>                       if (nextPlace != here) {
>>                         @Uncounted at(nextPlace) async {
>>                           atomic {
>>                                  otherBodies(nextPlace.id)(pl) = toSent;
>>                               }
>>                           }
>>                       }
>>                     for (i in 0..(myBodies.size-1)) {
>>     val bodyI = myBodies(i);
>>
>>   e+= 0.5 * bodyI.mass * (bodyI.velx*bodyI.velx + bodyI.vely*bodyI.vely +
>>   bodyI.velz*bodyI.velz);
>>                         for (j in 0..(i-1)) {
>>
>>          val bodyJ = myBodies(j);
>>
>>   //code to update my bodies' velocity ...
>>   val dx: double = bodyI.posx - bodyJ.posx;
>>   val dy: double = bodyI.posy - bodyJ.posy;
>>   val dz: double = bodyI.posz - bodyJ.posz;
>>                               var d2: double  = dx*dx + dy*dy + dz*dz;
>>   e-= (bodyI.mass*bodyJ.mass) / Math.sqrt(d2);
>>   }
>>   }
>>   offer e;
>>   }
>>
>>   var target : Place = nextPlace.next();
>>                       var source : Place = here.prev();
>>                       while (source != here) {
>>                           if (target != here) {
>>                               // send myBodies (toSent) to the next target
>>   place
>>                               val targetPlace = target;
>>                               @Uncounted at(targetPlace) async {
>>                                   atomic {
>>                                       otherBodies(targetPlace.id)(pl) =
>>   toSent;
>>                                   }
>>                               }
>>                           }
>>
>>   when(otherBodies(here.id)(source.id) != null);
>>   //all interactions with otherBodies at other place
>>   val other = otherBodies(here.id)(source.id);
>>   for (j in 0..(other.size-1)) {
>>
>>   val bodyJ= other(j);
>>
>>   for (i in 0..(myBodies.size-1)) {
>>
>>   val bodyI = myBodies(i);
>>   e+= 0.5 * bodyI.mass * (bodyI.velx*bodyI.velx + bodyI.vely*bodyI.vely +
>>   bodyI.velz*bodyI.velz);
>>
>>   val dx: double = bodyI.posx - bodyJ.posx;
>>   val dy: double = bodyI.posy - bodyJ.posx;
>>   val dz: double = bodyI.posz - bodyJ.posx;
>>
>>   var d2: double  = dx*dx + dy*dy + dz*dz;
>>   //computation to update my bodies' velocity
>>   e-= (bodyI.mass*bodyJ.mass) / Math.sqrt(d2);
>>
>>   }
>>   offer e;
>>   }
>>   target = target.next();
>>   source = source.prev();
>>   }
>>   }
>>   };
>>   return  directEnergy;
>>      }
>>
>>
>>
>>   static struct SumReducer implements Reducible[Double] {
>>           public def zero() = 0.0;
>>           public operator this(a:Double, b:Double) = (a + b);
>>       }
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>   2013/7/1 Josh Milthorpe <josh.miltho...@anu.edu.au>
>>    Hi Konstantina,
>>
>>    a more general version of collecting finish / offers is proposed,
>> called
>>    'accumulator variables', but this is not yet fully implemented.
>>    Collecting finish should work fine in X10 2.3.
>>
>>    The Reducible interface is in x10.lang.  It includes a generic
>>    SumReducer struct type that you could use instead of the
>> Double-specific
>>    one I posted.
>>
>>    Can you post the code that is causing the error, along with the compile
>>    error that you receive?
>>
>>
>>    Cheers,
>>
>>    Josh
>>    ------------------------------------------
>>    Josh Milthorpe
>>
>>    Postdoctoral Fellow, Research School of Computer Science
>>    Australian National University, Building 108
>>    Canberra, ACT 0200
>>    Australia
>>    Phone:  + 61 (0)2 61254478
>>    Mobile: + 61 (0)407 940743
>>    E-mail: josh.miltho...@anu.edu.au
>>    Web:    http://cs.anu.edu.au/~Josh.Milthorpe/
>>    On 29/06/13 01:31, Konstantina Panagiotopoulou wrote:
>>          Hello again,
>>
>>          I tried to restructure my code according to the example..
>>          The problem is that I get errors with the SumReducer struct  (the
>>          errors point to the java generated code, and can't really make
>>          sense)
>>          I checked the specification for v2.3. and found this:
>>
>>          offers. The offers concept was experimental in 2.1, but was
>>          determined inadequate. It has not been removed from the compiler
>>          yet, but it will be soon. In
>>          the meantime, traces of it are still visible in the grammar. They
>>          should not be
>>          used and can safely be ignored
>>
>>          Also I cannot track the Reducible interface in the API.
>>
>>          Is there any other more explicit way to reduce values from
>>          different places?
>>
>>          Thanks again,
>>          Konstantina
>>
>>
>>          2013/6/27 Konstantina Panagiotopoulou <kwno...@hotmail.com>
>>            Hello again,
>>
>>            I tried to restructure my code according to the example..
>>            The problem is that I get errors with the SumReducer struct
>>            (the errors point to the java generated code, and can't really
>>            make sense)
>>            I checked the specification for v2.3. and found this:
>>
>>            offers. The offers concept was experimental in 2.1, but was
>>            determined inadequate. It has not been removed from the
>> compiler
>>            yet, but it will be soon. In
>>            the meantime, traces of it are still visible in the grammar.
>>            They should not be
>>            used and can safely be ignored
>>
>>            Also I cannot track the Reducible interface in the API.
>>
>>            Is there any other more explicit way to reduce values from
>>            different places?
>>
>>            Thanks again,
>>            Konstantina
>>
>>
>>            2013/6/22 Vijay Saraswat <vi...@saraswat.org>
>>             On 6/21/13 9:21 PM, Konstantina Panagiotopoulou wrote:
>>               Thanks a lot for the useful feedback.
>>               Although, I did not expect I would need such low level
>>               tuning. Looks a lot like MPI.
>>
>>             X10 is a procedural programming language for distributed
>>             programming where the notions of concurrency and distribution
>>             are made explicit.
>>
>>             It is closer to MPI than, say, a more limited, declarative
>>             language with implicit concurrency, in which the compiler
>>             determines run-time concurrency and distribution (e.g. ZPL).
>>
>>             We are very interested in such (declarative) languages as
>> well,
>>             and building them on top of X10, in the long term.
>>
>>
>>
>>
>>
>>
>>  
>> ------------------------------------------------------------------------------
>>
>>          This SF.net email is sponsored by Windows:
>>
>>          Build for Windows Store.
>>
>>          http://p.sf.net/sfu/windows-dev2dev
>>
>>
>>          _______________________________________________
>>          X10-users mailing list
>>          X10-users@lists.sourceforge.net
>>          https://lists.sourceforge.net/lists/listinfo/x10-users
>>
>>
>>
>>
>>  
>> ------------------------------------------------------------------------------
>>
>>    This SF.net email is sponsored by Windows:
>>
>>    Build for Windows Store.
>>
>>    http://p.sf.net/sfu/windows-dev2dev
>>    _______________________________________________
>>    X10-users mailing list
>>    X10-users@lists.sourceforge.net
>>    https://lists.sourceforge.net/lists/listinfo/x10-users
>>
>>
>>
>> ------------------------------------------------------------------------------
>>
>> This SF.net email is sponsored by Windows:
>>
>> Build for Windows Store.
>>
>> http://p.sf.net/sfu/windows-dev2dev
>> _______________________________________________
>> X10-users mailing list
>> X10-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/x10-users
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> This SF.net email is sponsored by Windows:
>>
>> Build for Windows Store.
>>
>> http://p.sf.net/sfu/windows-dev2dev
>> _______________________________________________
>> X10-users mailing list
>> X10-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/x10-users
>>
>
>
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by Windows:
>
> Build for Windows Store.
>
> http://p.sf.net/sfu/windows-dev2dev
> _______________________________________________
> X10-users mailing list
> X10-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/x10-users
>
>
------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
X10-users mailing list
X10-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/x10-users

Reply via email to