Abstract
雖然平行及分散式系統可以提供強大的處理能力,然而處理器之間的通訊 卻大大限制了執行的效率。 有鑑於此,此一論文根據 C. Koelbel 『 Compiler- Time Generation of Regular Communication Patterns 』 的理論依據, 實際製作出一個高性能的集體通訊程式庫,我們的製作採 用與機器無關 (Machine Independent) 的觀念, 目前可以在 nCUBE/2 、 DEC Alpha Farm 工作站, 及 Sun 工作站群中進行。 在 nCUBE/2 上是根據 nCUBE 資料傳送的程式庫,而在工作站上則以 PVM 為依據。所 發展出來的集體通訊程式庫的應用層面, 除了提供給一般使用者使用之 外, 也可供 FORTRAN 及 C++ 編譯器使用,一方面減少編譯器的複雜度 ,另一方面可增進執行效率。 目前集體通訊程式庫,已融入一個 Parallel C++ 環境,作為平行 I/O 的支援,獲致有效率的執行。另外, 集體通訊程式庫還提供其它的功能, 其中包含『聚集 (Gather) 』、『 分散 (Scalar) 』、『平移 (Shift) 』等功能。 本論文除獲致實作軟體 成效外,在理論創新上,加入了『處理器重組 (Processor Remapping) 』、『不同空間數的陣列間的資料搬移 (Different Number of Dimension) 』、『超過現存環境時的處理 (Out of Configuration) 』 等等。這些理論的加入,使得此系統可適用於開放式的環境中。 Massively parallel and distributed memory machine can provide enormous computation power. However, the communication latency has limited the performance. This thesis describes an implementation of the high-performance communication library. The library is based on the theoretical rationale of C. Koelbel "Compiler-Time Generation of Regular Communication Patterns". This library is machine independent, and it can run on nCUBE/2, DEC Alpha farm workstations, and SUN workstations. It uses the nCUBE message passing library to passing the data in the nCUBE/2 machine, and it is based on the PVM environment in the workstations. This library supports the general users, FORTRAN compiler, and Parallel C++ compiler. It can reduce the complexity of compiler and enhance the performance. The current version has been incorporated into a Parallel C++ environment to support parallel I/O. There are some other functions in the library. They are the general functions like gather, scalar, shift, and the special functions like processor remapping, data moving in the arrays of the different dimensions, and out of the current configuration. Our collective communication work involving in processor remapping and out of current configuration issues an innovation in this area. It makes the system can work with an open environment where workstations are dynamically incorporated into the execution environment.