QuFince: a GPU-accelerated collision search program

For scripts to aid with computation or simulation in cellular automata.
Post Reply
User avatar
calcyman
Moderator
Posts: 2938
Joined: June 1st, 2009, 4:32 pm

QuFince: a GPU-accelerated collision search program

Post by calcyman » April 13th, 2023, 4:16 pm

I've been working on a utility called QuFince which uses the GPU to rapidly test collisions belonging to a large Cartesian product space.

It's different from most search programs in that the 'config file' format is just 2-state RLE, designed to be easily editable in Golly. Here's an example of a QuFince config file:

Code: Select all

x = 576, y = 448, rule = B3/S23
384o$o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o
62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o
62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62bo$o40b2o20b2o40b2o20b2o40b2o20b2o62b2o62b2o62bo$o41bo20b2o41bo20b
2o41bo20b2o17b20o25b2o17b2o43b2o17b2o43bo$o34bo3b3o21b2o34bo3b3o21b2o
34bo3b3o21b2o17b20o25b2o17b2o43b2o17b2o43bo$o33bobobo7b2o15b2o33bobobo
7b2o15b2o33bobobo7b2o15b2o17b20o25b2o17b2o43b2o17b2o43bo$o33bobobob2o
3bobo15b2o33bobobob2o3bobo15b2o33bobobob2o3bobo15b2o17b20o25b2o17b2o
43b2o17b2o43bo$o32b2obobobo5bo16b2o32b2obobobo5bo16b2o32b2obobobo5bo
16b2o17b20o25b2o17b2o43b2o62bo$o33bobobobo2b3o17b2o33bobobobo2b3o17b2o
33bobobobo2b3o17b2o17b20o25b2o17b2o43b2o62bo$o33bobobobobo20b2o33bobob
obobo20b2o33bobobobobo20b2o17b20o25b2o17b2o43b2o62bo$o32b2obobobobob2o
3bo13b2o32b2obobobobob2o3bo13b2o32b2obobobobob2o3bo13b2o17b20o25b2o17b
2o43b2o62bo$o33bobobobobobobobobo12b2o33bobobobobobobobobo12b2o33bobob
obobobobobobo12b2o17b20o25b2o17b2o43b2o62bo$o33bobobobobobobob2o13b2o
33bobobobobobobob2o13b2o33bobobobobobobob2o13b2o17b20o25b2o17b2o43b2o
62bo$o32b2obobobobobobo16b2o32b2obobobobobobo16b2o32b2obobobobobobo16b
2o62b2o62b2o62bo$o33bobobobobobobo16b2o33bobobobobobobo16b2o33bobobobo
bobobo16b2o62b2o62b2o62bo$o33bobobobobobob2o15b2o33bobobobobobob2o15b
2o33bobobobobobob2o15b2o62b2o62b2o62bo$o32b2obobobobobobo16b2o32b2obob
obobobobo16b2o32b2obobobobobobo16b2o62b2o62b2o62bo$o35bobobobobobo16b
2o35bobobobobobo16b2o35bobobobobobo16b2o62b2o62b2o62bo$o32b2obobobobob
obob2o13b2o32b2obobobobobobob2o13b2o32b2obobobobobobob2o13b2o62b2o62b
2o62bo$o32bo2bobobobobobobobo12b2o33bobobobobobobobobo12b2o33bobobobob
obobobobo12b2o62b2o62b2o62bo$o33bobobobobob2o3bo13b2o33bobobobobob2o3b
o13b2o33bobobobobob2o3bo13b2o62b2o62b2o62bo$o32b2obobobobo20b2o32b2obo
bobobo20b2o32b2obobobobo20b2o62b2o62b2o62bo$o33bobobobo2b3o17b2o33bobo
bobo2b3o17b2o33bobobobo2b3o17b2o62b2o62b2o62bo$o33bobobobo5bo16b2o33bo
bobobo5bo16b2o33bobobobo5bo16b2o62b2o62b2o62bo$o32b2obobob2o3bobo15b2o
32b2obobob2o3bobo15b2o32b2obobob2o3bobo15b2o62b2o62b2o62bo$o33bobobo7b
2o15b2o33bobobo7b2o15b2o33bobobo7b2o15b2o62b2o62b2o62bo$o33bobo2b3o21b
2o33bobo2b3o21b2o33bobo2b3o21b2o62b2o62b2o62bo$o32b2obo5bo20b2o32b2obo
5bo20b2o32b2obo5bo20b2o62b2o62b2o62bo$o33bob2o3b2o20b2o33bob2o3b2o20b
2o33bob2o3b2o20b2o62b2o62b2o62bo$o33bo28b2o33bo28b2o33bo28b2o62b2o62b
2o62bo$o32b2o28b2o32b2o28b2o32b2o28b2o62b2o62b2o62bo$o62b2o62b2o62b2o
62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o
62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62bo$384o65$576o$o62b2o62b2o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o17bo44b2o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o18bo43b2o62b2o16bobo43b2o62b2o18bo43b2o62b
2o17bo44b2o62bo$o62b2o16b3o43b2o62b2o17b2o43b2o62b2o16bobo43b2o62b2o
18b2o42b2o62bo$o62b2o62b2o62b2o17bo44b2o62b2o17b2o43b2o62b2o17b2o43b2o
62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b
2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o
62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b
2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o
22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o
22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o
22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o
22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o
22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o
22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o
22b15o25b2o62b2o22b15o25bo$o29bo32b2o62b2o22b15o25b2o62b2o22b15o25b2o
62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o
62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o
62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o
62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o
62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o
62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o
62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o
62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b
2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b
2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b
2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b
2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b
2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b
2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b
2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$576o$576o$o62b
2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o17bo44b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o18bo43b2o62b2o16bo
bo43b2o62b2o18bo43b2o62b2o17bo44b2o62bo$o62b2o16b3o43b2o62b2o17b2o43b
2o62b2o16bobo43b2o62b2o18b2o42b2o62bo$o62b2o62b2o62b2o17bo44b2o62b2o
17b2o43b2o62b2o17b2o43b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b
2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o
62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b
2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o22b15o
25b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o
25b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o
25b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o
25b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o
25b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o
25b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o
25b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o29bo32b2o62b2o
22b15o25b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o
22b15o25b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o
22b15o25b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o
22b15o25b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o
22b15o25b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o
22b15o25b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o
22b15o25b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o
22b15o25b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$576o65$576o$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$
o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b
15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b
15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b
15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b
15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b
15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b
15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b
15o25b2o62b2o22b15o25bo$o29bo32b2o62b2o22b15o25b2o62b2o22b15o25b2o62b
2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b
2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b
2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b
2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b
2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b
2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o17bo44b2o22b15o25b
2o17b2o43b2o22b15o25b2o17b2o43b2o22b15o25bo$o62b2o16b3o43b2o22b15o25b
2o17b2o43b2o22b15o25b2o16bobo43b2o22b15o25b2o18b2o42b2o22b15o25bo$o62b
2o18bo43b2o62b2o16bobo43b2o62b2o18bo43b2o62b2o17bo44b2o62bo$o62b2o17bo
44b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o
62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o
62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o
62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o
62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o
62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o
62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o
62b2o62b2o62b2o62b2o62b2o62b2o62b2o62bo$576o$192o$o62b2o62b2o62bo$o62b
2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b
2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo
$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b
2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b
2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo
$o62b2o62b2o62bo$o62b2o62b2o29bo32bo$o62b2o62b2o29bo32bo$o62b2o62b2o
29bo32bo$o62b2o62b2o29bo32bo$o62b2o62b2o29bo32bo$o62b2o62b2o29bo32bo$o
62b2o62b2o29bo32bo$o29bo32b2o62b2o29bo32bo$o62b2o62b2o29bo32bo$o62b2o
62b2o29bo32bo$o62b2o62b2o29bo32bo$o62b2o62b2o29bo32bo$o62b2o62b2o29bo
32bo$o62b2o62b2o29bo32bo$o62b2o16b3o43b2o29bo32bo$o62b2o18bo43b2o62bo$
o62b2o17bo44b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o
62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o
62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o
62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o
62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o
62b2o62bo$192o!
The configuration is a grid of 64x64 boxes. The first row must be a 6-tuple of the form:
  • Initial input pattern;
  • AND mask (the set of cells that we care about);
  • Target (the subset of the AND mask which we want to be on);
  • Number of generations by which the conversion must happen (in this case, 200), encoded in the population of the pattern;
  • Number of generations beyond that for which it must match again (in this case, 20), largely to rule out false-positives;
  • Earliest time at which objects are allowed to interact with each other (in this case, eight), to exclude portions of the search space where (for example) two gliders/catalysts overlap or are too close to be valid.
