Pulse generation for updating the crossbar array

By generating pulses with reduced bit length and optimizing pulse positions for updating crossbar arrays, the method addresses inefficiencies in neural network training, enhancing training speed and accuracy.

JP7663295B2Active Publication Date: 2025-04-16INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2023502838
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-07-15
Filing Date
2021-06-29
Publication Date
2025-04-16
Estimated Expiration
2041-06-29

AI Technical Summary

Technical Problem

Existing neural network training methods face challenges in efficiently updating weights in crossbar arrays, particularly due to the need for extensive offline training and the inefficiencies in performing weight updates in parallel.

Method used

The method involves generating pulses with reduced bit length to represent numbers used in matrix multiplication, selecting optimal pulse positions in a pulse sequence, and performing calculations to update the crossbar array, thereby reducing the complexity and increasing the efficiency of weight updates.

Benefits of technology

This approach accelerates the training of neural networks by reducing the number of pulses required for weight updates, improving training speed and efficiency, and maintaining the accuracy of neural network updates.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007663295000001
    Figure 0007663295000001
  • Figure 0007663295000002
    Figure 0007663295000002
  • Figure 0007663295000003
    Figure 0007663295000003
Patent Text Reader

Abstract

Embodiments of a computer-implemented method, system, and computer program product for updating an analog crossbar array are provided. The embodiments include receiving a number used in a matrix multiplication represented using pulse generation for the crossbar array and receiving a bit length representing the number. The embodiments also include selecting a pulse position in a pulse sequence having the bit length representing the number, performing a calculation using the selected pulse position in the pulse sequence, and updating the crossbar array using the calculation.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates generally to crossbar arrays implementing neural networks, and more particularly to training neural networks using compact fixed-bit-length deterministic pulse generation to update analog crossbar arrays. [Background technology]

[0002] An artificial neural network (ANN), also known as a neuromorphic and synaptronic system, is a computational system that allows electronic systems to essentially function in a manner similar to that of biological nervous systems, such as the human brain. In this detailed description, any reference to an ANN is used in the broadest sense to encompass a wide range of computers and electronic systems that model biological neural networks, including but not limited to pulsed neural networks (PNNs). Some implementations of ANNs do not generally utilize the traditional digital model of manipulating 0s and 1s. Instead, some implementations of ANNs create connections between processing elements that are roughly equivalent in function to neurons in a biological brain.

[0003] ANNs are often implemented as relatively large parallel computing systems with many simple processors with many interconnections. Modeling biological nervous systems using ANNs (or PNNs) can contribute to a better understanding of biological functions. Many ANN models attempt to use some of the "organizational" principles believed to be used in the human brain. Modern computer hardware technologies (e.g., VLSI and optics) have made such modeling feasible. ANNs incorporate knowledge from a variety of domains including neurophysiology, cognitive science / psychology, physics (statistical mechanics), control theory, computer science, artificial intelligence, statistics / mathematics, pattern recognition, computer vision, parallel processing, and hardware (e.g., digital / analog / VLSI / optics).

[0004] Modern ANNs include a network of artificial neurons (also known as "nodes"). These nodes are connected to each other and the strength of their connections to each other is assigned a value. For example, connections may be identified as exhibiting inhibition (maximum value of inhibition is -1.0) or excitation (maximum value of excitation is +1.0). A high magnitude value of the connection indicates a strong connection. Each node also has a transfer function within its design. There are three types of neurons in a typical ANN: input nodes, hidden nodes, and output nodes.

[0005] Input nodes take in information that can be expressed numerically. The information is presented as activation values, where each node is given a numerical value, with numerical values ​​with greater magnitude causing greater activation. This information is then propagated through the network. Activation values ​​are propagated from node to node based on connection strengths (weights), inhibition (or excitation), and transfer functions. Each node sums the activation values ​​it receives. Each node then modifies the values ​​based on its transfer function. Activation flows through the input nodes and hidden layers until it reaches an output node. The output node reflects the input in a manner that is meaningful to the outside world.

[0006] There are many types of neural networks, but the two broadest categories are feedforward and feedback networks. A feedforward network is a non-recurrent network that has an input layer, an output layer, and a hidden layer. Signals can only travel in one direction. Input data is transferred to a layer of processing elements that perform a calculation. Each processing element performs a calculation based on a weighted sum of its inputs. The newly calculated value then becomes the new input value given to the next layer. This process continues until it has passed through all layers and an output has been determined. A threshold transfer function may be used to quantify the output of neurons in the output layer.

[0007] Feedback networks contain feedback paths, which means that their signals can travel in both directions using loops. All possible connections between neurons are allowed. Due to the presence of loops in this type of network, under certain operations it can become a nonlinear dynamical system that changes continuously until an equilibrium state is reached. Feedback networks are often used in associative memories and optimization problems, where the network finds the optimal arrangement of interconnected factors.

[0008] In an ANN, the spike generating function may be modeled by a component commonly known as a time encoder or spike generator. Thus, the ability to gain greater knowledge of the biological nervous system previously described depends on the development of an ANN that models how neural information is encoded in a recurrent network of spiking time encoders. Time encoders provide an alternative to digital and analog encoding of information by asynchronously integrating received signals and generating a subsequent set of asynchronous pulse signals. Certain configurations of time encoder networks allow the extraction of information about the set of signals input to the network from the set of pulses or spikes output from the network. Summary of the Invention

[0009] An embodiment of the present invention is directed to a computer-implemented method of pulse generation for updating a crossbar array. A non-limiting example of the computer-implemented method includes receiving a number used for matrix multiplication to represent using pulse generation for the crossbar array, and receiving a bit length representing the number. The computer-implemented method also includes selecting a pulse position in a pulse sequence having a bit length representing the number, performing a calculation using the selected pulse position in the pulse sequence, and updating the crossbar array using the calculation.

[0010] An embodiment of the present invention is directed to a system for generating pulses to update a crossbar array. A non-limiting example of the system includes a crossbar array having one or more memristor devices and a processor. The processor is configured to receive a number used for matrix multiplication to represent using pulse generation for the crossbar array and to receive a bit length representing the number. The processor is also configured to select a pulse position in a pulse sequence having a bit length representing the number, perform a calculation using the selected pulse position in the pulse sequence, and update the crossbar array using the calculation, where updating the crossbar array changes weights of the one or more memristor devices.

