Recently, a long-time friend of mine decided to replace his kitchen cabinets, and learned a key lesson about core competency that I find highly relevant to what we do at Acceleware. The story started something like this: “Hey Mike, I found this great deal on some new kitchen cabinets, so I’m going to pull out my old ones and put these ones in. I figure if I work evenings I can have it done it two weekends.” Me: “Sounds cool, let me know if you need a hand” but thinking “you can’t be serious with the two weekend thing can you?” And so began the epic journey.
When the dust finally settled, literally, it took him just under three months. “Turns out I had to rip out the drywall because I damaged it pulling out the cabinets, then the insulation turned out to be moldy due to a water leak so I pulled that out, then I found out that I had lead-based solder in my pipes – replaced those too, and there was the re-wiring of the kitchen to get another circuit in there, then we figured we might as well do the tile, so it’s turned into a complete kitchen overhaul.” Sheesh! So what is the important lesson here? My friend summed it up very nicely saying “If you enjoy the challenge of teaching yourself new things, then go ahead and do it yourself, but if you want the job done, hire a professional.”
This really resonated with me, given the continued emergence of ‘parallel programming’ as a domain of professional expertise unto itself. We occasionally get asked at Acceleware, “Should I partner with you or just go and code it (re-writing software algorithms to run on GPU / multi core) myself?” My answer to that is very similar to my friend’s renovation observation above: if you want it done efficiently and achieve the best results, hire a professional.
I’ve heard a ton of management buzz-words over the years, but ‘core competency’ is one that always comes back when discussing project scope and company strategy. Parallel programming is Acceleware’s core competency, our ‘stock-in-trade’. For Acceleware partners, their core competency is scientific software, be that for EM/circuit simulation, mechanical design, seismic processing or something else. This is an important distinction and allows for a great level of efficiency when delivering a full working SW solution (App/GUI + solver) to an end user.
Acceleware partners continue to deliver valuable features and enhancements specific to their domains of expertise and their core competence. They also help to guide Acceleware to deliver the most relevant and useful speed ups to their end users. Acceleware uses its parallel programming expertise to deliver the best possible parallel code to its partners quickly and efficiently. It’s a synergy that works very well. Acceleware focuses on the HPC (High Performance Computing) portion of the problem, and our partners focus on the application portion, be that RF, Geophysics, mechanical design or another application.
These ‘years in the trenches’ have allowed us to develop key relationships with NVIDIA, AMD, Intel and others in the parallel computing space. This informal network of contacts gives us a great view of the industry and a great edge when it comes to developing parallel code. Our effective working relationship with NVIDIA developers allows for quick and efficient bug fixes,. We also have early access to new NVIDIA hardware, driver, and library updates, and can solve compatibility and performance issues before they are even released to the public. (New NVIDIA HW releases are between 12-18 months, so it’s a fast paced world right now.) Same goes for AMD (now) and Intel (once they releases a commercial GPU computing platform via Larrabee). We have key contacts at each of these companies, follow their technology very closely, and can recommend and offer rapid support of any new technology to our partners.
At the end of the day, our partners get to enjoy all the benefits of this expertise without having to make the investment themselves. This frees up their development resources to continue working on what they do best - developing new features for their customers and staying ahead of their competitors. I’ve yet to talk to a SW product manager that has a shortage of new and improved features in his backlog, often with new sales and/or a competitive advantage attached to them. So despite speed and performance being an important part of any scientific computing or simulation product, our partners get that performance ‘for free’ in their Acceleware library, and can continue to focus on revenue generating features.
In my opinion, parallel programming as a unique skill set will continue to evolve and be recognized as such. This has already happened to some extent in the gaming world with the advent of the ‘3D gaming engine”, which we will touch on in a future blog.
I’d like to conclude by proposing the following questions, related to core competence, that one should consider when deciding how to pursue a parallel programming strategy:
- Am I willing to invest the time, effort and money in developing in-house parallel programming expertise?
- Is parallel programming as a skill set integral to my value as a company or individual?
- What am I sacrificing in terms of other features and development to pursue this investment?
- Am I willing to continue to invest on an ongoing basis to keep up with new hardware and software combinations
I love nothing more to see new Acceleware partners sit back and enjoy the benefits of GPU acceleration and parallel programming with minimal effort on their part. It’s the same feeling my friend has enjoying breakfast with his family in his new kitchen… just without all the hard work.