1 / 50

PGI Compilers Tools for Scientists and Engineers

Introduction to PGI Compilers and Tools Documentation. Getting Help Basic Compiler Options Optimization Strategies Questions and Answers. Outline of Today's Topics. Optimization ? State-of-the-art vector, parallel, IPA, Feedback, ? Cross-platform ? AMD

hiero
Download Presentation

PGI Compilers Tools for Scientists and Engineers

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. 1 PGI® Compilers Tools for Scientists and Engineers

    2. Outline of Today’s Topics

    3. PGI Compilers and Tools, features

    4. PGI Tools Enable Developers to: View x64 as a unified CPU architecture Extract peak performance from x64 CPUs Ride innovation waves from both Intel and AMD Use a single source base and toolset across Linux and Windows Develop, debug, tune parallel applications for Multi-core, Multi-core SMP, Clustered Multi-core SMP

    5. PGI Documentation and Support PGI provided documentation PGI User Forums, at www.pgroup.com PGI FAQs, Tips & Techniques pages Email support, via trs@pgroup.com Web support, a form-based system similar to email support Fax support

    6. PGI Docs & Support, cont. Legacy phone support, direct access, etc. PGI download web page PGI prepared/personalized training PGI ISV program PGI Premier Service program

    7. PGI Basic Compiler Options Basic Usage Language Dialects Target Architectures Debugging aids Optimization switches

    8. PGI Basic Compiler Usage A compiler driver interprets options and invokes pre-processors, compilers, assembler, linker, etc. Options precedence: if options conflict, last option on command line takes precedence Use -Minfo and –Mneginfo to see a listing of optimizations and transformations performed by the compiler Use -help to list all options or see details on how to use a given option, e.g. pgf90 -Mvect -help Use man pages for more details on options, e.g. “man pgf90” Use –v to see under the hood

    9. Flags to support language dialects Fortran pgf77, pgf90, pgf95, pghpf tools Suffixes .f, .F, .for, .fpp, .f90, .F90, .f95, .F95, .hpf, .HPF -Mextend, -Mfixed, -Mfreeform Type size –i2, -i4, -i8, -r4, -r8, etc. -Mcray, -Mbyteswapio, -Mupcase, -Mnomain, -Mrecursive, etc. C/C++ pgcc, pgCC, aka pgcpp Suffixes .c, .C, .cc, .cpp, .i -B, -c89, -c9x, -Xa, -Xc, -Xs, -Xt -Msignextend, -Mfcon, -Msingle, -Muchar, -Mgccbugs

    10. Specifying the target architecture Not an issue on XT3. Defaults to the type of processor/OS you are running on Use the “tp” switch. -tp k8-64 or –tp p7-64 or –tp core2-64 for 64-bit code. -tp amd64e for AMD opteron rev E or later -tp x64 for unified binary -tp k8-32, k7, p7, piv, piii, p6, p5, px for 32 bit code

    11. Flags for debugging aids -g generates symbolic debug information used by a debugger -gopt generates debug information in the presence of optimization -Mbounds adds array bounds checking -v gives verbose output, useful for debugging system or build problems -Minfo provides feedback on optimizations made by the compiler -S or –Mkeepasm to see the exact assembly generated

    12. Basic optimization switches Traditional optimization controlled through -O[<n>], n is 0 to 4. -fastsse and –fast are equal to -O2 -Munroll=c:1 -Mnoframe –Mlre -Mvect=sse, -Mscalarsse -Mcache_align -Mflushz For -Munroll, c specifies completely unroll loops with this loop count or less -Munroll=n:<m> says unroll other loops m times -Mcache_align aligns top level arrays and objects on cache-line boundaries -Mflushz flushes SSE denormal numbers to zero -Mnoframe does not set up a stack frame -Mlre is loop-carried redundancy elimination

    13. Optimization Strategies Establish a workload Optimization from the top-down Use of proper tools, methods Processor level optimizations, parallel methods Different flags/features for different types of code

    14. 14 Node level tuning

    15. 15 Vectorizable F90 Array Syntax Data is REAL*4

    16. 16 –fastsse to Enable SSE Vectorization –Minfo to List Optimizations to stderr

    17. 17

    18. Vectorizable C Code Fragment?

    19. Pointer Arguments Inhibit Vectorization

    20. C Constant Inhibits Vectorization

    21. 21 -Msafeptr Option and Pragma

    22. 22 Common Barriers to SSE Vectorization

    23. 23 Barriers to Efficient Execution of Vector SSE Loops

    24. 24

    25. 25 What can Interprocedural Analysis and Optimization with –Mipa do for You?

    26. 26 Effect of IPA on the WUPWISE Benchmark

    27. 27 Using Interprocedural Analysis

    28. 28

    29. 29 Explicit Function Inlining

    30. 30 Other C++ recommendations

    31. 31

    32. 32 SMP Parallelization

    33. MGRID Benchmark Main Loop

    34. Auto-parallel MGRID Overall Speed-up is 40% on Dual-core AMD Opteron

    35. 35

    36. 36 Miscellaneous Optimizations (1)

    37. 37 Miscellaneous Optimizations (2)

    38. What’s New in PGI 6.2

    39. PGI Visual Fortran 6.2

    40. On the PGI Roadmap

    41. Questions?

    42. 42 Pathscale Version 3.1 on odin – latest release Well worth trying in addition to PGI Not the default compiler…. often gives better results! Very fine-grained control of optimization and code generation Less informative optimization information

    43. 43

    44. 44

    45. 45

    46. 46

    47. 47

    48. 48

    49. 49

    50. 50

More Related