A non-intrusive add-on system for parallel execution of database queries over one or more Central Processing Units (CPUs), and one or more Multi Core Processors (MCPs), the system comprising: a) a query analyzer for receiving a query and creating a plurality of sub queries by analyzing the query operations type, according to a query plan received from the DBMS, said sub-queries being executed by the DBMS, and for computing and assigning to each sub-query a target address of either a DBMS on CPUs execution, or on MCPs execution, whichever is more efficient in terms of time or power required for executing said sub-query; b) a query compiler for receiving said sub-queries from said query analyzer, creating an Abstract Syntax Tree and OpenCL primitives only for those sub-queries that are targeted to an MCP, and for conveying both the remaining sub-queries, and the AST and the OpenCL code to a virtual machine; and c) a Virtual Machine which comprises: c1) a task bank for containing said received sub-queries that are targeted to DBMS execution, and said received primitives that are targeted to said one or more MCPs; c2) one or more buffers for containing data resulting from sub-queries executions by said one or more CPUs; and c3) a scheduler for coordinating said primitive execution at the one or more MCPs, depending on data readiness in said one or more buffers as a result of said sub-queries execution by the one or more CPUs; and D) a Hardware Abstraction Layer for monitoring operation of all said MCPs and their various cores, determining those that are available for performing new tasks, and reporting observations results to said query analyzer; wherein said VM also combines said sub-query results by the DBMS and said primitive results by said MCPs to a final query result; wherein the query analyzer decides if the query should go to the CPU or to the MCP based on HAL observation results and the query plan. a) a query analyzer for receiving a query and creating a plurality of sub queries by analyzing the query operations type, according to a query plan received from the DBMS, said sub-queries being executed by the DBMS, and for computing and assigning to each sub-query a target address of either a DBMS on CPUs execution, or on MCPs execution, whichever is more efficient in terms of time or power required for executing said sub-query; b) a query compiler for receiving said sub-queries from said query analyzer, creating an Abstract Syntax Tree and OpenCL primitives only for those sub-queries that are targeted to an MCP, and for conveying both the remaining sub-queries, and the AST and the OpenCL code to a virtual machine; and c) a Virtual Machine which comprises: c1) a task bank for containing said received sub-queries that are targeted to DBMS execution, and said received primitives that are targeted to said one or more MCPs; c2) one or more buffers for containing data resulting from sub-queries executions by said one or more CPUs; and c3) a scheduler for coordinating said primitive execution at the one or more MCPs, depending on data readiness in said one or more buffers as a result of said sub-queries execution by the one or more CPUs; and c1) a task bank for containing said received sub-queries that are targeted to DBMS execution, and said received primitives that are targeted to said one or more MCPs; c2) one or more buffers for containing data resulting from sub-queries executions by said one or more CPUs; and c3) a scheduler for coordinating said primitive execution at the one or more MCPs, depending on data readiness in said one or more buffers as a result of said sub-queries execution by the one or more CPUs; and D) a Hardware Abstraction Layer for monitoring operation of all said MCPs and their various cores, determining those that are available for performing new tasks, and reporting observations results to said query analyzer;