Posted: September 20th, 2011 | Author: admin | Filed under: Startups | 2 Comments »
This may be the most valuable post I write. And while I can’t claim this list is sufficient, it certainly is necessary. If you haven’t read everything on this list, get on it.
- Product / Market Fit
- The most important thing and a really well written article – ALL startups should follow this: Product / Market Fit
- Go To Market Strategy for Startups
- Four Steps to the Epiphany
- PDF Intro – I think you can get most of the benefit from this first chapter.
- Full book – I, quite frankly, never made it through the entire book. For some reason I didn’t like it that much and felt most of the benefit was in the intro. But perhaps I’m missing something. http://amzn.to/1m4R1S
- Crossing the Chasm
- This is THE bible of high tech marketing. Steven Blank of Four Steps would say this is mostly irrelevant since this only comes after customer discovery, but I think he’s non-trivially wrong. This is the book. http://amzn.to/9YPB3n
- The Innovator’s Dilemma
- This is right after Crossing the Chasm with respect to marketing strategy books. Love it. http://amzn.to/ahEhhN
- The Sales Learning Curve
- HBS article. Very good article on how to think about sales. Genesis of the concept of the Renaissance Rep. Link.
- Obviously this isn’t essential if you are building a online-only or consumer startup.
Note – Crossing the Chasm and The Innovator’s Dilemma are two-thirds of the holy trinity of high tech strategy books. I’m still looking for the third.
Posted: June 8th, 2011 | Author: admin | Filed under: Startups | No Comments »
Ok – you’ve found the customer. You know their needs and challenges. You’re working on product/market fit. You’ve got a handful of referenceable customers. Now it’s just about execution, right?
Not yet. Just because you’ve been able to sell to a handful of customers doesn’t mean you have figured out how to do it in a repeatable fashion, or do it with people who are not the founders. Now you need to investigate your market and figure out the messages, sales tools, materials, channels, employees, processes, and communication channels that will enable you to sell.
How do you do this? Once again, I don’t know. But I can tell you how to figure it out.
If you’re a good product person, you’re really digging into your product now. You’ve got enough early customers and feedback to give you a solid understanding of essential features. Your dev team has uncovered plenty of problems from v1. Things are getting exciting as you can feel yourself moving closer to your vision of product/market fit.
You need to do the exact same thing with sales. Your product is your best sales tool. But it’s not your only one, and if you’re a product person, don’t get caught in the trap of doing only the fun product stuff and ignoring the BS sales and marketing stuff. It’s not BS – it’s essential. In fact, the more uncomfortable you are with sales and marketing, the more important it is for you to start working on it early.
Positioning
In marketing textbooks they talk about the 4 P’s of marketing: Product, Price, Placement, Promotion. But they miss the 5th and essential one: Positioning. Positioning is how you talk about your product and use that language to unlock the mind of the customer. I’m a positioning guy so I’m biased, but after Product, I think Positioning is the most important tool you have in your sales and marketing arsenal. If you do it well, it acts as a force-multiplier, making every contact with a prospect – via web, email, phone, or in person – more effective. If you do it poorly, you’re making it hard for your potential customers to figure out why they should buy your product.
That last sentence is an important one. Positioning isn’t BS marketing junk. It is the communication equivalent of your product execution. Just as your product is supposed to make it easy for your customer to solve his or her problems, your positioning is intended to make it easy for your prospect to understand and want to buy your product. If they have to work hard to figure out what your value is, or why it’s better than competitor X, or why they shouldn’t just wait, then you’re not doing your job.
Positioning And Your Website
I used to do big positioning exercises where you think about your positioning, hone it down, discuss it with your team, iterate, and finally decide. Uggh – what needless pain and suffering.
Now I strongly suggest skipping the pre-work and jumping straight into your website. Since you’ve already gone through Market Exploration, you should have a website. But hopefully you haven’t spent too much time on it (unless you’re a web-based product or company). But now it’s time to really dig in and SPEAK to your customer. You’ve learned who they are, what they need, how you solve their pains, and what value propositions work for them. And you even have real-world testimonials. Great – package that up and make a website that makes it easy for prospects to want to buy.
For a web business, this is obviously the way to go. For an enterprise startup, this is still the way to go. Everyone goes to your website, even if they hear about you first from an in-person visit. More importantly, the website forces you to think through your positioning and messaging and how you want to talk to your customer. Your sales decks, PDFs, demos, email blasts, and everything else fits into the messaging framework you have to de facto create to build a good website.
This will also expose all sorts of weaknesses in your knowledge of your customers. Do they really buy because of X? Do you have substantiation for claim Y? Do your features really differentiate versus competitor Z? Your website will force you to address these issues. (And, of course, you’ll learn and change and improve over time.)
Sales Tools
When you are building out your website, you’ll uncover all sorts of tools you really ought to have. Maybe it’s a 30 second testimonial from a customer, or some key statistics, or a 2 minute self-running demo, or some sample reports. In addition to these tools, what will your sales force need? Clearly a sales presentation, but also testimonials, references, detailed spec sheets, etc. Put together your list, prioritize them, and start building them out. Note that they will all change as you learn more, so focus more on content than on production quality.
Communication Channels
You’ve found the customer. You’ve got a great product. Your positioning really communicates your value effectively. Now how do you get in front of customers so they can hear your story?
The tools are pretty standard and well known. The question is “which tools will work for you?” This is an empirical question, and the only way you can figure it out is to try them and see which work.
Create your list of channels / tools. Prioritize them based on your intuition. Then start trying them. Figure out ways that you can test your hypotheses about communication channels as quickly and cheaply as you can. Don’t get paralyzed by thinking you need to do all of them, but also don’t get complacent in sticking only to the channels that have worked so far. You need to try other methods, so start trying them.
What are the channels? PPC (SEO takes longer), email marketing, conferences, PR, blogging, social media marketing, local groups, cold calls, etc.
Conclusion
If you do a good job with Market Investigation, you’ll come out of it with product/market fit, a critical mass of referenceable customers, real revenue, increasing momentum, strong positioning, a solid foundation of knowledge of how to reach your target market, and a team that’s up to speed, succeeding, and building momentum towards success.
Posted: June 8th, 2011 | Author: admin | Filed under: Startups | No Comments »
This is the most important phase of your company. Period.
Sure – all phases of your company are important. And sure, you make your money at Market Exploitation so that is clearly important. But if you do Market Exploration right and find the customer, then you have a very good shot at succeeding at everything else. And if you do Market Exploration poorly, you’re probably going to fail (unless you have ample dumb luck).
So, what is “Market Exploration?” Market Exploration is when you find your customer. I don’t mean that generically, like “My target user is CIOs of Fortune 500 companies.” I mean VERY specifically – where you find several real people and you understand their problems in depth. And when you start finding the same problems and same situations over and over, find a product that solves their problems, and you can see that these specific customers are actually part of a larger group of customers, THEN you have found your customer. (As Marc Andreessen writes, product/market fit is the most important thing. But the precursor to product/market fit is finding the customer. It’s my belief that if you are competent and can execute, then if you have found the customer, you can create product/market fit. In Marc’s language, “In a great market — a market with lots of real potential customers — the market pulls product out of the startup.” )
Here’s an example. I was fortunate enough to be one of the first employees of Kana Communications back in 1997. When I joined, the company was little more than a very bright founder, a little seed money, a few consultants, a Filemaker prototype, and some Office Depot furniture. Oh yeah – one other thing: the founding entrepreneur had found the customer.
Kana went on to great things. We were lucky enough to be in the right place in the right market at the right time. We did a really good job of hiring capable people and executing. We were a hot Silicon Valley company. And we sold real product for real dollars. (Our ultimate market cap was unreal, but that’s a different story.) But the amazing thing about all that is that much of it was predetermined from the day I joined – and I joined at nearly Day 1 of real company formation. Sure, a more incompetent team could have lost it all. And had we not executed so well we likely would have lost first place in the market to a fast-follower, and there is a HUGE difference between #1 and #2. All that said, the success we ultimately created was largely determined by that first step the founder did mostly on his own – finding the customer.
Here’s a counter example. I was part of a company that was founded by some very smart people. But, quite frankly, they weren’t very good at building a software company. When I joined up we had early sales but no increasing success. In fact, we hadn’t really found the customer. (And without that, we obviously didn’t have product/market fit.) The result? Absolutely predictable – failure.
I’ve seen this time and time again. EVERY company that I’ve seen succeed had found the customer, and from that had created product/market fit. The vast majority of companies I’ve seen fail or struggle have done so because they still hadn’t really found the customer.
So how do you go about finding the customer?
I don’t know.
Seriously. If it were that easy, then entrepreneurship would be easy. There is no general purpose recipe for finding the customer and it’s highly dependent on your particular company. That said, I can give some solid advice:
Finding The Customer Is The Main Goal
It’s not about revenue. It’s not about scale. It’s not even about product/market fit (yet). It’s about finding a customer, understanding their problems, working towards product/market fit, and ensuring that there are many similar customers out there.
Optimize Learning
This really is an exercise in market exploration. While I’m sure you have many ideas of who your customer is, you don’t know until you’ve proven it. So, come up with a hypothesis, figure out a way to test it, GET OUT THERE, and then quickly figure out if your hypothesis is right, nearly right, or wrong. Then move on to the next one (aka “pivot.”)
For enterprise software companies, here’s a pretty good plan:
- Write down your target market hypothesis.
- Write down a SHORT pitch. The goal is to think through who you think the customer is, what their needs are, how you solve their problems (ie: your value proposition), and your next steps.
- Write down a few assumptions or things you’d like to learn from your conversations. I highly favor qualitative / open ended questions that get the interviewee to talk. You’re too early for a quantifiable survey.
- Build as minimal a website, PDF, and sales deck as you can. Why? When you call or email, they will check your website. Then they’ll say, “send me something via email.” But don’t invest too much time in these, since they will almost certainly change.
- Now get out there and talk to as many of those potential customers as you can. Use your network. Use LinkedIn. Cold email. Cold call. Try PPC ads. Whatever it takes to have a bunch of short conversations. Your goal isn’t to sell (yet). It’s to learn. And if as you learn you start finding customers who resonate to your value proposition, then turn them into prospects and sell to them. Conversations are a good first step, but you don’t know you have a customer until they are willing to back their enthusiasm with money.
- Aside: One really good entrepreneur I know – Tyson Roberts from Lucid Commerce – said he couldn’t even imagine starting a company until he had actually sold his product, before he had even built it. Excellent.
Build Your First References
As you start to hone in to your customer, it’s time to build your first reference customers. This may be only 5 customers if you are an enterprise software company, or 500 if you are a consumer web startup, so while they aren’t material in their scale, you need them. They validate that you have found a customer (since they are giving you money), and they are essential to getting your next customers.
Once you’ve found your customer, built some early references, and are starting to feel good that you’re onto something and have a real market on your hands, it’s time to figure out how to sell to them. It’s time for Market Investigation.
Posted: June 8th, 2011 | Author: admin | Filed under: Startups | 1 Comment »
I’ve worked with a lot of early-stage startups, trying to help them get to traction and growth. In evaluating different strategies and tactics, over time I’ve evolved a framework that’s been very useful in clarifying why a certain path feels right. This isn’t unique or brilliant, but it’s definitely helped me.
The key question I have usually been focused on is, “How do we unlock the potential of this market?” Embedded in this is the belief that one doesn’t create a market. Instead, a company finds some unmet need and, if it is lucky, can release the potential embedded in the market. The iPod and iTunes are a great example. Sure, Apple “created” a market for easy MP3 players and digital music. But really what they did was to unlock the potential in that market with the right combination of product, service, and marketing.
Let’s say you have a vision of a market potential. What’s your strategy for unlocking that market? Well, there’s a term for that, and it’s called your “Go To Market Strategy.”
Go To Market (GTM) Strategy
How you plan to bring your products or services to your customers and how that changes over time.
The key thing about a Go To Market strategy is that it changes over time. So when you think about your GTM strategy, the first question is, “Where are you in the lifecycle of your market?”
Let’s say you are an enterprise startup and you just raised $1m. It’s time to ramp up, right? Build out your website, hire a sales guy, and go for it. Hell, you probably put pretty aggressive numbers in your plan to investors, so you’re now on the hook. And that’s what the money is for, isn’t it?
Maybe, but maybe not. The right Go To Market strategy is completely dependent on what phase your market is in.

