Fast, energy-efficient exponential computations in simd architectures

US2016124709A1 · US · A1

Patent metadata
FieldValue
Publication numberUS-2016124709-A1
Application numberUS-201414532312-A
CountryUS
Kind codeA1
Filing dateNov 4, 2014
Priority dateNov 4, 2014
Publication dateMay 5, 2016
Grant date

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

In one embodiment, a computer-implemented method includes receiving as input a value of a variable x and receiving as input a degree n of a polynomial function being used to evaluate an exponential function e x . A first expression A*(x−ln(2)*K n (x f ))+B is evaluated, by one or more computer processors in a single instruction multiple data (SIMD) architecture, as an integer and is read as a double. In the first expression, K n (x f ) is a polynomial function of the degree n, x f is a fractional part of x/ln(2), A=2 52 /ln(2), and B=1023*2 52 . The result of reading the first expression as a double is returned as the value of the exponential function with respect to the variable x.

First claim

Opening claim text (preview).

1 - 6 . (canceled) 7 . A system comprising: a memory; and one or more processor cores, communicatively coupled to the memory, the one or more processor cores configured to: receive as input a value of a variable x; receive as input a degree n of a polynomial function being used to evaluate an exponential function e x ; evaluate, in a single instruction multiple data (SIMD) architecture, a first expression A*(x−ln(2)*K n (x f ))+B as an integer and read the first expression as a double, wherein K n (x f ) is a polynomial function of the degree n, x f is a fractional part of x/ln(2), A=2 52 /ln(2), and B=1023*2 52 ; and return, as the value of the exponential function with respect to the variable x, the result of reading the first expression as a double. 8 . The system of claim 7 , wherein the one or more processors are further configured to evaluate the exponential function using SIMD parallelism for two or more values of the variable x. 9 . The system of claim 7 , wherein the one or more processors perform the evaluating by, in a first SIMD instruction, multiplying the value of x by log 2 (e) to produce a first temporary result and by, in a second SIMD instruction, subtracting from the first temporary result the floor of the first temporary result. 10 . The system of claim 9 , wherein the one or more processors perform the evaluating by, in one or more additional SIMD instructions, evaluating the polynomial K n (x f ) to produce a second temporary result and subtracting the second temporary result from the first temporary result to product a third temporary result, wherein the one or more additional SIMD instructions comprise an SIMD instruction for each degree of the polynomial K n (x f ). 11 . The system of claim 10 , wherein the one or more processors perform the evaluating by, in a fourth SIMD instruction, computing a long integer as 2 52 +B. 12 . The system of claim 11 , wherein the one or more processors perform the reading the first expression as a double by reading the long integer as a double. 13 . The system of claim 7 , wherein the one or more processors are further configured to select a set of coefficients for the polynomial K n (x f ), wherein the selected coefficients are based on at least one of the Chebyshev polynomial and the Remez polynomial. 14 . A computer program product for evaluating an exponential function, the computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processor to cause the processor to perform a method comprising: receiving as input a value of a variable x; receiving as input a degree n of a polynomial function being used to evaluate an exponential function e x ; evaluating, in a single instruction multiple data (SIMD) architecture, a first expression A*(x−ln(2)*K n (x f ))+B as an integer and reading the first expression as a double, wherein K n (x f ) is a polynomial function of the degree n, x f is a fractional part of x/ln(2), A=2 52 /ln(2), and B=1023*2 52 ; and returning, as the value of the exponential function with respect to the variable x, the result of reading the first expression as a double. 15 . The computer program product of claim 14 , the method further comprising evaluating the exponential function using SIMD parallelism for two or more values of the variable x. 16 . The computer program product of claim 14 , wherein the evaluating comprises computing x f by, in a first SIMD instruction, multiplying the value of x by log 2 (e) to produce a first temporary result and by, in a second SIMD instruction, subtracting from the first temporary result the floor of the first temporary result. 17 . The computer program product of claim 16 , wherein the evaluating comprises, one or more additional SIMD instructions, evaluating the polynomial K n (x f ) to produce a second temporary result and subtracting the second temporary result from the first temporary result to product a third temporary result, wherein the one or more additional SIMD instructions comprise an SIMD instruction for each degree of the polynomial K n (x f ). 18 . The computer program product of claim 17 , wherein the evaluating comprises, in a fourth SIMD instruction, computing a long integer as 2 52 +B. 19 . The computer program product of claim 18 , wherein reading the first expression as a double comprises reading the long integer as a double. 20 . The computer program product of claim 14 , the method further comprising selecting a set of coefficients for the polynomial K n (x f ), wherein the selected coefficients are based on at least one of the Chebyshev polynomial and the Remez polynomial.

Assignees

Inventors

Classifications

  • G06F7/556Primary

    Logarithmic or exponential functions · CPC title

  • single instruction multiple data [SIMD] multiprocessors · CPC title

  • G06F7/483Primary

    Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers {(G06F7/4806, G06F7/4824, G06F7/49, G06F7/491, G06F7/544 take precedence)} · CPC title

  • Instructions to perform operations on packed data, e.g. vector, tile or matrix operations · CPC title

  • Arithmetic instructions · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US2016124709A1 cover?
In one embodiment, a computer-implemented method includes receiving as input a value of a variable x and receiving as input a degree n of a polynomial function being used to evaluate an exponential function e x . A first expression A*(x−ln(2)*K n (x f ))+B is evaluated, by one or more computer processors in a single instruction multiple data (SIMD) architecture, as an integer and is read as a d…
Who is the assignee on this patent?
IBM
What technology area does this patent fall under?
Primary CPC classification G06F7/556. Mapped technology areas include Physics.
When was this patent published?
Publication date Thu May 05 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (A1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).