Wednesday, November 9, 2011

CIS(theta) 2011-2012 - Install openMPI and Stress the Cluster! - Meeting V

The following is a summary of what we've accomplished so far with the 2011-2012 CIS(theta) team. Our new Shadowfax Cluster is coming along quite well. We have a nice base OS in the 64bit Ubuntu 11.04 Natty Narwhal Desktop on top of our AMD dualcore Athlons and gigE LAN. The Unity Desktop isn't that different from the Gnome Desktop we've been using these past few years on Fedora and Ubuntu. Natty is proving very user friendly and easy to maintain! This week we installed openMPI and we used flops.f to stress our mini 8-core cluster! We needed public keys so openMPI can scatter/gather cluster jobs without the overhead of logging into each node as needed. We created a new user common to all cluster nodes called "jobs" in memory of Steve Jobs. Now, the cluster user can simply log into one node and be logged into all nodes at once (you can actually shh into each node as "jobs" without specifying a userid or passwd)!
InstantCluster Step 1: Infrastructure
Make sure your cores have enough ventilation. The room has to have powerful air conditioning too. These two factors may seem trivial but will become crucial when running the entire cluster for extended periods of time! Also, you need to have enough electrical power, preferably with the cabling out of the way, to run all cores simultaneously. Don't forget to do the same with all your Ethernet cabling. We have CAT6E cables to support our gigE Ethernet cards and switches. We are lucky that this step was taken care of for us already!

InstantCluster Step 2: Hardware
You need up to date Ethernet switches plus Ethernet cards and cores as well as plenty of RAM in each Linux box. As stated above, our gigE LAN and switches were already setup for us. Also, we have 64bit dual-core AMD Athlons and our HP boxes have 2GB of RAM. We are still waiting for our quad-core AMD Phenom upgrade!

InstantCluster Step 3: Firmware
We wasted way too much time two years ago (2009-2010 CIS(theta)) trying out all kinds of Linux distros looking for a good 64bit base for our cluster. Last year (2010-2011 CIS(theta)) we spent way too much time testing out different liveCD distros. Last year, we also downgraded from 64bit Ubuntu 10.04 Desktop edition to the 32bit version on our Linux partitions. 64bit gives us access to more RAM and a larger maxint, but was proving to be a pain to maintain. Just to name one problem, jre and flash were hard to install and update on FireFox. Two years ago, we tried Fedora, Rocks, Oscar, CentOS, Scientific Linux and, finally, Ubuntu. We've done this several times over the years using everything from Slakware and KNOPPIX to Fedora and Ubuntu! This year, 64bit Ubuntu has proven very easy to use and maintain, so I think we'll stick with it for the cluster!

