Skip to content

Support various block sizes #212

@vchuravy

Description

@vchuravy
# Following https://dl.acm.org/doi/pdf/10.1145/3016078.2851152
# See Figure 1

const ncol = 2001
const nrow = 1002
const nfeatures = 12

X = compute(ctx, rand(Blocks(nrow, ncol÷p), Float32, nrow, ncol))
W = compute(ctx, rand(Blocks(nrow÷p, nfeatures), Float32, nrow, nfeatures))
H = compute(ctx, rand(Blocks(nfeatures, ncol÷p), Float32, nfeatures, ncol))

julia> compute(ctx, W' * (X ./ (W * H)))
ERROR: DimensionMismatch("Block distributions being multiplied are not compatible")
Stacktrace:
 [1] *(x::Dagger.DomainBlocks{2}, y::Dagger.DomainBlocks{2})
   @ Dagger ~/.julia/packages/Dagger/QME91/src/lib/domain-blocks.jl:45
 [2] stage(ctx::Context, mul::Dagger.MatMul{Any, 2})
   @ Dagger ~/.julia/packages/Dagger/QME91/src/array/matrix.jl:178
 [3] cached_stage(ctx::Context, x::Dagger.MatMul{Any, 2})
   @ Dagger ~/.julia/packages/Dagger/QME91/src/array/darray.jl:293
 [4] compute(ctx::Context, x::Dagger.MatMul{Any, 2}; options::Nothing)
   @ Dagger ~/.julia/packages/Dagger/QME91/src/array/darray.jl:76
 [5] compute(ctx::Context, x::Dagger.MatMul{Any, 2})
   @ Dagger ~/.julia/packages/Dagger/QME91/src/array/darray.jl:76
 [6] top-level scope
   @ REPL[21]:1

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions