Patents by Inventor Ehsan Amiri
Ehsan Amiri has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).
-
Patent number: 12164892Abstract: A method for fusing functions of a software program is provided. The method includes processing an intermediate representation (IR) of the software program and determining one or more function call candidates capable of fusion based on the processed IR. The method further includes determining similarities between the function call candidates and generating a merged function of the function call candidates based on the determined similarities. The method further includes generating at least one interleaved version of the merged function and determining an optimized function version from among the merged function and the at least one interleaved version. The method further includes generating a fused function based on the determined optimized function version.Type: GrantFiled: February 18, 2022Date of Patent: December 10, 2024Assignee: HUAWEI TECHNOLOGIES CO., LTD.Inventors: Mehrnoosh Heidarpour, Henry Fangli Kao, Ehsan Amiri, Congzhe Cao
-
Publication number: 20240220219Abstract: A method and apparatus for computer operation improvement by flattening multi-level data structures to optimize pointer chase is provided. Within computer program code, one or more chains of multiple pointers which ultimately reference stored information to be processed are identified. These chains are analyzed to determine the feasibility of replacing the chains with a flatter data structure. In the flatter data structure, the stored information is accessible more directly. For example the data may be stored in a single array by which it can be accessed directly. When feasible, a chain is replaced with such a data structure and the computer program code is adjusted to implement the improved data structure in place of the associated chain. Candidate chains can be identified or prioritized for example on the basis of the expected impact to computer performance, e.g. in terms of operating speed or resource usage.Type: ApplicationFiled: December 19, 2023Publication date: July 4, 2024Applicant: HUAWEI TECHNOLOGIES CO., LTD.Inventors: Hao JIN, Mehrnoosh HEIDARPOUR, Ehsan AMIRI, Bryan Pak Kwai CHAN, Yibo YU
-
Patent number: 11816488Abstract: There is provided methods and devices for dynamically simplifying processor instructions. A method includes receiving, at a computing device, processor instructions and determining, by the computing device, if instruction simplification is enabled for an instruction being processed. The method further includes determining, by the computing device, from an instruction simplification table if the instruction is capable of being simplified and scheduling, by the computing device, a simplified instruction based on the determination from the instruction simplification table. A device includes a processor, and a non-transient computer readable memory having stored thereon instructions which when executed by the processor configure the device to execute the methods disclosed herein.Type: GrantFiled: November 10, 2021Date of Patent: November 14, 2023Assignee: HUAWEI TECHNOLOGIES CO., LTD.Inventors: Henry Fangli Kao, Shehab Yomn Abdellatif Elsayed, Tomasz Sebastian Czajkowski, Reza Azimi, Ehsan Amiri
-
Patent number: 11755299Abstract: There is provided methods and apparatus to improve runtime by computer programs at compilation time. A compiler analyzes code to be translated into machine executable instructions to identify overloaded functional units of the target processor, and replaces instructions scheduled on the overloaded functional unit to an idle unit using functionally equivalent operations on the idle unit. The replacement instructions may be taken from an instruction replacement library comprising function calls that implement functionality of a functional unit of the target processor on another functional unit of the target processor.Type: GrantFiled: June 23, 2021Date of Patent: September 12, 2023Assignee: Huawei Technologies Co., Ltd.Inventors: Tomasz S. Czajkowski, Ehsan Amiri
-
Publication number: 20230266950Abstract: A method for fusing functions of a software program is provided. The method includes processing an intermediate representation (IR) of the software program and determining one or more function call candidates capable of fusion based on the processed IR. The method further includes determining similarities between the function call candidates and generating a merged function of the function call candidates based on the determined similarities. The method further includes generating at least one interleaved version of the merged function and determining an optimized function version from among the merged function and the at least one interleaved version. The method further includes generating a fused function based on the determined optimized function version.Type: ApplicationFiled: February 18, 2022Publication date: August 24, 2023Applicant: HUAWEI TECHNOLOGIES CO., LTD.Inventors: Mehrnoosh HEIDARPOUR, Henry KAO, Ehsan AMIRI, Congzhe CAO
-
Publication number: 20230145754Abstract: There is provided methods and devices for dynamically simplifying processor instructions. A method includes receiving, at a computing device, processor instructions and determining, by the computing device, if instruction simplification is enabled for an instruction being processed. The method further includes determining, by the computing device, from an instruction simplification table if the instruction is capable of being simplified and scheduling, by the computing device, a simplified instruction based on the determination from the instruction simplification table. A device includes a processor, and a non-transient computer readable memory having stored thereon instructions which when executed by the processor configure the device to execute the methods disclosed herein.Type: ApplicationFiled: November 10, 2021Publication date: May 11, 2023Applicant: HUAWEI TECHNOLOGIES CO., LTD.Inventors: Henry Fangli KAO, Shehab Yomn Abdellatif ELSAYED, Tomasz Sebastian CZAJKOWSKI, Reza AZIMI, Ehsan AMIRI
-
Publication number: 20220413818Abstract: There is provided methods and apparatus to improve runtime by computer programs at compilation time. A compiler analyzes code to be translated into machine executable instructions to identify overloaded functional units of the target processor, and replaces instructions scheduled on the overloaded functional unit to an idle unit using functionally equivalent operations on the idle unit. The replacement instructions may be taken from an instruction replacement library comprising function calls that implement functionality of a functional unit of the target processor on another functional unit of the target processor.Type: ApplicationFiled: June 23, 2021Publication date: December 29, 2022Inventors: Tomasz S. Czajkowski, Ehsan Amiri
-
Patent number: 11366646Abstract: A method for scheduling instructions for execution on a computer system includes scanning a plurality of loop instructions that are modulo scheduled to identify a first instruction and a second instruction that both utilize a register of the computer system upon execution of the plurality of instructions. The loop has a first initiation interval. The first instruction defines a first value of the register in a first iteration of the loop and the second instruction redefines the value of the register to a second value in a subsequent iteration of the loop prior to a use of the first value in the first iteration of the loop. A copy instruction is inserted in the loop instructions to copy the first value prior to execution of the second instruction. A schedule is determined after the insertion of the one or more copy instructions giving a second initiation interval.Type: GrantFiled: January 23, 2020Date of Patent: June 21, 2022Assignee: HUAWEI TECHNOLOGIES CO., LTD.Inventors: Ehsan Amiri, Ning Xie
-
Publication number: 20210232422Abstract: A method for scheduling instructions for execution on a computer system includes scanning a plurality of loop instructions that are modulo scheduled to identify a first instruction and a second instruction that both utilize a register of the computer system upon execution of the plurality of instructions. The loop has a first initiation interval. The first instruction defines a first value of the register in a first iteration of the loop and he second instruction redefines the value of the register to a second value in a subsequent iteration of the loop prior to a use of the first value in the first iteration of the loop. A copy instruction is inserted in the loop instructions to copy the first value prior to execution of the second instruction. A schedule is determined after the insertion of the one or more copy instructions giving a second initiation interval.Type: ApplicationFiled: January 23, 2020Publication date: July 29, 2021Applicant: HUAWEI TECHNOLOGIES CO., LTD.Inventors: Ehsan AMIRI, Ning XIE
-
Publication number: 20210157638Abstract: There is provided a method, apparatus and network node for determining an optimal functional unit for currently scheduled instructions. Embodiments divide the function unit assignment problem into separate assessments and subsequently reconciling any conflicts arising from different conclusions for the optimal functional unit. The separate assessments of the optimal functional unit relate to assessment of the optimal functional unit in terms of instruction bundling and the optimal functional unit in terms of latency. For the selection of the best functional unit in terms of instruction bundling, consideration regarding maximizing the size of instruction bundle is considered while taking into account the priority of instructions in the available queue. For the selection of the best functional unit in terms of latency, the most important successor of instruction node is primarily considered.Type: ApplicationFiled: November 22, 2019Publication date: May 27, 2021Applicant: HUAWEI TECHNOLOGIES CO., LTD.Inventors: Ehsan AMIRI, Mikhail GUDIM, Ning XIE
-
Publication number: 20180096290Abstract: Techniques for generating a decision to store units of an item may be provided. The units of the item may be offered from a network-based resource. For example, a first ordering channel and a second ordering channel may be provided to facilitate orders of the item from the network-based resource. The first and second ordering channels may allow random orders and deterministic orders of the item, respectively. Additionally, a value of a look ahead window associated with the second ordering channel may be accessed. The value may shift a time for an automatic generation of a deterministic order. Further, a first loss and a second loss may be computed based on the value. The first and second losses may be associated with losing a random order and losing the deterministic order, respectively. The decision may be generated based at least in part on the first loss and the second loss.Type: ApplicationFiled: December 22, 2014Publication date: April 5, 2018Inventors: Hernan P. Awad, Ehsan Amiri, Deepak Bhatia, Ali Sadighian, Tolga Han Seyhan, Nicholas Deming Sherman
-
Patent number: 9632762Abstract: A computer identifies one or more pairs of scalar statements and performs a cost analysis of operations of each of the one or more pairs of scalar statements to determine both a benefit and a cost of operations. The computer determines, based, at least in part, on the cost analysis, a gain for each of the one or more pairs of scalar statements. The computer creates based, at least in part, on the gain, a sorted list of each of the one or more pairs of scalar statements and selects a first pair from the sorted list. The computer issues a query to a hash table using a statement of the first pair and selects from results received from the query, a second pair. The computer then extends, based, at least in part, on the second pair, the first pair to create a pack.Type: GrantFiled: February 17, 2015Date of Patent: April 25, 2017Assignee: International Business Machines CorporationInventors: Ehsan Amiri, Christopher M. Barton, Yaoqing Gao, Denis M. Palmeiro, Raul E. Silvera
-
Patent number: 9557977Abstract: A computer identifies one or more pairs of scalar statements and performs a cost analysis of operations of each of the one or more pairs of scalar statements to determine both a benefit and a cost of operations. The computer determines, based, at least in part, on the cost analysis, a gain for each of the one or more pairs of scalar statements. The computer creates based, at least in part, on the gain, a sorted list of each of the one or more pairs of scalar statements and selects a first pair from the sorted list. The computer issues a query to a hash table using a statement of the first pair and selects from results received from the query, a second pair. The computer then extends, based, at least in part, on the second pair, the first pair to create a pack.Type: GrantFiled: May 1, 2014Date of Patent: January 31, 2017Assignee: International Business Machines CorporationInventors: Ehsan Amiri, Christopher M. Barton, Yaoqing Gao, Denis M. Palmeiro, Raul E. Silvera
-
Patent number: 9542169Abstract: Generating SIMD code from code statements that include non-isomorphic code statements. Code statements are received, each code statement has one or more operators in a respective operator order and each operator has a type and associated operands. At least two code statements among the code statements received have an operator of the same type in a different operator order position. A first operator order position is identified for the operators of the same type in each of the code statements. For each of the code statements, code is generated for operators and their associated operands having operator order positions preceding the first operator order positions. SIMD code is generated at least based on the identified first operator order positions, the corresponding operator type, and the operands associated with the operator type at the identified operator order positions.Type: GrantFiled: August 5, 2015Date of Patent: January 10, 2017Assignee: International Business Machines CorporationInventors: Ehsan Amiri, Christopher M. Barton, Denis M. Palmeiro, Raul Silvera
-
Patent number: 9501268Abstract: Generating SIMD code from code statements that include non-isomorphic code statements. Code statements are received, each code statement has one or more operators in a respective operator order and each operator has a type and associated operands. At least two code statements among the code statements received have an operator of the same type in a different operator order position. A first operator order position is identified for the operators of the same type in each of the code statements. For each of the code statements, code is generated for operators and their associated operands having operator order positions preceding the first operator order positions. SIMD code is generated at least based on the identified first operator order positions, the corresponding operator type, and the operands associated with the operator type at the identified operator order positions.Type: GrantFiled: December 23, 2013Date of Patent: November 22, 2016Assignee: International Business Machines CorporationInventors: Ehsan Amiri, Christopher M. Barton, Denis M. Palmeiro, Raul Silvera
-
Publication number: 20150339110Abstract: Generating SIMD code from code statements that include non-isomorphic code statements. Code statements are received, each code statement has one or more operators in a respective operator order and each operator has a type and associated operands. At least two code statements among the code statements received have an operator of the same type in a different operator order position. A first operator order position is identified for the operators of the same type in each of the code statements. For each of the code statements, code is generated for operators and their associated operands having operator order positions preceding the first operator order positions. SIMD code is generated at least based on the identified first operator order positions, the corresponding operator type, and the operands associated with the operator type at the identified operator order positions.Type: ApplicationFiled: August 5, 2015Publication date: November 26, 2015Inventors: Ehsan Amiri, Christopher M. Barton, Denis M. Palmeiro, Raul Silvera
-
Publication number: 20150317141Abstract: A computer identifies one or more pairs of scalar statements and performs a cost analysis of operations of each of the one or more pairs of scalar statements to determine both a benefit and a cost of operations. The computer determines, based, at least in part, on the cost analysis, a gain for each of the one or more pairs of scalar statements. The computer creates based, at least in part, on the gain, a sorted list of each of the one or more pairs of scalar statements and selects a first pair from the sorted list. The computer issues a query to a hash table using a statement of the first pair and selects from results received from the query, a second pair. The computer then extends, based, at least in part, on the second pair, the first pair to create a pack.Type: ApplicationFiled: February 17, 2015Publication date: November 5, 2015Inventors: Ehsan Amiri, Christopher M. Barton, Yaoqing Gao, Denis M. Palmeiro, Raul E. Silvera
-
Publication number: 20150317137Abstract: A computer identifies one or more pairs of scalar statements and performs a cost analysis of operations of each of the one or more pairs of scalar statements to determine both a benefit and a cost of operations. The computer determines, based, at least in part, on the cost analysis, a gain for each of the one or more pairs of scalar statements. The computer creates based, at least in part, on the gain, a sorted list of each of the one or more pairs of scalar statements and selects a first pair from the sorted list. The computer issues a query to a hash table using a statement of the first pair and selects from results received from the query, a second pair. The computer then extends, based, at least in part, on the second pair, the first pair to create a pack.Type: ApplicationFiled: May 1, 2014Publication date: November 5, 2015Applicant: International Business Machines CorporationInventors: Ehsan Amiri, Christopher M. Barton, Yaoqing Gao, Denis M. Palmeiro, Raul E. Silvera
-
Publication number: 20150178056Abstract: Generating SIMD code from code statements that include non-isomorphic code statements. Code statements are received, each code statement has one or more operators in a respective operator order and each operator has a type and associated operands. At least two code statements among the code statements received have an operator of the same type in a different operator order position. A first operator order position is identified for the operators of the same type in each of the code statements. For each of the code statements, code is generated for operators and their associated operands having operator order positions preceding the first operator order positions. SIMD code is generated at least based on the identified first operator order positions, the corresponding operator type, and the operands associated with the operator type at the identified operator order positions.Type: ApplicationFiled: December 23, 2013Publication date: June 25, 2015Applicant: International Business Machines CorporationInventors: Ehsan Amiri, Christopher M. Barton, Denis M. Palmeiro, Raul Silvera