Then there must be exactly two groups of rows (called A and B), each preceded by a blank row. In the example pattern, there are two rows in each group, but you can have any positive number of rows (note that you'll want it to be small-ish if you expect the search to complete in a sensible amount of time). These are 'reactant rows' and have an odd number of boxes:
  • The first box in a reactant row consists of a single cell which we'll call the origin.
  • The remaining boxes are pairs of the form (reactant, translation_mask). This allows you to specify lots of different positions for a reactant, each corresponding to a cell in the translation mask. The translation mask is interpreted relative to the 'origin' cell in the leftmost box on the row.
For example, we have the four phases of a glider and use a 15x15 origin-centred square as a translation mask, so that the glider can be moved by {-7, ... ,+7} in each direction. The final reactant row only has one phase of the glider and only allows vertical translations, because otherwise we'd repeat a lot of the search space (advancing/delaying all gliders by the same amount would have the same effect).

Important: all of the boxes must be exactly aligned on multiples of 64 pixels. QuFince checks for this and throws an error if there are unaligned boxes.

Now, QuFince does a Cartesian product search: it tries all combinations of picking exactly one reactant in each row and combining them with the initial input pattern. Because there are 4 rows of reactants in this particular example file, this is a 4-reactant search. The reactants here are gliders; it's searching for ways to use 2 SE and 2 NE gliders to perform a conversion component that helped with the spacefiller synthesis project.

Naively, we have 900 * 900 * 900 * 15 = 11 billion collisions, but QuFince does some optimisations to reduce this:
  • At the beginning, on the CPU, we compute the within-A Cartesian product (900 * 900 = 810000 for this example) and the within-B Cartesian product (900 * 15 = 13500).
  • If any of the resulting partial products contain invalid interactions, they are removed.
  • Duplications within each of the two groups are also removed (this happens quite a lot in A, because the first and second rows are identical, so we end up double-counting possibilities; this deduplication takes care of this).
Here's the beginning of the output from QuFince running on this input file. The lines "810000 --> 617474 --> 308737" and "13500 --> 9782 --> 9727" show the reductions of the sizes of the groups A and B (the first arrow is from removing invalid interactions; the second arrow is from deduplication), and it reports the overall reduction factor of the search space:

Code: Select all

Reading file...
Instruction set AVX2 detected
36 boxes found.
Profile: 6 0 9 9 0 9 3
Minimum generation for reaction to begin: 8
Must match in generations 200 and 220
900/900
900/900
900/900
15/15
Estimated search space: 1.0935e+10
810000 --> 617474 --> 308737
13500 --> 9782 --> 9727
Actual search space: 3003084799 (reduced by a factor of 3.64126)
# progress: 100/308737; speed = 907M iters/sec
# progress: 200/308737; speed = 1808M iters/sec
#1 solutions.
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
.........................................oo.....................
..........................................o.....................
...................................o...ooo......................
..................................o.o.o.......oo................
..................................o.o.o.oo...o.o................
..............o.o.....o..........oo.o.o.o.....o.................
...............oo...o.o...........o.o.o.o..ooo..................
...............o.....oo...........o.o.o.o.o.....................
.................................oo.o.o.o.o.oo...o..............
..................................o.o.o.o.o.o.o.o.o.............
..................................o.o.o.o.o.o.o.oo..............
.................................oo.o.o.o.o.o.o.................
..................................o.o.o.o.o.o.o.................
..................................o.o.o.o.o.o.oo................
.................................oo.o.o.o.o.o.o.................
....................................o.o.o.o.o.o.................
.................................oo.o.o.o.o.o.o.oo..............
.................................o..o.o.o.o.o.o.o.o.............
..................................o.o.o.o.o.oo...o..............
.................ooo.............oo.o.o.o.o.....................
...................o..............o.o.o.o..ooo..................
..................o...............o.o.o.o.....o.................
.....................ooo.........oo.o.o.oo...o.o................
.......................o..........o.o.o.......oo................
......................o...........o.o..ooo......................
.................................oo.o.....o.....................
..................................o.oo...oo.....................
..................................o.............................
.................................oo.............................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................

# progress: 300/308737; speed = 1847M iters/sec
# progress: 400/308737; speed = 1899M iters/sec
# progress: 500/308737; speed = 1899M iters/sec
# progress: 600/308737; speed = 1897M iters/sec
# progress: 700/308737; speed = 1900M iters/sec
The reported progress is in grid-generations per second (so multiply by 64*64 = 4096 to get cell-generations per second). It's doing 1.9 billion grid-generations per second, i.e. 7.8 trillion cell-generations per second, on a Tesla T4 GPU. The whole search should complete in around 5 minutes on this hardware, which is hugely faster than trying to do this on the CPU.

To run this on your computer, you need to have an NVIDIA GPU and have the nvcc compiler installed (same as if you were running the G1 symmetry in apgsearch, which shares a lot of code). You can alternatively run this in Google Colab on the cloud using this link, which also contains the instructions for compiling:

Code: Select all

git clone https://gitlab.com/apgoucher/lifelib.git
cd lifelib
git submodule update --init --recursive
./compile_qufince.sh
The invocation ./qufince cuda2/qftest.rle runs the compiled program. The argument to QuFince (on the last line) is the path to the input file.

As well as searching for glider collisions, you could easily create input files to perform CatForce-style searches instead, by letting the initial input pattern (the top-left box) be an active region, and having different types and orientations of catalysts as reactants. You could even have mixed searches where some reactants are gliders and others are catalysts; QuFince is completely agnostic to this. The name QuFince is inspired by CatForce: we've inserted an F before the preantepenultimate letter in the Spanish word for 15 instead of the Spanish word for 14.

Important: the expanded products for each of A and B (in this case, 810000 and 13500) must be able to fit in memory. It's best to make these two numbers as balanced as possible (so as to minimise the sum subject to the product necessarily equalling the size of the search space). Also, if you have a couple of gliders from the same direction, or catalysts that could interfere with each other, you'll benefit from having them be in the same group of rows to take advantage of the deduplication and invalid interaction elimination.
What do you do with ill crystallographers? Take them to the mono-clinic!

User avatar
calcyman
Moderator
Posts: 2938
Joined: June 1st, 2009, 4:32 pm

Re: QuFince: a GPU-accelerated collision search program

Post by calcyman » April 14th, 2023, 3:03 pm

Version 2 of QuFince is now available. The main feature enhancement is the support for catalysts (reactants that are required to be restored).

To enable catalyst searches, add a seventh box to the header row and fill it with 3 dots. Here's a fairly simple example which finds the R64:

Code: Select all

x = 448, y = 448, rule = B3/S23
448o$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o
62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o10b42o10b2o62b2o62b2o62b2o62b2o62bo$o62b2o10b
42o10b2o62b2o62b2o62b2o62b2o62bo$o62b2o10b42o10b2o62b2o62b2o62b2o62b2o
62bo$o62b2o10b42o10b2o62b2o62b2o62b2o62b2o62bo$o62b2o10b42o10b2o62b2o
62b2o62b2o62b2o62bo$o62b2o10b42o10b2o62b2o62b2o62b2o62b2o62bo$o62b2o
10b42o10b2o62b2o62b2o62b2o62b2o22bobobo35bo$o62b2o10b42o10b2o62b2o62b
2o62b2o62b2o62bo$o62b2o10b42o10b2o62b2o62b2o62b2o62b2o62bo$o62b2o10b
42o10b2o62b2o17b20o25b2o17b2o43b2o17b2o43b2o62bo$o62b2o10b42o10b2o62b
2o17b20o25b2o17b2o43b2o17b2o43b2o62bo$o62b2o10b42o10b2o62b2o17b20o25b
2o17b2o43b2o17b2o43b2o62bo$o62b2o10b42o10b2o62b2o17b20o25b2o17b2o43b2o
17b2o43b2o62bo$o62b2o10b42o10b2o62b2o17b20o25b2o17b2o43b2o62b2o62bo$o
62b2o10b42o10b2o62b2o17b20o25b2o17b2o43b2o62b2o62bo$o62b2o10b42o10b2o
62b2o17b20o25b2o17b2o43b2o62b2o62bo$o62b2o10b42o10b2o62b2o17b20o25b2o
17b2o43b2o62b2o62bo$o62b2o10b42o10b2o62b2o17b20o25b2o17b2o43b2o62b2o
62bo$o62b2o10b42o10b2o62b2o17b20o25b2o17b2o43b2o62b2o62bo$o24bo37b2o
10b42o10b2o62b2o62b2o62b2o62b2o62bo$o24bobo35b2o10b42o10b2o62b2o62b2o
62b2o62b2o62bo$o24b3o35b2o10b42o10b2o62b2o62b2o62b2o62b2o62bo$o26bo35b
2o10b42o10b2o62b2o62b2o62b2o62b2o62bo$o62b2o10b42o10b2o62b2o62b2o62b2o
62b2o62bo$o62b2o10b42o10b2o62b2o62b2o62b2o62b2o62bo$o62b2o10b42o10b2o
62b2o62b2o62b2o62b2o62bo$o62b2o10b42o10b2o62b2o62b2o62b2o62b2o62bo$o
62b2o10b42o10b2o62b2o62b2o62b2o62b2o62bo$o62b2o10b42o10b2o62b2o62b2o
62b2o62b2o62bo$o62b2o10b42o10b2o62b2o62b2o62b2o62b2o62bo$o13b2o47b2o
10b42o10b2o62b2o62b2o62b2o62b2o62bo$o13b2o47b2o10b42o10b2o62b2o62b2o
62b2o62b2o62bo$o38b2o22b2o10b42o10b2o62b2o62b2o62b2o62b2o62bo$o38b2o
22b2o10b42o10b2o62b2o62b2o62b2o62b2o62bo$o62b2o10b42o10b2o62b2o62b2o
62b2o62b2o62bo$o62b2o10b42o10b2o62b2o62b2o62b2o62b2o62bo$o62b2o10b42o
10b2o62b2o62b2o62b2o62b2o62bo$o62b2o10b42o10b2o62b2o62b2o62b2o62b2o62b
o$o62b2o10b42o10b2o62b2o62b2o62b2o62b2o62bo$o62b2o10b42o10b2o62b2o62b
2o62b2o62b2o62bo$o62b2o10b42o10b2o62b2o62b2o62b2o62b2o62bo$o62b2o10b
42o10b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo
$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o
62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$448o65$192o$o62b2o62b2o
62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o
62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o
62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o
62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o
62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o
38b2o22b2o62bo$o62b2o38b2o22b2o62bo$o62b2o62b2o22b15o25bo$o62b2o62b2o
22b15o25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b
15o25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o29bo32b2o62b2o22b
15o25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o
25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo
$o62b2o62b2o22b15o25bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo
$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b
2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b
2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo
$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b
2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$192o$192o$o62b2o62b2o62bo$
o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o
62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o
62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o
62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o
62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o38b2o
22b2o62bo$o62b2o38b2o22b2o62bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o
25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo
$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o29bo32b2o62b2o22b15o25bo
$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o
62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b
2o62b2o22b15o25bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b
2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b
2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo
$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b
2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b
2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$192o65$192o$o62b2o62b2o62bo$o
62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o
62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o
62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o
62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o
62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o38b2o
22b2o62bo$o62b2o38b2o22b2o62bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o
25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo
$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o29bo32b2o62b2o22b15o25bo
$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o
62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b
2o62b2o22b15o25bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b
2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b
2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo
$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b
2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b
2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$192o$192o$o62b2o62b2o62bo$o62b
2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b
2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo
$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b
2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b
2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o38b2o22b
2o62bo$o62b2o38b2o22b2o62bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b
o$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o
62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o29bo32b2o62b2o22b15o25bo$o
62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b
2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b2o62b2o22b15o25bo$o62b2o
62b2o22b15o25bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o
62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o
62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o
62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o
62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$o62b2o62b2o
62bo$o62b2o62b2o62bo$o62b2o62b2o62bo$192o!
Note that catalysts 'override' the cells to match: we've asked for nothing to survive (in that large solid 42x42 square), but the catalysts are required to survive, and catalysts being restored overrides the constraint that nothing should survive. This is convenient because it makes the constraint 'nothing survives in a certain area except for any catalysts' much easier to write down.

Here's an example of a 4-catalyst search that finds (only) the Callahan G-to-H. Here, we just want the beehive to be restored and the catalysts to survive. We've specified a minimum interacting generation of 30 to stop the catalysts from eating the glider before it hits the beehive:

Code: Select all

x = 448, y = 448, rule = B3/S23
448o$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o
62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o22bobobo35bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo
$o62b2o62b2o62b2o17b20o25b2o17b2o43b2o17b5o40b2o62bo$o21bo40b2o62b2o
62b2o17b20o25b2o17b2o43b2o17b5o40b2o62bo$o22bo39b2o62b2o62b2o17b20o25b
2o17b2o43b2o17b5o40b2o62bo$o20b3o39b2o62b2o62b2o17b20o25b2o17b2o43b2o
17b5o40b2o62bo$o62b2o62b2o62b2o17b20o25b2o17b2o43b2o17b5o40b2o62bo$o
62b2o62b2o62b2o17b20o25b2o17b2o43b2o17b5o40b2o62bo$o62b2o62b2o62b2o17b
20o25b2o17b2o43b2o62b2o62bo$o62b2o62b2o62b2o17b20o25b2o17b2o43b2o62b2o
62bo$o62b2o62b2o62b2o17b20o25b2o17b2o43b2o62b2o62bo$o62b2o62b2o62b2o
17b20o25b2o17b2o43b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo
$o29b2o31b2o29b2o31b2o29b2o31b2o62b2o62b2o62b2o62bo$o28bo2bo30b2o28bo
2bo30b2o28bo2bo30b2o62b2o62b2o62b2o62bo$o29b2o31b2o29b2o31b2o29b2o31b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b
2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o
62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo
$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o
62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o
62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$448o65$448o$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$
o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62b
o$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o
62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o
62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o36bo
25b2o62b2o35b2o25b2o62b2o62b2o62bo$o62b2o34b3o25b2o62b2o35bo26b2o62b2o
62b2o62bo$o62b2o33bo28b2o62b2o33bobo26b2o62b2o33b2o27b2o62bo$o62b2o33b
2o27b2o62b2o33b2o27b2o62b2o33b2o27b2o62bo$o62b2o62b2o22b15o25b2o62b2o
22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o
22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b
2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b
2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b
2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25b
o$o29bo32b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b
2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b
2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b
2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o
62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o
25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o
25b2o62b2o22b15o25bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b
2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o
62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo
$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o
62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o
62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$448o$448o$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o
62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo
$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o
62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o
62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o23bo38b2o
62b2o23b2o37b2o62b2o62b2o62bo$o62b2o23b3o36b2o62b2o24bo37b2o62b2o62b2o
62bo$o62b2o26bo35b2o62b2o24bobo35b2o62b2o25b2o35b2o62bo$o62b2o25b2o35b
2o62b2o25b2o35b2o62b2o25b2o35b2o62bo$o62b2o62b2o22b15o25b2o62b2o22b15o
25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o
25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o
22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o
22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o
22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o29bo
32b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o
25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o
25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o
25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o
22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o
22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o
22b15o25bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o
62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b
2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o
62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo
$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o
62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62bo$448o65$448o$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b
2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o
62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo
$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o
62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o
62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o22b15o
25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o
25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o
25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o
22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o
22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o
22b15o25bo$o29bo32b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o
62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o
25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o
25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o
25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o
22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o33b2o27b2o22b15o25b2o
33b2o27b2o22b15o25b2o33b2o27b2o22b15o25bo$o62b2o33bo28b2o62b2o33bobo
26b2o62b2o33b2o27b2o62bo$o62b2o34b3o25b2o62b2o35bo26b2o62b2o62b2o62bo$
o62b2o36bo25b2o62b2o35b2o25b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o
62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b
2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o
62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo
$448o$448o$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o
62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b
2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o
62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b
2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o
62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo
$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o
62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o22b15o25b2o62b2o
22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o
22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b
2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b
2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b
2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25b
o$o29bo32b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b
2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b
2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b
2o22b15o25bo$o62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o
62b2o62b2o22b15o25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o62b2o22b15o
25b2o62b2o22b15o25b2o62b2o22b15o25bo$o62b2o25b2o35b2o22b15o25b2o25b2o
35b2o22b15o25b2o25b2o35b2o22b15o25bo$o62b2o26bo35b2o62b2o24bobo35b2o
62b2o25b2o35b2o62bo$o62b2o23b3o36b2o62b2o24bo37b2o62b2o62b2o62bo$o62b
2o23bo38b2o62b2o23b2o37b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b
2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o
62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b
2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o
62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b
2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o
62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b
2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o
62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b
2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$o62b2o
62b2o62b2o62b2o62b2o62b2o62bo$o62b2o62b2o62b2o62b2o62b2o62b2o62bo$448o
!
You might be wondering why 3 dots are used to specify a catalyst search: it's to add some flexibility, where you can specify that either group A reactants should be restored (1 dot), group B reactants should be restored (2 dots), or all reactants should be restored (3 dots).

QuFince version 2 also includes a couple of speed improvements:
  • Period-2 periodicity detection is added to avoid redundant work if a collision has stabilised.
  • Some minor CUDA code changes (e.g. partial loop unrolling) give a 5% speedup.
What do you do with ill crystallographers? Take them to the mono-clinic!

User avatar
rowett
Moderator
Posts: 3823
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: QuFince: a GPU-accelerated collision search program

Post by rowett » April 14th, 2023, 5:55 pm

calcyman wrote:
April 13th, 2023, 4:16 pm
To run this on your computer, you need to have an NVIDIA GPU and have the nvcc compiler installed (same as if you were running the G1 symmetry in apgsearch, which shares a lot of code).
I ran this successfully on my Windows 11 machine under WSL using Ubuntu and an NVIDIA GeForce RTX 2070 GPU. Test took 4 minutes and 33 seconds to complete.

Code: Select all

chris@OFFICE2:~/lifelib$ time ./qufince cuda2/qftest.rle
Reading file...
Instruction set AVX2 detected
36 boxes found.
Profile: 6 0 9 9 0 9 3
Minimum generation for reaction to begin: 8
Must match in generations 200 and 220
900/900
900/900
900/900
15/15
Estimated search space: 1.0935e+10
810000 --> 617474 --> 308737
13500 --> 9782 --> 9727
Actual search space: 3003084799 (reduced by a factor of 3.64126)
Chunk size: 256
# progress: 256/308737; speed = 1716M iters/sec = 10078K colls/sec

...

# progress: 307968/308737; speed = 2210M iters/sec = 11259K colls/sec
# progress: 308224/308737; speed = 2213M iters/sec = 11256K colls/sec
# progress: 308480/308737; speed = 2209M iters/sec = 11250K colls/sec
# progress: 308736/308737; speed = 2217M iters/sec = 11289K colls/sec
# progress: 308737/308737; speed = 1821M iters/sec = 9272K colls/sec

real	4m32.981s
user	4m31.882s
sys	0m0.696s
chris@OFFICE2:~/lifelib$

User avatar
calcyman
Moderator
Posts: 2938
Joined: June 1st, 2009, 4:32 pm

Re: QuFince: a GPU-accelerated collision search program

Post by calcyman » April 18th, 2023, 4:40 pm

QuFince v3 has been released!

Here are the following feature enhancements:
  • Support for boundary cells to control the allowed envelope of the pattern.
  • Support for symmetries.
  • Much faster preprocessing (happens on the GPU now).
  • Support for periodicity filters.
  • RLE output for easy piping into apgsearch.
  • Huge improvements to the Colab notebook to make it easier to configure.
What do you do with ill crystallographers? Take them to the mono-clinic!

Post Reply