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 fa;

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? … …