IMPROVING THE RATIO OF MEMORY OPERATIONS TO FLOATING-POINT OPERATIONS IN LOOPS

被引:62
作者
CARR, S [1 ]
KENNEDY, K [1 ]
机构
[1] RICE UNIV,CITI,HOUSTON,TX 77251
来源
ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS | 1994年 / 16卷 / 06期
关键词
LANGUAGES; BALANCE; UNROLL-AND-JAM;
D O I
10.1145/197320.197366
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Over the past decade, microprocessor design strategies have focused on increasing the computational power on a single chip. Because computations often require more data from cache per floating-point operation than a machine can deliver and because operations are pipelined, idle computational cycles are common when scientific applications are executed. To overcome these bottlenecks, programmers have learned to use a coding style that ensures a better balance between memory references and floating-point operations. In our view, this is a step in the wrong direction because it makes programs more machine-specific. A programmer should not be required to write a new program version for each new machine; instead, the task of specializing a program to a target machine should be left to the compiler. But is our view practical? Can a sophisticated optimizing compiler obviate the need for the myriad of programming tricks that have found their way into practice to improve the performance of the memory hierarchy? In this paper we attempt to answer that question. To do so, we develop and evaluate techniques that automatically restructure program loops to achieve high performance on specific target architectures. These methods attempt to balance computation and memory accesses and seek to eliminate or reduce pipeline interlock. To do this, they estimate statically the balance between memory operations and floating-point operations for each loop in a particular program and use these estimates to determine whether to apply various loop transformations. Experiments with our automatic techniques show that integer-factor speedups are possible on kernels. Additionally, the estimate of the balance between memory operations and computation, and the application of the estimate are very accurate-experiments reveal little difference between the balance achieved by our automatic system and that possible by hand optimization.
引用
收藏
页码:1768 / 1810
页数:43
相关论文
共 25 条
[1]  
AIKEN A, 1987, 87821 CORN U TECH RE
[2]  
Allen Frances E., 1972, DESIGN OPTIMIZATION, P1
[3]   AUTOMATIC TRANSLATION OF FORTRAN PROGRAMS TO VECTOR FORM [J].
ALLEN, R ;
KENNEDY, K .
ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 1987, 9 (04) :491-542
[4]  
Briggs P., 1992, THESIS RICE U HOUSTO
[5]   ESTIMATING INTERLOCK AND IMPROVING BALANCE FOR PIPELINED ARCHITECTURES [J].
CALLAHAN, D ;
COCKE, J ;
KENNEDY, K .
JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING, 1988, 5 (04) :334-358
[6]  
CALLAHAN D, 1990, JUN P ACM SIGPLAN 90, P53
[7]  
CALLAHAN D, 1987, 1ST P INT C SUP
[8]  
Carr S., 1992, Proceedings. Supercomputing '92. (Cat. No.92CH3216-9), P114, DOI 10.1109/SUPERC.1992.236704
[9]   SCALAR REPLACEMENT IN THE PRESENCE OF CONDITIONAL CONTROL FLOW [J].
CARR, S ;
KENNEDY, K .
SOFTWARE-PRACTICE & EXPERIENCE, 1994, 24 (01) :51-77
[10]  
CARR S, 1992, THESIS RICE U HOUSTO