Scientific Computing and Linux CHUGALUG Meeting Lachele Foley.

Slides:



Advertisements
Similar presentations
Guy Griffiths. General purpose interpreted programming language Widely used by scientists and programmers of all stripes Supported by many 3 rd -party.
Advertisements

ASP Tutorial. What is ASP? ASP (Active Server Pages) is a Microsoft technology that enables you to make dynamic and interactive web pages. –ASP usually.
C and Unix. A Couple Basic Concept and Terms 1. File. 2. Process. 3. Memory 4. HD.
Language Issues Misunderstimated? Sublimable? Hopefuller? "I know how hard it is for you to put food on your family.” "I know the human being and fish.
Computer Software.
Unit Six Assignment 1 Chris Boardley.
What is Unix Prepared by Dr. Bahjat Qazzaz. What is Unix UNIX is a computer operating system. An operating system is the program that – controls all the.
Lesson 4 Computer Software
Computing For Biology An online course for A-level students Runs 18 th to 29 th August 2014 TCGATTCCAGAACTAGGCATTATAGATAGATTCAG ATAGGACATAGATCGATTCAGATAGGATATAATCG.
CS 355 – Programming Languages
A-Level Computing types and uses of software. Objectives Know that software can be split into different categories Know what each type of software is.
Topics Introduction Hardware and Software How Computers Store Data
CINT Retrospect ROOT Workshop Mar 2013 Agilent Technologies Masaharu Goto.
1 ITSK 2611 Welcome. 2 Operating System 3 What is an OS Resource Manager –Disk –Memory –CPU Device Manager –Printers –Video Card –Sound Card Utility.
Open Source Software An Introduction. The Creation of Software l As you know, programmers create the software that we use l What you may not understand.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Standard Grade Computing System Software & Operating Systems.
Introduction to Interactive Media Interactive Media Tools: Software.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
An Introduction to Linux Name: Haixin Wang ID :
Compiling C/C++ Programs in Linux Lab اللهم علمنا ما ينفعنا،،، وانفعنا بما علمتنا،،، وزدنا علماً
Introduction and Overview Summer 2014 COMP 2130 Introduction to Computer Systems Computing Science Thompson Rivers University.
INTRODUCTION SOFTWARE HARDWARE DIFFERENCE BETWEEN THE S/W AND H/W.
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages.
Ch 1. A Python Q&A Session Spring Why do people use Python? Software quality Developer productivity Program portability Support libraries Component.
Copyright © 2007 Addison-Wesley. All rights reserved.1-1 Reasons for Studying Concepts of Programming Languages Increased ability to express ideas Improved.
Systems Software Operating Systems. What is software? Software is the term that we use for all the programs and data that we use with a computer system.
PHP Features. Features Clean syntax. Object-oriented fundamentals. An extensible architecture that encourages innovation. Support for both current and.
Guide to Programming with Python Chapter One Getting Started: The Game Over Program.
Operating System What is an Operating System? A program that acts as an intermediary between a user of a computer and the computer hardware. An operating.
Capabilities of Software. Object Linking & Embedding (OLE) OLE allows information to be shared between different programs For example, a spreadsheet created.
Introduction to Python Origins Nature of Python Importance of Python Example.
Intermediate 2 Computing Unit 2 - Software Development Topic 2 - Software Development Languages and Environments.
Introduction to Software Design by A.Surasit Samaisut Copyrights : All Rights Reserved.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
COP 3275 Chapter 01 course website: Jonathan C.L. Liu, Ph.D. CISE Department University of Florida.
Lesson 1 1 LESSON 1 l Background information l Introduction to Java Introduction and a Taste of Java.
CSE 2341 Object Oriented Programming with C++ Note Set #4
MET4750 Techniques for Earth System Modeling MET 5990 Techniques for Earth System Modeling and Research (
Topic 2: Hardware and Software
Introduction to comp. and prog. CS 101 G 964
Software Hardware refers to the physical devices of a computer system.
Python Programming Unit -1.
CSC 222: Object-Oriented Programming
Why don’t programmers have to program in machine code?
CST 1101 Problem Solving Using Computers
MET4750 Techniques for Earth System Modeling
CSC391/691 Intro to OpenCV Dr. Rongzhong Li Fall 2016
Basic 1960s It was designed to emphasize ease of use. Became widespread on microcomputers It is relatively simple. Will make it easier for people with.
Topics Introduction Hardware and Software How Computers Store Data
PROGRAMMING LANGUAGES
Choosing Technologies
Introduction to Computers and Java
Introduction CSE 1310 – Introduction to Computers and Programming
5 SYSTEM SOFTWARE CHAPTER
7 Best Programming Languages Based as per Earnings & Opportunities
Chapter 2: Operating-System Structures
Programming Languages
Computer Science I CSC 135.
Web Development Using ASP .NET
Event Driven Programming
Topics Introduction Hardware and Software How Computers Store Data
5 SYSTEM SOFTWARE CHAPTER
Software, O/S & Interfaces
An introduction to the Linux environment v
Fundamentals of Python: First Programs
Outline Chapter 2 (cont) OS Design OS structure
SOFTWARE TECHNOLOGIES
Lab 4: Introduction to Scripting
FEATURES OF PYTHON.
Presentation transcript:

Scientific Computing and Linux CHUGALUG Meeting Lachele Foley

My Background ● Linux & scientific computing start together – Dissertation with major computational component

+

My Background ● Computational emphasis when teaching – Students had to use Linux, compile programs, etc.

My Background ● Currently researcher/sysadmin for comp. lab. – Complex Carbohydrate Research Center (UGA) – ● or search on ”Glycam” to learn more

Scientific Computing ● Two categories: – Users of pre-existing scientific software – Persons involved in generation of the software ● Programmers ● Theoreticians ● Engineers ● (etc.) ● Our lab does both

Pre-existing Software ● Usually written by scientists, not programmers ● Dictated by practicality, probably won't change ● Often not (or minimally) user-friendly ● Mostly ok because scientists are used to that... :-) ● Can be out of date, not-quite-portable, etc. ● Just installing it is sometimes a nightmare ● Not all is bad! ● Some is also very good, portable, etc.

Pre-existing Software Issues ● Not so different from other software: ● Hastily written by whoever has the time ● Might have very specific pre-requisites ● upgrading the OS breaks package one ●...but package two requires the bleeding-edge newest ● Portability problems ● installing from sources often fixes this

A Bad Day ● Need to make simple-ish modification to a file ● There is a script already written – Just need to install it – Yay!

A Bad Day ● It requires the absolute newest numpy ●...which requires the newest python ●...which requires the newest gcc ●...which requires mpid ●...and gmp

A Bad Day ● The script requires the absolute newest numpy ●...which requires the newest python ●...which requires the newest gcc ●...which requires mpid ●...and gmp ●...and about 8 hours

Getting Better, Mostly ● Scientists adopt standard practices ● e.g.,./configure; make; make install ● Internet eases learning curves ● ”Portability” is a commonly known term ●...as is ”backwards compatibility”, etc. ● Larger projects hire programmers, write GUI's

When There Is No Software ● Research – New methods – Not yet implemented old methods – Hybrid methods – Parameter and instruction-set development ● Linux's flexibility makes it appealing ●...but can also be a source of stress

”...but program X will do that.” 1. Obtain initial data from somewhere 2. Use program Z to convert to new format 3. Write script to rearrange format from 2 for simulation program Y 4. Write another script for running program Y in unusual manner 5. Run simulation program Y 6. Extract results from Y with post-processing program X 7. Write script to rearrange data from 6 for math package W 8. Run math package W 9. Write script to merge results from 8 with original data

Some Utilities Exist ● Flexible software packages ● VMD, Chimera ● Scripting languages ● MMTK, NAB ● Features – Ready-made, easy & modular for common tasks – Protection from having to write code (but can...)

Easier Just To Code It ● The bottleneck is data read/reformat ● Includes some complex stuff like pattern recognition ● The ”hard” parts – e.g., the math – often easiest ● ”So, use Perl or Python, etc.” (I know Perl) ● arrays of hashes of arrays indexed to other arrays ●...and loose memory management means mistakes ● If complex, I find it's easier just to go back to C

So, a Library... ● Not a radical idea – MMTK is fairly similar ● Use it rather than – finding another program to install – learning a new scripting language – learning yet another programming language – stealing other folks' code ● (open is not necessarily free...)

GLYLIB ● GLYLIB because ”glyco” for ”sugar” ● Centralized data structures – intuitive and easily extensible ● Modular functions – most operate directly on central data ● In plain C – ANSI/POSIX simplicity wherever possible

GLYLIB ● – also: glycam.ccrc.uga.edu/glylib