Information processing system and information processing method
The information processing system dynamically controls calculation accuracy through Loop Body Switching and branch determination, addressing inefficiencies in Approximate Computing by reducing errors and power consumption in applications like image processing.
Patent Information
- Application Number
- JP2021013204
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2021-01-29
- Publication Date
- 2025-02-05
- Estimated Expiration
- 2041-01-29
AI Technical Summary
Existing Approximate Computing technologies face challenges in dynamically controlling calculation accuracy to keep errors within an allowable range that changes based on user subjectivity, leading to inefficiencies in applications like image processing.
An information processing system with a control unit, memory, and branch determination unit that dynamically adjusts calculation accuracy by using a CSR to store approximation levels and implement Loop Body Switching, which selects between accurate and approximate loop bodies based on stochastic branch orders.
This approach reduces execution time and power consumption while maintaining output quality by allowing dynamic control of calculation accuracy, effectively managing errors within user-defined tolerances.
Smart Images

Figure 0007627024000006 
Figure 0007627024000007 
Figure 0007627024000008
Abstract
Description
[Technical field]
[0001] The present invention relates to an information processing system and an information processing method. [Background technology]
[0002] With the spread of IoT (Internet of Things) technology, in which various things are connected to the Internet, there is a demand for computers to process faster and consume less power. Note that the Federal Trade Commission (FTC) defines IoT as the ability of everyday objects to be connected to the Internet and transmit data (Non-Patent Document 1). [Prior art documents] [Patent documents]
[0003] [Patent Document 1] “internet of things”, [Retrieved December 1, 2020, Internet <URL:https: / / www.ftc.gov / system / files / documents / reports / federal-trade-commission-staff-report-november-2013-workshop-entitled-internet-things-privacy / 150127iotrpt.pdf> ] Summary of the Invention [Problem to be solved by the invention]
[0004] Approximate Computing is a technology that uses approximation to improve the efficiency of calculations and to increase processing speed and reduce power consumption. Approximate Computing is applicable to applications that allow some degree of error. [Means for solving the problem]
[0005] According to one aspect of the present invention, there is provided an information processing system. The information processing system includes a storage unit, a determination unit, and a control unit. The storage unit stores an approximation level related to a calculation. The approximation level is changeable during the execution of the calculation. The determination unit determines whether to perform a first processing or a second processing with a probability determined based on the approximation level stored in the storage unit during the execution of the calculation. The second processing is an approximation processing of the first processing. The control unit controls so that the processing determined by the determination unit is performed. [Brief description of the drawings]
[0006] [Figure 1] FIG. 1 is a diagram illustrating an example of a hardware configuration of an information processing device. [Diagram 2] FIG. 2 is a diagram showing an example of the source code 1. As shown in FIG. [Diagram 3] FIG. 3 is a diagram showing an example of the source code 2. [Figure 4] FIG. 4 is a flow chart of the approximated loop. [Diagram 5] FIG. 5 is a diagram illustrating an example of the branch determination unit. [Figure 6] FIG. 6 is a diagram illustrating an example of the configuration of a processor to be evaluated. [Figure 7] FIG. 7 is a diagram showing an overview of the benchmarks used for the evaluation. [Figure 8] FIG. 8 is a diagram showing an example of the source code 3. [Figure 9] FIG. 9 shows the results of the number of execution cycles and the error (part 1). [Figure 10] FIG. 10 is a graph (part 2) showing the results of the number of execution cycles and the error. [Figure 11] FIG. 11 is a graph (part 3) showing the results of the number of execution cycles and the error. [Figure 12] FIG. 12 is a diagram (part 4) showing the results of the number of execution cycles and the error. [Figure 13] FIG. 13 is a diagram showing an example of an output image (part 1). [Figure 14]FIG. 14 is a diagram showing an example of an output image (part 2). [Figure 15] FIG. 15 is a diagram showing an example of an output image (part 3). [Figure 16] FIG. 16 is a diagram showing an example of an output image (part 4). DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0007] DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, embodiments of the present invention will be described with reference to the drawings. Various characteristic features shown in the following embodiments can be combined with each other.
[0008] Incidentally, the program for realizing the software appearing in this embodiment may be provided as a non-transitory computer-readable recording medium, or may be provided so as to be downloadable from an external server, or may be provided so that the program is started on an external computer and its functions are realized on a client terminal (so-called cloud computing).
[0009] In addition, in this embodiment, the term "unit" may include, for example, a combination of hardware resources implemented by a circuit in the broad sense and software information processing that can be specifically realized by these hardware resources. In addition, in this embodiment, various information is handled, and this information is represented, for example, by physical values of signal values representing voltage and current, high and low signal values as a binary bit collection consisting of 0 or 1, or quantum superposition (so-called quantum bits), and communication and calculation can be performed on the circuit in the broad sense.
[0010] In addition, a circuit in the broad sense is a circuit realized by at least appropriately combining a circuit, circuitry, a processor, a memory, etc. In other words, it includes an application specific integrated circuit (ASIC), a programmable logic device (e.g., a simple programmable logic device (SPLD), a complex programmable logic device (CPLD), and a field programmable gate array (FPGA)), etc.
[0011] <Embodiment 1> (Hardware configuration) 1 is a diagram showing an example of a hardware configuration of an information processing device 100. The information processing device 100 is an example of an information processing system. The information processing system may be composed of one information processing device 100, or may be composed of multiple information processing devices 100. The information processing system may also include devices other than the information processing device 100. The information processing device 100 is a personal computer, a smartphone, a tablet computer, a game machine, a wearable computer, a dedicated machine, or the like.
[0012] The information processing device 100 includes, as its hardware configuration, a control unit 101, a storage unit 102, an imaging unit 103, an input unit 104, a display unit 105, a communication unit 106, and a branch determination unit 107. The control unit 101 also includes a CSR (Control and Status Register) 110. The control unit 101 is, for example, a CPU (Central Processing Unit) or the like, and controls the entire information processing device 100. The CSR 110 stores an approximation level, which is a value indicating the degree of approximation in calculation. The approximation level can be changed during calculation. The storage unit 102 is a ROM, RAM, HDD, or the like, and stores programs and data used when the control unit 101 executes processing based on the programs. The control unit 101 executes processing based on the programs stored in the storage unit 102, thereby realizing functions and the like of the information processing device 100.
[0013] The imaging unit 103 is, for example, a camera, and captures an image of a subject. The subject is, for example, an operator or user of the information processing device 100. The input unit 104 is, for example, a keyboard, a mouse, and inputs information to the control unit 101 based on a user operation. The display unit 105 is, for example, a display, and outputs information based on the control of the control unit 101.
[0014] The communication unit 106 connects the information processing device 100 to a network and manages communication between the information processing device 100 and other devices. The branch decision unit 107 decides whether to perform a first process or a second process with a probability determined based on the approximation level stored in the CSR 110. The second process is an approximation process of the first process. The control unit 101 controls so that the process decided by the branch decision unit 107 is performed.
[0015] (Motivation) Approximate Computing is a technique that uses approximations to improve the efficiency of calculations. This technique can be applied to applications that can tolerate some degree of error. Examples include multimedia information processing and machine learning. These applications may not require high calculation accuracy due to noise in the input data itself or the limits of human perception. In such cases, Approximate Computing can achieve faster calculations and lower power consumption by sacrificing error. One of the challenges in expanding the scope of application of this technique is to keep the error within an acceptable range. This acceptable range often changes dynamically depending on the user's subjective opinion.
[0016] For example, when the quality of an output image changes due to approximation, the extent to which quality is tolerable depends on the user's sense. If the tolerance range is statically set based on a user with a relatively narrow tolerance range, the effect of approximation cannot be fully achieved for users with a relatively wide tolerance range. Focusing on this, this specification proposes an architecture that supports dynamic control of calculation accuracy by hardware. In this specification, the approximation level is defined as "a value that indicates how actively the hardware performs approximation." The information processing device 100 holds the approximation level in the CSR 110 and dynamically sets it based on external input or hardware detection, enabling execution with appropriate calculation accuracy.
[0017] This specification also proposes a loop approximation method called "Loop Body Switching" that allows stepwise control of calculation accuracy as one of the approximation methods that operates on the proposed architecture. This method executes an approximated loop body instead of the original accurate loop body with a probability determined by the approximation level. By adding a dedicated branch instruction called a "probabilistic branch instruction" and a hardware device called a "branch decision unit 107" for selecting a loop body, the overhead of loop body selection and branching is reduced.
[0018] To evaluate the method described in this specification, we implement the proposed architecture in a simulator and apply Loop Body Switching to four benchmarks. We measure the number of execution cycles and the error for each of 32 approximation levels, and show that gradual approximation is possible. We also compare the case with and without the branch decision unit 107 to evaluate the effectiveness of the branch decision unit 107.
[0019] The contributions of this specification are as follows: - Proposal of an architecture that can dynamically control the approximation level - Proposal of Loop Body Switching that enables stepwise control of calculation accuracy Proposal of probabilistic branch instructions and branch decision units107 that support loop body switching - Examination of the change in error and number of execution cycles for each approximation level using four benchmarks - Examination of change in number of execution cycles depending on the presence or absence of branch decision unit 107
[0020] (Proposed method) (1) Motivation One of the challenges of Approximate Computing is to reduce execution time and power consumption accordingly while keeping the error within an acceptable range. When applying this technology to applications such as image processing, the acceptable range of error often changes dynamically because human perception differs depending on the individual and the situation. If the acceptable range is narrow, the approximation effect is not sufficient, but if the acceptable range is relaxed, it becomes difficult to use the application. If it becomes possible to execute calculations with a precision that corresponds to the quality that the user actually requires, the gains obtained by Approximate Computing will be even greater. The challenges to achieve this can be broadly divided into the following two points. How to run the same binary at progressively different precisions How to estimate the quality required by users
[0021] If the first problem is solved, the second problem can be solved most simply by getting feedback directly from the user. The first problem can be realized by using an internal register that indicates the calculation precision that can be rewritten at run time and an approximation method that can change the calculation precision depending on the value. For example, if you decide to execute either the original exact loop body or an approximate loop body for each loop iteration, and the probability of selecting the approximate loop body is determined by an internal register, you can dynamically change the calculation precision.
[0022] (2) Overview The method proposed in this specification is roughly divided into the following three parts: -An architecture that can dynamically control the approximation level - Loop Body Switching, a loop approximation method implemented on the proposed architecture "Probabilistic branch instructions" and "Branch decision unit 107" that support Loop Body Switching The first is an architecture that has an approximation level value as CSR110. The approximation level is a value that indicates how aggressively the hardware performs approximation. The second is a loop approximation method that can change the calculation accuracy by stochastically executing the approximated loop body. The third is a hardware mechanism that improves performance by supporting the probabilistic branching of the loop approximation technique. The hardware mechanism is composed of a probabilistic branch instruction for branching with a probability corresponding to the approximation level and a branch decision unit 107 that determines the branch direction of the instruction.
[0023] (3) Approximation level control CSR110, which holds the approximate level value, is a 32-bit register with a maximum of 2 32It can have approximation levels. When there are N approximation levels, the range of approximation levels is 0 to N-1. The approximation level is rewritten based on instructions in the program, external interrupts, and hardware detection. Approximation methods that use approximation levels are designed so that increasing the approximation level reduces the calculation accuracy but reduces the number of execution cycles and power consumption. Next, we will explain the implementation in this specification. The approximation level is expressed by 5 bits, and there are 32 levels from 0 to 31. Approximation level 0 means no approximation at all. The approximation level can be changed by rewriting the CSR value with an instruction in the program.
[0024] (4) Loop Body Switching This method performs approximation by generating an approximate loop body from an original accurate loop body and executing the approximate loop body in some iterations. The loop structure is transformed and a branch instruction is inserted so that one of the loop bodies can be selected for each iteration. In order to show the operation of LoopBody Switching, an example of a loop to be approximated is shown in source code 1, and the loop after being transformed by approximation is shown in source code 2. FIG. 2 is a diagram showing an example of source code 1. FIG. 3 is a diagram showing an example of source code 2. That is, the control unit 101 identifies a process to be approximated from the source code of the program, and transforms the identified process to be approximated into a first process and a second process related to the process to be approximated. The processing to be approximated is, for example, a loop portion of source code. Here, an example of the processing to be approximated identified from the source code is the processing of "Example of Loop to be Approximated" in FIG. 2. An example of a first processing is the processing of the / / Exact Body portion in FIG. 3. An example of a second processing is the processing of the / / Approximate Body portion in FIG. 3.
[0025] The transformed loop is composed of three parts: a loop body selection part, the original correct loop body, and an approximate loop body. The loop body selection part probabilistically decides which loop body to execute and performs conditional branching. The loop body is selected by sampling the truth value from the Bernoulli distribution that depends on the variable approx level. The approximate loop body performs processing that approximates the original correct loop body. In this example, interpolation is performed using the NN method. In this specification, the processing of the loop body selection part is performed by hardware. First, the selection probability of the approximate loop body is determined by the hardware CSR 110, not by a variable in the program. This makes it easy to dynamically rewrite from the outside and to refer to it from the hardware. The branching of the loop body selection is performed by a dedicated probabilistic branch instruction and the branch decision unit 107, rather than a normal conditional branch instruction. The probabilistic branch instruction is an instruction in which the branch direction is determined by the branch decision unit 107 at the time of fetching, and it is possible to completely prevent the occurrence of branch prediction errors.
[0026] A flow chart of the approximated loop is shown in Figure 4. Figure 4 is a flow chart of the approximated loop. The process of FIG. 4 will be described below. In S401, the control unit 101 assigns 0 (zero) to a variable i. In S402, the control unit 101 judges whether i is less than b. For example, b is a constant that determines the maximum number of loop rotations. If it is judged that i is less than b, the control unit 101 advances the process to S403. If it is judged that i is not less than b, the control unit 101 ends the process shown in FIG. In S403, the control unit 101 executes the Exact Body process. An example of the Exact Body process is the Exact Body process shown in FIG. In S404, the control unit 101 increments the value of the variable i by one. In S405, the control unit 101 judges whether i is less than b. For example, b is a constant that determines the maximum number of loop rotations. If it is judged that i is less than b, the control unit 101 advances the process to S406. If it is judged that i is not less than b, the control unit 101 ends the process shown in FIG. In S406, the control unit 101 performs branching processing probabilistically. If the control unit 101 determines to perform Exact Body processing probabilistically, the process proceeds to S407. If the control unit 101 determines to perform Approximate Body processing, the process proceeds to S408. In S407, the control unit 101 executes the Exact Body process. An example of the Exact Body process is the Exact Body process shown in FIG. In S408, the control unit 101 executes Approx Body processing. An example of Approx Body processing is the Approx Body processing shown in FIG.
[0027] In the approximation loop body, either an interpolation process is performed or nothing is done. The interpolation process is performed by interpolating the values of the array using the NN method. In the NN method, the value of the previous iteration is used as the interpolated value, so appropriate interpolation cannot be performed in the first iteration. For this reason, the loop structure is modified so that the original accurate loop body is always executed in the first iteration. When Loop Body Switching is performed without hardware support, the overhead of the loop body selection unit is large. First, there is an overhead for sampling the branch direction from the Bernoulli distribution according to the approximation level. Furthermore, the branch decision unit 107 must assign a probabilistic branch without knowing the approximation level information. In this case, the overhead increases further due to the occurrence of branch prediction errors.
[0028] (5) Probabilistic branch instructions A probabilistic branch instruction is a branch instruction in which the next program counter (PC) value is determined by hardware at run time. The branch destination address is the value obtained by adding the PC value to the immediate value of the operand. Since the branch direction is determined at fetch time, no branch prediction errors occur. Next, the implementation in this specification will be described. The branch destination address is calculated in the execution stage. Writing to the Branch Target Buffer (BTB) is always performed regardless of the branch direction. Branch direction information is provided to the branch decision unit 107 as necessary. The latency is 1.
[0029] (6) Branching decision section The branch decision unit 107 is a device that determines the next PC of a probabilistic branch instruction. The branch direction is determined by a branch direction determiner that outputs 1 (branch) or 0 (do not branch). When branching, the Target Address obtained from the BTB becomes the next PC. The BTB is shared with the branch decision unit 107. In this specification, a Bernoulli branch decision unit, which will be described next, is used. Fig. 5 shows how the PC is decided when the Bernoulli branch decision unit is used. Fig. 5 is a diagram showing an example of the branch decision unit 107. This branch decision unit 107 performs pseudo-sampling from the Bernoulli distribution. It is equipped with a linear feedback shift register (LFSR) that is a hardware pseudo-random number generator inside. When the approximation level is nbit and the LFSR is mbit, the output value is decided by equation (1).
[0030]
number
number
[0031]
number
[0032] Equation (3) is
number
[0033] (Evaluation method) (1) Simulation environment We implemented and evaluated the proposed architecture in Onigiri II (*1), a cycle-accurate simulator. (*1)Ryota Shioya, Masahiro Goto, Shuichi Sakai: Design and Implementation of Processor Simulator "Onigiri II", Symposium on Advanced Computing Infrastructure Systems SACSIS2009 (2009). The configuration of the processor to be evaluated is shown in Fig. 6. Fig. 6 is a diagram showing an example of the configuration of the processor to be evaluated. Based on this configuration, we simulate a processor that implements the above-mentioned method.
[0034] (2) Benchmark An overview of the benchmarks used for the evaluation is shown in Figure 7. PER-FECT(*2) is a benchmark suite for embedded computing that consists of applications from various fields. (*2)Barker, K., Benson, T., Campbell, D., Ediger, D., Gioiosa, R., Hoisie, A., Kerbyson, D., Manzano, J., Marquez, A., Song, L., Tallent, N. and Tumeo, A.: PERFECT (Power Efficiency Revolution For Embed-ded Computing Technologies) Benchmark Suite Man-ual, Pacic Northwest National Laboratory and GeorgiaTech Research Institute (2013). AxBench(*3) is a benchmark suite consisting of applications suitable for approximation. (*3)Yazdanbakhsh, A., Mahajan, D., Esmaeilzadeh, H. andLot-Kamran, P.: AxBench: A Multiplatform Bench-mark Suite for Approximate Computing, IEEE DesignTest (2017). We selected four benchmarks: his-teq from PERFECT, and jpeg, kmeans, and sobel from AxBench. The output of these benchmarks is an image, so the output quality can be visually confirmed. In the measurement section, the approximation level is fixed and the number of execution cycles and error for each approximation level are measured.
[0035] The start and end positions for measuring the number of execution cycles are before and after the loop to be approximated, or before and after the outermost loop that includes the loop to be approximated. Source code 3 shows an example in which the outermost loop that includes the loop to be approximated is set as the measurement section. Fig. 8 is a diagram showing an example of source code 3. As shown in this example, the measurement section may include processes other than the loop to be approximated.
[0036] (3) Error assessment We use the normalized mean square error (NRMSE) as an error index. Let the number of pixels in the image be n, and the i-th pixel value of the original image and the approximated image be p i , p' i , the upper and lower limits of pixel values are p max , p min Then the error is expressed by the following formula:
number
[0037] (result) The results of the number of execution cycles and the error are shown in Fig. 9 (histeq), Fig. 10 (jpeg), Fig. 11 (kmeans), and Fig. 12 (sobel). Fig. 9 shows the results of the number of execution cycles and the error (part 1). Fig. 10 shows the results of the number of execution cycles and the error (part 2). Fig. 11 shows the results of the number of execution cycles and the error (part 3). Fig. 12 shows the results of the number of execution cycles and the error (part 4). The horizontal axis is the approximation level, the left vertical axis is the normalized number of execution cycles normalized by the number of execution cycles at approximation level 1, and the right vertical axis is the NRMSE. Approximation level 1 means the execution result of the binary generated without editing the assembly for approximation. Therefore, approximation level 1 is the baseline. In addition, Fig. 13 (histeq), Fig. 14 (jpeg), Fig. 15 (kmeans), and Fig. 16 (sobel) show the output images when executed at approximation levels -1, 6, 12, 18, 24, and 30. Fig. 13 is a diagram showing an example of an output image (part 1). Fig. 14 is a diagram showing an example of an output image (part 2). Fig. 15 is a diagram showing an example of an output image (part 3). Fig. 16 is a diagram showing an example of an output image (part 4).
[0038] (1) Trade-off between error and number of execution cycles From the results shown in the figure, it can be seen that when using the branch decision unit 107, within the range of approximation levels 0 to 31, as the approximation level increases, the error increases and the number of execution cycles decreases. This shows that trade-off control between error and number of execution cycles is possible by controlling the approximation level. By combining this with a method for dynamically changing the approximation level, it becomes possible to execute with the output quality actually required.
[0039] (2) Change in the number of execution cycles Focus on the number of execution cycles when the branch decision unit 107 is present. Except for the change from approximation level 26 to 27 in FIG. 9 (histeq), the normalized number of execution cycles decreases monotonically as the approximation level increases in the range from approximation level 0 to 31. The degree of decrease differs for each benchmark, and the normalized number of execution cycles at approximation level 31 is 0.71 for histeq, 0.76 for jpeg, 0.051 for kmeans, and 0.16 for sobel. According to formula (2), the probability of executing the approximated loop body at approximation level 31 is about 0.97, and an approximated loop body with less processing should be selected with a fairly high probability, but the decrease in the number of execution cycles for histeq and jpeg is small. The decrease in the number of execution cycles for histeq is small because the processing of the original accurate loop body is small, and the number of execution cycles does not decrease much even if the approximated loop body is executed. The decrease in the number of execution cycles for jpeg is small because the measurement section includes processing other than the loop to be approximated. This corresponds to including a func() processing unrelated to the approximation as in source code 3.
[0040] Except for Figure 13 (histeq), at low approximation levels such as approximation level 0, the number of execution cycles increases compared to when the approximation technique is not applied. This is because the increase in the number of execution cycles due to the modification of the loop structure and the insertion of probabilistic branch instructions for approximation is greater than the decrease in the number of execution cycles due to approximation.
[0041] (3) Effects of the branch determination unit 107 Next, the case without the branch decision unit 107 and the case with the branch decision unit 107 are compared. While there is a large difference between the normalized execution cycle numbers in FIG. 9 (histeq) and FIG. 10 (jpeg), there is almost no difference between FIG. 11 (kmeans) and FIG. 12 (sobel). In the case without the branch decision unit 107, the number of execution cycles increases at maximum by 44.5% for histeq, 4.6% for jpeg, 0.9% for kmeans, and 5% for sobel compared to the case with the branch decision unit 107. This difference in the increase amount occurs due to the difference in the number of execution cycles required to execute the original accurate loop body. When the number of execution cycles required to execute the original accurate loop body is large, the effect of the branch prediction error penalty becomes relatively small. Therefore, even if the branch prediction error is reduced by using the branch decision unit 107, the effect is difficult to see. Furthermore, in all benchmarks and at all approximation levels, the normalized execution cycle number in the case with the branch decision unit 107 is less than the number of execution cycles in the case without the branch decision unit 107. This shows that when the branch decision unit 107 used in this example is used, the use of the branch decision unit 107 does not degrade performance. Also, looking at FIG. 10 (jpeg) and FIG. 11 (kmeans), it can be seen that the difference between the case without the branch decision unit 107 and the case with it increases as the approximation level increases at first, but the difference decreases halfway through. This is because the bias in the branch direction of the probabilistic branch instruction decreases when the approximation level changes from 0 to 16, and the bias in the branch direction increases when the approximation level changes from 16 to 31. When determining the branch direction using pseudo-random numbers, a general branch decision unit 107 is easier to guess when there is a bias in the branch direction. For this reason, the difference between the case without the branch decision unit 107 and the case with it increases with respect to the change in the approximation level at first, but becomes smaller at the approximation level near the center.
[0042] (4) Change in error A common trend for all benchmarks is that the error increases monotonically as the approximation level increases. Also common is the tendency for large changes to be seen near the minimum and maximum approximation levels, with a roughly linear trend seen in other areas. Looking at the output images, we can see that for all benchmarks, the image deteriorates as the approximation level increases. However, the degree of quality deterioration varies. Figure 9 (histeq) does not deteriorate much as the approximation level increases. On the other hand, Figure 10 (jpeg) deteriorates to the point where it is impossible to distinguish what is in the image at approximation level 30.
[0043] <Embodiment 2> In the second embodiment, an example in which the control unit 101 changes the approximation level stored in the CSR 110 will be described. The control unit 101 may change the approximation level stored in the CSR 110 based on a user operation via the input unit 104 or the like.
[0044] The control unit 101 may also change the approximation level stored in the CSR 110 based on the user's line of sight. More specifically, the control unit 101 may estimate the user's line of sight based on the captured image of the user, and change the approximation level stored in the CSR 110 based on the estimated user's line of sight. For example, the control unit 101 performs image recognition processing based on the captured image of the operator of the information processing device 100 captured by the imaging unit 103, and estimates the user's line of sight. Then, the control unit 101 changes the approximation level stored in the CSR 110 based on the estimated user's line of sight. For example, in the information processing device 100, a plurality of programs are running, and the control unit 101 reduces the approximation level for a program that outputs a processing result in front of the user's line of sight (toward the baseline), and increases the approximation level for a program that outputs a processing result in a location other than the user's line of sight (toward the baseline). By carrying out such processing, programs not confirmed by the user can reduce both the execution time and the product power consumption at the expense of calculation accuracy, while programs confirmed by the user can maintain the calculation accuracy.
[0045] Note that this is just one example, and for example, when there are multiple users, the gaze directions of the multiple users may be estimated, and the approximation levels stored in the CSR 110 may be changed based on the estimated gaze directions of the multiple users. For example, the control unit 101 may reduce (bring closer to the baseline) the approximation level for a program that outputs a processing result in the gaze direction of many of the multiple users (i.e., a predetermined ratio or more of the multiple users), and may increase (move away from the baseline) the approximation level for a program that outputs a processing result in a direction other than the gaze direction of many of the users.
[0046] Furthermore, the control unit 101 may change the approximation level stored in the CSR 110 based on the input value of the information processing device 100. For example, when the amount of input values is greater than a threshold, the control unit 101 may increase the approximation level for the program processing the input value (move it away from the baseline), and when the amount of input values is equal to or less than the threshold, the control unit 101 may decrease the approximation level for the program processing the input value (move it closer to the baseline).
[0047] Furthermore, the control unit 101 may change the approximation level stored in the CSR 110 based on the time period. For example, the control unit 101 learns, by machine learning, the time periods during which the results of the program processing are not used and the time periods during which the results of the program processing are used. Then, based on the learned results, the control unit 101 may increase the approximation level for the time periods during which the results of the program processing are not used (moving it away from the baseline) and decrease the approximation level for the time periods during which the results of the program processing are used (moving it closer to the baseline).
[0048] Furthermore, the control unit 101 may change the approximation level stored in the CSR 110 based on the processing load of the information processing system. For example, the control unit 101 may increase the approximation level (move it away from the baseline) when the CPU utilization rate of the programs running on the entire information processing device 100 exceeds a threshold value, and may decrease the approximation level (move it closer to the baseline) in other cases. The CPU utilization rate is one example, and other indices indicating the processing load, such as memory utilization rate and power consumption, may also be used.
[0049] <Other embodiments> An aspect of the above-described embodiment may be an information processing method. The information processing method is an information processing method executed by an information processing system. The information processing method includes a determination step and a control step. The information processing system has a CSR 110. The CSR 110 stores an approximation level. In the determination step, a branch destination of the process is determined to be a first process or a second process with a probability determined based on the approximation level stored in the CSR 110. The second process is an approximation process of the first process. In the control step, a process is selected so that the process of the branch destination determined by the determination step is executed. <Additional Notes> Furthermore, it may be provided in the following aspects: In the information processing system, the control unit identifies a processing to be approximated from a source code of a program, and transforms the identified processing to be approximated into the first processing and the second processing related to the processing to be approximated. In the information processing system, the processing to be approximated is a loop portion of the source code. In the information processing system, the approximation level is a value indicating a degree of approximation in the calculation. In the information processing system, the control unit changes the approximation level stored in the storage unit based on a user operation. In the information processing system, the control unit changes the approximation level stored in the storage unit based on a user's line of sight. In the information processing system, the control unit estimates a user's line of sight based on a captured image of the user, and changes the approximation level stored in the memory unit based on the estimated user's line of sight. In the information processing system, the control unit changes the approximation level stored in the storage unit based on an input value of the information processing system. In the information processing system, the control unit changes the approximation level stored in the storage unit based on a time period. In the information processing system, the control unit changes the approximation level stored in the storage unit based on a processing load of the information processing system. An information processing method executed by an information processing system, comprising a determination step and a control step, the information processing system having a memory unit, the memory unit storing an approximation level related to a calculation, the approximation level being changeable while the calculation is being executed, the determination step determining whether to perform a first processing or a second processing with a probability determined based on the approximation level stored in the memory unit, the second processing being an approximation process of the first processing, and the control step controlling so that the processing determined by the determination step is performed. Of course, this is not the case. Furthermore, the above-described embodiments and modifications may be combined in any desired manner.
[0050] Finally, although various embodiments of the present invention have been described, these are presented as examples and are not intended to limit the scope of the invention. The new embodiments can be implemented in various other forms, and various omissions, substitutions, and modifications can be made without departing from the spirit of the invention. The embodiments and their modifications are within the scope and spirit of the invention, and are included in the scope of the invention and its equivalents described in the claims. [Explanation of symbols]
[0051] 100: Information processing device 101: Control unit 102: Storage section 103: Imaging unit 104: Input section 105:Display section 106: Communications Department 107: Branching decision unit
Claims
1. An information processing system, The apparatus includes a storage unit, a determination unit, and a control unit, The storage unit stores an approximation level related to the calculation, the approximation level is variable during execution of the calculation; The determination unit determines, during the execution of the calculation, whether to perform a first process or a second process with a probability determined based on the approximation level stored in the storage unit; the second process is an approximation of the first process, The control unit controls so that the process determined by the determination unit is performed. Information processing system.
2. 2. The information processing system according to claim 1, The control unit is Identifying a process to be approximated from a source code of the program, and transforming the identified process to be approximated into the first process and the second process related to the process to be approximated; Information processing system.
3. 3. The information processing system according to claim 2, The process to be approximated is a loop portion of the source code. Information processing system.
4. 4. The information processing system according to claim 1, The approximation level is a value indicating the aggressiveness of the approximation in the calculation. Information processing system.
5. 5. The information processing system according to claim 1, The control unit changes the approximation level stored in the storage unit based on a user operation. Information processing system.
6. 5. The information processing system according to claim 1, The control unit changes the approximation level stored in the storage unit based on a line of sight of the user. Information processing system.
7. 7. The information processing system according to claim 6, the control unit estimates a line of sight of the user based on a captured image of the user, and changes the approximation level stored in the storage unit based on the estimated line of sight of the user. Information processing system.
8. 5. The information processing system according to claim 1, the control unit changes the approximation level stored in the storage unit based on an input value of the information processing system. Information processing system.
9. 5. The information processing system according to claim 1, The control unit changes the approximation level stored in the storage unit based on a time period. Information processing system.
10. 5. The information processing system according to claim 1, the control unit changes the approximation level stored in the storage unit based on a processing load of the information processing system. Information processing system.
11. An information processing method executed by an information processing system, comprising: A method for determining a target value, comprising: The information processing system includes a storage unit, The storage unit stores an approximation level related to the calculation, the approximation level is variable during execution of the calculation; In the determination step, a branch destination of the process is determined as to whether to perform a first process or a second process with a probability determined based on the approximation level stored in the storage unit; the second process is an approximation of the first process, In the control step, control is performed so that the process determined in the determination step is performed. Information processing methods.
Citation Information
Patent Citations
Method and system for calculating communication-network failure frequency, and program
JP2010252101A
Processor that Recovers from Excessive Approximation Calculation Errors
JP2016524748A