InstantCluster Step 4: Software Stack I
On top of Ubuntu we need to add openSSH, public-key authentication (step 4) and openMPI (step 5). Then we have to scale the cluster (step 6). In steps 7-10, we can discuss several applications to scatter/gather over the cluster whether it be graphical (fractals, povray, blender, openGL, animations) or number crunching (C++ or python app for Mersenne Primes or Beal's Conjecture). So, what follows is a summary of what we did to get up to plublic-key authentication. This summary is based on the http://cs.calvin.edu/curriculum/cs/374/MPI/ link listed below. First, we installed openSSH-server from http://packages.ubuntu.com, then:
  1. If you have no .ssh directory in your home directory, ssh to some other machine in the lab; then Ctrl-d to close the connection, creating .ssh and some related files. 
  2. From your home directory, make .ssh secure by entering:
    chmod 700 .ssh
  3. Next, make .ssh your working directory by entering:
    cd .ssh
  4. To list/view the contents of the directory, enter:
    ls -a [we used ls -l]
  5. To generate your public and private keys, enter:
    ssh-keygen -t rsa
    The first prompt is for the name of the file in which your private key will be stored; press Enter to accept the default name (id_rsa).The next two prompts are for the password you want, and since we are trying to avoid entering passwords, just press Enter at both prompts, returning you to the system prompt.
  6. To compare the previous output of ls and see what new files have been created, enter:
    ls -a [we used ls -l]
    You should see id_rsa containing your private key, and id_rsa.pub containing your public key.
  7. To make your public key the only thing needed for you to ssh to a different machine, enter:
    cat id_rsa.pub >> authorized_keys
    [The Linux boxes on our LAN, soon to be cluster, have IPs ranging from 10.5.129.1 to 
    10.5.129.24 So, we copied each id_rsa.pub file to temp01-temp24 and uploaded these 
    files via ssh to the teacher station. Then we just ran cat tempnn >> authorized_keys 
    for each temp file to generate one master authorized_keys file for all nodes that we could 
    just download to each node's .ssh dir.]
  8. [optional] To make it so that only you can read or write the file containing your private key, enter:
    chmod 600 id_rsa [optional] To make it so that only you can read or write the file containing your authorized keys, enter: chmod 600 authorized_keys
InstantCluster Step 5: Software Stack II
We then installed openMPI (we had a lot less dependencies this year with Natty 11.04 64bit) and tested multi-core with flops. Testing the cluster as a whole will have to wait until the next meeting when we scale the cluster! We followed openMPI install instructions for Ubuntu from http://www.cs.ucsb.edu/~hnielsen/cs140/openmpi-install.html

These instructions say to use sudo and run run apt-get install openmpi-bin openmpi-doc libopenmpi-dev However, the way our firewall is setup at school, I can never update my apt-get sources files properly. So, I used http://packages.ubunutu.com and installed openmpi-bin, gfortran and libopenmpi-dev. That's it!



Then we used the following FORTRAN code to test multi-core. FORTRAN, really? I haven't used FORTRAN77 since 1979! ...believe it or don't!



We compiled flops.f on the Master Node (any node can be a master):
mpif77 -o flops flops.f


and tested openmpi and got just under 800 MFLOPS using 2 cores (one PC):
mpirun -np 2 flops


Next, we generated a "machines" file to tell mpirun where all the nodes (Master and Workers) are (2 PCs or nodes with 2 cores each for example):
mpirun -np 4 --hostfile machines flops



Every node has the same "machines" text file in /home/jobslisting all the IPs, one per line. Every node has the same "flops" executable file (or whatever your executable will be) in /home/jobs. Every node has the same "authorized_keys" text file with all 25 keys in /home/jobs/.ssh 


Note: last year we got about 900 MFLOPS per node. This year we still have 64bit AMD athlon dualcore processors. However, these are new PCs, so these athlons have slightly different specs. Also, last year we were running Maverick 10.04 32bit ... and ... these new PCs were supposed to be quadcores! We are still awaiting shipment.
===================================================
What we are researching III 
(look at some clustering environments we've used in the past):
We used PVM PVMPOV in the 1990s.
Let's try out openMPI and Blender now!




http://www.blender.org



===================================================
What we are researching II 
(look what other people are doing with MPI):
MPI intro, nice!
Sample MPI code
http://www.cc.gatech.edu/projects/ihpcl/mpi.html
===================================================
What we are researching I 
(look what this school did in the 80s and 90s): 
Thomas Jefferson High courses
Thomas Jefferson High paper
Thomas Jefferson High ftp
Thomas Jefferson High teacher
http://www.tjhsst.edu/~rlatimer/
===================================================
Today's Topic:
CIS(theta) 2011-2012 - Install openMPI and Stress the Cluster! - Meeting V
Today's Attendance:
CIS(theta) 2011-2012: GeorgeA, GrahamS, KennyK, LucasE
Today's Reading:
Chapter 3 Building Parallel Programs (BPP) using clusters and parallelJava
===================================================
Well, that's all folks, enjoy!

Saturday, November 5, 2011

School Week 9: ScreenCasts, SmartNotes and Code, oh my!

AP Computer Science finished CH4 this past week and we started Lab 4. We are going at a really good pace. I think we should have plenty of time for review before the AP Exam! We are going to do CH5 Conditional Expressions and Predicates as well as CH6 Loops before we start the GridWorld CaseStudy. BTW, we are working through the text faster than last year as I'm not giving written unit tests... yet.
APCS Chapter 4 Exercise 4 Pair.java




APCS Chapter 4 Exercise 5 DataSet.java




Computer Math started Chapter 4 on Sequences and Series. We also had contract day yesterday where we decided who is taking this class for Honors credit and who is taking this class for Regents credit. Remember, Honors students complete all Lab Exercises. Regents students need only complete half those problems in the same time frame.
CM 402 Sequences
https://clemix.clemson.edu:34567/home/pub/232

Calculus Research Lab started Chapter 4 about General Differentiation Rules! We focused on the Product, Quotient, Power and Chain Rules. We just started the odd exercises in 4.10 and will start Lab 4.10 (even exercises) soon!
CRL 401 General Rules
https://clemix.clemson.edu:34567/home/pub/233
CRL 410 Odd Exercises
https://clemix.clemson.edu:34567/home/pub/234

AP Calculus BC had a MCQ Monday last week. We tried 2003 AB Part IB which is Graphing Calculator active. Then we started CH5 on Anti Derivatives. BTW, we just got a new eText for Calculus! We've been using DWFT since the 1st edition in 1995. Now we have the 6th edition on http://csps.coursesmart.com Only preCalc has a traditional text. We have to work on that.
BC 501 Anti Derivatives



BC 502 Differential Equations



BC 503 Riemann Sums I



BC 504 Riemann Sums II




PreCalculus for Seniors started CH5 on using Inverse Functions to solve equations analytically and graphically. We focused on exponential vs. logarithmic functions.
PRE 501 Inverse Functions



PRE 502 Exponential Functions



PRE 503 Logarithmic Functions



No, say it ain't so! Quarter I just ended yesterday? OMG, I can't believe we're starting Quarter II this coming Monday! Wow, here's to a great start to the year.

HTH, I hope you enjoyed this week's notes!


Learning with Technology, 

Friday, November 4, 2011

Math YouTube Wednesdays are back!



I tried TED.com Tuesdays for a while, but I really missed my good old YouTube Wednesdays! So, just for fun, I thought I'd share some of my most recent YouTubes. On these Wednesdays, I try to show different YouTubes in Math class as opposed to Computing classes. I have 2 sections of preCalculus for Seniors and 1 section of AP Calculus BC. What follows are YouTubes I've been sharing with those classes. In fact, we managed a theme of "Tom Lehrer" related videos though out the entire 1st Quarter of this school year! We started with "Mathematicious," but then we went right into Lehrer filks such as: "The New Math," "Lobachevsky," "Santa Monica" (since it was Roshashana), and "The Elements!"












Here's one that cannot be embedded from The Big Bang Theory!
http://youtu.be/XiSGsHT1vLo



TBBT Theme by TBNLs!

View more documents from A Jorge Garcia
Well, that's all folks!

Teaching with Technology, 

Saturday, October 29, 2011

School Week 8: ScreenCasts, SmartNotes and Code, oh my!

AP Computer Science continued Chapter 4 on the static java.lang.Math class (sqrt(), pow(), min(), max(), abs()) and the immutable java.lang.String class (length(), substring()). We also talked about the differences between ints, doubles and Strings. We used java.util.Scanner for input and javadoc to document our methods. We'll start Lab 4 next week.
APCS Chapter 4 Exercise 13 QuadraticEquation.java





APCS Chapter 4 Exercise 17 Month.java



APCS Chapter 4 Exercise 18 Easter.java








Computer Math finished Chapter 3 on Pythonic Functions and is working on Lab 3. Chapter 4 is on Sequences, Series and loops is coming soon!
CM 305 Functional Arguments

 https://clemix.clemson.edu:34567/home/pub/229


Calculus Research Lab started Chapter 3 about the Definition of the Derivative as the limit of the Difference Quotient! Lab 3.8 starts on Monday. So, we're back to a YouTube Wednesday week.

CRL 308 Derivative Defined



AP Calculus BC practiced FRQs related to implicit differentiation, optimization and related rates. Then we had a test on FRQ Friday! We have our second MCQ Monday this coming week. Last time it was 20 questions from a Part IA without a Graphing Calculator. This time it'll be 14 questions from a Part IB with a Graphing Calculator. Unit 5 introducing Integrals starts Tuesday.
MCQ 2003 AB Part IA



BC 408 Optimization




BC 410 Related Rates






PreCalculus for Seniors finished Chapter 4 with a section on Quadratic Inequalities. Then we had a test on FRQ Friday! Chapter 5 using Inverse Functions to solve equations analytically starts on Monday.


PRE 404 Quadratic Inequalities


HTH, I hope you enjoyed this week's notes!


Learning with Technology, 

Tuesday, October 25, 2011

Computing YouTube Wednesdays are back!



I tried TED.com Tuesdays for a while, but I really missed my good old YouTube Wednesdays! So, just for fun, I thought I'd share some of my most recent YouTubes. On these Wednesdays, I try to show different YouTubes in Math class as opposed to Computing classes. I have 1 section each of Computer Math, Calculus Research Lab and AP Computer Science. What follows are YouTubes I've been sharing with those classes. In fact, we managed a theme of "Grace Hopper" related videos though out the entire 1st Quarter of this school year! We started with "Lin vs Win vs Mac" videos, but then we went right into Admiral Hopper videos such as: "60 Minutes Interview #1," "60 Minutes Interview #2," Tom Lehrer's "Santa Monica" (since it was Roshashana), "Who is Ada Lovelace," "Hopper Biographer," and "Hopper on Letterman."













Well, that's all folks!

Teaching with Technology, 

Sunday, October 23, 2011

School Week 7: ScreenCasts, SmartNotes and Code, oh my!

This week AP Computer Science started Chapter 4 on the static java.lang.Math class. We spent most of the week in AP Calculus BC talking about Newton's Method and programming the TI-89 Graphing Calculator. PreCalculus was studying Real and Complex Zeros of Polynomial Functions with all Real Coefficients. Computer Math is still investigating Python Functions with and without parameters, with and without return statements. Calculus Research Lab spent all week on Lab 2.13 regarding Limits.


APCS Chapter 4 Exercise 3 IceCreamCone.java















APCS Chapter 4 Exercise 8 Square.java














APCS Chapter 4 Exercise 10 Balloon.java












BC Calc Unit 405 Newton's Method




BC Calc Unit 406 Programming TI-89 Quadratic Formula 




BC Calc Unit 407 Programming TI-89 Newton's Method 



preCalc ScreenCast 402 Real Roots



preCalc ScreenCast 403 Complex Zeros



Computer Math 302 Variables



HTH, I hope you enjoyed this week's materials!


Learning with Technology,