Example: confidence

Parallel programming for multimedia applications …

Parallel programming for multimedia applicationsHari Kalva&Aleksandar Colic&Adriana Garcia&Borko FurhtPublished online: 4 December 2010#Springer Science+Business Media, LLC 2010 AbstractComputing capabilities are continuing to increase with the availability of multicore and many core processors. The wide availability of multi core processors has madeparallel programming possible for end user applications running on desktops, workstations,and mobile devices. While Parallel hardware has become common, software that exploitsparallel capabilities is just beginning to take hold. multimedia applications , with their dataparallel nature and large computing requirements will benefit significantly from parallelprogramming. In this paper an overview of Parallel programming is presented andlanguages and tools for Parallel programming such as OpenMP and CUDA are introducedwithin the scope of multimedia programming1 IntroductionMultimedia applications have been driving the need for increased computing capability ondevices such as personal computers, mobile phones, and consumer electronics.

Parallel programming for multimedia applications Hari Kalva & Aleksandar Colic & Adriana Garcia & Borko Furht Published online: 4 December 2010 # Springer Science+Business Media, LLC 2010

Tags:

  Applications, Programming, Parallel, Multimedia, Parallel programming for multimedia applications

Information

Domain:

Source:

Link to this page:

Please notify us if you found a problem with this document:

Other abuse

Transcription of Parallel programming for multimedia applications …

1 Parallel programming for multimedia applicationsHari Kalva&Aleksandar Colic&Adriana Garcia&Borko FurhtPublished online: 4 December 2010#Springer Science+Business Media, LLC 2010 AbstractComputing capabilities are continuing to increase with the availability of multicore and many core processors. The wide availability of multi core processors has madeparallel programming possible for end user applications running on desktops, workstations,and mobile devices. While Parallel hardware has become common, software that exploitsparallel capabilities is just beginning to take hold. multimedia applications , with their dataparallel nature and large computing requirements will benefit significantly from parallelprogramming. In this paper an overview of Parallel programming is presented andlanguages and tools for Parallel programming such as OpenMP and CUDA are introducedwithin the scope of multimedia programming1 IntroductionMultimedia applications have been driving the need for increased computing capability ondevices such as personal computers, mobile phones, and consumer electronics.

2 Multimediaapplications are characterized by large amounts of data and require large amount ofprocessing, storage, and communication resources. The continuing decrease in the cost ofmultimedia data acquisition has made the data easily available and the decreasingbandwidth costs have made it easier for users to share videos and other data on theInternet. This increase in the amount of data has put heavier burden on the computinginfrastructure necessary to process multimedia data. For example, users are allowed toupload HD resolution video to YouTube and YouTube processes the video to allow otherusers to access it at various bitrates and resolutions. Some of the computing requirementscan be addressed using dedicated hardware; , for video encoding and , the use of dedicated hardware for video processing on general purpose devices isMultimed Tools Appl (2011) 51:801 818 DOI Kalva (*):A.

3 Colic:A. Garcia:B. FurhtDepartment of Computer & Electrical engineering and Computer Science, Florida Atlantic University,Boca Raton, FL 33431, USAe-mail: a cost effective solution. Innovations in algorithms, software, and tools have madepossible the use of general purpose processors for high performance multimediaapplications. Of all the methods to develop high performance multimedia applications , Parallel programming stands out because of the performance gains it promises. As the nameimplies, Parallel programming involves executing portions of a problem in Parallel in orderto reduce the overall execution time. multimedia applications exhibit parallelism and canbenefit tremendously from such an computing capabilities have increased greatly, especially with the recentavailability of quad-core CPUs and many core GPUs that support Parallel programming ,effective use of these capabilities seems to have trailed.

4 The use of Parallel executioncapabilities on these processors requires the utilization of proper programming and softwaredevelopment techniques. This leads to one of the challenges in bridging the gap betweenparallel processing capabilities of the hardware and the end user applications : the lack ofsoftware that exploits the hardware as most programmers are trained in and the use ofsequential programming [1]. With many-core processors with hundreds of cores on thehorizon [2], there is an urgent need for jump starting the use of Parallel programming inhigh performance applications . Another trend that has emerged over the last 4 years is theuse of graphics processors (GPU) for general purpose programming [20]. GPUs presentanother alternative for Parallel implementation of multimedia applications and areespecially suitable for highly data Parallel problems.