[0011] An embodiment of the invention is directed to a computer program product for pulse generation to update a crossbar array, the computer program product including a computer readable storage medium having program instructions embodied therein. The program instructions are executable by a processor to cause the processor to perform a method. A non-limiting example of the method includes receiving a number used in a matrix multiplication to represent using pulse generation for the crossbar array, and receiving a bit length representing the number. The method also includes selecting a pulse position in a pulse sequence having a bit length representing the number, performing a calculation using the selected pulse position in the pulse sequence, and updating the crossbar array using the calculation.

[0012] Further technical features and advantages are realized by the techniques of the present invention. Embodiments and aspects of the present invention are described in detail herein and are considered a part of the claimed subject matter. For a better understanding, reference is made to the detailed description and drawings. [Brief description of the drawings]

[0013] The particulars of the exclusive rights set forth herein are particularly pointed out and distinctly claimed in the claims at the end of the specification. The foregoing and other features and advantages of embodiments of the present invention will become apparent from the following detailed description when read in conjunction with the accompanying drawings.

[0014] [Figure 1] FIG. 2 shows a diagram of the input and output connections of a biological neuron modeled using an embodiment of the present invention.

[0015] [Diagram 2] 2 illustrates a model of the biological neuron shown in FIG. 1 that can be used in connection with embodiments of the present invention.

[0016] [Diagram 3] A model of an ANN incorporating the biological neural model shown in FIG.

[0017] [Figure 4] FIG. 1 shows a block diagram of a known weight update methodology that can be used in conjunction with an embodiment of the present invention.

[0018] [Diagram 5] FIG. 1 illustrates a block diagram of a computational method usable in one or more embodiments of the present invention.

[0019] [Figure 6] 1 illustrates known equations governing the operation of passive two-terminal memristive structures that can be used in connection with embodiments of the present invention.

[0020] [Figure 7] 1 shows a graphical comparison between the switching characteristics of known two-terminal memristors and the non-linear switching characteristics of a two-terminal RPU that can be used in connection with embodiments of the present invention.

[0021] [Figure 8] 1 shows a crossbar array of a two-terminal nonlinear RPU device according to an embodiment of the present invention, along with a voltage sequence illustrating the operation of the RPU.

[0022] [Figure 9] 4 illustrates an algorithm for selecting bit positions in a bitstream in accordance with one or more embodiments of the present invention.

[0023] [Figure 10] 1 illustrates a graph and a multiplication map according to one or more embodiments of the present invention.

[0024] [Figure 11] 1 illustrates a graph and a multiplication map according to one or more embodiments of the present invention.

[0025] [Figure 12] 1 illustrates a graph and a multiplication map according to one or more embodiments of the present invention.

[0026] [Figure 13] 1 illustrates a flowchart of a method for generating pulses to update a crossbar array in accordance with one or more embodiments of the present invention.

[0027] [Figure 14] 1 shows a block diagram illustrating an example of a processing system for practicing the teachings herein.

[0028] The figures shown herein are exemplary. There may be many variations to the figures or the operations described herein without departing from the spirit of the invention. For example, actions may be performed in a different order, or actions may be added, deleted, or modified. Additionally, the term "coupled" and variations thereof describe having a communication path between two elements and do not imply a direct connection between them without an intervening element / connection between them. All of these variations are considered part of this specification.

[0029] In the accompanying drawings and the following detailed description of embodiments of the invention, various elements shown in the figures are provided with two or three digit reference numbers. With few exceptions, the left-most digit of each reference number corresponds to the figure in which the element is first shown. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0030] Various embodiments of the present invention are described herein with reference to the associated drawings. Alternative embodiments of the present invention may be devised without departing from the scope of the present invention. Various connection and positional relationships (e.g., above, below, adjacent, etc.) are described between elements in the following description and drawings. These connections and / or positional relationships may be direct or indirect unless otherwise specified, and the present invention is not intended to be limited in this respect. Thus, coupling of entities may refer to either direct or indirect coupling, and positional relationships between entities may be direct or indirect positional relationships. Also, various tasks and process steps described herein may be incorporated into a more comprehensive procedure or process having additional steps or functions not described in detail herein.

[0031] The following definitions and abbreviations may be used for interpretation of the claims and the specification. As used herein, the terms "comprises," "comprising," "includes," "including," "has," "having," "contains," or "containing," or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a composition, mixture, process, method, article, or device that includes a list of elements is not necessarily limited to only those elements and may include other elements not expressly listed or inherent to such composition, mixture, process, method, article, or device.

[0032] Moreover, the term "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment of the invention described herein as "exemplary" should not necessarily be construed as preferred or advantageous over other embodiments of the invention. The terms "at least one" and "one or more" may be understood to include any integer number greater than or equal to one, i.e., 1, 2, 3, 4, etc. The term "a plurality" is understood to include any integer number greater than or equal to two, i.e., 2, 3, 4, 5, etc. The term "connected" may include both indirect and direct "connected."

[0033] The terms "about," "substantially," "approximately," and variations thereof are intended to include the degree of error associated with measurement of a particular quantity based on equipment available at the time of the filing of this application. For example, "about" can include a range of ±8%, or 5%, or 2% of a given value.

[0034] For the sake of brevity, conventional techniques relating to the manufacture and use of aspects of the present invention may or may not be described in detail herein. In particular, various aspects of computing systems and specific computer programs for implementing various technical features described herein are well known. Thus, for the sake of brevity, many conventional implementation details are mentioned only briefly herein or omitted entirely without providing details of well-known systems and / or processes.

[0035] Turning now to an overview of the technology more specifically related to the embodiments of the present invention, a description of how a typical ANN operates is now provided with reference to Figures 1, 2 and 3. As previously mentioned herein, a typical ANN models the human brain, which contains approximately 100 billion interconnected cells called neurons. Figure 1 shows a simplified diagram of a biological neuron 102 with pathways 104, 106, 108, 110 connecting it to upstream inputs 112, 114, downstream outputs 116, and downstream "other" neurons 118, configured and arranged as shown. Each biological neuron 102 sends and receives electrical impulses through the pathways 104, 106, 108, 110. The nature of these electrical impulses and how they are processed in the biological neuron 102 is primarily responsible for the overall function of the brain. The pathway connections between biological neurons may be strong or weak. When a given neuron receives an input impulse, the neuron processes the input depending on the function of the neuron and sends the result of the function to the downstream output or to the downstream "other" neurons, or a combination thereof.

