[
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)