dobrichev wrote:Great job!
Thank you!
dobrichev wrote:On first sight I have 2 questions
1) Did you ever experiment processing grids in pairs, where the pair differ in only one unavoidable set, say the largest from the clique?
No. What we did investigate is processing multiple grids at a time which are neighbours in the catalogue, i.e., grids that appear next to each other in lexicographic order. For the enumeration of hitting sets, we used only those unavoidable sets that were common to both grids.
This seemed to work well for some of the grids occuring early in the catalogue, but not at all for grids occurring later, so we did not pursue that idea.
dobrichev wrote:2) What is the difference in efficiency of the code between pure C++ compiler generated code and assembly code?
I can't answer that question exactly now, because we never tried using SSE in the C++ version of checker.
In GridChecker, you use the intrinsics the C++ compiler provides in order to execute SSE instructions. But that is something we never actually tried - whenever we used SSE, it was always in the assembly code only. In fact, part of the reason for switching to assembly code was that we felt it would allow us to get the most out of SSE.
dobrichev wrote:Are the assembler instructions mixture of code generated from different compilers, selecting the best piece from each of the compilers?
All of the assembly code is handwritten.