[0036] A biological neuron 102 is modeled in FIG. 2 as a node 202 with a mathematical function f(x) represented by the equation shown in FIG. 2. The node 202 takes in electrical signals from inputs 212, 214, multiplies each input 212, 214 by the strength of its respective connection path 204, 206, takes the sum of the inputs, passes the sum through a function f(x), and produces a result 216, which may be a final output or an input to another node, or both. In this detailed description, an asterisk (*) is used to represent multiplication. A weak input signal is multiplied by a number with a very small connection strength, so its effect on the function is very low. Similarly, a strong input signal is multiplied by a number with a higher connection strength, so its effect on the function is greater. The function f(x) is a design choice, and various functions may be used. A typical design choice for f(x) is the hyperbolic tangent function, which takes a function of the previous sum and outputs a number between -1 and +1.

[0037] FIG. 3 illustrates a simplified ANN model 300 organized as a weighted directional graph, where artificial neurons are nodes (e.g., 302, 308, 316) and weighted directional edges (e.g., m1-m20) connect the nodes. The ANN model 300 is organized such that nodes 302, 304, 306 are input layer nodes, nodes 308, 310, 312, 314 are hidden layer nodes, and nodes 316, 318 are output layer nodes. Each node is connected to all nodes in adjacent layers by connection paths, shown in FIG. 3 as directional arrows with connection strengths m1-m20. Although only one input layer, one hidden layer, and one output layer are shown, in practice multiple input layers, hidden layers, and output layers may be provided.

[0038] Similar to the functioning of the human brain, each input layer node 302, 304, 306 of the ANN 300 receives inputs x1, x2, x3 directly from a source (not shown) with no connection strength adjustment and no node summation. Thus, y1=f(x1), y2=f(x2), and y3=f(x3), as shown by the equations listed at the bottom of Figure 3. Each hidden layer node 308, 310, 312, 314 receives inputs from all input layer nodes 302, 304, 306 according to the connection strengths associated with the relevant connection paths. Thus, for hidden layer node 308, y4=f(m1*y1+m5*y2+m9*y3), where * denotes multiplication. Similar connection strength multiplications and node summations are performed for hidden layer nodes 310, 312, 314 and output layer nodes 316, 318, as shown by the equations defining functions y5-y9 shown at the bottom of FIG.

[0039] The ANN model 300 "learns" by processing data records one at a time and comparing any initial classifications of the records with the known actual classifications of the records. Using a training technique known as "backpropagation" (i.e., "backward propagation of error"), errors from the initial classification of the first record are fed back into the network and used to modify the weighted connections of the network a second time, and this feedback process continues for many iterations. During the training phase of the ANN, the correct classification of each record is known, and therefore the output nodes may be assigned "correct" values. For example, nodes corresponding to the correct class may be assigned a node value of "1" (or 0.9), and other nodes may be assigned a node value of "0" (or 0.1). The network's calculated values ​​for the output nodes can then be compared to these "correct" values ​​and an error term (i.e., a "delta" rule) for each node may be calculated. These error terms may then be used to adjust the weights in the hidden layer so that in the next iteration, the output values ​​will be closer to the "correct" values.

[0040] Despite the potential for lower power consumption, performing offline training can be difficult and resource intensive, since typically a significant number of adjustable parameters (e.g., weights) in the ANN model are required during training to be modified to match the input-output pairs for the training data. Figure 4 shows a simplified diagram of a typical read-process-write weight update operation, where the CPU / GPU cores (i.e., simulated "neurons") read memory (i.e., simulated "synapses"), perform weight update processing operations, and then write the updated weights back to memory. Thus, simplifying the cross-point devices of the ANN architecture to prioritize power savings means that offline learning techniques are typically not optimized for training speed and training efficiency.

[0041] Probabilistic computation is a set of techniques to represent continuous values ​​by streams of random bits, and complex computations can be computed by simple bit operations on the streams. Specifically, if there are two random and independent bit streams S1, S2, called probability values, where the probability of a "1" in the first stream is p and the probability of a "1" in the second stream is q (i.e., Bernoulli processes), the logical AND of the two streams can be taken as shown in Figure 5. The probability of a "1" in the output stream is pq. By observing enough output bits and measuring the frequency of "1", it is possible to estimate pq with arbitrary precision. Probabilistic computation is often used in hardware design for neural networks due to the design of "multiply and multiply-add" operations that can be implemented with a small number of logic gates / transistors.

[0042] However, in some probabilistic techniques, the weights required for the calculation are fed to the systolic array from an external location, and updates to the weights are not performed by the array. This only addresses the acceleration of vector-matrix or matrix-matrix multiplication operations, which are highly used during neural network training. However, systolic arrays that do not include local storage cannot perform weight updates in parallel, since the weights are stored in external memory locations. Acceleration of weight updates is necessary to accelerate the entire learning algorithm, as provided by embodiments of the techniques described herein.

[0043] Training an ANN also requires many calculations to be performed. As the number of nodes increases, the complexity and number of calculations increases, which can lead to further inefficiencies in training speed and accuracy. To calculate the cross products used to adjust the weights, 2 It is inefficient to send pulses to form the cross product (where b represents the number of bits).

[0044] Turning now to an overview of aspects of the present invention, one or more embodiments of the present invention address the above-mentioned shortcomings of the prior art by providing an efficient neural network training scheme. The techniques of the embodiments of the present invention described herein reduce the number of pulses (or bit length) used to represent each numerical value used in the cross-product-based matrix update matrix multiplication. The reduced bit length determines the accuracy of the cross-product-based matrix update. However, this reduction may result in a loss of information, which must be optimized. The granularity in the multiplications performed within the cross-product-based update, which is brought about by the reduction in the number of pulses, may affect the accuracy of the neural network. Therefore, the selected position of the pulse in the pulse sequence is very important and must be strategically selected to maintain the contours presented in the true multiplication map of values.

[0045] Bit selections of a pulse sequence or bit stream representing a numerical value are mapped to the outer product used to train the neural network. The technical effects and benefits of the embodiments of the invention described herein provide an accurate representation of the bitwise multiplications performed in conventional neural network updates. The technical effects and benefits also provide an efficient way to encode the multiplications with minimal error and using only b bits of the pulse sequence. To optimize the multiplications, an algorithm according to an aspect of the invention provides a minimal representation sufficient to compute the outer product for updating one or more memristors of a crossbar array. By providing an algorithm that generates pulse positions for values ​​used in matrix multiplications, the speed and efficiency of training of ANN architectures may be accelerated, improving overall ANN performance and enabling a wide range of ANN applications.

