I am reading through Postgres and PGStrom. Regarding the planning factors, I need some clarifications.
Planner in Postgres checks for different scan and join methods, and
then find the cheapest one and creates a query plan tree. While going
for same thing in GPU, the checks should also be made for, whether it is
device executable or not and the query plan tree from Postgres has been
How this planning in GPU actually works for? How to determine device
executables? What are the factors considered for the planner in GPU?
example, in gpujoin.c, the function responsible for this plan is
pgstrom_post_planner_gpujoin. What is the work of this function? What is
this actually doing? It is updating some target list. What are they?
It is checking for pgstrom_device_expression(tle->expr) i.e., for device executables. What are the tasks covered under this?
How to plan for query executions in gpu? How it is different from plan for query execution in CPU?