Here is a simple model that really helps clarify how to think about your market. All successful startups will start with no sales, get to a phase where sales start to increase gradually, and then hit a phase where they start to grow rapidly (what I call “Market Exploitation,” which is good, and not to be confused with “customer exploitation,” which is bad).
Obvious Point #1
While we all care about Market Exploitation, you’ll never get there if you don’t pass through the preceding two phases.
Yes, this is obvious. But it’s also really easy to overlook since many early entrepreneurs don’t understand how hard the first two phases are. When we built the business plan for InsideCrowd (my wildly unsuccessful startup), we had many truly insightful ideas about how to solve the challenges of scale confronting our market. And yet we then spent the next three years ignoring those topics almost completely and spending all our time trying to unlock the market in Market Investigation.
Obvious Point #2
The goals, and hence the tactics, that you need to pursue are highly dependent upon the phase your market is in.
Let’s look at these specifically:
|
Market Exploration |
Market Investigation |
Market Exploitation |
| Goals |
Find the customer |
Learn how to sell
Get to product/market fit |
Exploit the market opportunity & grow |
| Optimize |
Testing, learning, reacting |
Depth in your market |
Efficiency & growth |
| Milestone |
Build first references |
Product/market fit
Critical mass of references & success |
Rapidly growing sales
Market pull |
|
|
|
|
Rather than make this post too long, I’ll cover each area as a separate post.
Posted: June 8th, 2011 | Author: admin | Filed under: Startups | No Comments »
I’m restarting my blogging after about a year and a half off. I don’t know how long I’ll keep at this blogging this time. As long as I find it valuable, I guess.
Last time I focused on some research I did in GPGPU. (Very cool stuff.)
This time I’m going to focus more on the operational side of starting and growing a company. I just finished working with Atlas Accelerator where I had the opportunity to work with 15 startups and to see dozens more. While all startups are different, there are certainly many common themes and challenges. My plan is to focus on those.
The posts prior to this one centered on GPGPU. They are completely different content than what will follow and rightfully should be archived away. But my WordPress skills are mediocre, so I’ll just leave them.
Posted: October 12th, 2009 | Author: admin | Filed under: GPGPU | No Comments »
I went to the NVIDIA GPU Technology Conference in San Jose at the beginning of October and there were a few interesting things worth pointing out. The show highlighted how scientists are using the technology, and how businesses are trying to capitalize on it. Some of the scientific projects taking advantage of the low cost, highly parallel computational capacity of GPUs were really amazing. On the other hand, with a few exceptions, the businesses highlighted were surprisingly uninteresting. I guess this is a good thing for me. It shows that other than GPU-izing existing applications, new businesses haven’t really figured out what new things are possible with the technology.
Here is a smattering of cool things to check out:
- Pat Hanrahan – A professor of CS at Stanford, he showed two very cool things. One is a visual query language, now embodied in Tableau Software, a great Seattle start-up. (Tableau does to visualizing data what Lotus/Excel did for modeling it.) Later he showed a very ambitious project at Stanford on Domain Specific Languages (DSLs). Long story short: the idea is to enable domain specialists (for instance, Computational Fluid Dynamics experts) to be able to focus on modeling their science, and not on implementing their modeling. For example, for CFD, a DSL could allow researchers to work on modeling the science and not modeling the implementation of meshes or data structures for computing. Then the compiler could take care of the mesh implementations and data structures. And even better, the compiler can optimize the computation for different computing platforms, such as GPUs. Very cool stuff.
- Computer Vision with Horst Bishof – Horst showed a lot of very cool things, including this one: Building Rome in a Day. Here, they imported about 200,000 amateur photos of Rome from Flickr, used a bunch of computation, and built a highly accurate 3-D model of Rome. Awesome.
- Hanspeter Pfister of Harvard showed some amazing research projects going on at Harvard. The common element was the extraordinary amount of data processing involved. One was reconstructing the neural circuitry in brains. Another was massive arrays of radio telescopes. Check out the video.
- One company really doing some cool stuff was MotionDSP. These GPUs are great at visual computation, unsurprisingly, and MotionDSP really takes advantage of them. They process video to clean up the images, either for consumers or for police / defense forensics. Watch the videos.
- Enodo is both really boring and really interesting. They are boring because they don’t seem to create any real technology but simply implement it for consulting projects. They use the Cryengine (the technology behind the video game Crysis) to build 3-D models for training and other uses. For instance, they modeled an oil rig and built simulations to train people what to do in emergencies. Instead of reading training documents, people work through realistic 3-D simulations – essentially playing training video games. Here’s what’s cool: First, they are licensing a technology that was designed for video gaming and using it for something more valuable. Wait – sounds exactly like GPGPU, doesn’t it? Second, what a great idea – real-world, 3-D simulations as part of a normal business. Given how realistic 3-D simulations and rendering are these days, and the trajectory of technology, it seems clear that this will become more commonplace.
These are pretty sketchy writeup. Follow the links to learn more. They are cream of the crop – you won’t be disappointed.
Posted: September 22nd, 2009 | Author: admin | Filed under: GPGPU | 1 Comment »
Here’s a really good article on how GPUs may revolutionize databases: Why graphics processors will transform database processing
This is worth a read because it gives a good overview of the potential of GPUs overall, and not just with respect to databases. The authors also restated my thesis pretty well:
GPUs per se do not enable anything radically different from what can already be done with today’s CPUs. However, they may very well be the key to an epochal change. GPUs are democratizing supercomputing the way the PC democratized computing, making an enormous amount of computational power—previously the exclusive domain of government agencies, research institutes, and large companies—available to the masses.
As for GPUs with respect to databases, here is an interesting point:
Enterprise data have been growing at a slower rate than the number of transistors on microchips (see Moore’s Law), so computer memory is growing faster than the amount of enterprise data. … The implications of that fact are tremendous: It is now possible to handle huge databases in main memory, which means that the data can be pulled in microseconds, as opposed to the several milliseconds needed for disk access.
This mirrors something I heard from the dean of Stanford’s CS dept (who is a database researcher). She said that databases are no longer I/O bound since you can increasingly store all the data in memory instead of disk.
Posted: August 21st, 2009 | Author: admin | Filed under: GPGPU | No Comments »
One application for GPGPU is Agent Based Modeling (ABM). ABM is a technique where you model the behavior of a system, not by modeling aggregate or average aspects of the system, but instead by modeling the activities of individual agents. For instance, think about modeling traffic. One way to do it is to say that the average speed of a motorist is X, there is a Y chance of an accident, if there is an accident the flow is impacted in a certain way, etc. With agent based modeling, instead of dealing with aggregates, you deal with the individual actors. So each motorist has an individual speed profile, likelihood of getting into an accident, location they are going to, etc. Then instead of trying to solve the global solution, you arrive at it by programming a million individual motorists and then watching what happens. (This is obviously a highly parallel problem and hence its suitability to GPGPU.) [Wikpedia on ABM]
Agent Based Modeling can be applied to a wide range of phenomena, including modeling:
- Traffic patterns
- The flow of people leaving a stadium
- The path of flocking birds
- The emergence of genocide
- Macroeconomic activity (emerging from the activity of individual agents)
- Swine flu propagation
One of the key elements of ABM is the concept of emergence. “Emergence is the way complex systems and patterns arise out of a multiplicity of relatively simple interactions,” often in unpredictable ways. For instance, imagine a bunch of people trying to leave a packed stadium quickly. Each has a few simple rules about how he or she behaves. It turns out that if you put a column in front of the exit door, slightly to one side, the throughput of exiting increases. This is a non-obvious result that emerges, somewhat surprisingly, from the interaction of many agents following simple individual rules of behavior.
A Simple ABM Example: Boids
Simulator (Video): http://www.dcs.shef.ac.uk/~paul/publications/boids/index.html
Imagine trying to program the behavior of a flock of birds. Sounds bafflingly difficult, don’t you think? Well, it turns out that you can do a pretty good job modeling the behavior of an entire flock by creating a bunch of fake birds (or “boids” in this case), giving them a few simple rules of interaction, and then turning them loose. Recognizable patterns of flocking result.
The model for the above simulation is slightly more complex, but the original boids model had three rules for each boid:
- Separation: Steer to avoid crowding local flockmates
- Alignment: Steer towards the average heading of local flockmates
- Cohesion: Steer to move toward the average position of local flockmates
That’s it. Give a boid these simple rules, put a bunch together in a fake 3D space, and watch them fly like a real flock of birds. This really shows the power of ABM. Simple and understandable rules can lead to interesting and complex group behavior.
ABM Example: Emergence of Riots
With boids, you can see how simple rules can lead to recognizable behavior. In the social sciences, ABM has been done to give insight into the causes of group behavior.
Here is a fantastic paper on an ABM that shows the emergence of civil violence and genocide: Link. It’s not difficult, but does take more effort to read than watching boids fly. But it’s worth it.
Imagine a grid of squares. Each square is either empty or occupied by a person or a cop. Each person feels some amount of personal hardship (eg: poverty) and some amount of faith in the legitimacy of the government. Put the two together, and each person feels some grievance towards the government. (EG: If you are hungry and you believe the government is corrupt, you’ll hate the govt. If you’re hungry but you believe the govt. is doing it’s best, you won’t blame them.) Based on this grievance, you may decide to rebel against the government. (Say, by rioting.)
What’s holding you back are cops. Or, more specifically, your fear of getting arrested by the cops, which is dependent on the number of cops near you, and the likelihood that they will arrest you.
That’s the essence of the model:
- Agent rule: If your grievance > your fear of getting arrested, go active. Otherwise, be quiet.
- Cop rule: Arrest one random riotor near you.
Then you can run the simulation (thousands of times) and see what happens. And what happens looks a lot like real mob behavior.
But then it gets interesting. You can actually learn something from the model.
- When a cop is nearby, agents go inactive (ie: non rebellious). When the cop leaves, they rebel again. Which makes sense when you think about it, but it wasn’t anticipated by the model authors.
- The illegitimacy of a regime isn’t what is important – it is fast changes in perceived illigitimacy that precipitates rebellion. Here, the modelers slowly reduced the legitimacy of the regime from very high to very low, but no rebellion broke out. Why? Because as legitimacy decreased, some small numbers of agents would be pushed over the tipping point from quiet to rebellious. But then they were quickly arrested by the cops, never catalyzing a full-scale rebellion. But when illigitimacy spiked, lots of people simultaneously went from quiet to rebellious. The cops couldn’t keep up. So more people saw that others were rebelling and felt emboldened themselves and went active. The result was a mob / rebellion / riot. Once again, in retrospect this makes sense. But it would have been difficult to predict.
I’m not doing this paper justice. It’s very worth reading.
Conclusion
Agent Based Modeling is a very cool and very powerful modeling technique that is still in the early days of adoption. It also scales very well to GPU acceleration. It is an area I am going to continue to look into.
Further Reading
Posted: August 12th, 2009 | Author: admin | Filed under: GPGPU | No Comments »
Billy Dally, the Chief Scientist at Nvidia, has a very interesting classification of throughput vs. latency processing.
However you package it, the PC of the future is going to be a heterogeneous machine. It could have a small number of cores (processing units) optimized for delivering performance on a single thread (or one operating program). You can think of these as latency processors. They are optimized for latency (the time it takes to go back and forth in an interaction). Then there will be a lot of cores optimized to deliver throughput (how many tasks can be done in a given time). Today, these throughput processors are the GPU. Over time, the GPU is evolving to be a more general-purpose throughput computing engine that is used in places beyond where it is used today. (Source)
It makes a lot of sense to think about chips this way. General purpose CPUs (like Intel x86 chips) have been optimized to reduce latency. They have all sorts of fancy predictive logic to guess what instructions could be executed next, big caches to keep data local, and are designed to keep the CPU pipe full. (They have all sorts of tricks for achieving this: superscaling, out of order execution, instruction pipelining, etc.) But at some point, this breaks down. Your cache may have a high hit rate, but it isn’t 100%. You may guess pretty well at future operations, but eventually the logic required to support this guessing hits diminishing returns.
Throughput processors (eg: GPUs) are different. They don’t have huge caches or complex management logic to fill the instruction pipe. But if you can feed them, they can crank. That’s why a current Intel x86 CPU has 4 cores, and a current Nvidia as 240. They spend their transistors on different logic. For GPUs, it is having a lot of very simple processors that can’t do much, but can do what they do very quickly. The challenge is keeping these throughput processors full and busy, so you can take advantage of their potential speed.
Posted: August 12th, 2009 | Author: admin | Filed under: GPGPU | 1 Comment »
In trying to figure out what GPUs can be used for in the future, it seems instructive to start by looking at what they currently arebeing used for. What follows is a pretty boring and dry, but I believe important, overview of the types of things GPUs are being used for (beyond graphics). My source data is the NVIDIA CUDA site.
Disclaimer: NVIDIA isn’t the only GPU that supports general processing, but it seems to have the greatest current traction. Also, the user-submitted content on the NVIDIA site certainly has its biases, but it has info on over 500 applications, so it’s an interesting source for real-world examples.
High-Level Categorization
Below is a rough categorization of different types of applications. It isn’t comprehensive, or even accurately categorized, but should give you a high-level feel for what is going on. s
- Numerical / Scientific computation
- Computational Fluid Dynamics
- Signal Processing
- Computational Chemistry
- Neural Networks
- Cryptography
- Genetic Programming
- Algorithms
- Linear algebra
- Linear optimization
- Sparse matrix vector product
- Gaussian mixture models
- Stochastic differential equations
- Fourier transforms
- k Nearest Neighbor
- 3D Particle Boltzmann solver
- Parallel sorting
- List ranking
- Traveling salesman problem
- Imaging
- Medical Imaging
- Image reconstruction
- Image compression
- Other
- Oil & Gas exploration
- Finance
- Hybrid physics / visualization
- Gaming
Examples
The above list may give you a general notion of the types of issues, but let me dig in to a few to give you some deeper insight.
Scientific Computation: Computational Fluid Dynamics
A great way to get a sense for what scientific computing is about is to look at the Wikipedia entry for CFD. Below is an extended excerpt. Skimming it should give you a good flavor.
Computational fluid dynamics (CFD) is one of the branches of fluid mechanics that uses numerical methods and algorithms to solve and analyze problems that involve fluid flows. Computers are used to perform the millions of calculations required to simulate the interaction of liquids and gases with surfaces defined by boundary conditions. Even with high-speed supercomputers only approximate solutions can be achieved in many cases.
…
The most fundamental consideration in CFD is how one treats a continuous fluid in a discretized fashion on a computer. One method is to discretize the spatial domain into small cells to form a volume mesh or grid, and then apply a suitable algorithm to solve the equations of motion (Euler equationsfor inviscid, and Navier-Stokes equations for viscous flow). In addition, such a mesh can be either irregular (for instance consisting of triangles in 2D, or pyramidal solids in 3D) or regular; the distinguishing characteristic of the former is that each cell must be stored separately in memory. Where shocks or discontinuities are present, high resolution schemes such as Total Variation Diminishing (TVD), Flux Corrected Transport (FCT), Essentially NonOscillatory (ENO), or MUSCL schemes are needed to avoid spurious oscillations (Gibbs phenomenon) in the solution.
If one chooses not to proceed with a mesh-based method, a number of alternatives exist, notably :
It is possible to directly solve the Navier-Stokes equations for laminar flows and for turbulent flows when all of the relevant length scales can be resolved by the grid (a Direct numerical simulation). In general however, the range of length scales appropriate to the problem is larger than even today’s massively parallel computers can model. In these cases, turbulent flow simulations require the introduction of a turbulence model. Large eddy simulations(LES) and the Reynolds-averaged Navier-Stokes equations (RANS) formulation, with the k-ε model or the Reynolds stress model, are two techniques for dealing with these scales.
In many instances, other equations are solved simultaneously with the Navier-Stokes equations. These other equations can include those describing species concentration (mass transfer), chemical reactions, heat transfer, etc. More advanced codes allow the simulation of more complex cases involving multi-phase flows (e.g. liquid/gas, solid/gas, liquid/solid), non-Newtonian fluids (such as blood), or chemically reacting flows (such as combustion).
Imaging: Tomographic Reconstruction
“Tomography is imaging by sections or sectioning.” For instance, when you take a CT-scan, you are taking lots of individual slices of a picture, and then you need to put the data together. “Reconstruction” is the process of putting these different slices together.
Here’s what’s cool. There is a trade-off between the number of slices and detail of the slices you take and the computation required to reconstruct an image. You can take less data (and hence have the patient spend less time strapped into a CT scanner, or process more patients), but then it might take days to process the data. But with GPU computing you get the best of both worlds: fast scanning and fast reconstruction. Thus, GPGPU is significantly changing what is possible.
There is a great video that talks about one example of this: http://fastra.ua.ac.be/en/index.html
Video Enhancement / Cleanup
This is such a no-brainer. Someday this will be standard. Check it out: http://www.vreveal.com/video_demos
Performance Improvement
I’ll be shocked if anyone’s made it this far. I know I’d have quit. But at the risk of burying the lead, here’s the cool part.
The performance improvement demonstrated with some of these CUDA applications (ie: GPGPU apps) is pretty remarkable. Some show modest improvements of 3x to 10x. Not bad, but not revolutionary. Many, however, show speedups in the 30x to 40x range. And these are compared to apps often already optimized for CPUs. And some algorithms or apps show speedups in the 100x to 300x range. That’s obviously amazing. (Though, per Amdahl’s Law, if the algorithm is a small portion of the total computation time, that isn’t that helpful.)
Conclusion
Not surprisingly, the majority of the effort in GPGPU to date has been in hard-core scientific and mathetmatical computations. These are the areas that lend themselves to parallel computing of floating point operations, the problems have been studied and worked on for years, and the jump to GPUs is obvious (though difficult). Yet the performance improvements can be remarkable.
I still believe my original thesis: that this sort of massive computing power will have impact for general business applications, and not just be relegated to traditional HPC-type problems.