[0046] The term "memristor" is used to describe a passive two-terminal electrical component, whose resistance depends on the history of voltages previously applied to the device. The behavior of a memristor is determined by equations [1] and [2] shown in Figure 6, where i is the current through the device, v is the voltage applied to the device, g is the conductance value of the device (which is the inverse of the resistance), s is an internal state variable of the device that controls the conductance value, and f is a function that describes the time evolution of the internal state variable s.

[0047] The memristor behavior of a crossbar array according to an embodiment of the present invention is shown in FIG. 7. To illustrate the difference between an ideal memristor and a non-ideal non-linear memristor that may be used to implement the disclosed RPU, FIG. 7 is a graph showing a comparison of the voltage switching behavior of an ideal memristor and an RPU according to an embodiment of the present invention. The vertical axis of the graph represents the state change of the device at a particular voltage, and the horizontal axis of the graph represents the applied voltage. In an ideal memristor operation, the change in resistance is linearly proportional to the voltage applied to the device. Therefore, as soon as the memristor experiences any voltage, its resistance state changes. This is illustrated by curve 702, which shows that the state change is significant even at low voltages.

[0048] For a nonlinear RPU device, such as that shown by curve 704, there is a well-defined set voltage (VSET) that the device must undergo to change its internal resistance state. A bias voltage of 0.5VSET does not change the internal resistance state. In an embodiment of the present invention, the nonlinear characteristics of the RPU device are exploited to perform the multiplication locally. Assuming that f1 is small, the device does not change its internal state when only 0.5VSET is applied. Notably, although FIG. 7 shows a positive voltage and a positive change to the resistance state of the RPU device, a similar relationship exists between a negative voltage and a negative resistance change.

[0049] Turning now to a more detailed description of aspects of the invention, Figure 8 is a diagram of a two-dimensional (2D) crossbar array 800 performing forward matrix multiplication, backward matrix multiplication, and weight updates, according to an embodiment of the invention. The crossbar array 800 is formed from a set of conductive row lines 802, 804, 806, and a set of conductive column lines 808, 810, 812, 814 that intersect with the set of conductive row lines 802, 804, 806. The intersections of the set of row lines and the set of column lines are separated by RPUs, which are shown in Figure 8 as resistive elements each having their own adjustable / updatable resistive weights, shown as σ11, σ21, σ31, σ41, σ12, σ22, σ32, σ42, σ13, σ23, σ33, and σ43, respectively. For ease of illustration, only one RPU 820 is labeled with a reference number in Figure 8. In forward matrix multiplication, the conduction state of the RPU (i.e., the stored weights) can be read out by applying a voltage across the RPU and measuring the current passing through the RPU.

[0050] Input voltages V1, V2, V3 are applied to row lines 802, 804, 806, respectively. Each column line 808, 810, 812, 814 sums the currents I1, I2, I3, I4 generated by each RPU along the particular column line. For example, as shown in FIG. 8, the current I4 generated by column line 814 is according to the formula I4=V1σ41+V2σ42+V3σ43. The array 800 then calculates the forward matrix multiplication by multiplying the values ​​stored in the RPUs with the row line inputs defined by the voltages V1, V2, V3. The backward matrix multiplication is very similar. In the backward matrix multiplication, voltages are applied to column lines 808, 810, 812, 814 and then read out from row lines 802, 804, 806. For weight updates, which are described in more detail below, voltages are applied to the column and row lines simultaneously, and the conductance values ​​836 stored in the associated RPU devices are all updated in parallel. Thus, the multiplication and addition operations required to perform the weight updates are performed locally in each RPU 820 of the array 800, using the RPU device itself and the associated row or column lines of the array 800. Thus, in accordance with an embodiment of the present invention, no read-update-write cycles (shown in FIG. 4) are required in the array 800.

[0051] Continuing with the diagram of FIG. 8, in accordance with one or more embodiments of the present invention, the operation of the positive weight update method of the RPU 820 and its corresponding weight σ33 at the intersection of the conductive row line 806 and the conductive column line 812 is now provided. The non-linear characteristics of the RPU 820 are used to perform the multiplication operation locally in the RPU 820 using the calculations described below. More specifically, the disclosed methodology uses the non-linear switching characteristics of the RPU 820 and the bit streams 830, 832 to perform the multiplication operation and the necessary weight updates locally in the RPU 820 without the need for other circuit elements. Update generator circuits (not shown) are provided on the periphery of the crossbar array 800 and are used as peripheral "translators" to generate the necessary voltage pulses in the form of bit streams (e.g., 830, 832) that are applied in parallel to all the RPUs of the 2D crossbar array 800.

[0052] Briefly referring to the diagram of FIG. 7, the f 1 is very small (e.g., f 1 =0), meaning that the RPU 820 does not change its internal state when only 0.5 VSET is applied. A row voltage sequence or bit stream 830 applied to row line 806 is shown as a sequence of voltage pulses representing weight updates having either a voltage of zero or a voltage of +0.5 VSET. A column voltage sequence or bit stream 832 applied to column line 814 is shown as a sequence of voltage pulses also representing weight updates having either a voltage of 0 or a voltage of -0.5 VSET. In the example of FIG. 8, 4 / 8 is encoded by row voltage sequence 830 and 6 / 8 is encoded by column voltage sequence 832. The exemplary voltage sequences 830, 832 represent the positive resistance change phase of the weight update. After the positive weight update is performed, another set of sequences with the polarity of the respective voltages reversed can be used to update the weights in the negative direction for weights that require such correction.

[0053] Voltage array 834 is the voltage applied to RPU 820 resulting from the difference between row voltage array 830 and column voltage array 832. Voltage array 834 will have three voltage steps at 0V, 0.5VSET, and VSET. However, since the resistance σ43 of RPU 820 is only changed for device voltages that reach VSET, a single pulse sent through either the column or row lines is not sufficient to change the resistance state of RPU 820. If the column line sends a voltage of 0.5VSET and the row line sends a voltage of −0.5VSET, the resulting VSET pulse applied to the associated RPU will cause an incremental change in the resistance of the device. Thus, the voltage pulses applied to RPU 820 take advantage of the nonlinear switching characteristics of RPU 820 to locally perform a bitwise AND operation (e.g., as shown in FIG. 5) in RPU 820. Therefore, the resulting change in the stored weights of the RPU (e.g., σ43) is proportional to the product of the two numbers (4 / 8*6 / 8=3 / 8) that are “transformed” by the update generator circuitry on the periphery of the crossbar array 800.

