cornell theory center aug 23 2000 porting cctk to nt at the cornell velocity nt cluster werner...

10
Cornell Theory Center Aug 23 2000 Porting CCTK to NT at the Cornell Velocity NT Cluster Werner Benger Max-PIanck-Institut für Gravitationsphysik (Albert-Einstein-Institute at Golm/Potsdam – AEI) and Konrad-Zuse-Center for Information Technology Berlin (ZIB) [email protected]

Upload: gervase-jordan

Post on 02-Jan-2016

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cornell Theory Center Aug 23 2000 Porting CCTK to NT at the Cornell Velocity NT Cluster Werner Benger Max-PIanck-Institut für Gravitationsphysik (Albert-Einstein-Institute

Cornell Theory Center Aug 23 2000

Porting CCTK to NTat the Cornell Velocity NT Cluster

Werner BengerMax-PIanck-Institut für Gravitationsphysik

(Albert-Einstein-Institute at Golm/Potsdam – AEI)and

Konrad-Zuse-Center for Information Technology Berlin (ZIB)

[email protected]

Page 2: Cornell Theory Center Aug 23 2000 Porting CCTK to NT at the Cornell Velocity NT Cluster Werner Benger Max-PIanck-Institut für Gravitationsphysik (Albert-Einstein-Institute

CYGWIN – Unix GNU Make CCTK makefiles using lots of gmake special functions

Bash more powerfull than command.com

Required for `autoconf' configure script

Some shell-commands used in makefiles

Sed Command line argument conversions when gmake functionality or shell

commands are not sufficient

Perl CCTK Flesh-Thorn interfaces consists of code generated by perl scripts from

description files in `Cactus Configuration Language' - .ccl files

Preprocessing of F77,F90,C,C++

Compilers: C, (C++,) [F77, F90]

Porting Cactus to NT – Requirements

Page 3: Cornell Theory Center Aug 23 2000 Porting CCTK to NT at the Cornell Velocity NT Cluster Werner Benger Max-PIanck-Institut für Gravitationsphysik (Albert-Einstein-Institute

Early Difficulties

PERL! Required at the very earliest step, directly invoked from makefile

ActiveState Perl is installed on the NT Cluster Incompatible to cygwin perl Cygwin uses unix-like path names:

– /cygdrive/c/temp/Werner/Cactus

– //c/temp/Werner/Cactus ActiveState Perl uses DOS/Windows like path names:

– c:\temp\Werner\Cactus

Cygwin perl needed to be installed on local workstation, no installation on NT Cluster

Compilation only possible locally

Installation of cygwin perl on NT cluster in local homedir works, but need to specify perl include path on each invokation...

Compilation on NT Cluster very slow anyway...

Page 4: Cornell Theory Center Aug 23 2000 Porting CCTK to NT at the Cornell Velocity NT Cluster Werner Benger Max-PIanck-Institut für Gravitationsphysik (Albert-Einstein-Institute

Cygwin

Cygwin 5.0 installed

Not yet supported by CCTK

Introduces the /cygdrive/ prefix

– /cygdrive/c/ for //c in earlier version or c:\ in DOS/Windows

Had to adjust makefile includes in a couple of places

– $(subst /cygdrive/,//, <expr>) backward compatibility to cygwin 4.0

external/IEEEIO library explicitely looking for CYGWIN_NT-4.0

– Added support for CYGWIN_NT-5.0 Environment now set up for use of gcc cygwin compiler – but we

want Visual C++!

Page 5: Cornell Theory Center Aug 23 2000 Porting CCTK to NT at the Cornell Velocity NT Cluster Werner Benger Max-PIanck-Institut für Gravitationsphysik (Albert-Einstein-Institute

Cygwin and MS Visual C++

Unix compiler vs. MS compiler Path names: c:\temp\Werner\Cactus vs. //c/temp/Werner/Cactus

Command line switches: /Ic:\library\include -I/include

Extensions:

– Object files: .o vs. .obj

• works, as MSC treats unkown extensions as object files

– Libraries: lib<xxx>.a vs. xxx.lib

• lib/make/make.thornlib to be modified to transform unix libname into MSC libname

– Executable: .exe

• Ok, already handled

Still want to use cygwin gcc to create dependency information for makefiles

– In some parts cygwin pathnames and parameters

– Other parts MSC pathnames and parameters

– Pathname conversion routines required

– #define's and #include paths from MSC need to be set for gcc, too!

Page 6: Cornell Theory Center Aug 23 2000 Porting CCTK to NT at the Cornell Velocity NT Cluster Werner Benger Max-PIanck-Institut für Gravitationsphysik (Albert-Einstein-Institute

Pathname Conversion

Task: Convert /cygdrive/c/temp/Werner/ to c:\temp\Werner Using sed is powerful, but requires external tool and is slow

GNU make functions are fast, but limited

Well, can still be done:LETTERS= a b c d e f g h i j k l m n o p q r s t u v w x y z \ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

INCLUDE_PARAMETERS=$(subst -I,/I,$(subst /,\\, $(foreach DRIVE, $(LETTERS), $(filter -I$(DRIVE):%,$(subst //$(DRIVE),$(DRIVE):,$(subst /cygdrive/,//,$(INC_DIRS:%=-I%)))))))

INC_DIRS=/cygdrive/h/PROGRA~1/MPIPRO //c/PROGRA~1/MICROS~2/VC98/INCLUDE

show:@echo INC_DIRS=$(INC_DIRS)@echo INCLUDE_PARAMETERS=$(INCLUDE_PARAMETERS)

WEYL://c/temp/werner $ make showINC_DIRS=/cygdrive/h/PROGRA~1/MPIPRO //c/PROGRA~1/MICROS~2/VC98/INCLUDEINCLUDE_PARAMETERS= /Ic:\PROGRA~1\MICROS~2\VC98\INCLUDE /Ih:\PROGRA~1\MPIPROWEYL://c/temp/werner $

Page 7: Cornell Theory Center Aug 23 2000 Porting CCTK to NT at the Cornell Velocity NT Cluster Werner Benger Max-PIanck-Institut für Gravitationsphysik (Albert-Einstein-Institute

Properties of Pathname conversion

- Pathnames must not contain spaces Uses windows shortcut names instead of long names

– //c/PROGRA~1/MICROS~2/VC98/INCLUDE

– //c/Program Files/Microsoft Visual Studio/VC98/INCLUDE

Find out by starting `command.com' from bash

+ Late evalutation in make May define make expression first May set of variable to expanded later Make function is evaluated not before it is actually used

+ Much faster than calling sed scripts + Doesn't require external tool (directly portable) - Need to copy the expression for each make variable to be used - Hardly readable... so better don't touch and avoid using too often

Page 8: Cornell Theory Center Aug 23 2000 Porting CCTK to NT at the Cornell Velocity NT Cluster Werner Benger Max-PIanck-Institut für Gravitationsphysik (Albert-Einstein-Institute

Minor changes

Support for MPIPro Added shell script: lib/make/extras/MPI/MPIPro

Some fixes in the lib/make/know-architectures/cygwin default variables

CC=cl

CXX="$CC /TP"

AR=lib

Etc.

Editing Thornlist: `preferred editor' is `notepad' under Windows

Changed lib/make/make.configuration

But this might be a matter of taste, other people might still prefer `vi'...

Can't run notepad from telnet session...

Page 9: Cornell Theory Center Aug 23 2000 Porting CCTK to NT at the Cornell Velocity NT Cluster Werner Benger Max-PIanck-Institut für Gravitationsphysik (Albert-Einstein-Institute

Networking

TCP calls (mostly already done for SC99 NCSA NT Cluster) Similar, but still minor differences between Unix and Windows

– read(),write() vs. recv(), send()– close() vs. Closesocket()– etc.

Conversion of socket descriptor to file descriptor not possible (?) Cannot use C++ Standard Stream library for sockets!?

– No ofstream(int fd) constructor...

– Had to provide a `stream emulator class' under windows

TCP Initialization Windows Socket Layer must be initialized before any TCP networking

works!! WSAStartup() C++ Constructor Call or CCTK Startup Routine

HTTP Support for MSIE Requires explicit HTTP header where netscape doesn't `Movie Thorn': multipart encoding of streamed jpeg images works with

Netscape, but not yet with MSIE... (?)

Page 10: Cornell Theory Center Aug 23 2000 Porting CCTK to NT at the Cornell Velocity NT Cluster Werner Benger Max-PIanck-Institut für Gravitationsphysik (Albert-Einstein-Institute

At last: it worked.