<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!-- generator="Joomla! 1.5 - Open Source Content Management" --><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
	<channel>
		<title>www.martinpeniak.com</title>
		<description>artificial intelligence, parallel computing,  astronomy, technology, philosophy, environment and more</description>
		<link>http://www.martinpeniak.com/index.php?option=com_content&amp;view=frontpage</link>
		<lastBuildDate>Sun, 19 May 2013 14:29:15 +0000</lastBuildDate>
		<generator>Joomla! 1.5 - Open Source Content Management</generator>
		<language>en-gb</language>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/martinpeniak" /><feedburner:info uri="martinpeniak" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Technology/Tech News</media:category><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Technology/Software How-To</media:category><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Education/Higher Education</media:category><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Science &amp; Medicine</media:category><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Technology/Gadgets</media:category><itunes:explicit>no</itunes:explicit><itunes:subtitle>This website is mostly dedicated to my research projects but you can find something about me, my hobbies and thoughts.</itunes:subtitle><itunes:category text="Technology"><itunes:category text="Tech News" /></itunes:category><itunes:category text="Technology"><itunes:category text="Software How-To" /></itunes:category><itunes:category text="Education"><itunes:category text="Higher Education" /></itunes:category><itunes:category text="Science &amp; Medicine" /><itunes:category text="Technology"><itunes:category text="Gadgets" /></itunes:category><geo:lat>50.22</geo:lat><geo:long>4.08</geo:long><image><link>www.martinpeniak.com</link><url>http://lh6.ggpht.com/_nIO-bybWI1k/SfXlttfC1YI/AAAAAAAABuE/3_OvUS_dytY/0908861.jpg?imgmax=800</url><title>Martin Peniak</title></image><item>
			<title>La Playa</title>
			<link>http://feedproxy.google.com/~r/martinpeniak/~3/FFDj694YZGk/index.php</link>
			<guid isPermaLink="false">http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=297:la-playa&amp;catid=17:updates</guid>
			<description>&lt;p&gt;[youtube:http://www.youtube.com/watch?v=q-fZi4je3IY 660 500]&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=FFDj694YZGk:KOLyEtQ-HXE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=FFDj694YZGk:KOLyEtQ-HXE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=FFDj694YZGk:KOLyEtQ-HXE:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=FFDj694YZGk:KOLyEtQ-HXE:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=FFDj694YZGk:KOLyEtQ-HXE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=FFDj694YZGk:KOLyEtQ-HXE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=FFDj694YZGk:KOLyEtQ-HXE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/martinpeniak/~4/FFDj694YZGk" height="1" width="1"/&gt;</description>
			<author>martin.peniak@plymouth.ac.uk (Martin Peniak)</author>
			<category>frontpage</category>
			<pubDate>Mon, 22 Apr 2013 11:44:58 +0000</pubDate>
		<feedburner:origLink>http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=297:la-playa&amp;catid=17:updates</feedburner:origLink></item>
		<item>
			<title>Amazers.org - aspire to inspire</title>
			<link>http://feedproxy.google.com/~r/martinpeniak/~3/GvAf7wsQwjw/index.php</link>
			<guid isPermaLink="false">http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=296:amazersorg-aspire-to-inspire&amp;catid=17:updates</guid>
			<description>&lt;p style="text-align: justify;"&gt;There are times where each of looks for a little bit of extra motivation. I personally love reading short and inspirational quotes that brighten up my day, divert my attention on things that matter and make me feel that anything is achievable when big dreams meet &lt;span style="font-family: arial, helvetica, clean, sans-serif; font-size: 13px; line-height: 16px;"&gt;perseverant &lt;/span&gt;action. I believe that people are potentially powerful beyond imagination. I say potentially because everyone can do amazing things taking our breath away but not everyone does. However, what matters is that everyone can.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt; &lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;em&gt;“Whether you think you can, or you think you can't--you're right.”&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;The quote above by Henry Ford sums it all up, however, how can one really develop this conviction that our dreams are achievable? There are people, ordinary individuals who have strong passion for what they do and who came a long way in achieving their vision. I am sure that if you asked them how they managed this, they would tell you different stories and answers but you would definitely start noticing a common overlap among them, which you can then use for your benefit.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Would not it be great if there was one place where we could go to get inspired? A place that would let you browse through stories of ordinary people who believed and achieved their dreams. How did these people manage to do it and where did they get their inspiration from? What do they think are the main qualities that help us succeed and make a difference?&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Well, there is soon going to be such place that will provide all these answers. I came across an amazing idea by &lt;span style="line-height: 1.3em;"&gt;Danilo Salvatore Carlucci who is determined to inspire and empower people world-wide. Danilo and his friends have developed an on-line interactive website that shares stories of amazing people, their unique views and passions. I am very excited about this project and I am sure it is going to be a great success. The website is going to be opened in the coming weeks. If you like the idea you can visit &lt;a href="http://www.amazers.org/" title="Amazers"&gt;Amazers.org&lt;/a&gt; and enter your email address. Once the website is ready, you will get an email notification and will be able to start exploring and getting inspired! :) &lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;img src="http://www.martinpeniak.com/images/amazers.jpg" border="0" alt="Amazers.org" width="666" height="346" style="vertical-align: top;" /&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=GvAf7wsQwjw:u-3CvcfQLdI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=GvAf7wsQwjw:u-3CvcfQLdI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=GvAf7wsQwjw:u-3CvcfQLdI:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=GvAf7wsQwjw:u-3CvcfQLdI:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=GvAf7wsQwjw:u-3CvcfQLdI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=GvAf7wsQwjw:u-3CvcfQLdI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=GvAf7wsQwjw:u-3CvcfQLdI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/martinpeniak/~4/GvAf7wsQwjw" height="1" width="1"/&gt;</description>
			<author>martin.peniak@plymouth.ac.uk (Martin Peniak)</author>
			<category>frontpage</category>
			<pubDate>Sat, 09 Mar 2013 13:25:20 +0000</pubDate>
		<feedburner:origLink>http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=296:amazersorg-aspire-to-inspire&amp;catid=17:updates</feedburner:origLink></item>
		<item>
			<title>Aquila 2.0 - Software Architecture for Cognitive Robotics</title>
			<link>http://feedproxy.google.com/~r/martinpeniak/~3/nZTecxEbxsw/index.php</link>
			<guid isPermaLink="false">http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=295:aquila-20-software-architecture-for-cognitive-robotics&amp;catid=17:updates</guid>
			<description>&lt;p style="text-align: justify;"&gt;I am extremely excited to announce that the new Aquila 2.0 has been released. This release is by far the most significant one in the history of Aquila project.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;img src="http://www.martinpeniak.com/images/aquila/splash_new.png" border="0" width="666" height="444" style="text-align: start;" /&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Let me rewind the clock three years ago when the very first Aquila was born. At this time, Aquila was merely my own little GUI (Graphical User Interface) application that was helping me with my PhD research. Aquila was made to simplify the work with the &lt;a href="http://www.icub.org/" target="_blank" title="iCub humanoid robot"&gt;iCub humanoid robot&lt;/a&gt;, back then, the latest addition in our laboratory. At this time, I have just finished &lt;a href="http://www.martinpeniak.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=59&amp;amp;Itemid=100" target="_blank" title="colaboration with ESA"&gt;collaborating &lt;/a&gt;with &lt;a href="http://www.esa.int/ESA" target="_blank" title="ESA"&gt;European Space Agency&lt;/a&gt; (ESA) and one of my friends, who knew about the work with ESA, sent me a paper about accelerating neural networks with Graphics Processing Units (GPU) showing impressive speedups over CPU implementation. This was mainly because neural networks are inherently parallel and thus better suited for parallel GPU processors. The whole idea of using GPUs in all my future research was very exciting and I started looking into it more and more, which resulted in Aquila adopting &lt;a href="http://www.nvidia.co.uk/page/home.html" target="_blank" title="NVIDIA"&gt;NVIDIA &lt;/a&gt;&lt;a href="http://www.nvidia.co.uk/object/what_is_cuda_new_uk.html" target="_blank" title="CUDA"&gt;CUDA parallel computing architecture&lt;/a&gt;. From this point on, everything that was implemented in Aquila could use CPUs as well as GPUs. If a user did not have an NVIDIA GPU device installed on his/her system then a CPU mode would still work although usually significantly slower.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="line-height: 1.3em;"&gt;Over the time, I developed new modules such as Self-organising maps (SOM), Multiple time-scales recurrent neural networks (MTRNN), Sequence Recorder, Vision, Simulator and others. My colleague Anthony Morse have later joined Aquila project and started developing new modules too, for example, Echo state networks (ESN), Modi and Epigenetic robotic architecture (ERA). Not to forget Chris Larcombe, who developed the Abstraction-reaction-accumulator (ARA) module inspired by early cybernetics research.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Aquila was growing in size and was becoming increasingly used by our team, students as well as other researchers in different countries, e.g. USA, Italy, Germany, Turkey. Aquila made things easier, however, not everything was as good as it sounds. There were major problems on the horizon such as:&lt;/p&gt;