[0054] In accordance with one or more embodiments of the present invention, an algorithm 900 for performing multiplication using pulse coincidence counting is shown in FIG. 9. In particular, algorithm 900 generates pulse positions in a pulse sequence for δ values ​​and optimizes weights for updating the crossbar array. Variables used in algorithm 900 include variable b, which is the number of different x and δ values ​​in matrix w, compression is a compression factor, ε is a tolerance, and t varies from 1 to min(b 2 ,b 2 / compression) is a counter variable. 2 If b is equal to 2 Any value less than corresponds to a compression of how the bits are represented (since there is a loss of information). Algorithm 900 is directed to performing compression with the least amount of penalty.

[0055] The weight update is performed by computing a vector-vector cross product (as shown above) for the weight matrix, which is similar to a multiplication operation. After the calculation, the differential weight update is applied in each processing component using the updated calculation. The methodology described above determines the pulse positions in the pulse sequence for the δ values ​​of the matrix w. A first pulse sequence representing a number of x values ​​is multiplied with a second pulse sequence representing a number of δ values. The pulse positions for the δ values ​​may be represented in a graph, such as graph 1004 (further described with reference to FIG. 10). Using the pulse sequence from algorithm 900, the multiplication is simplified and the total number of calculations required to perform the weight update is reduced.

[0056] 10 illustrates a series of graphs and maps for an exemplary implementation of pulse generation for updating a crossbar array, in accordance with one or more embodiments of the present invention. In this non-limiting example, there are b bins, which indicate that the x and δ values ​​of the weight matrix w can each take on 100 different values, where the b bins are 100 and the bit length (BL) is 100 bits. Conventionally, b bins are used to perform updates on the weights used in neural networks, since an element-wise multiplicative update is performed for each element (x and δ) to represent different numbers of x and δ. 2 Using the methodology described in FIG. 9, compression can be achieved by calculating the number of 2 The computation of a number of iterations is reduced to a number of iterations for performing weight updates for the neural network, which gives similar results as element-wise multiplication.

[0057] In FIG. 10, graph 1002 represents x values ​​in a weight matrix used to perform updates to a neural network. The x-axis of graph 1002 represents a pulse position in a pulse sequence or a bit position in a bit stream. The y-axis of graph 1002 represents the number of x values ​​represented by the pulse sequence. The pulse sequence or bit stream may be represented using a series of 1's and 0's. Region 1020 represents a 1 (logic high) and region 1030 represents a 0 (logic low). For example, in graph 1002, the row corresponding to an x ​​value of 80 indicates the position in the pulse sequence of the number 80 represented by a pulse provided at the position shown on the x-axis. In another example, the bottom row of graph 1002 corresponding to the number 0 is represented by 100 0 pulses in the pulse sequence and the top row corresponding to 1 is represented by 100 1's in the pulse sequence.

[0058] The pulse sequences generated for the x and δ delta values ​​are significantly different. Therefore, the pulse sequence for the δ values ​​is determined to be different from the pulse sequence for the x values ​​and is determined using the algorithm 900 described with reference to Figure 9. In Figure 10, a graph 1004 represents pulse positions in the pulse sequence for the δ values. As with graph 1002, the x-axis of graph 1004 represents pulse positions and the y-axis represents the number of δ values ​​used in the calculation for updating the weights.

[0059] Still referring to FIG. 10, the multiplication map 1006 multiplies every element (x i , δ j ) is performed. True multiplication map 1006 provides contours corresponding to the element-wise multiplication. In this example, 10,000 pulses / bit are used to represent each number to perform a matrix multiplication to update the weights of the analog crossbar array, where the x values ​​are 100 bits and the δ values ​​are 100 bits. As the number of bits increases, the complexity and number of calculations increases quickly.

[0060] Also shown in Figure 10 is a heat map 1008 generated by taking the cross product of the number of x values ​​represented by a first pulse sequence and the number of δ values ​​represented by a second pulse sequence, where the second pulse sequence for the δ values ​​was determined from the algorithm shown in Figure 9. The heat map 1008 allows for an intuitive analysis of the approximation of the cross product of the first and second pulse sequences for element-wise multiplication of every combination of x and δ.

[0061] As shown in heat map 1008, the cross product allows the representation of the element-wise multiplication to be represented in only 100 bits instead of 10,000 bits when a true multiplication is performed for every element. By comparing the multiplication map 1006 to the heat map 1008, an error can be calculated by taking the difference between the corresponding values. An error map 1010 can be calculated and displayed, as shown in FIG. 10. The contours of the heat map 1008 are similar to the contours shown in the multiplication map 1006, and this similarity indicates that the representation provides efficient updating and accurate classification for neural networks using cross products.

[0062] When the number of representations is reduced from the true multiplication map, the heat map 1006 becomes even more granular and may result in inaccurate results. However, an optimal reduction may be performed to obtain a bit representation that maintains the integrity of the results from the neural network when updates to the neural network are performed using the true multiplication map. In one or more embodiments of the present invention, the optimal reduction is achieved when BL is set to be equal to b.

[0063] In Fig. 11, the configuration has bin 100 and a bit length of 50. As in Fig. 10, graph 1102 represents the pulse sequence for each x value, and graph 1104 represents the pulse sequence for each δ value used to update the neural network. Compared to Fig. 10, the BL is 50, which is less than that of Fig. 10. As more values ​​of x and δ are mapped to the true multiplication map 1006, which has a shorter BL, some granularity is brought to the heat map 1108 as the number of representations exceeds the BL used for updating. Furthermore, the error map 1110 shows a larger difference between the true multiplication map 1006 and the heat map 1008.

[0064] Referring to Fig. 12, the BL used to represent the x and δ values ​​of the weight matrix w is reduced even further to a BL of 10 while maintaining 100 bins when compared to Fig. 11. Graph 1202 represents the pulse sequence for each x value, and graph 1204 represents the pulse sequence for each δ value. As can be seen by comparing the true multiplication map 1206 with the heat map 1208, the heat map 1208 provides a higher granularity, which indicates a reduction in the accuracy of the updates. Fig. 12 further illustrates an example where the granularity increases as the BL used to represent each value decreases.

