# Complexity and Peformance.pdf - Software Development SDDS...

• 7

Course Hero uses AI to attempt to automatically extract content from documents to surface to you and others so you can study better, e.g., in search results, to enrich docs, and more. This preview shows page 1 - 3 out of 7 pages.

SDDSHome621921TimelineNotesMySenecaWikiWorkshopsAssignmentsInstructorSoftwareDevelopmentGPU621/DPS921Part A - IntroductionComplexity and PerformanceIdentify the need for parallel computingIntroduce complexity classes and the P versus NP problemDefine performance metricsComplexity Theory|P versus NP|Performance Theory|ExercisesEver since modern hardware started supporting parallel processing, optimal use of that hardware has involved parallelprogramming. Unlike serial programming, which utilizes a single processer and executes instructions in sequence one after theother, parallel programming uses the multiple processors in modern hardware to execute instructions concurrently.As computational demands increase in their complexity, they push the limits of computability. This chapter introduces complexitytheory, which addresses those limits, and performance theory, which identifies metrics for evaluating the scalability of acomputing solution and provides us with the bounds on the effectiveness of parallelization of a serial program.COMPLEXITY THEORYThe theory that classifies computational problems according to solution difficulty is calledComplexity Theory. This theorymeasures difficulty in terms of the resources required to solve a particular class of problems.There are over 400 complexity classes. Each class identifies a different degree of complexity. Some of these classes are listedhere.Each complexity class refers toa specific type of problem,a specific computational model anda specific resource constraint.The problem types includedecisionfunctioncountingoptimizationand other typesA decision problem is one that yields eitheryesornofor any input. Decision problems are the simplest and most commoncomputational problems.The computational models are eitherdeterministic ornon-deterministicA deterministic model produces a unique result for a given input. A non-deterministic model produces one of two or morepossible results for a given input. Non-deterministic computational models contain their deterministic counterparts as subsets.The resources includetimespacecommunication facilitiesWelcomeNotesComplexityPlatformsModelsDesignPatternsSupportOMP_FundamentalsOMP_DependenciesOMP_Map ReduceOMP_Prefix_ScanOMP_Other_PatternsTBBMPI_FundamentalsMPI_CollectivesMPI_ExamplesProfilingDebuggingMemory CheckingOptimizationDesign PatternsMath LibrariesData LibrariesWorkshopsAssignmentsResources
processorsComplexity theory abstracts from the specific computational algorithms used to solve problems within a particular class.Decision ProblemsThe complexity classes for decision problems are listed in the table below. The prefix N stands for non-deterministic.Complexity ClassDescriptionL, LSPACELogarithmic space, deterministicNLLogarithmic space, non-deterministicP, PTIMEPolynomial time, deterministicNPPolynomial time, non-deterministicPSPACEPolynomial spaceEXP, EXPTIMEExponential time, deterministicNEXP, NEXPTIMEExponential time, non-deterministicEXPSPACEExponential spaceThe figure below relates these classes to one another.

Course Hero member to access this document

Course Hero member to access this document

End of preview. Want to read all 7 pages?

Course Hero member to access this document

Term
Summer
Professor
N/A
Tags
Computational complexity theory, Amdahl