Linux
New Job at Oak Ridge National Laboratory
by admin on Oct.31, 2010, under Linux, My Life, ORNL
I have officially started my new position at Oak Ridge National Laboratory outside of Oak Ridge, Tennessee. I am working in the Information Technology Services Division, which is part of the Computing and Computational Sciences Directorate. My position is that of Unix / Linux system administrator, working primarily in maintaining systems and infrastructure supporting the Climate Change Science Institute.
The lab has a number of core focus areas including environmental and climate science, materials science (including new facilities for nanophase research), and is a world leader in neutron science at the Spellation Neutron Source. ORNL is also the home of the National Center for Computational Sciences, and the home of Jaguar and Kraken, currently the first and third most powerful supercomputers in the world. ORNL also supports national security projects, nuclear non-proliferation work, nuclear science and engineering, fusion power and alternative energy sources as well as being a leader in computational biology.
These diverse research areas all typically heavily utilize Linux and Unix for a number of scientific applications and research tools. Of course, the supercomputing center relies on Linux almost exclusively as the Cray systems, and various support clusters, run various distributions of Linux.
The multi-disciplinary environment of the lab makes for a very interesting work environment. I am currently supporting researchers in their work in climate sciences, for example by maintaining the systems used for the ORNL Distributed Active Archive Center (DAAC), and the Atmospheric Radiation Measurement Program (ARM) systems. Additionally, I will be working more with biological science systems as time goes on.
Eventually, I would like to explore my interests in high performance computing, both in the computational needs for Environmental Sciences, and otherwise. I’m increasingly interested in GPU computing, and would like to work with developing and supporting compute environments which use NVIDIA CUDA and OpenCL which can help realize dramatic performance increases in massively parallel computing.
The lab is a world-class facility and is the showcase of our national laboratory system. The campus grounds are quite nice. The lab is surrounded by trees, and is on a huge reservation. The drive to work is beautiful. Here is a picture of the fall colors behind the Joint Institute for Biological Sciences building.
Everyone at the lab has been very easy to work with; in fact, I would have to say the people make up one of the best aspects of working at the lab. It has been a pleasure getting to know my new colleagues and customers.
Our move to Tennessee went very well, and Sydney and I are planning to close on a home up here this month. It’s been a big change for us, but we were very much ready to leave Florida. The changing seasons, smaller urban area, and ready access to the Great Smoky Mountains National Park are much more to our liking than the urban sprawl of Tampa bay. So far we have been on three hikes to the Smoky Mountains and each of them was breathtaking. We once again live someplace where we can truly enjoy the outdoors. (We got a bit spoiled living in Colorado and Alaska!)
Moving up here was a big adventure, but I am happy to say that everything is going very well. The relocation assistance provided by the lab has been tremendously helpful and we are starting to feel very much at home here. I’ll post some pictures of our hikes soon, and do some updates from time to time on what projects I am working with at the Lab and other interesting news.
NVIDIA Cuda and VirtualGL
by admin on Aug.08, 2010, under Linux, My Life
(Update: I’ve written the Wiki now and you can find it here.)
So I’ve been playing around with NVIDIA’s CUDA Toolkit and SDK and reading this book that just came out “CUDA by Example”. (See this Linux Journal article for some general back ground on CUDA.)
This is pretty interesting (and fun) stuff. So far I’ve gotten the toolkit installed and compiled the sample code projects in the SDK. I have to use my workstation at work as (sadly) my ancient ass NVIDIA card at home is not CUDA capable and my system is so old it is really just a type writer at this point.
Running just the sample CUDA projects is pretty impressive though. My old school GeForce 8800 at work has a meager 32 cores. (The card I just ordered has 96, and the most recent Fermi architecture ones have 448 and 6GB – yea, holy crap.) However, with only 32 cores it renders the particle, smoke and other samples quite nicely. These are rendered in 3D, allowing you to change perspective, and sometimes alter the particle density, light source, etc. They are just examples showing how to run general purpose code (and render results in OpenGL) on the GPU.
So then I thought – I would like to forward the rendered OpenGL images to my workstation at home. Alas, SSH, VNC, et. al all actually send the OpenGL to the client to be rendered. Enter VirtualGL, which does just what you would think – it attaches a loadable module to an executable which intercepts OpenGL requests and send them to the local GPU for rendering, putting the results into a pixel buffer which then gets sent to the client. Wow. You can run your rendering in a data center and forward the results anywhere. That’s nifty!
Here is a picture of the CUDA smoke particles sample, being rendered at work, and forwarded via SSH X Forwarding with rendering handled by VirtualGL. (I think Geek Level just dinged.)
I’m going to write up a wiki on this stuff, but if you have any recent NVIDIA card (8800 or newer) , even a mobile one, you likely have the capability to run CUDA. If you are interested you can download the Toolkit and SDK and have at it. (Update: I’ve actually written the Wiki now and you can find it here.
After testing the CUDA waters I have to say I am very impressed. I can easily see CUDA being integrated into many applications in the near future. There are already plugins to offload MS Excel formulas onto the GPU, run Mathmatica on it, etc. The integration of multi core CPUs, in even consumer class hardware, combined with the capabilities of GPUs very well might make things go from a “multi core revolution” in consumer computers and into a “massively parallel revolution”. In fact, it’s already happened. Massively parallel computing is now capable on your notebook, it just has not been fully exploited yet. (Think of the cryptographic fun you could have.) Of course once Apple catches on, it will be called iMassive.
This is just all pretty fascinating to me. My first computers had 4Mhz Motorola CPUs, 32K of memory, etc. and now I just bought a 98 core GPU which I can write code in CUDA C and run general purpose computations on. Wow. And I’m getting ready to get an i7 too – it’s all just a bit dizzying. But very fun.
If you have not checked out CUDA, I highly recommend it. It’s a good opportunity to learn more about massively parallel computing, which I think we are going to be seeing a whole lot more of. You can easily find the book “CUDA by Example” It requires basic to intermed iate C skills, but not OpenGL or other graphics languages at all – you learn CUDA C as you go and start writing parallel code very quickly.(Amazingly, the run time just integrates the GPU device code and host code, and you can invoke code to run on the GPU as easily as any C function. It is some hot stuff behind the scenes, but surprisingly easy to code.)
HP C309g Wireless Linux Printing & HPLIP
by admin on Jul.17, 2010, under Linux, My Life
We have wanted a wireless printer for our home, and I’ve been waiting for the prices to become reasonable. Then last weekend we scored on a refurbished Photosmart Premium C309g-m at CompUSA. Normally $199, we got it with a -$120 instant savings for a total of $79 at the register. For a 802.11g + Bluetooth enabled, reasonable quality photo printer and scanner, $79 just was a damn good deal. Especially considering it uses separate CMYK cartridges – it’s exactly what we were looking for. Best. Price. Ever.
But the best thing about it really is the fantastic Linux drivers HP provides via the HP Linux Imaging and Printing (HPLIP) software. You can download the latest version at the official HPLIP site, but you might very well find it is already installed in your Linux distro, it commonly is these days. Just check to see if you have commands such as hp-setup, hp-wirelessconfig or hp-toolbox already. If not, see if hplip is available in your distors repository, or download it using the above link.
Once installed you will have an HP icon in your systray for quick access to your printer settings:
I first used HPLIP about two years ago at work and was delighted to see how complete it was. It provides a full set of tools to interface with HP devices from Linux and provides a delightful user experience.
On my device, which is a relatively new product, nearly all functions are supported: Wireless printing of course, photo printing (see tips below) and even wireless scanning – which really surprised me. Overall, using this printer in Linux- like many other HP products – is very well supported. Way to go HP!
I did however run into a few little issues which had to be worked though, and you may encounter the same. So here are some notes on what I did to resolve the snags I encountered.
Arduino E-aster Egg
by admin on Apr.18, 2010, under Linux, My Life
My Arduino arrived just a few days before Easter, and though I’ve been busy with work and school I couldn’t wait to dive into playing around with it. The whole concept of the Arduino, being able to write little programs in C, compile them, then upload then to this little programmable prototyping board – it’s just so cool.
I decided to start by following the great introductory tutorials at the Adafruit.com site, they are so well written and so fun. One of them consists of learning how to program three different LEDs to cycle on and off. By having more than one on at a time, and through using a box to diffuse the light, you can mix the colors to get yellow, purple ect.
Well, that looked like fun, and as I was constructing it I realized that it would be a perfect Easter Egg, the colors diffusing and illuminating it. I wired up the schematic, modified the sample source code to blink and mix as I wanted it to, compiled it and uploaded it to the Arduino. I made a little paper box and filled it with tissue as shown on the adafruit.com site. As I made the box I drew some easter egg style symbols, and some other stuff, on each face of the cube. Once fixed up it worked pretty darn good and I presented it to Syd as her E-aster Egg!
Here is a little ogg video of the finished project:
(If that does not work here it is in mpeg4 too)
If you would like to learn more about the Ardunio, see this wiki article which has some information on getting started and links to some great resources.
Syd really liked her digital colored egg. I’ll have to come up with some more projects to make for her, but I sure it won’t be too difficult to come up with ideas, the Arduino is a remarkably versatile little gadget.
Debugging KDE4 Plasmoids
by admin on Mar.12, 2010, under Linux
So you have downloaded that spiffy new plasmoid for KDE4 and installed it. Then all manner of interesting things begin to occur. Perhaps the new plasmoid itself simply does not function correctly, or perhaps the next time you login the plasma desktop fails to start. Or, in my most recent case, configuring the plasmoid caused a seg fault which then crashed the entire plasma desktop. Ahh, such pleasant surprises. I’ve never really taken on learning the first thing about plasmoids really – it’s been on the list, but pretty low. However, this most recent situation of a crashing desktop on login inspired me to at least dip my toe.
While there is certainly much more to know, and while I am not a developer, I thought it might be helpful to point out a few things that may help others with crashing plasmoids. I’ll add to this as I learn more, but this should at least point you in the right direction. I was suprised that googeling for debugging plasmoids returned rather dismal results, and no guide appears readily available, so if you have landed here, good luck and please add your own hints.
Okay – so first off, some basics. If your KDE desktop has crashed, don’t panic. You can actually restart it easily enough. First, try alt tabbing to see if your windows are sill running despite the inhospitable and otherwise completely black screen. Start Konsole using Krunner (alt-f2) and once at the command line simple restart the process:
paracelsus@Callandor:~> plasma-desktop
That should re-initiate your desktop. (If your X server was killed as well, then the issue is not as likely with the plasmoid, and you may have other things going on. If X dies and dumps you to the shell you can usually restart it by running startx If X is still running, but you can’t start Krunner and Konsole, simply go out to a virtual terminal (ctrl-alt-f1) and restart plasma-desktop )
Of course, if you have a buggy plasmoid that is crashing, it may very well just crash again. If you just installed the faulty plasmoid and know which one it is you can remove it with:
paracelsus@Callandor:~>plasmapkg -r buggyPlasmoid
(If you don’t know the exact name, try plasmapkg –list)
One other very fine tool is plasmoidviewer. Using this you can run a buggy plasmoid in a more contained environment. This makes it a bit easier to capture output and if it crashes, it likely will not take down the plasma desktop process.
paracelsus@Callandor:~>plasmoidviewer buggyPlasmoid
Now, if that does not work, and your desktop is still crashing, you can try a more drastic fix which is to simple move your KDE user profile. Do so with:
paracelsus@Callandor:~>mv ~/.kde ~./kde-broken
Then, restart X (crtl-alt-backspace) and log in again. This will create a new, default profile. You can then continue troubleshooting the old one, etc.
Also, if you have encountered a buggy plasmoid, please take the time to submit your findings to the author, perhaps at kde-look.org or wherever else you obtained the plasmoid from. Supply the output obtained by running the plasmoid with plasmoidviewer as well as your distro version, kernel, and KDE version as a minimum.
Good luck and if you have any other basic plama / plasmoid trouble shooting tips, please feel free to add them.