hep nt workshop slac october 1999 tony johnson tony waite tonyj apw@slac stanford edu l.
Skip this Video
Download Presentation
HEP-NT workshop SLAC - October 1999 Tony Johnson Tony Waite* (tonyj,apw@slac.stanford)

Loading in 2 Seconds...

play fullscreen
1 / 23

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

  • Uploaded on

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*

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

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

Download Now 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
hep nt workshop slac october 1999 tony johnson tony waite tonyj apw@slac stanford edu

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*


* In absentia

nt code development
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
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
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 development5
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
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
Java Analysis Studio
  • Cross Platform Java GUI for data analysis
java experience
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 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
cvs security issues
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
is cvs sufficient for a physics collaboration
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
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
running a java data server on nt





Flat File



Running a (Java) Data Server on NT

Remote Data




Data Server


  • 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
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
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
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
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
  • 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)