You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In the band case, we want to tell Montblanc that it should handle channels in separate groups...
classMrSourceProvider(SourceProvider):
""" Tell montblanc there's a group of size 4 with 64, 32, 64 and 32 channels in the following way """defupdated_dimensions(self):
return [('nchan', 64, 32, 64, 32), ('ntime', 100)]
We can also introduce the idea of linking a dimension with a dimension or group of dimensions
classMrSourceProvider(SourceProvider):
""" Tell montblanc that nbands goups 64, 32, 64 and 32 channels respectively. band 0: 64 channels band 1: 32 channels band 2: 64 channels band 3: 32 channels """defupdated_dimensions(self):
return [{'nband' : ('nchan', 64, 32, 64, 32)}, ('ntime', 100)]
Also if the users wants something really exotic, then the user could supply a callable/lambda that would allow them to configure the number of channels whenever that dimension is accessed in a loop. So user could then write logic like
If this is a timestep 2 and baseline 3, we have 32 channels
defcfg_nchan(context):
ifcontext.ntime==2andcontext.nbl==3:
return32else:
return64classMrSourceProvider(SourceProvider):
""" Configure nchan with cfg_nchan whenever we loop with it... """defupdated_dimensions(self):
return [('nchan': cfg_nchan)]
The text was updated successfully, but these errors were encountered:
The latter option will be required to support baseline-dependent averaging. In the extreme case, each baseline will have its own individual time axis, and each timeslot of that baseline can have its own subset of channels. Is this too flexible to implement efficiently?
The latter option will be required to support baseline-dependent averaging. In the extreme case, each baseline will have its own individual time axis, and each timeslot of that baseline can have its own subset of channels. Is this too flexible to implement efficiently?
It should be fine. Only thing that I'd ask the user via API is a size hint for the maximum size for (GPU) memory budgeting purposes.
Currently montblanc wants things as a cube. This isn't so flexible going forward so I've been mulling over ideas for this.
Currently montblanc users inform montblanc about the size of their dimensions in a SourceProvider:
In the band case, we want to tell Montblanc that it should handle channels in separate groups...
We can also introduce the idea of linking a dimension with a dimension or group of dimensions
Also if the users wants something really exotic, then the user could supply a callable/lambda that would allow them to configure the number of channels whenever that dimension is accessed in a loop. So user could then write logic like
The text was updated successfully, but these errors were encountered: