Accelerating seismic computations using customized number representations on FPGAs |
In the profiling stage, the major objective is to collect range and distribution information for the variables. The idea of our approach is to instrument every target variable in the code, adding function calls to initialize data structures for recording range information and to modify the recorded information when the variable value changes.
For the range information of the target variables (variables to map into the circuit design), we keep a record of four specific points on the axis, shown in figure 2.
axis
Figure 2. | |
---|---|
The points and presents the values far away from zero, i.e., the maximum absolute values that need to be represented. Based their values, the integer bit-width of fixed-point numbers can be determined. Points and represent the values close the zero, i.e., the minimum absolute values that need to be represented. Using the minimum and maximum values, the exponent bit-width of floating-point numbers and integer bit-width of logarithmic numbers can be determined.
For the distribution information of each target variable, we keep a number of buckets to store the frequency of values at different intervals. Fig. 3 shows the distribution information recorded for the real part of variable wfld (a complex variable). In each interval, the frequency of positive and negative values are recorded separately. The results show that, for the real part of variable wfld, in each interval, the frequencies of positive and negative values are quite similar, and the major distribution of the values falls into the range to .
range-wfld
Figure 3. Range distribution of the real part of variable `wfld'. The leftmost bucket with index is reserved for zero values. The other buckets with index store the values in the range . | |
---|---|
The distribution information provides a rough metric for the users to make an initial guess about which number representations to use. If the values of the variables cover a wide range, floating-point and logarithmic number formats are usually more suitable. Otherwise, fixed-point numbers shall be enough to handle the range.
Accelerating seismic computations using customized number representations on FPGAs |