Hep nt workshop slac october 1999 tony johnson tony waite tonyj apw@slac stanford edu
Download
1 / 23

HEP-NT workshop SLAC - October 1999 Tony Johnson Tony Waite* (tonyj,apw@slac.stanford) - PowerPoint PPT Presentation


Code Development on NT Some notes on experience gained in developing cross-platform (NT/Unix) HEP software for the Linear Collider Detector More of a Random Walk than a Formal Overview of Development Tools. HEP-NT workshop SLAC - October 1999 Tony Johnson Tony Waite*

Related searches for HEP-NT workshop SLAC - October 1999 Tony Johnson Tony Waite* (tonyj,apw@slac.stanford)

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha

Download Presentation

HEP-NT workshop SLAC - October 1999 Tony Johnson Tony Waite* (tonyj,apw@slac.stanford)

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Code Development on NTSome notes on experience gained in developing cross-platform (NT/Unix) HEP software for the Linear Collider DetectorMore of a Random Walk than a Formal Overview of Development Tools

HEP-NT workshop

SLAC - October 1999

Tony Johnson

Tony Waite*

(tonyj,apw@slac.stanford.edu)

* In absentia


NT Code Development

  • Topics

    • NT Code development tools for C++/Fortran/Java

    • Code development issues

    • Code management

      • SourceSafe

      • CVS

      • DEC -

    • Using NT as a data server

    • Conclusions


Windows NT Development Tools

  • For windows only development, tools are excellent:

    • Visual C++/J++ (MS Java)/Compaq Fortran

      • Excellent IDE allows development in all three languages

        • Integrated editor, cross-language debugger

        • Integrated build tool (make clone)

        • Incremental linker (that works)

        • Integrated code management (visual sourcesafe)

        • Object browser

    • SLAC has site license for MS developer tools


C++ for cross platform development

  • Cross Platform C++ development has many problems

    • Makefile for each platform

      • Need to build/debug on each platform

      • Versionitis

    • External dependencies

    • Compiler flags

      • Even egcs compiler has many system specific flags

    • Different methods for building DLL’s/C++ name mangling

    • Compiler bugs

    • Differing Levels of ANSI/STL Support

    • Architecture specific bugs

      • Found bugs in both Visual C++ (5.0) and egcs compiler for intel.


C++ for cross-platform development

  • Certainly possible - Simulation package does work on both NT and Unix.

Large amount of time goes into testing/debugging on different platforms.


Java for Cross Platform Development

  • Have succeeded in writing entire reconstruction/analysis package in Java

  • Currently using Visual J++/Sourcesafe

    • All development currently being done on NT

    • JAR files built on NT and put on web server for download by others.

  • Java code can be run

    • Standalone from command prompt/batch job

    • Inside Java Analysis Studio (JAS)


Java Analysis Studio

  • Cross Platform Java GUI for data analysis


Java for cross-platform Graphics/GUI


Java Experience

  • Write Once Run Anywhere

    • Really works (for applications, if not applets).

    • Develop on NT, runs without changes elsewhere

  • Developers have been able to learn language and tools and get up-to-speed fast

  • Performance - Adequate, getting better all the time

  • Need to abandon Visual J++, Source Safe


CVS for cross platform development

  • CVS is available for NT as well as Unix

  • NT tools include:

    • line mode tools

    • WinCVS

      • Rather confusing GUI

    • jCVS

      • Cross platform CVS GUI written in Java

      • Doesn’t support ssh access to remote repository?

  • Several tools available for web based access to code

    • CVSWeb - perl script

    • jCVS servlet - works well on NT


jCVS Client


jCVS Servlet


CVS security issues

  • Supports distributed access to code repository

    • bewildering array of access methods/security issues

      • rsh - no longer allowed at SLAC

      • pserver -

        • needs custom server,

        • passes weakly encrypted passwords over network

      • ssh

        • doesn’t work with all CVS clients

        • complex to set up client

        • no AFS token support


CVS vs. Sourcesafe


Is CVS sufficient for a physics collaboration?

  • If using Java - probably

  • If using C++, not really,

    • Need to be able to switch between configurations easily

      • Logical names where are you?

    • Location of external dependencies

    • Would like to use pre-built dll’s where possible.

    • Want to isolate users from system dependencies as far as possible.

    • Want to avoid “nightly builds”

  • Need to layer tool on top of CVS, make

    • LCD Solution:

      • Development Environment Controller (DEC)


Development Environment Controller

  • Written for LCD by Tony Waite, could be used by others

    • Hides details of file organization from user

      • User deals with subsystems, Gismo, Recon, etc.

      • Easy to switch between PROD,DEV,Test version of each subsystem

      • User Profiles allow saving/restoring environment.

    • Hides machine dependencies of BUILD operation

      • Automatically archives CVS version numbers for production BUILD’s


Oracle

Paw

Root

Jazelle

Flat File

Objectivity

Hippo

Running a (Java) Data Server on NT

Remote Data

Desktop

Client

Network

Data Server

DIM

  • Use NT Service Manager to Run Data Server

    • Microsoft Java has built-in support for running as NT server

      • Application can be distributed as a single .exe which installs itself as an NT service

    • Other Java implementations can be run as an NT service with 3rd party add-ons (or roll your own).

  • Error logging using NT event log/viewer


NT Service - Pros and Cons

  • Pros

    • Auto start on reboot

    • Runs in background

    • Use service manager to start/stop service

  • Real life problems

    • Does not auto restart

      • Application can unexpectedly pop up dialog box!

    • Remote control difficult

      • Remote Server Manager only distributed with NT server (or with NT resource kit).

      • Requires port 137/138 access (blocked at SLAC firewall) or VPN/PPTP


Net Meeting for Remote Control

  • Netmeeting 3.0 has “Remote Desktop Feature”

    • If run on server allows remote access to server desktop from any NT/95/98 machine.

    • Free!

  • Security

    • Claims to use encrypted communication channel

    • Requires NT login to access remote desktop

    • Security dubious

  • Potentially very useful, perhaps worth considering


NT Disk Cache Problem

  • Problem with reading large datasets

    • NT will grow disk cache until it takes 99.5% of physical memory, regardless of who/what else requires memory.

    • Reading large datasets can result in NT totally grinding to a halt.

    • No system parameter to limit disk cache size

  • Workarounds

    • If you have access to call to C open statement you can turn off disk caching (big if)

    • Can run program which constantly flushes disk cache

  • Conclusion

    • NT not ready for primetime data server applications

    • Windows 2000 better?


Things I didn’t talk about

  • Because I don’t know anything about them

    • Sniff+ - Cross platform IDE

      • http://www.takefive.com/

    • Cross platform GUI development with C++

      • QT Widgets

        • http://www.troll.no/

    • Libtool/configure

      • NT ports exist but not for non-experts

    • cygwin

      • Unix environment under NT


Conclusions

  • Tools for code development under NT only are great

    • Development tools probably better than Unix

  • Cross platform development

    • In C++ is a lot of extra work

    • Java can make things much easier, especially for:

      • GUI applications

      • Client/Server applications

  • NT for HEP batch/server side data processing

    • No obvious advantage over Unix/Linux

    • Tools and OS not as well suited to task as Unix

  • NT still maintains lead as desktop machine

    • Unix seems to be catching up fast (gnome, * office)


ad
  • Login