Transcript Slide 1
OpenTS for Windows Compute Cluster Server
Overview
Introduction OpenTS (academic) for Windows CCS T-converter T-microkernel OpenTS installer Building T++ applications OpenTS SDK User documentation Demo applications Conclusion Proposals for the next step
Introduction
Porting OpenTS parallel programming system to Windows Compute Cluster Server Platform Duration: • 10 months: 01.2006
—10.2006
Goals: • to port academic OpenTS version under Windows • to develop a number of test applications (demos, test suite) Over and Above the Plan: • • • Integration with Visual Studio 2005 T-converter improvements Auto C call support Out of scope: • some features of the OpenTS were not included into academic OpenTS for Windows CCS
OpenTS (academic) for Windows CCS
OpenTS (academic) for Windows CCS OpenTS for Windows includes: • • • • • • • T-converter T-microkernel Installer for Windows Software development kit Integration with Visual Studio 2005 User documentation and T++ language reference Demo applications
T-converter
T-converter Ported on Windows Based on OpenC++ Updated for support of Visual C++ special language constructions Updated for proper support of: • “new” declaration: o
int tptr p = new tval int [n];
• template classes: o
vector
T-microkernel
T-microkernel Platform Abstraction Layer (PAL) developed: • contains system-related calls of WinAPI and POSIX interfaces • provides multiplatform OpenTS kernel code Assembler code was rewritten to support fast context switching under Windows on AMD64 and x86 hardware platforms
OpenTS installer
OpenTS installer Installs Compute Cluster Pack SDK if it was not already installed Integrates OpenTS with Visual Studio 2005 Automatically tests OpenTS operability Uninstalls OpenTS if it was not installed properly Based on Nullsoft Scriptable Installation System (NSIS)
OpenTS installer UI
Building T++ applications
Building T++ applications from command line Using command line:
t++ [options] [srcfile1 … srcfileN]
• • • • • Options are: •
/auto-c-call
- allows T-application to call C-versions of T-functions. This • • may increase T-application productivity
/c
- only compilation of source files without linking
/dbg
- make debug build. It allows debugger to obtain information about program symbols in the case of application crush
/do
- specify location for object files
/not
- build application in sequential mode, all T++ keywords are ignored
/o
- specify output executable
/p
- pass option to used C/C++ compiler
/v
- print commands before invocation
Building T++ applications in Visual Studio 2005 IDE A new item in “New Project” dialog: OpenTS Console Application A new item in “Add New Item” dialog: T++ File
Building T++ applications in Visual Studio 2005 IDE
OpenTS SDK
OpenTS Software Development Kit Can be installed independently Contains OpenTS kernel source code Allows development of extensions to OpenTS Contains VS2005 project files for building of: • T++ runtime library • • • Fast context-switching library T-applications execution tracer Several simple T-applications Created with NSIS
User documentation
OpenTS user documentation
T++ language reference
Demo applications
Demo applications written in T++ POVRay and ALCMD were ported to Windows A benchmark testing was made to prove the correctness of Windows OpenTS port • • • Both Windows and Linux were used in testing Same hardware platform used: AMD64 Same OpenTS kernel source code used (so called cross-platform version of microkernel) • Same applications’ (POVRay and ALCMD) source code used for Windows and Linux
Benchmark notations time(N) — execution time of T++ implementation that depends on a number N of processors used in test run (in seconds) time_c — execution time of C implementation (in seconds, one processor used in test run) time%(N) = time(N) / time_c CoE = 1 / (N * time%(N)) — coefficient of efficiency
POVRay time(%) chart
120% 100% 80% 60% 40% 20% 0% 1 2 3 Time(%) Linux,MPI Time(%) Windows,MPI 4 CPUs 5 6 7 Time(%) Linux,OpenTS Time(%) Windows,OpenTS 8
POVRay CoE chart
120% 100% 80% 60% 40% 20% 0% 1 CoE Linux,MPI 2 3 CoE Linux,OpenTS 4 CPUs 5 CoE Windows,MPI 6 7 8 CoE Windows,OpenTS
100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% 1
ALCMD time(%) chart
2 3 Time(%) Linux,MPI Time(%) Windows,MPI 4 CPUs 5 6 Time(%) Linux,OpenTS 7 Time(%) Windows,OpenTS 8
ALCMD CoE chart
120% 110% 100% 90% 80% 70% 60% 50% 40% 30% 1 CoE Linux,MPI 2 3 CoE Linux,OpenTS 4 CPUs 5 CoE Windows,MPI 6 7 8 CoE Windows,OpenTS
Sync/Async problem Problem: CoE for POVRay is decreasing heavily under Windows Reason: there is no support for asynchronous interaction between processes
POVRay time% Sync / time% Async chart
220% 200% 180% 160% 140% 120% 100% 80% 60% 0 1 2 3 7 4 5 CPUs Time Sync / Time Async 6 8 9
Sync/Async conclusion It is reasonable to implement asynchronous mode during the next project due to T applications performance loss under Windows
Benchmark results For POVRay: • its time is at the maximum only 12% greater than under Linux • its CoE is at the maximum only 14% less than under Linux For ALCMD: • its time (in %) is always roughly the same as time under Linux • its CoE sometimes greater by 21% than under Linux
Conclusion
All planned goals are achieved The work is done for the current project There are good prospects for the further cooperation
Proposals for the next step
Asynchronous support SMP mode T-program trace visualizer Generating web-services for T-functions DMPI support Fault tolerance for T++ applications Different schedulers In future: OpenTS/.NET — T#
Thanks!
… … Any questions? … …