Friday, December 18, 2009

Wore Out My Flash Drive

In order to make my work portable between my laptop, desktop, and any other machines I might happen to be using, I put all of my work and a lot of the applications I needed on a 32GB USB thumb drive. After 11 months of use, the drive started acting weird. Basically, the partitions/filesystem completely disappeared, and the drive was reported as being 26GB.

I had the providence of having backed up everything that morning, so I only really lost about an hour of work. After replacing the flash drive (it was an OCZ ATV drive) with a 32GB Patriot XT drive that I bought at MicroCenter in the Denver Tech Center, I downloaded a utility OCZ uses for diagnosing and updating the firmware on their drives. Yup, the tests showed lots of bad blocks. Also interesting was that they used MLC (multi-level cell) flash on the drive (MLC is usually only good for about 10k rewrites, while SLC is good for 100k-1million+ rewrites).

I'm actually really impressed with the build quality of my old OCZ drive. That thing suffered *a lot* of abuse, and what took it down in the end was flash wearout, not any sort of mechanical breakage.

Sunday, December 13, 2009

Parallel Python is Also Cool

Parallel Python ( is a lightweight library for providing task-level parallelism in Python. It supports both SMP systems as well as clusters. Basically, to use it, you schedule a function for execution with some parameters and context and the scheduler farms out the work to Parallel Python "servers" running on other machines. Most of the annoying details of parallel programming (scheduling, etc.) are taken care of by the library.

Used it today to run a particularly long-running Python script on 27 different processor cores.

Thursday, December 10, 2009

PARSEC Benchmarks in TBB

The PARSEC Benchmark Suite (, which is a new parallel benchmark suite that targets the kind of emerging classes of applications that OCCAM targets (Recognition, Mining, and Synthesis/Cyber-Physical Systems) has benchmarks written using Intel's Threading Building Blocks (TBB). Version 2.0 has several of the benchmarks written in TBB. Previously, PARSEC only supported pthreads and OpenMP.

This is extremely useful for the OCCAM Project. Since the core parallel system within OCCAM uses TBB, this will make it easier to expand the collection of benchmarks for OCCAM. More OCCAM benchmarks are always helpful; they help me to better understand the capabilities that the OCCAM system needs as well as providing additional datapoints to measure OCCAM's adaptation efficacy.

Saturday, December 5, 2009

Shed Skin is Awesome

Shed Skin ( is a tool that converts Python code to C++ code, realizing large performance improvements in the process. Naturally, there's some major restrictions to it -- it doesn't support all of Python's modules, and it needs to be able to infer statically all of the Python code's types.

So it's not a tool that will magically convert your Python code into C++ code without some additional work, but the changes it requires are a lot less work than converting your Python code to C++ by hand. It probably saved me a few hours' worth of work yesterday as I was converting one of my scripts to C++ to make it less agonizingly slow.

Google Code Source Site

I've been playing around with Google Code a bit. Below is a candidate site for the ultimate release of the OCCAM Framework:

Friday, December 4, 2009

First Post

more coming soon...