[ 
https://issues.apache.org/jira/browse/IMPALA-3612?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Smith resolved IMPALA-3612.
-----------------------------------
    Fix Version/s: Impala 2.7.0
       Resolution: Fixed

This concerned a specific regression, which has been fixed. See IMPALA-2651 for 
links to more general codegen efforts.

> Investigate ways to reduce optimization overhead of LLVM
> --------------------------------------------------------
>
>                 Key: IMPALA-3612
>                 URL: https://issues.apache.org/jira/browse/IMPALA-3612
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Backend
>    Affects Versions: Impala 2.6.0
>            Reporter: Mostafa Mokhtar
>            Assignee: Michael Smith
>            Priority: Minor
>              Labels: codegen
>             Fix For: Impala 2.7.0
>
>         Attachments: LLVM CallStack.csv, TPC-DS Q64 profile.txt
>
>
> Short running queries in 2.6 regressed by 100ms <-> 500ms due to increase in 
> codegen time, this is mainly due to new code generation for hash table build 
> and prefetching. 
> In 2.6 
> {code}
>      CodeGen:(Total: 1s588ms, non-child: 1s588ms, % non-child: 100.00%)
>          - CodegenTime: 2.897ms
>          - CompileTime: 403.961ms
>          - LoadTime: 0.000ns
>          - ModuleBitcodeSize: 2.24 MB (2353348)
>          - NumFunctions: 272 (272)
>          - NumInstructions: 8.21K (8213)
>          - OptimizationTime: 971.162ms
>          - PrepareTime: 212.672ms
> {code}
> In 2.5
> {code}
>   CodeGen:(Total: 1s028ms, non-child: 1s028ms, % non-child: 100.00%)
>          - CodegenTime: 3.608ms
>          - CompileTime: 246.771ms
>          - LoadTime: 0.000ns
>          - ModuleBitcodeSize: 1.85 MB (1939948)
>          - OptimizationTime: 605.070ms
>          - PrepareTime: 174.832ms
> {code}
> Attached is call stack for LLVM 
> And this is the query I used
> {code}
> select 
>     count(*)
> from
>     (select distinct
>         iss.i_brand_id brand_id,
>             iss.i_class_id class_id,
>             iss.i_category_id category_id
>     from
>         (select 
>         *,
>             (ss_wholesale_cost * ss_sales_price * ss_ext_discount_amt * 
> ss_ext_wholesale_cost * ss_item_sk * ss_cdemo_sk + 1 - 10 + ss_store_sk + 
> ss_store_sk) * 33 * 
> (ss_wholesale_cost * ss_sales_price * ss_ext_discount_amt * 
> ss_ext_wholesale_cost * ss_item_sk * ss_cdemo_sk + 1 - 10 + ss_store_sk + 
> ss_store_sk) * 
> (ss_wholesale_cost * ss_sales_price * ss_ext_discount_amt * 
> ss_ext_wholesale_cost * ss_item_sk * ss_cdemo_sk + 1 - 10 + ss_store_sk + 
> ss_store_sk) * 
> (ss_wholesale_cost * ss_sales_price * ss_ext_discount_amt * 
> ss_ext_wholesale_cost * ss_item_sk * ss_cdemo_sk + 1 - 10 + ss_store_sk + 
> ss_store_sk) * 
> (ss_wholesale_cost * ss_sales_price * ss_ext_discount_amt * 
> ss_ext_wholesale_cost * ss_item_sk * ss_cdemo_sk + 1 - 10 + ss_store_sk + 
> ss_store_sk) + 10 -1 * 
> (ss_wholesale_cost * ss_sales_price * ss_ext_discount_amt * 
> ss_ext_wholesale_cost * ss_item_sk * ss_cdemo_sk + 1 - 10 + ss_store_sk + 
> ss_store_sk) * ss_coupon_amt
> * cast ("10" as double) 
>     from
>         store_sales 
>     limit 1) store_sales, (select 
>         *
>     from
>         item
>     limit 1) iss, (select 
>         *
>     from
>         date_dim
>     limit 1) d1
>     where
>         ss_item_sk = iss.i_item_sk
>             and ss_sold_date_sk = d1.d_date_sk
>             and d1.d_year between 1999 AND 1999 + 2 and 
> (ss_wholesale_cost * ss_sales_price * ss_ext_discount_amt * 
> ss_ext_wholesale_cost * ss_item_sk * ss_cdemo_sk + 1 - 10 + ss_store_sk + 
> ss_store_sk) + (ss_wholesale_cost * ss_sales_price * ss_ext_discount_amt * 
> ss_ext_wholesale_cost * ss_item_sk * ss_cdemo_sk + 1 - 10 + ss_store_sk + 
> ss_store_sk) = 19 and 
> (ss_wholesale_cost * ss_sales_price * ss_ext_discount_amt * 
> ss_ext_wholesale_cost * ss_item_sk * ss_cdemo_sk + 1 - 10 + ss_store_sk + 
> ss_store_sk)  < 0 and
> (ss_wholesale_cost * ss_sales_price * ss_ext_discount_amt * 
> ss_ext_wholesale_cost * ss_item_sk * ss_cdemo_sk + 1 - 10 + ss_store_sk + 
> ss_store_sk) > 10 and
> (ss_wholesale_cost * ss_sales_price * ss_ext_discount_amt * 
> ss_ext_wholesale_cost * ss_item_sk * ss_cdemo_sk + 1 - 10 + ss_store_sk + 
> ss_store_sk) = 100 and 
> ss_customer_sk + 10 - 1 + ss_hdemo_sk = 100 and cast (ss_quantity as string) 
> = "vv") a;
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to