Развитие методов статического анализа программ, используемых в оптимизирующих компиляторах для архитектур с явно выраженной параллельностью
Диссертация
Предложенный в этой главе подход к решению задачи межпроцедурного анализа потока данных, основанный на использовании ЧТФ, ускоряет работу этого анализа до уровня, позволяющего использовать его в промышленных компиляторах. Основная идея модификации состоит в том, что сильно-связные компоненты графа вызовов рассматриваются как единое целое. Для всех процедур, входящих в цикл, используется одна… Читать ещё >
Список литературы
- M. S. Schlansker, B. R. Rau. EPIC: An Architecture for Instruction-Level Parallel Processors: Technical Report HPL-1999−1II / Compiler and Architecture Research Hewlett-Packard Laboratories, Palo Alto, February 2000. 80 p.
- Boris Babayan. E2K Technology and Implementation. // in Proceedings of the Euro-Par 2000 Parallel Processing: 6th International. — Volume 1900 / 2000. -January, 2000.-P. 18−21.
- M. Кузьминский. Отечественные микропроцессоры: Elbrus E2K // Открытые системы, № 05−06, 1999. С. 8−13.
- К. Dieffendorf. The Russians Are Coming. Supercomputer Maker Elbrus Seeks to Join x86/IA-64 Melee // Microprocessor Report, V.13, №.2. February 15, 1999. -P. 1−7.7. httpV/open.specbench org/cpu928. http://open specbench orp/cpu95
- В.Н.Касьянов, В. А. Евстигнеев, Графы в программировании: обработка, визуализация и применение. Санкт-Петербург «БХВ-Петербург», 2003.
- В.В. Воеводин, Вл. В. Воеводин, Параллельные вычисления. Санкт-Петербург «БХВ-Петербург», 2002.
- Alfred V. Aho, Ravi Sethi, Jeffrey D. UHman, «Compilers: Principles, Techniques, and Tools», Addison-Wesley, Reading, 1986.
- John R. Ellis. Bulldog: A compiler for VLIW Architectures. MIT Press, 1985
- Dick Grune, Henri E. Bal, Ceriel J.H. Jacobs and Koen G. Langendoen, Modern Compiler Design, by John Wiley & Sons, Ltd, 2000.
- Randy Allen, Ken Kennedy, Optimizing Compilers for Modern Architectures. 2002 by Academic Press.
- Steven S. Muchnick, «Advanced Compiler Design and Implementation», Morgan Kauffman, San Francisco, 1997.
- Utpal Banerjee, Loop Transformations for Restructuring Compilers. Kluwer academic Publishers, 1993.
- Utpal Banerjee. Dependence Analysis. Kluwer Acadmic Publishers. 1997
- Miling Girkar, Constantine D.PolychronopouIos. «Extracting Task-Level Parallelism» ACM, July 1995.
- Stephen Alstrup, Dov Harel, Peter W. Lauridsen, Mikkel Thorup, Dominators in Linear Time. Department of Computer Science, University of Copenhagen, 1985.
- G. Ramalingam, On Loops, Dominators, and Dominance Frontier. PLDI 2000, Vancouver, Canada.
- Vugranam C. Sreedhar, Yong-fong Lee, Guang R.Gao. DJ-Graphs and Their Applications to Flowgraph Analyses. ACAPS Tchnical Memo 70, May 11, 1994.
- Vugranam C. S. Sreedhar, Guang R.Gao. Computing phi-nodes in Linear Time Using DJ-graphs. ACAPS Tchnical Memo 75, January 18, 1994.
- Keshav Pingali, Gianfranco Bilardi, Optimal Control Dependence Computation and the Roman Chariots Problem. ACM, 1997.
- Richard Johnson and Michael Schlansker, «Analysis Techniques for Predicated Code», In Proc. Of the 29th Annual Int’l Symp. On Microarchitecture, December 1996.
- Fohn W. Sias, Wen-mei W. Hwu, David I. August. Accurate and Efficient Predicate Analysis with Binary Decision Diagrams. Proceedings of the 22rd Annual ACM/IEEE Internationsl Symposium on Microarchitecture, December 2000.
- Nancy J. Warter, Scott A. Mahlke, Wen-mei W. Hwu, B. Ramakrishna Rau. Reverse If-Conersion. ACM-SIGPLAN-JLDI-6/93/Albuquerque, N.M.
- Johnson, Richard Craig. Efficient Program Analysis Using Dependence Flow Graphs Ph.D. dissertation, Cornell University. August, 1994.
- Alexandra Nicolau and Steven Novack, Trailblazing: A Hierarchical Approach to Percolation Scheduling. Department of Information and Computer Science University of California, Proceedings of the 1993 International Conference on Parallel processing.
- Maryam Emami «A practical interprocedural alias analysis for optimizing/parallelizing C compiler». Master’s thesis, School of Computer Science, McGill University, August 1993.
- P. Cousot, R. Cousot, «Abstract interpretation framework». Journal of logic and Computation, 2(4) 511−547, August 1992.
- Eric James Stoltz, Intermediate Compiler Analysis via reference Chaining. Portland State University, Thesis, January 1995.
- William Blume, Rudolf Eigenmann. Symbolic Range Propagation. University of Illinois at Urbana-Champaign, September 20, 1994.
- William Blume, Rudolf Eigenmann. Demand-driven, Symbolic Range Propagation. University of Illinois at Urbana-Champaign.
- Loren Taylor Simson, Value-Driven Redundancy Elimination, Thesis, Rice University, Houston, Texas, April, 1996.
- Fend Tu, David Padua. Efficient Building and Placing of Gating Functions Center for Supercomputing Research and Development, University of Illinois at Urbana-Champaingn, 1995.
- Kwangkeun Yi and Williams Ludwell Harrison III, Interprocedural Data Flow Analysis for Compile-time Memory Management. Center for Supercomputing Research and Development, University of Illinois at Urbana-Champaign.
- Evelyn Duesterwald, Rajiv Gupta, Mary Lou Soffa, Demand-driven Computation of Interprocedural Data Flow. Department of Computer Science, University of Pittsburg, POPL'95 1/95 San Francisco, CA USA.
- Evelyn Duesterwald, Rajiv Gupta, and Mary Lou Soffa, A Practical Framework for Demand-Driven Interprocedural Data Flow Analysis. University of Pittsburg, ASM SISPLAN-SIGACT Symposium on Principles of Programming Languages, 1995.
- Susan Horvvitz, Thomas Reps, and Mooly Sagiv, Demand Interprocedural Dataflow Analysis. University of Wisconsin, Proceedings of the Third ASM SIGSOFT Symposium on Foundations of Software Engineering, Washington DC, October 10−13, 1995.
- David R. Chase, Mark Wegman, F. Kenneth Zadeck, Analysis of Pointers and Structures. ASM SIGPLAN'90 PLDI, June 20−22, 1990.
- Yuan-Shin Hwang, Joel Saltz, Compile-Time Analysis on Programs with Dynamic Pointer-Linked Data Structures. Depatment of Computer Science, University of Maryland, Nobember 8, 1996.
- Rakesh Ghiya and Laurie J. Hendren, Connection Analysis: A Practical Interprocedural Heap Analysis for C. School of Computer Science, McGill University,
- Proceedings of the Eigth Workshop on Languages and Compilers fo rParallel Computing, Columbus, Ohio, August 10−12, 1995.
- Xinan Tang, Rakesh Ghiya, Laurie J. Hendren, Guang R. Gao, Heap Analysis and Optimizations for Threaded Programs. School of Computing Science, McGill University, 1997.
- Rakesh Ghiya, Practical Techniques for Interprocedural Heap Analysis. School of Computing Science, McGill University, Montreal, January 1996.
- Keith D. Cooper, Ken Kennedy, Fast Interprocedural Alias Analysis. Rice University, 1989.
- Bjarne Steensgaard, Points-to Analysis in Almost Linear Time, Microsoft Research, 1996.
- Keith D. Cooper, Ken Kennedy, Interprocedural Side-Effect Analysis in Linear Time. Rice University, 1988.
- Robert P. Wilson, Monika S.Lam. Efficient context-sensitive pointer analysis for С programs. In Proceedings of the ACM SIGPLAN'95 Conference on Programming Language and Implementation, pages 1−12, June 1995.
- Kleanthis Psarris and Konstantinos Kyriakopoulos, Data Dependence Testing in Practice. Division of Computer Science, The University of Texas at San Antonio, San Antonio, TX 78 249.
- Paul M. Petersen and David A. Padua, Experimental Evaluation of Some Data Dependence Tests (Extended Abstract), Center for Supercomputing Research and Deelopment, University of Illinois at Urbana-Champaign, Urbana, Illinois, 61 801.
- Paul M. Petersen, David A. Padua, Static and Dynamic Evaluation of Data Dependence Analysis. Center for Supercomputing Research and Development, University of Illinois at Urbana-Champaign.
- Keshav Pingali, Micah Beck, Richard Johnson, Mayan Moudgill, Paul Stodghill,
- Dependence Flow Graph: An Algebraic Approach to Program Dependencies. Department of Computer Science, Cornell University, Ithaca, NY 14 853.
- Jay Hoeflinger, Run-Time Dependence Testing by Integer Sequence Analysis. Center for Supercomputing Research & Development, University of Illinois at Urbana-Champaign, Urbana, Illinois, 61 801.
- Paul M. Petersen, David A. Padua, Dynamic Dependence Analysis: A Novel Method for Data Dependence Evaluation. Center for Supercomputing Research and Development, University of Illinois at Urbana-Champaign, Urbana, Illinois, 618 012 932.
- Sreedhar, Vugranam C. and Gao, Guang R. A linear time algorithm for placing 9-nodes // Conference Record of POPL'95: 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Francisco, California, January 1995. Pp. 62−73.
- Дроздов А.Ю., Новиков C.B. Улучшение алгоритмов построения формы статического единственного присваивания // IX Санкт-Петербургская Международная конференция Региональная Информатика-2004 «РИ-2004» Санкт-Петербург, 22−24 июня 2004 года.
- Bilardi G., Pingali К. The Static Single Assignment Form and its Computation -Cornell University Technical Report, July, 1999.
- Tarjan, Robert E. Depth first search and linear graph algorithms // SIAM Journal on Computing, 1(2), June 1972. Pp. 146−160.
- Боханко A.C., Дроздов А. Ю. Обобщенное представление информации о потоке данных и доминировании // IX Санкт-Петербургская Международная конференция Региональная Информатика-2004 «РИ-2004» Санкт-Петербург, 22−24 июня 2004 года.
- Боханко А.С., Дроздов А. Ю. Оптимизация «Расширенное удаление излишних операций чтения из памяти» // В трудах Международной молодежной научной конференции «XXX Гагаринские чтения», Москва, 2004.
- David I. August, Wen-mei W. Hwu, and Scott A. Mahlke. A Framework for Balancing Control Flow and Predication // Proceedings of the 30th annual IEEE/ACM International Symposium on Microarchitecture. December, 1997. P. 92−103.
- Joseph С. H. Park- Mike Schlansker. On Predicated Execution Software and System Laboratory HPL-91−58, May, 1991.
- Pend Tu, David Padua. Efficient Building and Placing of Gating Functions Center for Supercomputing Research and Development, University of Illinois at Urbana-Champaingn, 1995.
- L. Carter, B. Simon, B. Calder, L. Carter, and J. Ferrante, «Predicated single static assignment «, in Proceedings of the International Conference on Parallel Architectures and Compilation Techniques, October 1999.
- J.R. Allen, K. Kennedy, C. Porterfield, J. Warren. Conersion of control dependences to data dependences, Conf. Record of POPL-IO, 1983.
- Joseph A. Fisher. Trace Scheduling: A technique for global microcode compaction // Transactions on Computers, IEEE. July, 1981. V. C-30. P. 478−490.
- S. A. Mahlke, D. C. Lin, W. Y. Chen, R. E. Hank, and R. A. Bringmann. Effective Compiler Support for Predicated Execution Using the Hyperblock. // in Proceedings of the 25th International Symposium on Microarchitecture. December, 1992. P. 45−54.
- Дроздов А.Ю., Новиков C.B. Методы совместного планирования путей программы, предлагаемые для использования в современных оптимизирующих компиляторах. «Сборник тезисов XXI научно-технической конфренции войсковой части 3 425» Москва, в/ч 3 425, 2003 г.
- John Wollenburg, «Condition awareness support for predicate analysis optimization
- University of Illinois, 1997.
- R.E. Bryant. Symbolic Boolean manipulation with ordered binary decision diagrams. Technical Report CMV-CS-92−160, School of Computer Science, Carnegie Mellon University, Pittsburgh, РЛ, October 1992.
- D.I. August, J.W. Sias, J. Puiatti, S.A. Mahlke, D.A. Connors, K.M. Crozier, and W.W. Hwu, 'The program decision logic approach to predicated execution», in Proceedings of the 26th International Symposium on Computer Architecture, pp. 208 219, May 1999.
- J. Ferrante, K. J. Ottenstein, and J.D. Warren. The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems, 9(3):319−349, July 1987.
- Le-Chun Wu, Wen-mei W. Hwu. A New Data-Location Tracking Scheme for the Recovery of Expected Variables Values. Technical Report IMPACT-98−07.
- Le-Chun Wu, Rajiv Mirani, Harlsh Patil, Bruce Olsen, Wen-mei W. Hwu. A New Framework for Debugging Globally Optimized Code. ACM SIGPLAN Conference on Programming Language Design and Implementation, Atlanta, Georgia, May 1−4, 1999.
- R. Gupta, «Debugging code reorganized by a trace scheduling compiler», Structred Programming, vol. 11, pp. 141−150, July 1990.
- Боханко A.C., Дроздов А. Ю., Корнев P.M. Анализ зависимостей по данным в цикловых регионах программы // Компьютеры в учебном процессе, № 8,2004 г.
- Vadim Maslov, «Delinearisation: an Efficient Way to Break Multiloop Dependence Equations», Proceedings of PLDI'92, ACM, 1992.
- Г. П. Кюнци, В. Крелле, «Нелинейное программирование», Москва, Советское Радио, 1965.
- Дроздов А.Ю., Степаненков A.M. Методы оптимизации цикловых участков процедур, основанные на аппаратной поддержке архитектуры // Компьютеры в учебном процессе, Кя 10,2004 г.
- М. Wolfe, С. W. Tseng, 'The Power test for data dependence», IEEE Transaction on Parallel and Distributed Systems, Vol. 3, No. 5, pp. 591−601, September 1992.
- W. Pugh, «A practical algorithm for exact array dependence analysis», Communication of the ACM, 35(8): 102−114, August 1992.
- K. Psarris, K. Kyriakopoulos, «Data Dependence Testing in Practice», IEEE International Conference on Parallel Architectures and Compiler Techniques, October 12−16, 1999, California.
- Brian R. Murphy, Monica S. Lam «Program Analysis with Partial Transfer Function», Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation, January, 1999, pages 94−103.
- Marc Shapiro, Susan Horwitz «Fast and Flow-Insensitive Points-To Analysis». Proceedings of 24th ACM SIGPLAN-SIGACT symposium of programming language, pp. 1−14, Paris, France, January (1997).
- Mooly Sagiv, Thomas Preps, Susan Horwotz «Precise Dataflow Analysis with Applications Constant Propagation». TAPSOFT 1995. pages 651−665.
- Рис. 2.1. Управляющий граф, DJ-граф и DF-граф. Стр. 22
- Рис. 2.2. Битовый вектор. Стр. 23
- Рис. 2.3. Пример перевода программы в SSA-форму Стр. 32
- Рис. 2.4. Пример неявного изменения значения переменной Стр. 33
- Рис. 2.5. Пример вхождения одной операции в два вектора Стр. 34
- Рис. 2.6. Схема дерева значений1. Стр. 34
- Рис. 2.7. Пример применения оптимизаций GCP и RLE Стр. 38
- Рис. 3.1. Предикатные вычисления «1. Стр. 40
- Рис. 3.2. Построение предикатов методом инициализаций в узлах с Стр. 42 выходящими CD-дугами.
- Рис. 3.3. Условное ветвление. ^ .1. Стр. 44
- Рис. 3.4. Представление предикатного выражения в виде списочной Стр. 48 структуры.
- Рис. 3.5. Реализация предикатного выражения р1&Л (р2&Л (рЗ)) в видесписочной структуры. Стр. 49
- Рис. 3.6. Фрагмент управляющего графа Стр. 53
- Рис. 3.7. Построение предикатов двумя методами. Стр. 54
- Рис. 3.8. Пример предикатного кода Стр. 58
- Рис. 3.9. Пример применимости оптимизации, удаляющей избыточные Стр. 59операции записи в память. Рис. 3.10. Пример применимости оптимизации, удаляющей избыточные предикатные вычисления на основе анализа предикатовпереходов. Стр. 60
- Рис. 3.11. Пример программы, содержащей избыточные вычисления. Стр. 61
- Рис. 3.12. Пример программы, переведенной в предикатный код. Стр. 61
- Рис. 4.1. Структура ps-формы Стр. 64
- Рис. 5.1. Примеры соответствия промежуточного представленияязыковым выражениям. Стр. 76
- Рис. 5.2. Пример того, в какие имена переходят языковые выражения. Стр. 78
- Рис. 5.3. Пример, демонстрирующий понятия РП, нелокального блока
- HJIB) и функции связывания на них. Стр. 79
- Рис. 5.4. Пример, поясняющий работу функции GetPointsTo. Стр. 82
- Рис 5 5 Пример рекурсии, для которой определение пересечения Стр. 88 требует глобализации имени.