[0065] FIG. 13 illustrates a flow chart of a method 1300 of pulse generation for updating a crossbar array according to one or more embodiments of the present invention. The method 1300 may be performed using a processor such as the one shown in FIG. 4 or the processor described with reference to FIG. 14. It should be understood that any other computing device may be used. The method 1300 begins at block 1302 and proceeds to block 1304, which provides for receiving, by a processor, a number used for matrix multiplication to represent using pulse generation for the crossbar array. Block 1306 receives a bit length representing the number. The bit length provided to the processor is known from the neural network. Block 1308 selects a pulse position in a pulse sequence having a bit length representing the number. In one or more embodiments of the present invention, the pulse position is determined using the algorithm provided in FIG. 9. For a δ value, a pulse position in the pulse sequence is determined. Block 1310 performs a calculation using the selected pulse position in the pulse sequence. A cross product is determined for a first pulse sequence for a δ value of a weight matrix and a second pulse sequence for an x ​​value. The results are used to adjust the weights for training the neural network, either by adding or subtracting an increment. Block 1312 updates the crossbar array using the calculations. In one or more embodiments of the invention, the results are used to adjust the conductance of one or more memristor devices in the crossbar array. Method 1300 ends at block 1314. It should be understood that different orders of steps or additional steps may be included in method 1300 and is not intended to be limited by the steps shown in FIG.

[0066] Referring to FIG. 14, a processing system 1400 for implementing aspects of the present invention according to the teachings described herein is shown. The processing system may be implemented in a processor (CPU / GPU core) such as that shown in FIG. 4. In this embodiment, the system 1400 has one or more central processing units (processors) 1401a, 1401b, 1401c, etc. (collectively or generically referred to as processors 1401). In one embodiment, each processor 1401 may include a reduced instruction set computer (RISC) microprocessor. The processors 1401 are coupled to a system memory 1414 and various other components via a system bus 1413. A read-only memory (ROM) 1402 is coupled to the system bus 1413 and may include a basic input / output system (BIOS) that controls certain basic functions of the system 1400.

[0067] FIG. 14 further illustrates an input / output (I / O) adapter 1407 and a network adapter 1406 coupled to the system bus 1613. The I / O adapter 1407 may be a small computer system interface (SCSI) adapter that communicates with a hard disk 1403 or a tape storage drive 1405 or a combination thereof, or any other similar components. The I / O adapter 1407, the hard disk 1403, and the tape storage device 1405 are collectively referred to herein as mass storage 1404. An operating system 1420 for executing on the processing system 1400 may be stored on the mass storage 1404. The network adapter 1406 interconnects the bus 1413 to an external network 1416, enabling the data processing system 1400 to communicate with other such systems. A screen (e.g., a display monitor) 1415 is connected to the system bus 1413 by a display adapter 1412, which may include a graphics adapter and a video controller for improving the performance of graphics-intensive applications. In one embodiment, adapters 1407, 1406, and 1412 may be connected to one or more I / O buses connected to system bus 1413 through intermediate bus bridges (not shown). Suitable I / O buses for connecting peripheral devices such as hard disk controllers, network adapters, and graphics adapters typically include common protocols such as Peripheral Component Interconnect (PCI). Additional input / output devices are shown connected to system bus 1413 through user interface adapter 1408 and display adapter 1412. Keyboard 1409, mouse 1410, and speakers 1411 are all interconnected with bus 1413 through user interface adapter 1408, which may include, for example, a super I / O chip that integrates multiple device adapters into a single integrated circuit.

[0068] In an exemplary embodiment, processing system 1400 includes a graphics processing unit 1430. Graphics processing unit 1430 is a special-purpose electronic circuit designed to manipulate and modify memory to accelerate the creation of images in a frame buffer intended for output to a display. In general, graphics processing unit 1430 is very efficient at operating in computer graphics and image processing, and has a highly parallel structure that makes it more effective than a general-purpose CPU for algorithms in which the processing of large blocks of data is done in parallel.

[0069] 14, system 1400 includes processing functionality in the form of processor 1401, storage functionality including system memory 1414 and mass storage 1404, input means such as keyboard 1409 and mouse 1410, and output functionality including speakers 1411 and display 1415. In one embodiment, a portion of the system memory 1414 and mass storage 1404 collectively store an operating system for coordinating the functionality of the various components illustrated in FIG.

[0070] The embodiments of the invention described herein improve upon the prior art by determining the bit position within the bitstream that represents each of the numbers used in multiplications for neural network training. Additionally, embodiments of the techniques described herein provide for accelerated training of neural networks using these methodologies by providing initial values ​​for the neural network prior to receiving any weight updates.

[0071] The present invention may be a system, method, or computer program product, or combination thereof, integrated at any possible level of technical detail. The computer program product may include a computer-readable storage medium (or multiple computer-readable storage media) having computer-readable program instructions for causing a processor to perform aspects of the present invention.

[0072] A computer-readable storage medium may be a tangible device that can hold and store instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: portable computer diskettes, hard disks, random access memories (RAMs), read-only memories (ROMs), erasable programmable read-only memories (EPROMs or flash memories), static random access memories (SRAMs), portable compact disk read-only memories (CD-ROMs), digital versatile disks (DVDs), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves that record instructions, and any suitable combination of the foregoing. Computer-readable storage medium, as used herein, should not be construed as a transitory signal per se, such as electric waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or electrical signals transmitted through wires.

[0073] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium into each computing / processing device, or may be downloaded to an external computer or storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may comprise copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and transfers the computer-readable program instructions for storage in a computer-readable storage medium in the respective computing / processing device.

