Currently blocks are oriented vertically, parallel with query. Since target is placed on top border of table and target is usually much bigger then query, we may benefit if blocks would be parallel with target! Example: if query is of length 64 (same as block size) and target is much bigger, then we can expect some narrow band. If blocks are parallel with query, we will have to calculate each cell of matrix, while if blocks are parallel with target we will calculate only small part of matrix!
I think this is important only when band is small and target is much bigger then query. Otherwise it will not bring much speedup.
How hard is it to implement? I have two ideas:
1) transform the problem. If I can do this, that would be great, not much work.
2) use horizontal blocks instead of vertical. This would be major refactoring of code, it sounds hard and complicated.
Currently blocks are oriented vertically, parallel with query. Since target is placed on top border of table and target is usually much bigger then query, we may benefit if blocks would be parallel with target! Example: if query is of length 64 (same as block size) and target is much bigger, then we can expect some narrow band. If blocks are parallel with query, we will have to calculate each cell of matrix, while if blocks are parallel with target we will calculate only small part of matrix! I think this is important only when band is small and target is much bigger then query. Otherwise it will not bring much speedup. How hard is it to implement? I have two ideas: 1) transform the problem. If I can do this, that would be great, not much work. 2) use horizontal blocks instead of vertical. This would be major refactoring of code, it sounds hard and complicated.