Skip to content

Commit

Permalink
Merge pull request #238 from HaiwangYu/release-0.25.0
Browse files Browse the repository at this point in the history
mv multi-fan to common/funcs.jsonnet
  • Loading branch information
HaiwangYu committed Aug 18, 2023
2 parents 1cfb27b + 6adb7d2 commit fac1225
Show file tree
Hide file tree
Showing 9 changed files with 166 additions and 169 deletions.
158 changes: 158 additions & 0 deletions cfg/pgrapher/common/funcs.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,162 @@ local g = import "pgraph.jsonnet";
{
fanpipe :: g.fan.pipe,
fansink :: g.fan.sink,

// a multi-layer fanout-pipelines-fanin structure
// nnodes: number of nodes per layer
// multi: multiplicity of nodes for a layer
// fout is forward counting
// fin is backward counting
// e.g. for dune-vd 1x6x6, one can choose nnodes=[1,6], multi=[6,6]
// for dune-vd 1x8x14, one can choose nnodes=[1,8,16], multi=[8,2,7]
multifanpipe :: function( fout, pipelines, fin,
fout_nnodes=[1,8,16], fout_multi=[8,2,7],
fin_nnodes=[1,8,16], fin_multi=[8,2,7],
name='multifanpipe', outtags=[], tag_rules=null ) {
local fout_nlayers = std.length(fout_multi),
assert fout_nlayers >= 2 : "fout_nlayers should be >= 2",
local fin_nlayers = std.length(fin_multi),
assert fin_nlayers >= 2 : "fin_nlayers should be >= 2",
local npipe = std.length(pipelines),
assert npipe == fout_nnodes[fout_nlayers-1]*fout_multi[fout_nlayers-1] :
"fout layout error npipe=%d, "%npipe + "fout=%d"%(fout_nnodes[fout_nlayers-1]*fout_multi[fout_nlayers-1]),
assert npipe == fin_nnodes[fin_nlayers-1]*fin_multi[fin_nlayers-1] :
"fin layout error npipe=%d, "%npipe + "fin=%d"%(fin_nnodes[fin_nlayers-1]*fin_multi[fin_nlayers-1]),

// function to create nodes for one layer
local fout_layer(ilayer,nnodes,nmulti) = {
ret : [
g.pnode({
type: fout,
name: name+"_fout_%d"%ilayer + "_%d"%inode,
data: {
multiplicity: nmulti,
tag_rules: [],
}}, nin=1, nout=nmulti
) for inode in std.range(0,nnodes-1)],
}.ret,
// nodes for all layers
local fout_layers = [
fout_layer(ilayer,
fout_nnodes[ilayer],
fout_multi[ilayer])
for ilayer in std.range(0,fout_nlayers-1)
],
// make edges to make a combo node
local fout_node = g.intern(
innodes = fout_layers[0],
centernodes = if fout_nlayers == 2 then [] else std.flattenArrays([fout_layers[i] for i in std.range(1,fout_nlayers-2)]),
outnodes = fout_layers[fout_nlayers-1],
edges = std.flattenArrays(
[
[
g.edge(
fout_layers[ilayer-1][std.floor(inode/fout_multi[ilayer-1])],
fout_layers[ilayer][inode],
inode%fout_multi[ilayer-1],
0)
for inode in std.range(0,fout_nnodes[ilayer]-1)]
for ilayer in std.range(1,fout_nlayers-1)])
),

// similarly build the multi-layer fan in combo node
// note the backward layer counting
local fin_layer(ilayer,nnodes,nmulti) = {
ret : [
g.pnode({
type: fin,
name: name+"_fin_%d"%ilayer + "_%d"%inode,
data: {
multiplicity: nmulti,
tags: outtags,
tag_rules: [tag_rules for irule in std.range(0,nmulti-1)],
}}, nin=nmulti, nout=1
) for inode in std.range(0,nnodes-1)],
}.ret,
local fin_layers = [
fin_layer(ilayer,
fin_nnodes[ilayer],
fin_multi[ilayer])
for ilayer in std.range(0,fin_nlayers-1)
],
local fin_node = g.intern(
innodes = fin_layers[fin_nlayers-1],
centernodes = if fin_nlayers == 2 then [] else std.flattenArrays([fin_layers[i] for i in std.range(1,fout_nlayers-2)]),
outnodes = fin_layers[0],
edges = std.flattenArrays(
[
[
g.edge(
fin_layers[ilayer][inode],
fin_layers[ilayer-1][std.floor(inode/fin_multi[ilayer-1])],
0,
inode%fin_multi[ilayer-1])
for inode in std.range(0,fin_nnodes[ilayer]-1)]
for ilayer in std.range(1,fin_nlayers-1)])
),

// connect comb_fan_out-piples-combo_fan_in
ret : g.intern(
innodes = [fout_node],
centernodes = pipelines,
outnodes = [fin_node],
edges = [g.edge(fout_node,pipelines[n],n,0) for n in std.range(0,npipe-1)] +
[g.edge(pipelines[n],fin_node,0,n) for n in std.range(0,npipe-1)],
),
}.ret,

// similar as multifanpipe but jusnt fan-out then pipelines with ending sinks
multifanout :: function( fout, pipelines,
fout_nnodes=[1,8,16], fout_multi=[8,2,7],
name='multifanout', tag_rules=[] ) {
local fout_nlayers = std.length(fout_multi),
assert fout_nlayers >= 2 : "fout_nlayers should be >= 2",
local npipe = std.length(pipelines),
assert npipe == fout_nnodes[fout_nlayers-1]*fout_multi[fout_nlayers-1] :
"fout layout error npipe=%d, "%npipe + "fout=%d"%(fout_nnodes[fout_nlayers-1]*fout_multi[fout_nlayers-1]),

// function to create nodes for one layer
local fout_layer(ilayer,nnodes,nmulti) = {
ret : [
g.pnode({
type: fout,
name: name+"_fout_%d"%ilayer + "_%d"%inode,
data: {
multiplicity: nmulti,
tag_rules: [],
}}, nin=1, nout=nmulti
) for inode in std.range(0,nnodes-1)],
}.ret,
// nodes for all layers
local fout_layers = [
fout_layer(ilayer,
fout_nnodes[ilayer],
fout_multi[ilayer])
for ilayer in std.range(0,fout_nlayers-1)
],
// make edges to make a combo node
local fout_node = g.intern(
innodes = fout_layers[0],
centernodes = if fout_nlayers == 2 then [] else std.flattenArrays([fout_layers[i] for i in std.range(1,fout_nlayers-2)]),
outnodes = fout_layers[fout_nlayers-1],
edges = std.flattenArrays(
[
[
g.edge(
fout_layers[ilayer-1][std.floor(inode/fout_multi[ilayer-1])],
fout_layers[ilayer][inode],
inode%fout_multi[ilayer-1],
0)
for inode in std.range(0,fout_nnodes[ilayer]-1)]
for ilayer in std.range(1,fout_nlayers-1)])
),

// connect comb_fan_out-piples
ret : g.intern(
innodes = [fout_node],
centernodes = pipelines,
outnodes = [],
edges = [g.edge(fout_node,pipelines[n],n,0) for n in std.range(0,npipe-1)]
),
}.ret,
}
161 changes: 0 additions & 161 deletions cfg/pgrapher/experiment/dune-vd/funcs.jsonnet

