Hi Rafael,

Thanks for your reply.

I inlined my comments below:

> May we have a simplified copy of your code (kinda the snippet provided below 
> but with initial values for tileSize, numTiles_2, k, etc. i.e. something that 
> compiles) so that we can also give it a go?
Yes, it would be better if we can have a simplified code.
Actually, I have been trying to make a simple code that reproduce this problem 
for several weeks. finally I managed to make it this morning.
Let me ask my advisor if we can show you the code.

> Would you like to try also with these flags?:
> 
> -suseBulkTransferStride=true -suseBulkTransfer=false
I tried these flags, but I still get the error.

I'll keep you updated.

Best,

Akihiro

On Jan 22, 2014, at 5:23 AM, Rafael Asenjo Plaza wrote:

> Hi Akihiro,
> 
> May we have a simplified copy of your code (kinda the snippet provided below 
> but with initial values for tileSize, numTiles_2, k, etc. i.e. something that 
> compiles) so that we can also give it a go?
> 
> Would you like to try also with these flags?:
> 
> -suseBulkTransferStride=true -suseBulkTransfer=false
> 
> Thank you,
> 
> Rafa.
> 
> El 21/01/2014, a las 18:33, Akihiro Hayashi <[email protected]> escribió:
> 
>> Dear Chapel developers,
>> 
>> This is Akihiro Hayashi, postdoc at Rice University.
>> I'm writing this to ask array copy failure in chapel.
>> 
>> I'm trying to evaluate some chapel benchmark across multiple nodes but I get 
>> strange error.
>> Please note that I'm using old version of chapel compiler (r21945) with 
>> qthread-1.10 and GASNet-1.20.2(infiniband-conduit, mpi-spawner) because the 
>> latest version does not work.
>> With the latest version of chapel compiler (r22568) with qthread-1.10 and 
>> GASNet-1.22.0(infiniband-conduit, mpi-spawner), I get SEGV when running 
>> simple program (coforall loc in Locales do on loc { writeln(loc); }) across 
>> multiple nodes with mpi spawner.
>> This is another problem but I have not investigated this problem yet. I'll 
>> work on this later.
>> 
>> The following problem might be fixed in the latest version, but any comments 
>> and suggestions are appreciated.
>> Here is part of my code. 
>> The main data structure is a 3-dimensional array, which is declared as a 
>> distributed array that each of its element refers to a 2-dimension array.
>> You can see array copy statement (liBlock = lkji_tiles(k,k,k+1).tile_array;) 
>> in Line 11. I want to use this copy statement because the Chapel compiler 
>> generates bulk transfer code, which accelerates program execution.
>> 
>> // Code
>> 1: const zero: int(32) = 0;
>> 2: var tile_array_indices = {zero..tileSize-1,zero..tileSize-1};
>> 3: class Tile {
>> 4:    var tile_array: [tile_array_indices] real;
>> 5: }
>> 6: var proto_ijk_space = {zero..numTiles_2-1, zero..numTiles_2, 
>> zero..numTiles_2};
>> 7: var ijk_space = proto_ijk_space dmapped 
>> Block(boundingBox=proto_ijk_space);
>> 8: var lkji_tiles: [ijk_space] Tile;
>> ...
>> 9 :begin {
>>   ...
>> 10:  var liBlock: [tile_array_indices] real;
>> 11:  liBlock = lkji_tiles(k,k,k+1).tile_array;
>> 12:  for (m,n) in tile_array_indices {
>> 13:     if (liBlock(m,n) != lkji_tiles(k,k,k+1).tile_array(m,n)) {
>> 14:        invalid = true;
>> 15:     }
>> 16:   }
>> 17:   if (invalid) { writln("Copy Failed");}
>> 18:   ...
>> 19: }
>> ...
>> 
>> In my experiment, when running the program on 2 or more locales, the program 
>> prints "Copy Failed" which means  "liBlock = 
>> lkji_tiles(k,k,k+1).tile_array;" in Line 11 failed.
>> This happens sometime (not always). and I confirmed the copy is successfully 
>> done if I replace the array copy in Line 11 with copy loop.
>> Additionally, I also see the same behavior when I replace the array copy in 
>> Line 11 with liBlock._value.doiBulkTransfer(lkji_tiles(k,k,k+1).tile_array);.
>> 
>> Here is an output log at runtime when I compile the program with -s 
>> debugBulkTransfer (tileSize=200):
>> 
>> -- Log starts here
>> In DefaultRectangularArr.doiBulkTransfer(): Alo=(0, 0), Blo=(0, 0), 
>> len=40000, elemSize=8;
>> -- End of Log
>> 
>> In both cases, the runtime internally calls chpl_comm_get API(*) and the API 
>> takes the above parameters.
>> I think it looks good.
>> (*) Please take a look at doiBulkTransfer function in 
>> CHPL_HOME/modules/internal/DefaultRectangular.chpl
>> 
>> Any comments and suggestions are appreciated.
>> 
>> Best regards,
>> 
>> Akihiro
>> ------------------------------------------------------------------------------
>> CenturyLink Cloud: The Leader in Enterprise Cloud Services.
>> Learn Why More Businesses Are Choosing CenturyLink Cloud For
>> Critical Workloads, Development Environments & Everything In Between.
>> Get a Quote or Start a Free Trial Today. 
>> http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
>> _______________________________________________
>> Chapel-developers mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/chapel-developers
> 
> __
> Rafael Asenjo Plaza
> Dept. Arquitectura de Computadores      
> Complejo Tecnologico Campus de Teatinos
> E-29071 MALAGA (SPAIN)
> Tel: +34 95 213 27 91
> Fax: +34 95 213 27 90        
> http://www.ac.uma.es/~asenjo
> 
> 


------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Chapel-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/chapel-developers

Reply via email to