chapel-lang / chapel

a Productive Parallel Programming Language
https://chapel-lang.org
Other
1.77k stars 416 forks source link

'BlockCyclic = Cyclic' and `Cyclic = BlockCyclic` results in compiler error (unimplemented?) #13492

Open LouisJenkinsCS opened 5 years ago

LouisJenkinsCS commented 5 years ago
use BlockCycDist;
use CyclicDist;

const N = 1024;
var Space = {1..N};
var D1 = Space dmapped BlockCyclic(startIdx=1, blocksize = 32);
var D2 = Space dmapped Cyclic(startIdx = 1);
var A1 : [D1] int;
var A2 : [D2] int;

A1 = A2;
A2 = A1;

TIO

$CHPL_HOME/modules/dists/BlockCycDist.chpl:891: In iterator 'these':
$CHPL_HOME/modules/dists/BlockCycDist.chpl:900: error: type mismatch in assignment of ranges with different stridable parameters

Note that BlockCycDist = BlockDIst works.

LouisJenkinsCS commented 5 years ago

Related #13493 as Cyclic-BlockCyclic ScatterGather benchmarks are commented out.

bradcray commented 5 years ago

Thanks for reporting this. The BlockCyclic distribution is currently fairly hobbled / immature, and I think that this is one aspect of that.

jabraham17 commented 1 month ago

Here is the updated code for 2.0

use BlockCycDist;
use CyclicDist;

const N = 1024;
var Space = {1..N};
var D1 = Space dmapped new blockCycDist(startIdx=1, blocksize = 32);
var D2 = Space dmapped new cyclicDist(startIdx = 1);
var A1 : [D1] int;
var A2 : [D2] int;

A1 = A2;
A2 = A1;