This file was deleted.

2 changes: 1 addition & 1 deletion cfg/pgrapher/experiment/dune-vd/wcls-nf-sp.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ local nfsp_pipes = [


// assert (fcl_params.ncrm == 36 || fcl_params.ncrm == 112) : "only ncrm == 36 or 112 are configured";
local f = import 'pgrapher/experiment/dune-vd/funcs.jsonnet';
local f = import 'pgrapher/common/funcs.jsonnet';
local outtags = ['gauss%d' % n for n in std.range(0, std.length(tools.anodes) - 1)];
// local fanpipe = f.multifanpipe('FrameFanout', nfsp_pipes, 'FrameFanin', 6, 'sn_mag_nf', outtags);
local fanpipe =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// Output is a Python numpy .npz file.

local g = import 'pgraph.jsonnet';
local f = import 'pgrapher/experiment/dune-vd/funcs.jsonnet';
local f = import 'pgrapher/common/funcs.jsonnet';
local wc = import 'wirecell.jsonnet';
// Note: better switch to layers
local dnnroi = import 'dnnroi.jsonnet';
Expand Down Expand Up @@ -241,7 +241,7 @@ local multipass = [
for n in anode_iota
];

local f = import 'pgrapher/experiment/dune-vd/funcs.jsonnet';
local f = import 'pgrapher/common/funcs.jsonnet';
// local outtags = ['gauss%d' % anode.data.ident for anode in tools.anodes];
local outtags = [];
local tag_rules = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ local multipass = [
];

// assert (fcl_params.ncrm == 36 || fcl_params.ncrm == 112) : "only ncrm == 36 or 112 are configured";
local f = import 'pgrapher/experiment/dune-vd/funcs.jsonnet';
local f = import 'pgrapher/common/funcs.jsonnet';
local outtags = ['orig%d' % n for n in anode_iota];
// local bi_manifold = f.multifanpipe('DepoSetFanout', multipass, 'FrameFanin', 6, 'sn_mag', outtags);
local bi_manifold =
Expand Down
2 changes: 1 addition & 1 deletion cfg/pgrapher/experiment/dune-vd/wct-depo-sim-fans.jsonnet
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
local g = import "pgraph.jsonnet";
local f = import "pgrapher/experiment/dune-vd/funcs.jsonnet";
local f = import "pgrapher/common/funcs.jsonnet";
local wc = import "wirecell.jsonnet";

local io = import 'pgrapher/common/fileio.jsonnet';
Expand Down
2 changes: 1 addition & 1 deletion cfg/pgrapher/experiment/dune-vd/wct-sim-fans.jsonnet
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
local g = import "pgraph.jsonnet";
local f = import "pgrapher/experiment/dune-vd/funcs.jsonnet";
local f = import "pgrapher/common/funcs.jsonnet";
local wc = import "wirecell.jsonnet";

local io = import 'pgrapher/common/fileio.jsonnet';
Expand Down
2 changes: 1 addition & 1 deletion cfg/pgrapher/experiment/dune-vd/wct-sim-npz.jsonnet
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
local g = import "pgraph.jsonnet";
local f = import "pgrapher/experiment/dune-vd/funcs.jsonnet";
local f = import "pgrapher/common/funcs.jsonnet";
local wc = import "wirecell.jsonnet";

local io = import 'pgrapher/common/fileio.jsonnet';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// Output is a Python numpy .npz file.

local g = import 'pgraph.jsonnet';
local f = import 'pgrapher/experiment/dune-vd/funcs.jsonnet';
local f = import 'pgrapher/common/funcs.jsonnet';
local wc = import 'wirecell.jsonnet';

local io = import 'pgrapher/common/fileio.jsonnet';
Expand Down

0 comments on commit fac1225

Please sign in to comment.