[0074] The computer readable program instructions for carrying out the operations of the present invention may be either assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, configuration data for an integrated circuit, or source or object code written in any combination of one or more programming languages, including object oriented programming languages ​​such as Smalltalk®, or C++, and procedural programming languages ​​such as the “C” programming language or similar programming languages. The computer readable program instructions may be executed entirely on the user's computer, partially on the user's computer as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (e.g., through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may execute computer readable program instructions to personalize the electronic circuitry by utilizing state information of the computer readable program instructions to perform aspects of the invention.

[0075] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer readable program instructions.

[0076] These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine whereby the instructions, executed via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer readable program instructions may also be stored on a computer readable storage medium capable of directing a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner, such that the computer readable storage medium on which the instructions are stored comprises an article of manufacture including instructions for implementing aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.

[0077] The computer-readable program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device and cause the computer, other programmable apparatus, or other device to execute a series of operational steps to create a computer-implemented process, such that the instructions executing on the computer, other programmable apparatus, or other device implement the functions / acts specified in one or more blocks of the flowcharts or block diagrams, or both.

[0078] The flowcharts and block diagrams in the drawings illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagram may represent a module, segment, or portion of instructions that includes one or more executable instructions that implement a specified logical function. In some alternative implementations, the functions noted in the blocks may be performed in a different order than that noted in the drawings. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may be executed in the reverse order depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart illustrations, as well as combinations of blocks in the block diagrams and / or flowchart illustrations, may be implemented by a dedicated hardware-based system that executes the specified functions or operations or executes a combination of dedicated hardware and computer instructions.

[0079] The description of various embodiments of the present invention has been presented for illustrative purposes, but is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used in this specification has been selected to best explain the principles of the embodiments, practical applications of the technology found in the market, or technical improvements thereto, or to enable others skilled in the art to understand the embodiments described herein. According to this specification, the following items are also disclosed. [Item 1] 1. A computer-implemented method of pulse generation for updating an analog crossbar array, comprising: receiving, by a processor, a number used in a matrix multiplication representing using pulse generation for a crossbar array; receiving, by said processor, a bit length representing said number; selecting, by said processor, a pulse position in a pulse sequence having said bit length representing said number; performing, by the processor, a calculation using the selected pulse positions in the pulse sequence; updating, by said processor, said crossbar array using said calculations; A computer-implemented method comprising: [Item 2] Item 2. The computer-implemented method of item 1, wherein the calculating includes performing an outer product operation using the number used in the matrix multiplication and a second number used in the matrix multiplication. [Item 3] 3. The computer-implemented method of claim 1, wherein the selected pulse position in the pulse sequence is based at least in part on the bit length. [Item 4] 4. The computer-implemented method of any one of claims 1 to 3, wherein the bit length is equal to the number of distinct elements of the weight matrix. [Item 5] 5. The computer-implemented method of claim 1, further comprising: generating a heat map, the generated heat map being based at least in part on pulse coincidence counting between a first pulse sequence and a second pulse sequence, and at least one of the first pulse sequence or the second pulse sequence including the selected pulse position. [Item 6] Item 6. The computer-implemented method of item 5, wherein the at least one first pulse sequence corresponds to the number and the second pulse sequence corresponds to a second number. [Item 7] 7. The computer-implemented method of claim 5 or 6, further comprising: comparing a true multiplication map to the generated heat map using the selected pulse positions, the true multiplication map performing element-wise multiplication for each element. [Item 8] determining an error between the true multiplication map and the generated heat map; displaying the error between the true multiplication map and the generated heat map; 8. The computer-implemented method of claim 7, further comprising: [Item 9] 9. The computer-implemented method of any one of claims 1 to 8, wherein updating the crossbar array comprises updating conductance values ​​of one or more memristor devices of the crossbar array based at least in part on the calculation. [Item 10] 1. A system for implementing pulse generation for updating a crossbar array, comprising: a crossbar array including one or more memristor devices; receiving a number used in a matrix multiplication representing using pulse generation for the crossbar array; receiving a bit length representing the number; selecting a pulse position in a pulse sequence having said bit length representing said number; performing a calculation using the selected pulse positions in the pulse sequence; updating the crossbar array using the calculations, where updating the crossbar array changes weights of the one or more memristor devices; a processor configured to: A system comprising: [Item 11] Item 11. The system of item 10, wherein the calculation includes performing an outer product operation using the number used in the matrix multiplication and a second number used in the matrix multiplication. [Item 12] 12. The system of claim 10 or 11, wherein the selected pulse position in the pulse sequence is based at least in part on the bit length. [Item 13] 13. The system of any one of claims 10 to 12, wherein the bit length is equal to the number of distinct elements of the weight matrix. [Item 14] 14. The system of any one of claims 10 to 13, wherein the calculation includes determining a cross product of a first vector and a second vector of the neural network. [Item 15] 15. The system of any one of claims 10 to 14, wherein the processor is further configured to generate a heat map, the generated heat map being based at least in part on pulse coincidence counting between a first pulse sequence and a second pulse sequence, and at least one of the first pulse sequence or the second pulse sequence includes the selected pulse position. [Item 16] Item 16. The system of item 15, wherein the processor is further configured to compare a true multiplication map to the generated heat map using the selected pulse positions, the true multiplication map performing element-wise multiplication for each element. [Item 17] The processor, determining an error between the true multiplication map and the generated heat map; displaying the error between the true multiplication map and the generated heat map; Item 17. The system of item 16, further configured to: [Item 18] 18. The system of any one of claims 10 to 17, wherein updating the crossbar array includes updating conductance values ​​of one or more memristor devices of the crossbar array based at least in part on the calculation. [Item 19] 1. A computer program for pulse generation for updating an analog crossbar array, the computer program comprising: receiving a number used in a matrix multiplication representing the number of pulses generated for the crossbar array; receiving a bit length representing the number; selecting a pulse position in a pulse sequence having said bit length representing said number; performing a calculation using the selected pulse positions in the pulse sequence; updating the crossbar array using the calculation, the updating comprising updating a conductance value of one or more memristor devices of the crossbar array based at least in part on the calculation; A computer program for executing the following: [Item 20] 20. The computer program product of claim 19, wherein the calculating comprises performing an outer product operation using the number used in the matrix multiplication and a second number used in the matrix multiplication. [Item 21] 20. The computer program of item 19, wherein the bit length is equal to the number of distinct elements of the weight matrix. [Item 22] 22. The computer program of any one of claims 19 to 21, further comprising causing the processor to execute a step of determining a cross product of the first pulse sequence and the second pulse sequence of the neural network. [Item 23] 23. The computer program product of claim 19, further comprising causing the processor to execute a procedure of generating a heat map, the generated heat map being based at least in part on pulse coincidence counting between a first pulse sequence and a second pulse sequence, and at least one of the first pulse sequence or the second pulse sequence including the selected pulse position. [Item 24] 24. The computer program product of claim 23, further comprising the step of: causing the processor to compare a true multiplication map to the generated heat map using the selected pulse positions, the true multiplication map performing element-wise multiplication on each element. [Item 25] The processor includes: determining an error between the true multiplication map and the generated heat map; displaying the error between the true multiplication map and the generated heat map; 25. The computer program according to item 24, further comprising:

Claims

1. 1. A computer-implemented method of pulse generation for updating an analog crossbar array, comprising: receiving, by a processor, a first number to be used in a matrix multiplication representing using pulse generation for a crossbar array; receiving, by the processor, a bit length representing the first number, the bit length being less than a square of the number of possible values ​​of the first number; deterministically selecting, by the processor, a pulse position in a first pulse sequence having the bit length representing the first number and corresponding to the first number; performing, by the processor, a calculation using pulse coincidences of the selected pulse position in the first pulse sequence and a pulse position in a second pulse sequence, the second pulse sequence being a pulse sequence corresponding to a second number based on an error in the output of the crossbar array; updating, by the processor, weights of the crossbar array in response to the pulse coincidences using the calculations; A computer-implemented method comprising:

2. The computer-implemented method of claim 1 , wherein the calculating comprises performing a cross product operation using the first number and the second number.

3. The computer-implemented method of claim 1 or 2, wherein the selected pulse positions in the first pulse sequence are based at least in part on the bit length.

4. 4. The computer-implemented method of claim 1, wherein the bit length is equal to a number of possible values ​​of the first number in a weight matrix representing device weights of one or more memristors of the crossbar array.

5. 5. The computer-implemented method of claim 1, further comprising generating a heat map, the generated heat map being created at least in part in response to the pulse coincidences between the first pulse sequence and the second pulse sequence, and at least one of the first pulse sequence or the second pulse sequence being based on the selected pulse positions.

6. 6. The computer-implemented method of claim 5, further comprising: comparing a true multiplication map to the generated heat map using the selected pulse positions, the true multiplication map performing an element-wise multiplication for each element.

7. determining an error between the true multiplication map and the generated heat map; displaying the error between the true multiplication map and the generated heat map; The computer-implemented method of claim 6 , further comprising:

8. 8. The computer-implemented method of claim 1, wherein updating the crossbar array comprises updating conductance values ​​of one or more memristor devices of the crossbar array based at least in part on the calculation.

9. 1. A system for implementing pulse generation for updating a crossbar array, comprising: a crossbar array including one or more memristor devices; receiving a first number to be used in a matrix multiplication representing using pulse generation for the crossbar array; receiving a bit length representing the first number, the bit length being less than a square of a number of possible values ​​of the first number; deterministically selecting a pulse position in a first pulse sequence having the bit length representative of the first number and corresponding to the first number; performing a calculation using pulse coincidences of the selected pulse position in the first pulse sequence and a pulse position in a second pulse sequence, the second pulse sequence being a pulse sequence corresponding to a second number based on an error in an output of the crossbar array; updating the crossbar array in response to the pulse coincidences using the calculations, where the updating of the crossbar array changes weights of the one or more memristor devices. a processor configured to: A system comprising:

10. 10. The system of claim 9, wherein the calculating comprises performing a cross product operation using the first number and the second number.

11. 11. The system of claim 9 or 10, wherein the selected pulse positions in the first pulse sequence are based at least in part on the bit length.

12. 12. The system of claim 9, wherein the bit length is equal to a number of possible values ​​of the first number in a weight matrix representing device weights of the one or more memristors of the crossbar array.

13. 13. The system of claim 9, wherein the calculation comprises determining a cross product of the first pulse sequence and the second pulse sequence of a neural network.

14. 14. The system of claim 9, wherein the processor is further configured to generate a heat map, the generated heat map being created at least in part in response to pulse coincidence between the first pulse sequence and the second pulse sequence, and at least one of the first pulse sequence or the second pulse sequence being based on the selected pulse position.

15. 15. The system of claim 14, wherein the processor is further configured to compare a true multiplication map to the generated heat map using the selected pulse positions, the true multiplication map performing an element-wise multiplication for each element.

16. The processor, determining an error between the true multiplication map and the generated heat map; displaying the error between the true multiplication map and the generated heat map; The system of claim 15 , further configured to:

17. 17. The system of claim 9, wherein updating the crossbar array comprises updating conductance values ​​of one or more memristor devices of the crossbar array based at least in part on the calculation.

18. 1. A computer program for pulse generation for updating an analog crossbar array, the computer program comprising: receiving a first number to be used in a matrix multiplication representing using pulse generation for a crossbar array; receiving a bit length representing the first number, the bit length being less than the square of the number of possible values ​​of the first number; deterministically selecting a pulse position in a first pulse sequence having the bit length representing the first number and corresponding to the first number; performing a calculation using pulse coincidences of the selected pulse position in the first pulse sequence and a pulse position in a second pulse sequence, the second pulse sequence being a pulse sequence corresponding to a second number based on an error in the output of the crossbar array; updating the crossbar array in response to the pulse coincidence counts using the calculation, the updating comprising updating a conductance value of one or more memristor devices of the crossbar array based at least in part on the calculation; A computer program for executing the following:

19. 20. The computer program product of claim 18, wherein the calculating comprises performing a cross product operation with the first number and the second number.

20. 20. The computer program product of claim 18 or 19, wherein the first number is equal to a number of possible values ​​in a weight matrix whose bit length represents device weights of the one or more memristors of the crossbar array.

21. 21. The computer program product of claim 18, further comprising causing the processor to determine a cross product of the first pulse sequence and the second pulse sequence of a neural network.

22. 22. The computer program product of claim 18, further comprising: generating a heat map, the generated heat map being created at least in part in response to pulse coincidence counting between the first pulse sequence and the second pulse sequence, and at least one of the first pulse sequence or the second pulse sequence being based on the selected pulse positions.

23. 23. The computer program product of claim 22, further comprising: causing the processor to compare a true multiplication map to the generated heat map using the selected pulse positions, the true multiplication map performing an element-wise multiplication for each element.

24. The processor, determining an error between the true multiplication map and the generated heat map; displaying the error between the true multiplication map and the generated heat map; 24. The computer program product of claim 23, further comprising:

Citation Information

Patent Citations

  • Method for training artificial neural network circuit, training program, and training device

    JP2019003547A

  • Update management for RPU array

    US20180300627A1

  • Resistive processing unit architecture with separate weight update and inference circuitry

    US20190318239A1