&lt;ul style="text-align: justify;"&gt;
&lt;li&gt;Aquila could only run on Linux&lt;/li&gt;
&lt;li&gt;Due to increasing number of modules and their dependencies, the compilation and installation process became rather long and quite challenging for non-technical users&lt;/li&gt;
&lt;li&gt;Aquila modules could not be used individually and could not be used without their graphical user interfaces, this made the whole design non-modular and non-scalable&lt;/li&gt;
&lt;li&gt;Some of Aquila's modules, e.g. Vision were quite unstable&lt;span style="line-height: 1.3em;"&gt; &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: justify;"&gt;I am deliberately skipping a lot of design changes in the previous Aquila 1.x versions, however, it is worth to note that we attempted to address the above issues the easier way but never really succeeded until now. We realised that if we want to keep the Aquila project alive and growing, we need to make fundamental design changes, which we proposed almost exactly a year ago in &lt;a href="http://www.martinpeniak.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=275:aquila-19alpha-released&amp;amp;catid=17:updates" target="_blank" title="Aquila 2.0 proposal"&gt;this post&lt;/a&gt; and in &lt;a href="http://developer.download.nvidia.com/GTC/Aquila-Open-Source-GPU-Accelerate-Toolkit-for-Cognitive-and-Neuro-Robotics-Research.mp4" title="Aquila GTC webminar"&gt;this webminar&lt;/a&gt;, which Tony and myself presented while I worked at NVIDIA research in Santa Clara, California. The new design needed to address all of the above issues and I am glad to say that it did. The new design is very simply and I believe that it is very elegant too!&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="line-height: 1.3em;"&gt;Aquila 2.0 is now able to run on Linux, OSX and Windows and its dependencies are only Qt (graphical user interfaces), YARP (communication over network) and CUDA (GPU-accelerated code). Aquila modules are compiled separately from Aquila. These so-called Aquila modules can run anywhere on the network in any number of instances and on any available NVIDIA GPU devices. All these modules can be easily managed and visualised via Aquila, which apart from many other features also provides graphical user interfaces for the modules. Aquila modules can be used either from the terminal (just as any other module from iCub repository) or via Aquila with an additional advantage of module management and visualisation features, which were very desired. Aquila modules can spawn other modules and use their functionalists.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Aquila 2.0 was designed to be not just very easy to use but also easy to develop for. Aquila 2.0 provides many different visualisation tools, modules and libraries that can be simply reused. For example, Module Generator tool lets a user to generate his/her own heterogeneous CPU-GPU module together with its graphical user interface. This is all done by one click of a button. After this, the only thing that a developer needs to do is to write his/her functions and add connections between them to their interfaces. Have a look at the video below, which is not very exciting on its own but it shows that it literary takes less than a minute to download, compile, install and Aquila and also to create a new module. All done within a minute!!!&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;[youtube:http://www.youtube.com/watch?v=koRlPh_arRU 660 500]&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="line-height: 1.3em;"&gt;The following are some of the main benefits of developing in Aquila software architecture:&lt;/span&gt;&lt;/p&gt;
&lt;div style="text-align: justify;"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="line-height: 1.3em;"&gt;&lt;strong&gt;Performance &lt;/strong&gt;- distributed module running heterogeneous CPU-GPU code are able to take a great advantage of available resources.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="line-height: 1.3em;"&gt;&lt;strong&gt;Integrability &lt;/strong&gt;- existing modules and GUIs can be easily integrated to form new modules of higher complexities.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="line-height: 1.3em;"&gt;&lt;strong&gt;Modularity &lt;/strong&gt;- module GUIs and modules are completely independent. Modules are fully functional with or without GUIs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="line-height: 1.3em;"&gt;&lt;strong&gt;Scalability &lt;/strong&gt;- modules can run on Linux, OSX or Windows across any number of computers and using any number of GPU devices available. The Aquila architecture makes it easier to develop modules that use are able to scale-up with increasing computational demands. For example, ERA module is able to spawn multiple SOMs on multiple computers dynamically based on its needs.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="line-height: 1.3em;"&gt;&lt;strong&gt;Usability &lt;/strong&gt;- intuitive, easy-to-use, dynamic graphical user interfaces loosely coupled with modules. Support - we are happy to provide free technical support to promote the research in cognitive robotics and heterogeneous CPU-GPU computing.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="line-height: 1.3em;"&gt;&lt;strong&gt;Support &lt;/strong&gt;- we are happy to provide free technical support to promote the research in cognitive robotics and heterogeneous CPU-GPU computing.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;a href="http://aquila.sourceforge.net/" target="_blank" title="Aquila project"&gt;Visit Aquila project page&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.facebook.com/pages/Aquila-Cognitive-Robotics-Research-Toolkit/120686251343379?fref=ts" target="_blank" title="Aquila on Facebook"&gt;Visit Aquila Facebook fanpage&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="https://dl.dropbox.com/u/81820/Software/Aquila/Aquila2.0/doc/Aquila.pdf" target="_blank" title="Aquila technical paper"&gt;Download technical paper&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://sourceforge.net/projects/aquila/" target="_blank" title="Aquila 2.0 download"&gt;Download Aquila 2.0&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=nZTecxEbxsw:RiuTHChxWA0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=nZTecxEbxsw:RiuTHChxWA0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=nZTecxEbxsw:RiuTHChxWA0:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=nZTecxEbxsw:RiuTHChxWA0:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=nZTecxEbxsw:RiuTHChxWA0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=nZTecxEbxsw:RiuTHChxWA0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=nZTecxEbxsw:RiuTHChxWA0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/martinpeniak/~4/nZTecxEbxsw" height="1" width="1"/&gt;</description>
			<author>martin.peniak@plymouth.ac.uk (Martin Peniak)</author>
			<category>frontpage</category>
			<pubDate>Fri, 22 Feb 2013 18:57:34 +0000</pubDate>
		<enclosure url="http://developer.download.nvidia.com/GTC/Aquila-Open-Source-GPU-Accelerate-Toolkit-for-Cognitive-and-Neuro-Robotics-Research.mp4" length="173692602" type="video/mp4" /><media:content url="http://developer.download.nvidia.com/GTC/Aquila-Open-Source-GPU-Accelerate-Toolkit-for-Cognitive-and-Neuro-Robotics-Research.mp4" fileSize="173692602" type="video/mp4" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>I am extremely excited to announce that the new Aquila 2.0 has been released. This release is by far the most significant one in the history of Aquila project. Let me rewind the clock three years ago when the very first Aquila was born. At this time, Aqui</itunes:subtitle><itunes:author>martin.peniak@plymouth.ac.uk (Martin Peniak)</itunes:author><itunes:summary>I am extremely excited to announce that the new Aquila 2.0 has been released. This release is by far the most significant one in the history of Aquila project. Let me rewind the clock three years ago when the very first Aquila was born. At this time, Aquila was merely my own little GUI (Graphical User Interface) application that was helping me with my PhD research. Aquila was made to simplify the work with the iCub humanoid robot, back then, the latest addition in our laboratory. At this time, I have just finished collaborating with European Space Agency (ESA) and one of my friends, who knew about the work with ESA, sent me a paper about accelerating neural networks with Graphics Processing Units (GPU) showing impressive speedups over CPU implementation. This was mainly because neural networks are inherently parallel and thus better suited for parallel GPU processors. The whole idea of using GPUs in all my future research was very exciting and I started looking into it more and more, which resulted in Aquila adopting NVIDIA CUDA parallel computing architecture. From this point on, everything that was implemented in Aquila could use CPUs as well as GPUs. If a user did not have an NVIDIA GPU device installed on his/her system then a CPU mode would still work although usually significantly slower. Over the time, I developed new modules such as Self-organising maps (SOM), Multiple time-scales recurrent neural networks (MTRNN), Sequence Recorder, Vision, Simulator and others. My colleague Anthony Morse have later joined Aquila project and started developing new modules too, for example, Echo state networks (ESN), Modi and Epigenetic robotic architecture (ERA). Not to forget Chris Larcombe, who developed the Abstraction-reaction-accumulator (ARA) module inspired by early cybernetics research. Aquila was growing in size and was becoming increasingly used by our team, students as well as other researchers in different countries, e.g. USA, Italy, Germany, Turkey. Aquila made things easier, however, not everything was as good as it sounds. There were major problems on the horizon such as: Aquila could only run on Linux Due to increasing number of modules and their dependencies, the compilation and installation process became rather long and quite challenging for non-technical users Aquila modules could not be used individually and could not be used without their graphical user interfaces, this made the whole design non-modular and non-scalable Some of Aquila's modules, e.g. Vision were quite unstable I am deliberately skipping a lot of design changes in the previous Aquila 1.x versions, however, it is worth to note that we attempted to address the above issues the easier way but never really succeeded until now. We realised that if we want to keep the Aquila project alive and growing, we need to make fundamental design changes, which we proposed almost exactly a year ago in this post and in this webminar, which Tony and myself presented while I worked at NVIDIA research in Santa Clara, California. The new design needed to address all of the above issues and I am glad to say that it did. The new design is very simply and I believe that it is very elegant too! Aquila 2.0 is now able to run on Linux, OSX and Windows and its dependencies are only Qt (graphical user interfaces), YARP (communication over network) and CUDA (GPU-accelerated code). Aquila modules are compiled separately from Aquila. These so-called Aquila modules can run anywhere on the network in any number of instances and on any available NVIDIA GPU devices. All these modules can be easily managed and visualised via Aquila, which apart from many other features also provides graphical user interfaces for the modules. Aquila modules can be used either from the terminal (just as any other module from iCub repository) or via Aquila with an additional advantage of module management and visualisation features, which were very desired. Aquila modules can spawn other modules and use </itunes:summary><itunes:keywords>frontpage</itunes:keywords><feedburner:origLink>http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=295:aquila-20-software-architecture-for-cognitive-robotics&amp;catid=17:updates</feedburner:origLink></item>
		<item>
			<title>Spotlight in Connect magazine</title>
			<link>http://feedproxy.google.com/~r/martinpeniak/~3/TBaUNe8G7ys/index.php</link>
			<guid isPermaLink="false">http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=294:spotlight-in-connect-magazine&amp;catid=17:updates</guid>
			<description>&lt;p&gt;&lt;img src="http://www.martinpeniak.com/images/connect_magazine_1_2.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.martinpeniak.com/images/connect_magazine_2_2.png" border="0" /&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=TBaUNe8G7ys:wgGezYJ0G2A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=TBaUNe8G7ys:wgGezYJ0G2A:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=TBaUNe8G7ys:wgGezYJ0G2A:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=TBaUNe8G7ys:wgGezYJ0G2A:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=TBaUNe8G7ys:wgGezYJ0G2A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=TBaUNe8G7ys:wgGezYJ0G2A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=TBaUNe8G7ys:wgGezYJ0G2A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/martinpeniak/~4/TBaUNe8G7ys" height="1" width="1"/&gt;</description>
			<author>martin.peniak@plymouth.ac.uk (Martin Peniak)</author>
			<category>frontpage</category>
			<pubDate>Sat, 22 Dec 2012 11:13:11 +0000</pubDate>
		<feedburner:origLink>http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=294:spotlight-in-connect-magazine&amp;catid=17:updates</feedburner:origLink></item>
		<item>
			<title>Half a million visitors</title>
			<link>http://feedproxy.google.com/~r/martinpeniak/~3/FWES295EWRQ/index.php</link>
			<guid isPermaLink="false">http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=293:half-a-million-visitors&amp;catid=17:updates</guid>
			<description>&lt;p&gt;Thank you all for coming over and keeping eye on this site that reached half a million visitors today :)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=FWES295EWRQ:npXs-wVBEtw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=FWES295EWRQ:npXs-wVBEtw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=FWES295EWRQ:npXs-wVBEtw:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=FWES295EWRQ:npXs-wVBEtw:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=FWES295EWRQ:npXs-wVBEtw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=FWES295EWRQ:npXs-wVBEtw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=FWES295EWRQ:npXs-wVBEtw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/martinpeniak/~4/FWES295EWRQ" height="1" width="1"/&gt;</description>
			<author>martin.peniak@plymouth.ac.uk (Martin Peniak)</author>
			<category>frontpage</category>
			<pubDate>Sat, 22 Dec 2012 11:07:49 +0000</pubDate>
		<feedburner:origLink>http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=293:half-a-million-visitors&amp;catid=17:updates</feedburner:origLink></item>
		<item>
			<title>Cute robot-shopping video by Plymouth University</title>
			<link>http://feedproxy.google.com/~r/martinpeniak/~3/Y8tJJQIzneU/index.php</link>
			<guid isPermaLink="false">http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=292:cute-robot-shopping-video-by-plymouth-university&amp;catid=17:updates</guid>
			<description>&lt;p style="text-align: justify;"&gt;If you like the video then check their Facebook pages our. One is &lt;a href="https://www.facebook.com/pages/University-of-Plymouth-Robot-Football/148285347160"&gt;Plymouth University Robot Football&lt;/a&gt; and the other one you might like is &lt;a href="https://www.facebook.com/BotSport"&gt;BotSpotTV&lt;/a&gt;.&lt;br /&gt;[youtube: http://www.youtube.com/watch?v=01J9D1oJ09Q 660 500]&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=Y8tJJQIzneU:1qo--erw3AI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=Y8tJJQIzneU:1qo--erw3AI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=Y8tJJQIzneU:1qo--erw3AI:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=Y8tJJQIzneU:1qo--erw3AI:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=Y8tJJQIzneU:1qo--erw3AI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=Y8tJJQIzneU:1qo--erw3AI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=Y8tJJQIzneU:1qo--erw3AI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/martinpeniak/~4/Y8tJJQIzneU" height="1" width="1"/&gt;</description>
			<author>martin.peniak@plymouth.ac.uk (Martin Peniak)</author>
			<category>frontpage</category>
			<pubDate>Fri, 16 Nov 2012 09:14:00 +0000</pubDate>
		<feedburner:origLink>http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=292:cute-robot-shopping-video-by-plymouth-university&amp;catid=17:updates</feedburner:origLink></item>
		<item>
			<title>New CUDA Teaching Center</title>
			<link>http://feedproxy.google.com/~r/martinpeniak/~3/GgcMZSr4Dts/index.php</link>
			<guid isPermaLink="false">http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=291:new-cuda-teaching-center&amp;catid=17:updates</guid>
			<description>&lt;p style="text-align: justify;"&gt;It has been few years since I started looking into &lt;a href="https://developer.nvidia.com/what-cuda" target="_blank"&gt;CUDA&lt;/a&gt; as a way of speeding up my software. At the beginning I was impressed with the reported speedups of neural network processing, which was the main impetus for the development of GPU-accelerated &lt;a href="http://www.slideshare.net/mpeniak/cognitive-robotics-and-gpus-nvidia-gtc-express-webminar" target="_blank"&gt;Aquila&lt;/a&gt; software for cognitive robotics. Anthony Morse and myself did &lt;a href="http://www.slideshare.net/mpeniak/cfakepathcuda" target="_blank" title="CUDA talk"&gt;several presentations&lt;/a&gt; at our university and at that time CUDA was not as well-known as it is nowadays. We could clearly see the benefits of using GPUs for the sort of computations we were doing but convincing others was a little bit of a challenge back then. Later on we would set-up a new &lt;a href="http://www.martinpeniak.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=217:new-gpu-server-setup&amp;amp;catid=17:updates" target="_blank"&gt;GPU cluster&lt;/a&gt; and started using it for the training of our &lt;a href="http://www.icub.org/" target="_blank"&gt;humanoid robot iCub&lt;/a&gt;,&lt;br /&gt;&lt;br /&gt;One day I posted a &lt;a href="http://www.youtube.com/watch?v=vmDByFN6eig" target="_blank"&gt;video of this training&lt;/a&gt; to NVIDIA Facebook page, which led to a series of events including the establishment of the new &lt;a href="http://www.nvidia.com/content/research/teaching-center-program.html" target="_blank" title="CUDA Teaching Center"&gt;NVIDIA CUDA Teaching Center&lt;/a&gt; at our &lt;a href="http://www.plymouth.ac.uk/"&gt;university&lt;/a&gt;. Davide Marocco and myself started a new parallel computing module (SOFT339) and as a dedicated CUDA prophet (name given by my supervisor) I am really happy to be given the opportunity to teach CUDA, reach and inspire the new generation of parallel programmers and make a difference. The students seem to be enjoying the module and I am trying to keep the material both useful and interesting.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;We are definitely not stopping here, our goals are high and we plan to reach more students and companies in the very near future so stay tuned :)&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.martinpeniak.com/images/gpu_lab_logo.png" border="0" width="660" height="900" style="float: left;" /&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=GgcMZSr4Dts:-qlY3pIz0oU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=GgcMZSr4Dts:-qlY3pIz0oU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=GgcMZSr4Dts:-qlY3pIz0oU:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=GgcMZSr4Dts:-qlY3pIz0oU:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=GgcMZSr4Dts:-qlY3pIz0oU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=GgcMZSr4Dts:-qlY3pIz0oU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=GgcMZSr4Dts:-qlY3pIz0oU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/martinpeniak/~4/GgcMZSr4Dts" height="1" width="1"/&gt;</description>
			<author>martin.peniak@plymouth.ac.uk (Martin Peniak)</author>
			<category>frontpage</category>
			<pubDate>Tue, 13 Nov 2012 14:31:24 +0000</pubDate>
		<feedburner:origLink>http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=291:new-cuda-teaching-center&amp;catid=17:updates</feedburner:origLink></item>
		<item>
			<title>CUDA by numbers</title>
			<link>http://feedproxy.google.com/~r/martinpeniak/~3/PxIg6y1nUBM/index.php</link>
			<guid isPermaLink="false">http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=290:cuda-by-numbers&amp;catid=17:updates</guid>
			<description>&lt;p&gt;&lt;img src="http://www.martinpeniak.com/images/cuda_by_numbers.jpg" border="0" width="660" height="1200" style="float: left; border: 0;" /&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=PxIg6y1nUBM:WwkEfEIBm7s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=PxIg6y1nUBM:WwkEfEIBm7s:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=PxIg6y1nUBM:WwkEfEIBm7s:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=PxIg6y1nUBM:WwkEfEIBm7s:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=PxIg6y1nUBM:WwkEfEIBm7s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=PxIg6y1nUBM:WwkEfEIBm7s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=PxIg6y1nUBM:WwkEfEIBm7s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/martinpeniak/~4/PxIg6y1nUBM" height="1" width="1"/&gt;</description>
			<author>martin.peniak@plymouth.ac.uk (Martin Peniak)</author>
			<category>frontpage</category>
			<pubDate>Mon, 12 Nov 2012 23:33:57 +0000</pubDate>
		<feedburner:origLink>http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=290:cuda-by-numbers&amp;catid=17:updates</feedburner:origLink></item>
		<item>
			<title>Updated biography section</title>
			<link>http://feedproxy.google.com/~r/martinpeniak/~3/j7oy7knbnmU/index.php</link>
			<guid isPermaLink="false">http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=289:updated-biography-section&amp;catid=17:updates</guid>
			<description>&lt;div style="text-align: justify"&gt;The &lt;a href="http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=12&amp;Itemid=43" title="Bio"&gt;Bio&lt;/a&gt; section was just updated with a new article written by Andrew Merrington.&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=j7oy7knbnmU:uRjG6I4VreE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=j7oy7knbnmU:uRjG6I4VreE:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=j7oy7knbnmU:uRjG6I4VreE:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=j7oy7knbnmU:uRjG6I4VreE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=j7oy7knbnmU:uRjG6I4VreE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=j7oy7knbnmU:uRjG6I4VreE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/martinpeniak/~4/j7oy7knbnmU" height="1" width="1"/&gt;</description>
			<author>martin.peniak@plymouth.ac.uk (Martin Peniak)</author>
			<category>frontpage</category>
			<pubDate>Tue, 16 Oct 2012 12:37:01 +0000</pubDate>
		<feedburner:origLink>http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=289:updated-biography-section&amp;catid=17:updates</feedburner:origLink></item>
		<item>
			<title>CUDA Thread Indexing Cheatsheet</title>
			<link>http://feedproxy.google.com/~r/martinpeniak/~3/al22TijZ7_M/index.php</link>
			<guid isPermaLink="false">http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=288:cuda-thread-indexing-explained&amp;catid=17:updates</guid>
			<description>&lt;p style="text-align: justify"&gt;If you are a CUDA parallel programmer but sometimes you cannot wrap your head around thread indexing just like me then you are at the right place. &lt;/p&gt;&lt;p style="text-align: justify"&gt;Many problems are naturally described in a flat, linear style mimicking our mental model of C’s memory layout. However, other tasks, especially those encountered in the computational sciences, are naturally embedded in two or three dimensions. For example, &lt;a href="http://www.youtube.com/results?search_query=image+processing+cuda&amp;page=&amp;utm_source=opensearch" target="_blank" title="link to realted YouTube videos"&gt;image processing tasks&lt;/a&gt; typically impose a regular 2D raster over the problem domain while &lt;a href="http://www.youtube.com/results?search_query=cuda+cfd&amp;search_type=&amp;aq=f" target="_blank" title="link to related YouTube videos"&gt;computational fluid dynamics&lt;/a&gt; might be most naturally expressed by partitioning a volume over 3D grid.&lt;/p&gt;&lt;br /&gt;&lt;table border="0" align="center" style="text-align: center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center"&gt;&lt;p&gt;&lt;img src="http://www.martinpeniak.com/images/cuda_fig2.png" border="0" alt="NVIDIA CUDA Thread model" title="NVIDIA CUDA Thread model" width="378" height="438" /&gt;&lt;/p&gt;&lt;p&gt; NVIDIA CUDA Thread Model&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="text-align: center"&gt; &lt;/p&gt;&lt;p style="text-align: justify"&gt;Sometimes it can be a bit tricky to figure out the global (unique) thread index, especially if you are working with multi-dimensional grids of multi-dimensional blocks of threads. I could not really find a simple cheat-sheet that would demonstrate what exactly you need to do to calculate a global thread index for every configuration you might need to use. I know that with a little effort anyone can figure it out but I thought I would share some of my code with you to make your life easier. At the end of the day, sharing is caring :)&lt;/p&gt;&lt;p style="text-align: justify"&gt;&lt;a href="https://dl.dropbox.com/u/81820/My%20Modules/SOFT339%20-%20Parallel%20computing%20and%20distributed%20systems/Labs/3/simpleIndexing.cu" target="_blank" title="Download CUDA indexing example code"&gt;Download example code&lt;/a&gt;, which you can compile with &lt;em&gt;nvcc simpleIndexing.cu -o simpleIndexing -arch=sm_20&lt;/em&gt; &lt;/p&gt;&lt;p style="text-align: justify"&gt; &lt;/p&gt;&lt;h3&gt;&lt;strong style="text-align: justify"&gt;1D grid of 1D blocks&lt;/strong&gt;&lt;/h3&gt;&lt;div&gt;&lt;h5&gt;&lt;span style="font-weight: normal"&gt;__device__ int getGlobalIdx_1D_1D()&lt;br /&gt;{&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;return blockIdx.x *blockDim.x + threadIdx.x;&lt;br /&gt;}&lt;/span&gt;&lt;/h5&gt;&lt;/div&gt;&lt;h3&gt;&lt;strong style="text-align: justify"&gt;1D grid of 2D blocks&lt;/strong&gt;&lt;/h3&gt;&lt;div&gt;&lt;div&gt;&lt;h5&gt;&lt;span style="font-weight: normal"&gt;__device__ int getGlobalIdx_1D_2D()&lt;br /&gt;{&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;return blockIdx.x * blockDim.x * blockDim.y + threadIdx.y * blockDim.x + threadIdx.x;&lt;br /&gt;}&lt;/span&gt;&lt;/h5&gt;&lt;/div&gt;&lt;span style="text-align: justify"&gt;&lt;h3&gt;&lt;strong&gt;1D grid of 3D blocks&lt;/strong&gt;&lt;/h3&gt;&lt;h5&gt;&lt;span style="font-weight: normal"&gt;__device__ int getGlobalIdx_1D_3D()&lt;br /&gt;{&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;return blockIdx.x * blockDim.x * blockDim.y * blockDim.z &lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;         + threadIdx.z * blockDim.y * blockDim.x + threadIdx.y * blockDim.x + threadIdx.x;&lt;br /&gt;} &lt;/span&gt;&lt;/h5&gt;&lt;/span&gt;&lt;span style="text-align: justify"&gt;&lt;h3&gt;&lt;strong&gt;2D grid of 1D blocks&lt;/strong&gt; &lt;/h3&gt;&lt;h5&gt;&lt;span style="font-weight: normal"&gt;__device__ int getGlobalIdx_2D_1D()&lt;br /&gt;{&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;int blockId   = blockIdx.y * gridDim.x + blockIdx.x;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;			&lt;/span&gt; &lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;br /&gt;&lt;/span&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;int threadId = blockId * blockDim.x + threadIdx.x; &lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;return threadId;&lt;br /&gt;}&lt;/span&gt;&lt;/h5&gt;&lt;/span&gt;&lt;h3&gt;&lt;strong&gt;2D grid of 2D blocks&lt;/strong&gt;  &lt;/h3&gt;&lt;/div&gt;&lt;h5&gt;&lt;span style="font-weight: normal"&gt; __device__ int getGlobalIdx_2D_2D()&lt;br /&gt;{&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;int blockId = blockIdx.x + blockIdx.y * gridDim.x; &lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;int threadId = blockId * (blockDim.x * blockDim.y) + (threadIdx.y * blockDim.x) + threadIdx.x;&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;return threadId;&lt;br /&gt;}&lt;/span&gt;&lt;/h5&gt;&lt;h3&gt;&lt;strong style="text-align: justify"&gt;2D grid of 3D blocks&lt;/strong&gt;&lt;/h3&gt;&lt;h5&gt;&lt;span style="font-weight: normal"&gt;__device__ int getGlobalIdx_2D_3D()&lt;br /&gt;{&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;int blockId = blockIdx.x &lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;			&lt;/span&gt; + blockIdx.y * gridDim.x; &lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;int threadId = blockId * (blockDim.x * blockDim.y * blockDim.z)&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;			&lt;/span&gt;   + (threadIdx.z * (blockDim.x * blockDim.y))&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;			&lt;/span&gt;   + (threadIdx.y * blockDim.x)&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;			&lt;/span&gt;   + threadIdx.x;&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;return threadId;&lt;br /&gt;} &lt;/span&gt;&lt;/h5&gt;&lt;h3&gt;&lt;strong style="text-align: justify"&gt;3D grid of 1D blocks&lt;/strong&gt;&lt;/h3&gt;&lt;h5&gt;&lt;span style="font-weight: normal"&gt;__device__ int getGlobalIdx_3D_1D()&lt;br /&gt;{&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;int blockId = blockIdx.x &lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;			&lt;/span&gt; + blockIdx.y * gridDim.x &lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;			&lt;/span&gt; + gridDim.x * gridDim.y * blockIdx.z; &lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;int threadId = blockId * blockDim.x + threadIdx.x;&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;return threadId;&lt;br /&gt;} &lt;/span&gt;&lt;/h5&gt;&lt;h3&gt;&lt;strong style="text-align: justify"&gt;3D grid of 2D blocks&lt;/strong&gt;&lt;/h3&gt;&lt;h5&gt;&lt;span style="font-weight: normal"&gt;__device__ int getGlobalIdx_3D_2D()&lt;br /&gt;{&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;int blockId = blockIdx.x &lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;		&lt;/span&gt;         + blockIdx.y * gridDim.x &lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;			&lt;/span&gt; + gridDim.x * gridDim.y * blockIdx.z; &lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;int threadId = blockId * (blockDim.x * blockDim.y)&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;			&lt;/span&gt;  + (threadIdx.y * blockDim.x)&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;			&lt;/span&gt;  + threadIdx.x;&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;return threadId;&lt;br /&gt;}&lt;/span&gt;&lt;/h5&gt;&lt;h3&gt;&lt;strong style="text-align: justify"&gt;3D grid of 3D blocks&lt;/strong&gt;&lt;/h3&gt;&lt;h5&gt;&lt;span style="font-weight: normal"&gt;__device__ int getGlobalIdx_3D_3D()&lt;br /&gt;{&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;int blockId = blockIdx.x &lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;			&lt;/span&gt; + blockIdx.y * gridDim.x &lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;			&lt;/span&gt; + gridDim.x * gridDim.y * blockIdx.z; &lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;int threadId = blockId * (blockDim.x * blockDim.y * blockDim.z)&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;			&lt;/span&gt;  + (threadIdx.z * (blockDim.x * blockDim.y))&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;			&lt;/span&gt;  + (threadIdx.y * blockDim.x)&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;			&lt;/span&gt;  + threadIdx.x;&lt;br /&gt;&lt;span style="white-space: pre" class="Apple-tab-span"&gt;	&lt;/span&gt;return threadId;&lt;br /&gt;}&lt;/span&gt;&lt;/h5&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=al22TijZ7_M:CoesRHfRp7M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=al22TijZ7_M:CoesRHfRp7M:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=al22TijZ7_M:CoesRHfRp7M:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=al22TijZ7_M:CoesRHfRp7M:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/martinpeniak?a=al22TijZ7_M:CoesRHfRp7M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/martinpeniak?i=al22TijZ7_M:CoesRHfRp7M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/martinpeniak/~4/al22TijZ7_M" height="1" width="1"/&gt;</description>
			<author>martin.peniak@plymouth.ac.uk (Martin Peniak)</author>
			<category>frontpage</category>
			<pubDate>Sat, 06 Oct 2012 19:44:10 +0000</pubDate>
		<feedburner:origLink>http://www.martinpeniak.com/index.php?option=com_content&amp;view=article&amp;id=288:cuda-thread-indexing-explained&amp;catid=17:updates</feedburner:origLink></item>
	<media:rating>nonadult</media:rating></channel>
</rss>
