CUDA Spotlight: Developing Robots with CUDA
Ph.D. student Martin Peniak is creating robots that can develop cognitive capabilities. We first learned about Martin when he wrote us a note on our Facebook page. Below is our interview with him:
NVIDIA: Martin, how did you start working with robots?
Martin: Humanoid robots and technology in general have always fascinated me. As I grew up, this curiosity broadened. I graduated from an engineering school in my home country, Slovakia, and then moved to the United Kingdom where I studied computing and astronomy. Now, I am doing a PhD at the University of Plymouth related to the iTalk project (Integration of Action and Language in Humanoid Robots).
NVIDIA: What is iTalk?
Martin: iTalk aims to create biologically-inspired artificial systems that can progressively develop cognitive capabilities through interaction with their environments. The project is coordinated by my supervisor, Professor Angelo Cangelosi.
NVIDIA: Tell us a bit about your current work.
Martin: Based on insights from neuroscience, psychology, robotics, linguistics and other domains, we argue that cognitive skills have their foundations in the morphology and material properties of our bodies. The iTalk project uses one of the most complex humanoid robots in the world. This intricate robotic platform - called iCub - is approximately 105 centimeters tall and weighs around 20 kilograms. It was designed by the RobotCub Consortium.
NVIDIA: How are you using CUDA and GPU computing?
Martin: For my research, I use CUDA-enabled software called Aquila to develop complex artificial neural networks - inspired by those found in the brain - for the real-time control of the iCub robot.
NVIDIA: How did you hear about CUDA?
Martin: I originally heard about CUDA from a Russian friend. Then, one day I found an article about a neural network implementation using CUDA and was impressed by the performance increases that were achieved. I showed the article to my colleague and after many discussions we agreed that GPU processing was exactly what we needed in our lab, as most of the systems can easily be parallelized. We looked into OpenCL as an alternative but the CUDA framework provided much more support and the API was really good. We ordered six servers with Tesla C1060 and GeForce GTX 470 cards and created a Linux-based supercomputing cluster capable of performing over 12 TFLOPS (trillion floating point operations per second).
NVIDIA: Why do you need the power of GPU computing?
Martin: The artificial neural networks often consist of thousands of neurons that are connected to many other neurons through millions of synaptic connections. The multidimensional input from various senses is abstracted into internal representations. This is achieved through self-organizing maps which resemble the cortices in the brain. Often reaching sizes of several thousand neurons, these maps are abstracting the original visual data by applying filters to millions of pixels. Apart from this visual processing, the system must also work with linguistic and somatosensory inputs while performing millions of calculations needed to activate the neural network every 50-100 milliseconds.
NVIDIA: How are the results so far?
Martin: The CUDA framework accelerated the online neural network control several hundred times on average, and the algorithms responsible for iCub’s training showed around a 50X speed increase. I have developed both CPU and GPU versions and although I haven’t completed extensive optimizations, the nice thing about CUDA is that simply by naive parallelization of the CPU code one can achieve massive speedups using GPU devices. As quantum computing is still in its infancy, to me it seems that massively parallel GPU processing is the way to move forward since CPU architectures are simply not suited for parallel tasks. They consume too much energy and do not scale well.
YouTube video: http://www.youtube.com/watch?v=vmDByFN6eig&feature=player_embedded
NVIDIA blog post: http://blogs.nvidia.com/2010/12/ai-and-nvidia-parallel-processing-a-phd-students-research/