|
OpenMP (Open Multi-Processing) is an application programming interface (API) that supports multi-platform shared memory multiprocessing programming in C, C++, and Fortran, on most platforms, processor architectures and operating systems, including Solaris, AIX, HP-UX, Linux, OS X, and Windows. It consists of a set of compiler directives, library routines, and environment variables that influence run-time behavior.〔〔(OpenMP Tutorial at Supercomputing 2008 )〕〔(Using OpenMP – Portable Shared Memory Parallel Programming – Download Book Examples and Discuss )〕 OpenMP is managed by the nonprofit technology consortium ''OpenMP Architecture Review Board'' (or ''OpenMP ARB''), jointly defined by a group of major computer hardware and software vendors, including AMD, IBM, Intel, Cray, HP, Fujitsu, Nvidia, NEC, Red Hat, Texas Instruments, Oracle Corporation, and more.〔 OpenMP uses a portable, scalable model that gives programmers a simple and flexible interface for developing parallel applications for platforms ranging from the standard desktop computer to the supercomputer. An application built with the hybrid model of parallel programming can run on a computer cluster using both OpenMP and Message Passing Interface (MPI), or more transparently through the use of OpenMP extensions for non-shared memory systems. == Introduction == OpenMP is an implementation of multithreading, a method of parallelizing whereby a master ''thread'' (a series of instructions executed consecutively) ''forks'' a specified number of slave ''threads'' and the system divides a task among them. The threads then run concurrently, with the runtime environment allocating threads to different processors. The section of code that is meant to run in parallel is marked accordingly, with a preprocessor directive that will cause the threads to form before the section is executed.〔 Each thread has an ''id'' attached to it which can be obtained using a function (called omp_get_thread_num() ). The thread id is an integer, and the master thread has an id of ''0''. After the execution of the parallelized code, the threads ''join'' back into the master thread, which continues onward to the end of the program.By default, each thread executes the parallelized section of code independently. ''Work-sharing constructs'' can be used to divide a task among the threads so that each thread executes its allocated part of the code. Both task parallelism and data parallelism can be achieved using OpenMP in this way. The runtime environment allocates threads to processors depending on usage, machine load and other factors. The runtime environment can assign the number of threads based on environment variables, or the code can do so using functions. The OpenMP functions are included in a header file labelled omp.h in C/C++. 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「OpenMP」の詳細全文を読む スポンサード リンク
|