5 multimedia applications , with a needfor large amount of computing resources, and data that lends itself to Parallel processing,are the first to benefit form these new developments in Parallel the Parallel programming hierarchy Parallel programming andprocessing possible at different levels in a computing environment. At the lowest level isthe instruction level parallelism supported by Single Instruction Multiple Data (SIMD)instruction sets available on most processors today. These instructions can be used tospeedup data Parallel computations. Each core of multi-core processors supports SIMD instructions and optimizations at this level require thorough knowledge of instruction setsand assembly programming . SIMD instruction set programming is usually used toaccelerate code segments or sub components of larger processors and shared memory multiprocessor systems can speed upapplications when using multiple threads and/or multiple processes.

6 At this level, parallelprograms can be written using multi threaded programming using explicit threadingsupported by the operating system or using programming frameworks such as programming at this level is independent of SIMD programming and bothcan be used to speedup program execution. At the highest level of hierarchy is cloud orcluster computing where multiple systems connected over networks are used to solve largescale problems or process large amounts of data. In distributed programming , data is spreadamong the available systems in a cluster/cloud and processes executed on each systemcomputes the data assigned to it. The processes executing on each node can be optimizedusing multithreaded and SIMD instruction set programming . Effective implementation canthus exploit Parallel processing capabilities at all levels of execution there by maximizingthe this paper each of the four approaches described above are discussed emphasizingtheir usage in the multimedia area.

7 Specifically, Section2discusses the multimediacapabilities on General Purpose Processors and current multimedia instruction parallelism in multimedia applications highlighting the parallelism inthe area of video encoding in particular; finally Section4discusses programming languagesand tools for Parallel programming , specifically OpenMP and CUDA and briefly overviews802 Multimed Tools Appl (2011) 51:801 818the subject of cloud computing for multimedia applications with a particular emphasis onthe Hadoop platform, whose free and open nature make it worth multimedia capabilities on general purpose processorsAs computing needs driven by multimedia applications grew, processors with increasinglymore capabilities were developed. In the 90s, the emphasis was on packing moretransistors, increasing the operating frequency, and adding dedicated instructions to increasethe processing capabilities.

8 With the realization that the operating frequencies cannotcontinue to increase, the industry focus has shifted to the use of multiple cores on the sameSIMD INSTRUCTIONSEXECUTION UNITSHYPERTHREADINGCORECORECORECOREPROCE SSORPROCESSORSYSTEMPROCESSORPROCESSORPRO CESSORPROCESSORPROCESSORSYSTEMSYSTEMSYST EMSYSTEMCLOUD/CLUSTERD istributed programming ( ,Hadoop/Java)Multithreaded programming ( , OpenMP/C++)Multithreaded programming ( , OpenMP, OpenCL, CUDA)SIMD Instruction programming ( , Assembly, C intrinsics)Large scale processing and analysis High performance user applications Subcomponents, and code segmentsHigh performance user applications Fig. 1 Hierarchy in Parallel ProgrammingMultimed Tools Appl (2011) 51:801 818803processors. This trend is expected to grow and processors with hundreds of cores are on thehorizon.

9 However, software parallelization is a complex task and converting all the existingsoftware to exploit Parallel hardware is unlikely to happen. multimedia applications are thekind of applications that can benefit from Parallel implementations and given theirsignificance and wide use, are expected to drive the demand for multicore processors andparallel multimedia instruction setsThe multimedia extensions to general purpose processors were primarily driven by theadvent of digital video, 3D graphics, and gaming applications . The need for increasedperformance on PCs and the data Parallel nature of the target applications resulted inprocessors with Single Instruction Multiple Data (SIMD) instruction sets. The MAXextensions to the HP PA-RISC architecture were one the first SIMD extensions to general-purpose processors [17].

10 The Visual Instruction Set supported on the Sun UltraSparcprocessors provides the SIMD extensions to support multimedia and data parallelapplications [25]. The MMX instruction set for the Intel Pentium processors [23], the3 DNow! extensions for the AMD K6 processors, and the AltiVec extensions for theMotorola/IBM PowerPC processor [11] all provided SIMD instructions to speedup dataparallel applications . The SIMD instructions have become common and are used even inembedded processors as a way of supporting parallelism at instruction SIMD instruction set typically consists of Parallel arithmetic, logical, comparison,and data movement instructions. Some instruction sets provide type conversion andapplication specific instructions. A comparison of the SIMD support on general purposeprocessors can be found in [12].


Related search queries