<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://air.imag.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RICM4-prj14-grp5</id>
	<title>air - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://air.imag.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RICM4-prj14-grp5"/>
	<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php/Special:Contributions/RICM4-prj14-grp5"/>
	<updated>2026-05-30T18:01:04Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://air.imag.fr/index.php?title=Extensions_XBMC_2015&amp;diff=22537</id>
		<title>Extensions XBMC 2015</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Extensions_XBMC_2015&amp;diff=22537"/>
		<updated>2015-03-25T09:04:57Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Enhancement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
This project idea is to develop various plug-in for kodi (formerly xbmc).&lt;br /&gt;
&lt;br /&gt;
More information on Project [[Extensions XBMC Sujet 2015]]&lt;br /&gt;
&lt;br /&gt;
=Documents=&lt;br /&gt;
* [[Proj-2014-2015-Ext_XBMC/SRS|Software Requirements Specification (SRS)]]&lt;br /&gt;
* [[Proj-2014-2015-Ext_XBMC/UML| Diagrammes UML]]&lt;br /&gt;
* [http://www.mediafire.com/view/sxx0luo8th5o7m9/MPI_VALENTIN_BOBO_LEGROS.pdf Rapport]&lt;br /&gt;
* [ Slides of the Presentation]&lt;br /&gt;
* [http://www.mediafire.com/view/2xmcb18l9xqpig1/11080023_347584275444770_1002629747_n.jpg.png Flyer]&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Tutors : Nicolas Palix&lt;br /&gt;
&lt;br /&gt;
* Members : Clément Valentin, William Bobo, Jules Legros, Gabin Teulon&lt;br /&gt;
&lt;br /&gt;
* Departement : [http://www.polytech-grenoble.fr/ricm.html RICM 5], [[Polytech Grenoble]]&lt;br /&gt;
&lt;br /&gt;
= Project objectives =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Progress of the project =&lt;br /&gt;
&lt;br /&gt;
The project started January 26th, 2014.&lt;br /&gt;
&lt;br /&gt;
== Week 1 (January 26th - January 30th) == &lt;br /&gt;
* Project discovery&lt;br /&gt;
* Discovery of Kodi (formerly XBMC) and the add-on structure&lt;br /&gt;
&lt;br /&gt;
== Sprint 1 (February 02nd - February 14th) ==&lt;br /&gt;
* Installation of a shared library in kodi between computers&lt;br /&gt;
** Use of mySQL database/server on the SalleAIR computer&lt;br /&gt;
** Synchronization of the movies lecture (can resume a movie on any computer, viewed list updating) &lt;br /&gt;
* Discovery of dev tool for the kinect : we chose to use C++ library (native library) instead of python one&#039;s, because on windows, it is not userfriendly at all, and in the aim of providing an addon that can be easily installed, it&#039;s not the good solution.&lt;br /&gt;
* Discovery of the source code of the remote control android application&lt;br /&gt;
&lt;br /&gt;
== Holidays ==&lt;br /&gt;
&lt;br /&gt;
== Sprint 2 (February 23rd - March 10th) ==&lt;br /&gt;
* Development of the kodi add-on&lt;br /&gt;
** Pop-up mechanism&lt;br /&gt;
** Port communication in order to communicate with the kinect program. We first wanted to use [http://en.wikipedia.org/wiki/D-Bus D-Bus] or [http://en.wikipedia.org/wiki/%C3%98MQ ØMQ] but once again, the fact that the installation is not easy on windows, is incompatible with the fact that we want an addon easily installable by anyone.&lt;br /&gt;
* Development of a kinect program to count the number of people in front of the TV&lt;br /&gt;
* Development of the NFC part, and including it in the remote control android application&lt;br /&gt;
&lt;br /&gt;
== Sprint 3 (March 10th - March Xth) ==&lt;br /&gt;
* Developing a multi-platform solution for the kinect&lt;br /&gt;
* Creating scenarios in order to decide of interaction with the NFC tags and the kinect&lt;br /&gt;
&lt;br /&gt;
= Choices for the remote =&lt;br /&gt;
*Choice of the app&lt;br /&gt;
We used the official remote because there was things already done last year&lt;br /&gt;
*Follow-me : NFC or Bluetooth&lt;br /&gt;
Bluetooth seem perfect for following someone without interaction but there is material differences which change signal&#039;s power and made it unreliable.&lt;br /&gt;
NFC add a user interaction but we are sure that the remote is here and we already known how to deal with NFC on Android&lt;br /&gt;
*Tag content&lt;br /&gt;
Our tag are very small. We can write around 144 byte. At first, it was not a problem because we just needed un id, but it work with only one remote. When we choose to make it work with all the remote, we needed to write all the data about un host. Where was not enough place and we had to choose most important information.&lt;br /&gt;
*Remote integration&lt;br /&gt;
We choose to do it with a minimum of change and before each commit, code was cleaned to reflect it so if we choose to push our modification to the original repository, our push will be clean.&lt;br /&gt;
*Communication with XBMC/Kodi&lt;br /&gt;
We choose not to communicate with XBMC through an addon with our own socket because we found JSON-RPC. JSON-RPC is already implemented in the remote and allow to control XBMC through JSON request.&lt;br /&gt;
*Centralisation on remote&lt;br /&gt;
The remote have access to everything through JSON-RPC and it avoid to deal with negotiation between add-on.&lt;br /&gt;
*XBMC/Kodi on Android&lt;br /&gt;
We thought of using Kodi on Android for the &amp;quot;follow me&amp;quot;, it consist in moving the playing media from a TV to the smart-phone then to another TV. We choose not to do it because Kodi on Android is a native application and it would take too much time to retro-engineering this.&lt;br /&gt;
&lt;br /&gt;
= Enhancement =&lt;br /&gt;
*Follow me on Kodi Android&lt;br /&gt;
*Deal with more user-case&lt;br /&gt;
*More options and user choice&lt;br /&gt;
*UPNP server for follow me on media not shared on the network&lt;br /&gt;
&lt;br /&gt;
= To continue =&lt;br /&gt;
*About the remote&lt;br /&gt;
We did not found any documentation about the remote. So you have understand it yourself with your Android skills.&lt;br /&gt;
The main part which deal with NFC tag is &amp;quot;NFCIntentActivity.java&amp;quot;. This is the core of the remote application. It read a tag, add the host if it dosn&#039;t exist then do the follow me thing. &lt;br /&gt;
&amp;quot;FollowMeActivity.java&amp;quot; was also added for writing on NFC and settings.&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Extensions_XBMC_2015&amp;diff=22519</id>
		<title>Extensions XBMC 2015</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Extensions_XBMC_2015&amp;diff=22519"/>
		<updated>2015-03-25T08:27:24Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Choices for the remote */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
This project idea is to develop various plug-in for kodi (formerly xbmc).&lt;br /&gt;
&lt;br /&gt;
More information on Project [[Extensions XBMC Sujet 2015]]&lt;br /&gt;
&lt;br /&gt;
=Documents=&lt;br /&gt;
* [[Proj-2014-2015-Ext_XBMC/SRS|Software Requirements Specification (SRS)]]&lt;br /&gt;
* [[Proj-2014-2015-Ext_XBMC/UML| Diagrammes UML]]&lt;br /&gt;
* [ Rapport]&lt;br /&gt;
* [ Slides of the Presentation]&lt;br /&gt;
* [ Flyer]&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Tutors : Nicolas Palix&lt;br /&gt;
&lt;br /&gt;
* Members : Clément Valentin, William Bobo, Jules Legros, Gabin Teulon&lt;br /&gt;
&lt;br /&gt;
* Departement : [http://www.polytech-grenoble.fr/ricm.html RICM 5], [[Polytech Grenoble]]&lt;br /&gt;
&lt;br /&gt;
= Project objectives =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Progress of the project =&lt;br /&gt;
&lt;br /&gt;
The project started January 26th, 2014.&lt;br /&gt;
&lt;br /&gt;
== Week 1 (January 26th - January 30th) == &lt;br /&gt;
* Project discovery&lt;br /&gt;
* Discovery of Kodi (formerly XBMC) and the add-on structure&lt;br /&gt;
&lt;br /&gt;
== Sprint 1 (February 02nd - February 14th) ==&lt;br /&gt;
* Installation of a shared library in kodi between computers&lt;br /&gt;
** Use of mySQL database/server on the SalleAIR computer&lt;br /&gt;
** Synchronization of the movies lecture (can resume a movie on any computer, viewed list updating) &lt;br /&gt;
* Discovery of dev tool for the kinect : we chose to use C++ library (native library) instead of python one&#039;s, because on windows, it is not userfriendly at all, and in the aim of providing an addon that can be easily installed, it&#039;s not the good solution.&lt;br /&gt;
* Discovery of the source code of the remote control android application&lt;br /&gt;
&lt;br /&gt;
== Holidays ==&lt;br /&gt;
&lt;br /&gt;
== Sprint 2 (February 23rd - March 10th) ==&lt;br /&gt;
* Development of the kodi add-on&lt;br /&gt;
** Pop-up mechanism&lt;br /&gt;
** Port communication in order to communicate with the kinect program. We first wanted to use [http://en.wikipedia.org/wiki/D-Bus D-Bus] or [http://en.wikipedia.org/wiki/%C3%98MQ ØMQ] but once again, the fact that the installation is not easy on windows, is incompatible with the fact that we want an addon easily installable by anyone.&lt;br /&gt;
* Development of a kinect program to count the number of people in front of the TV&lt;br /&gt;
* Development of the NFC part, and including it in the remote control android application&lt;br /&gt;
&lt;br /&gt;
== Sprint 3 (March 10th - March Xth) ==&lt;br /&gt;
* Developing a multi-platform solution for the kinect&lt;br /&gt;
* Creating scenarios in order to decide of interaction with the NFC tags and the kinect&lt;br /&gt;
&lt;br /&gt;
= Choices for the remote =&lt;br /&gt;
*Choice of the app&lt;br /&gt;
We used the official remote because there was things already done last year&lt;br /&gt;
*Follow-me : NFC or Bluetooth&lt;br /&gt;
Bluetooth seem perfect for following someone without interaction but there is material differences which change signal&#039;s power and made it unreliable.&lt;br /&gt;
NFC add a user interaction but we are sure that the remote is here and we already known how to deal with NFC on Android&lt;br /&gt;
*Tag content&lt;br /&gt;
Our tag are very small. We can write around 144 byte. At first, it was not a problem because we just needed un id, but it work with only one remote. When we choose to make it work with all the remote, we needed to write all the data about un host. Where was not enough place and we had to choose most important information.&lt;br /&gt;
*Remote integration&lt;br /&gt;
We choose to do it with a minimum of change and before each commit, code was cleaned to reflect it so if we choose to push our modification to the original repository, our push will be clean.&lt;br /&gt;
*Communication with XBMC/Kodi&lt;br /&gt;
We choose not to communicate with XBMC through an addon with our own socket because we found JSON-RPC. JSON-RPC is already implemented in the remote and allow to control XBMC through JSON request.&lt;br /&gt;
*Centralisation on remote&lt;br /&gt;
The remote have access to everything through JSON-RPC and it avoid to deal with negotiation between add-on.&lt;br /&gt;
*XBMC/Kodi on Android&lt;br /&gt;
We thought of using Kodi on Android for the &amp;quot;follow me&amp;quot;, it consist in moving the playing media from a TV to the smart-phone then to another TV. We choose not to do it because Kodi on Android is a native application and it would take too much time to retro-engineering this.&lt;br /&gt;
&lt;br /&gt;
= Enhancement =&lt;br /&gt;
*Follow me on Kodi Android&lt;br /&gt;
*Deal with more user-case&lt;br /&gt;
*More options and user choice&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Extensions_XBMC_2015&amp;diff=22514</id>
		<title>Extensions XBMC 2015</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Extensions_XBMC_2015&amp;diff=22514"/>
		<updated>2015-03-25T08:20:28Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Choices for the remote */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
This project idea is to develop various plug-in for kodi (formerly xbmc).&lt;br /&gt;
&lt;br /&gt;
More information on Project [[Extensions XBMC Sujet 2015]]&lt;br /&gt;
&lt;br /&gt;
=Documents=&lt;br /&gt;
* [[Proj-2014-2015-Ext_XBMC/SRS|Software Requirements Specification (SRS)]]&lt;br /&gt;
* [[Proj-2014-2015-Ext_XBMC/UML| Diagrammes UML]]&lt;br /&gt;
* [ Rapport]&lt;br /&gt;
* [ Slides of the Presentation]&lt;br /&gt;
* [ Flyer]&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Tutors : Nicolas Palix&lt;br /&gt;
&lt;br /&gt;
* Members : Clément Valentin, William Bobo, Jules Legros, Gabin Teulon&lt;br /&gt;
&lt;br /&gt;
* Departement : [http://www.polytech-grenoble.fr/ricm.html RICM 5], [[Polytech Grenoble]]&lt;br /&gt;
&lt;br /&gt;
= Project objectives =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Progress of the project =&lt;br /&gt;
&lt;br /&gt;
The project started January 26th, 2014.&lt;br /&gt;
&lt;br /&gt;
== Week 1 (January 26th - January 30th) == &lt;br /&gt;
* Project discovery&lt;br /&gt;
* Discovery of Kodi (formerly XBMC) and the add-on structure&lt;br /&gt;
&lt;br /&gt;
== Sprint 1 (February 02nd - February 14th) ==&lt;br /&gt;
* Installation of a shared library in kodi between computers&lt;br /&gt;
** Use of mySQL database/server on the SalleAIR computer&lt;br /&gt;
** Synchronization of the movies lecture (can resume a movie on any computer, viewed list updating) &lt;br /&gt;
* Discovery of dev tool for the kinect : we chose to use C++ library (native library) instead of python one&#039;s, because on windows, it is not userfriendly at all, and in the aim of providing an addon that can be easily installed, it&#039;s not the good solution.&lt;br /&gt;
* Discovery of the source code of the remote control android application&lt;br /&gt;
&lt;br /&gt;
== Holidays ==&lt;br /&gt;
&lt;br /&gt;
== Sprint 2 (February 23rd - March 10th) ==&lt;br /&gt;
* Development of the kodi add-on&lt;br /&gt;
** Pop-up mechanism&lt;br /&gt;
** Port communication in order to communicate with the kinect program. We first wanted to use [http://en.wikipedia.org/wiki/D-Bus D-Bus] or [http://en.wikipedia.org/wiki/%C3%98MQ ØMQ] but once again, the fact that the installation is not easy on windows, is incompatible with the fact that we want an addon easily installable by anyone.&lt;br /&gt;
* Development of a kinect program to count the number of people in front of the TV&lt;br /&gt;
* Development of the NFC part, and including it in the remote control android application&lt;br /&gt;
&lt;br /&gt;
== Sprint 3 (March 10th - March Xth) ==&lt;br /&gt;
* Developing a multi-platform solution for the kinect&lt;br /&gt;
* Creating scenarios in order to decide of interaction with the NFC tags and the kinect&lt;br /&gt;
&lt;br /&gt;
= Choices for the remote =&lt;br /&gt;
*Choice of the app&lt;br /&gt;
We used the official remote because there was things already done last year&lt;br /&gt;
*Follow-me : NFC or Bluetooth&lt;br /&gt;
Bluetooth seem perfect for following someone without interaction but there is material differences which change signal&#039;s power and made it unreliable.&lt;br /&gt;
NFC add a user interaction but we are sure that the remote is here and we already known how to deal with NFC on Android&lt;br /&gt;
*Tag content&lt;br /&gt;
Our tag are very small. We can write around 144 byte. At first, it was not a problem because we just needed un id, but it work with only one remote. When we choose to make it work with all the remote, we needed to write all the data about un host. Where was not enough place and we had to choose most important information.&lt;br /&gt;
*Remote integration&lt;br /&gt;
We choose to do it with a minimum of change and before each commit, code was cleaned to reflect it so if we choose to push our modification to the original repository, our push will be clean.&lt;br /&gt;
*Communication with XBMC/Kodi&lt;br /&gt;
We choose not to communicate with XBMC through an addon with our own socket because we found JSON-RPC. JSON-RPC is already implemented in the remote and allow to control XBMC through JSON request.&lt;br /&gt;
*Centralisation on remote&lt;br /&gt;
The remote have access to everything through JSON-RPC and it avoid to deal with negotiation between add-on.&lt;br /&gt;
*XBMC/Kodi on Android&lt;br /&gt;
We thought of using Kodi on Android for the &amp;quot;follow me&amp;quot;, it consist in moving the playing media from a TV to the smart-phone then to another TV. We choose not to do it because Kodi on Android is a native application and it would take too much time to retro-engineering this.&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Extensions_XBMC_2015&amp;diff=22511</id>
		<title>Extensions XBMC 2015</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Extensions_XBMC_2015&amp;diff=22511"/>
		<updated>2015-03-25T07:43:09Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Choices for the remote */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
This project idea is to develop various plug-in for kodi (formerly xbmc).&lt;br /&gt;
&lt;br /&gt;
More information on Project [[Extensions XBMC Sujet 2015]]&lt;br /&gt;
&lt;br /&gt;
=Documents=&lt;br /&gt;
* [[Proj-2014-2015-Ext_XBMC/SRS|Software Requirements Specification (SRS)]]&lt;br /&gt;
* [[Proj-2014-2015-Ext_XBMC/UML| Diagrammes UML]]&lt;br /&gt;
* [ Rapport]&lt;br /&gt;
* [ Slides of the Presentation]&lt;br /&gt;
* [ Flyer]&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Tutors : Nicolas Palix&lt;br /&gt;
&lt;br /&gt;
* Members : Clément Valentin, William Bobo, Jules Legros, Gabin Teulon&lt;br /&gt;
&lt;br /&gt;
* Departement : [http://www.polytech-grenoble.fr/ricm.html RICM 5], [[Polytech Grenoble]]&lt;br /&gt;
&lt;br /&gt;
= Project objectives =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Progress of the project =&lt;br /&gt;
&lt;br /&gt;
The project started January 26th, 2014.&lt;br /&gt;
&lt;br /&gt;
== Week 1 (January 26th - January 30th) == &lt;br /&gt;
* Project discovery&lt;br /&gt;
* Discovery of Kodi (formerly XBMC) and the add-on structure&lt;br /&gt;
&lt;br /&gt;
== Sprint 1 (February 02nd - February 14th) ==&lt;br /&gt;
* Installation of a shared library in kodi between computers&lt;br /&gt;
** Use of mySQL database/server on the SalleAIR computer&lt;br /&gt;
** Synchronization of the movies lecture (can resume a movie on any computer, viewed list updating) &lt;br /&gt;
* Discovery of dev tool for the kinect : we chose to use C++ library (native library) instead of python one&#039;s, because on windows, it is not userfriendly at all, and in the aim of providing an addon that can be easily installed, it&#039;s not the good solution.&lt;br /&gt;
* Discovery of the source code of the remote control android application&lt;br /&gt;
&lt;br /&gt;
== Holidays ==&lt;br /&gt;
&lt;br /&gt;
== Sprint 2 (February 23rd - March 10th) ==&lt;br /&gt;
* Development of the kodi add-on&lt;br /&gt;
** Pop-up mechanism&lt;br /&gt;
** Port communication in order to communicate with the kinect program. We first wanted to use [http://en.wikipedia.org/wiki/D-Bus D-Bus] or [http://en.wikipedia.org/wiki/%C3%98MQ ØMQ] but once again, the fact that the installation is not easy on windows, is incompatible with the fact that we want an addon easily installable by anyone.&lt;br /&gt;
* Development of a kinect program to count the number of people in front of the TV&lt;br /&gt;
* Development of the NFC part, and including it in the remote control android application&lt;br /&gt;
&lt;br /&gt;
== Sprint 3 (March 10th - March Xth) ==&lt;br /&gt;
* Developing a multi-platform solution for the kinect&lt;br /&gt;
* Creating scenarios in order to decide of interaction with the NFC tags and the kinect&lt;br /&gt;
&lt;br /&gt;
= Choices for the remote =&lt;br /&gt;
*Choice of the app&lt;br /&gt;
We used the official remote because there was things already done last year&lt;br /&gt;
*Follow-me : NFC or Bluetooth&lt;br /&gt;
Bluetooth seem perfect for following someone without interaction but there is material differences which change signal&#039;s power and made it unreliable.&lt;br /&gt;
NFC add a user interaction but we are sure that the remote is here and we already known how to deal with NFC on Android&lt;br /&gt;
*Tag content&lt;br /&gt;
Our tag are very small. We can write around 144 byte. At first, it was not a problem because we just needed un id, but it work with only one remote. When we choose to make it work with all the remote, we needed to write all the data about un host. Where was not enough place and we had to choose most important information.&lt;br /&gt;
*Remote integration&lt;br /&gt;
We choose to do it with a minimum of change and before each commit, code was cleaned to reflect it so if we choose to push our modification to the original repository, our push will be clean.&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Extensions_XBMC_2015&amp;diff=22459</id>
		<title>Extensions XBMC 2015</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Extensions_XBMC_2015&amp;diff=22459"/>
		<updated>2015-03-25T07:00:17Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
This project idea is to develop various plug-in for kodi (formerly xbmc).&lt;br /&gt;
&lt;br /&gt;
More information on Project [[Extensions XBMC Sujet 2015]]&lt;br /&gt;
&lt;br /&gt;
=Documents=&lt;br /&gt;
* [[Proj-2014-2015-Ext_XBMC/SRS|Software Requirements Specification (SRS)]]&lt;br /&gt;
* [[Proj-2014-2015-Ext_XBMC/UML| Diagrammes UML]]&lt;br /&gt;
* [ Rapport]&lt;br /&gt;
* [ Slides of the Presentation]&lt;br /&gt;
* [ Flyer]&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Tutors : Nicolas Palix&lt;br /&gt;
&lt;br /&gt;
* Members : Clément Valentin, William Bobo, Jules Legros, Gabin Teulon&lt;br /&gt;
&lt;br /&gt;
* Departement : [http://www.polytech-grenoble.fr/ricm.html RICM 5], [[Polytech Grenoble]]&lt;br /&gt;
&lt;br /&gt;
= Project objectives =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Progress of the project =&lt;br /&gt;
&lt;br /&gt;
The project started January 26th, 2014.&lt;br /&gt;
&lt;br /&gt;
== Week 1 (January 26th - January 30th) == &lt;br /&gt;
* Project discovery&lt;br /&gt;
* Discovery of Kodi (formerly XBMC) and the add-on structure&lt;br /&gt;
&lt;br /&gt;
== Sprint 1 (February 02nd - February 14th) ==&lt;br /&gt;
* Installation of a shared library in kodi between computers&lt;br /&gt;
** Use of mySQL database/server on the SalleAIR computer&lt;br /&gt;
** Synchronization of the movies lecture (can resume a movie on any computer, viewed list updating) &lt;br /&gt;
* Discovery of dev tool for the kinect : we chose to use C++ library (native library) instead of python one&#039;s, because on windows, it is not userfriendly at all, and in the aim of providing an addon that can be easily installed, it&#039;s not the good solution.&lt;br /&gt;
* Discovery of the source code of the remote control android application&lt;br /&gt;
&lt;br /&gt;
== Holidays ==&lt;br /&gt;
&lt;br /&gt;
== Sprint 2 (February 23rd - March 10th) ==&lt;br /&gt;
* Development of the kodi add-on&lt;br /&gt;
** Pop-up mechanism&lt;br /&gt;
** Port communication in order to communicate with the kinect program. We first wanted to use [http://en.wikipedia.org/wiki/D-Bus D-Bus] or [http://en.wikipedia.org/wiki/%C3%98MQ ØMQ] but once again, the fact that the installation is not easy on windows, is incompatible with the fact that we want an addon easily installable by anyone.&lt;br /&gt;
* Development of a kinect program to count the number of people in front of the TV&lt;br /&gt;
* Development of the NFC part, and including it in the remote control android application&lt;br /&gt;
&lt;br /&gt;
== Sprint 3 (March 10th - March Xth) ==&lt;br /&gt;
* Developing a multi-platform solution for the kinect&lt;br /&gt;
* Creating scenarios in order to decide of interaction with the NFC tags and the kinect&lt;br /&gt;
&lt;br /&gt;
= Choices for the remote =&lt;br /&gt;
*Choice of the app&lt;br /&gt;
We used the official remote because there was things already done last year&lt;br /&gt;
*Follow-me : NFC or Bluetooth&lt;br /&gt;
Bluetooth seem perfect for following someone without interaction but there is material differences which change signal&#039;s power and made it unreliable.&lt;br /&gt;
NFC add a user interaction but we are sure that the remote is here and we already known how to deal with NFC on Android&lt;br /&gt;
*Tag content&lt;br /&gt;
Our tag are very small. We can write around 144 byte. At first, it was not a problem because we just needed un id, but it work with only one remote. When we choose to make it work with all the remote, we needed to write all the data about un host. Where was not enough place and we had to choose most important information.&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Projets_2014-2015&amp;diff=20312</id>
		<title>Projets 2014-2015</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Projets_2014-2015&amp;diff=20312"/>
		<updated>2015-01-26T12:31:31Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Projet Semestre S10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;[[Projets 2013-2014]] [[Projets|^Projets^]] [[Projets 2015-2016]]&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=RICM=&lt;br /&gt;
==RICM3==&lt;br /&gt;
&lt;br /&gt;
==RICM4==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Evaluation à mi-parcours le lundi 2 mars&#039;&#039;&#039;: Format: 10min (5min de présentation 3 slides au plus, 5min de discussion). Cette évaluation sera prise en compte dans la note finale.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Consignes générales:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Vous devez être pro-actifs !!!&#039;&#039;&#039;: Si des points sont pas ou mals spécifiés, vous le faîtes et vous justifiez vos choix. Pour les problèmes techniques éventuels vous pouvez: vous creusez la question, vous contactez l&#039;auteur du code si il y a lieux, vous faites un rapport de bug (&#039;&#039;&#039;Attention:&#039;&#039;&#039; ca se prépare !), vous soumettez un patch, vous contactez l&#039;enseignant ou la personne suivant le projet.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Vous devez maintenir une fiche de suivi de projet&#039;&#039;&#039;: elle doit être mise à jour chaque semaine, elle rassemble les élements essentiels du projet, elle &lt;br /&gt;
indique les évolutions du projet et présente sa feuille de route. &#039;&#039;&#039;Note:&#039;&#039;&#039; le nom de la fiche doit être composé du nom du projet et suffixé par ricm4_2014_2015.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Vous devez utiliser un logiciel de gestion de version&#039;&#039;&#039; pour vos développements comme [http://en.wikipedia.org/wiki/Git_%28software%29 git ] et nous vous conseillons d&#039;utiliser le site [https://github.com github] pour l&#039;hébergement de votre dépôt public.&lt;br /&gt;
&lt;br /&gt;
* Les document public (exemple sur github) doivent être rédigés en anglais (README, documentation, commentaires de code, nom de variables et de fonctions). Une bonnification sera accordée si le rapport et les transparents sont en anglais (la soutenance sera en francais).&lt;br /&gt;
&lt;br /&gt;
 {|class=&amp;quot;wikitable alternance&amp;quot;&lt;br /&gt;
 |+ Affectation des projets RICM4 2014-2015&lt;br /&gt;
 |-&lt;br /&gt;
 |&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Sujet&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Etudiants&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Enseignant(s)&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Fiche de suivi&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Dépot git&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
 | [[Projet de monoski intelligent]]&lt;br /&gt;
 | Blondet, Torck&lt;br /&gt;
 | Didier Donsez, Pascal Jay, David Eon&lt;br /&gt;
 | [[Proj-2014-2015-MonoskiIntelligent| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]] [[Proj-2014-2015-MonoskiIntelligent/SRS| &#039;&#039;&#039;SRS&#039;&#039;&#039;]] [[Proj-2014-2015-MonoskiIntelligent/UML| &#039;&#039;&#039;Diagrammes UML&#039;&#039;&#039;]] [[Proj-2014-2015-MonoskiIntelligent/Scrum| &#039;&#039;&#039;Scrum&#039;&#039;&#039;]]&lt;br /&gt;
 | [https://github.com/ &#039;&#039;&#039;github&#039;&#039;&#039;]&lt;br /&gt;
 | [[Media:ProjetXYZ/Rapport|rapport]] - [[Media:ProjetXXX-transparents.pdf|transparents]] - [[Media:ProjetXXX-flyer.pdf|flyer]] - [[Media:ProjetXXX-poster.pdf|poster]] - [http://youtube.com Video ou Screencast]&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
 | [[Smart Classroom]]&lt;br /&gt;
 | Darrigol, Badamo, Damotte, Leonard&lt;br /&gt;
 | Didier Donsez, Vivien Quema, Jérome Maisonnasse&lt;br /&gt;
 | [[Proj-2014-2015-SmartClassroom| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]] [[Proj-2014-2015-SmartClassroom/SRS| &#039;&#039;&#039;SRS&#039;&#039;&#039;]] [[Proj-2014-2015-SmartClassroom/UML| &#039;&#039;&#039;Diagrammes UML&#039;&#039;&#039;]] [[Proj-2014-2015-SmartClassroom/Scrum| &#039;&#039;&#039;Scrum&#039;&#039;&#039;]]&lt;br /&gt;
 | [https://github.com/ &#039;&#039;&#039;github&#039;&#039;&#039;]&lt;br /&gt;
 | [[Media:Proj-2014-2015-SmartClassroom/Rapport|rapport]] - [[Media:Proj-2014-2015-SmartClassroom-transparents.pdf|transparents]] - [[Media:Proj-2014-2015-SmartClassroom-flyer.pdf|flyer]]  [[Media:ProjetXXX-poster.pdf|poster]] - [http://youtube.com Video ou Screencast]&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
!scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
 | [[RobAIR]] et [[STM32 Nucleo]]&lt;br /&gt;
 | Hammerer, Michel, Klipffel, Vialler&lt;br /&gt;
 | Didier Donsez&lt;br /&gt;
 | [[Projet-2014-2015-RobAIR| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]] [[Projet-2014-2015-RobAIR/SRS| &#039;&#039;&#039;SRS&#039;&#039;&#039;]] [[Projet-2014-2015-RobAIR/UML| &#039;&#039;&#039;Diagrammes UML&#039;&#039;&#039;]] [[Projet-2014-2015-RobAIR/Scrum| &#039;&#039;&#039;Scrum&#039;&#039;&#039;]]&lt;br /&gt;
 | [https://github.com/ &#039;&#039;&#039;github&#039;&#039;&#039;]&lt;br /&gt;
 | [[Media:Projet-2014-2015-RobAIR/Rapport|rapport]] - [[Media:Projet-2014-2015-RobAIR-transparents.pdf|transparents]] - [[Media:ProjetXXX-flyer.pdf|flyer]]  [[Media:Projet-2014-2015-RobAIR-poster.pdf|poster]] - [http://youtube.com Video ou Screencast]&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
!scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
 | [[IDS|Interactive Digitale Signage]]&lt;br /&gt;
 | Adam, Zhang&lt;br /&gt;
 | Didier Donsez&lt;br /&gt;
 | [[Proj-2014-2015-Interactive_Digitale_Signage| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]]&lt;br /&gt;
 | [https://github.com/ &#039;&#039;&#039;github&#039;&#039;&#039;]&lt;br /&gt;
 | [[Media:Proj-2014-2015-Interactive_Digitale_Signage/Rapport|rapport]] - [[Media:Proj-2014-2015-Interactive_Digitale_Signage-transparents.pdf|transparents]] - [[Media:Proj-2014-2015-Interactive_Digitale_Signage-flyer.pdf|flyer]]  [[Media:ProjetXXX-poster.pdf|poster]] - [http://youtube.com Video ou Screencast]&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
!scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
 | [[Régie vidéo autonome et mobile multi-caméra]]&lt;br /&gt;
 | Zominy, Bodard, Qian&lt;br /&gt;
 | Didier Donsez, Thierry C.&lt;br /&gt;
 | [[Proj-2014-2015-RegieVideoAutonomeEtMobileMulticamera| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]] [[Proj-2014-2015-Regie_Video_Autonome_Et_Mobile_Multicamera/SRS| &#039;&#039;&#039;SRS&#039;&#039;&#039;]]&lt;br /&gt;
 | [https://github.com/ &#039;&#039;&#039;github&#039;&#039;&#039;]&lt;br /&gt;
 | [[Media:Projet-2014-2015-RegieVideoAutonomeEtMobileMulticamera/Rapport|rapport]] - [[Media:ProjetXXX-transparents.pdf|transparents]] - [[Media:ProjetXXX-flyer.pdf|flyer]] - [[Media:ProjetXXX-poster.pdf|poster]] - [http://youtube.com Video ou Screencast]&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
!scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
 | OpenHAB Extended GUI ([[IFTTT]] et à la [[Node-RED]] ou [[Flowhub]] pour [[OpenHAB]], Découverte [[UPnP]] des équipements)&lt;br /&gt;
 | Toussaint, Saussac&lt;br /&gt;
 | Didier Donsez&lt;br /&gt;
 | [[Proj-2014-2015-OpenHAB-ExtendedGUI| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]]&lt;br /&gt;
 | [https://github.com/ &#039;&#039;&#039;github&#039;&#039;&#039;]&lt;br /&gt;
 | [[Media:Proj-2014-2015-OpenHAB-ExtendedGUI/Rapport|rapport]] - [[Media:Proj-2014-2015-OpenHAB-ExtendedGUI-transparents.pdf|transparents]] - [[Media:PProj-2014-2015-OpenHAB-ExtendedGUI-flyer.pdf|flyer]] - [[Media:ProjetXXX-poster.pdf|poster]] - [http://youtube.com Video ou Screencast]&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
!scope=&amp;quot;row&amp;quot;| 7&lt;br /&gt;
 | [[Inventaire Forestier]] &lt;br /&gt;
 | Rodrigues-Pereira-Anselmo, Le-Jean&lt;br /&gt;
 | Emmanuel Promayon&lt;br /&gt;
 | [[Proj-2014-2015-XYZ| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]]&lt;br /&gt;
 | [https://github.com/ &#039;&#039;&#039;github&#039;&#039;&#039;]&lt;br /&gt;
 | [[Media:ProjetXYZ/Rapport|rapport]] - [[Media:ProjetXXX-transparents.pdf|transparents]] - [[Media:ProjetXXX-flyer.pdf|flyer]]- [[Media:ProjetXXX-poster.pdf|poster]] - [http://youtube.com Video ou Screencast]&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
!scope=&amp;quot;row&amp;quot;| 8&lt;br /&gt;
 | [[CannonBall de voitures autonomes|CannonBall de voitures autonomes, Edition 2015]] &lt;br /&gt;
 | Pelloux-Prayer, Mammar&lt;br /&gt;
 | Didier Donsez &amp;amp; Vivien Quema&lt;br /&gt;
 | [[Project-2014-2015-CannonBall| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]][[Project 2014-2015-CannonBall/SRS| &#039;&#039;&#039;SRS&#039;&#039;&#039;]]&lt;br /&gt;
 | [https://github.com/ &#039;&#039;&#039;github&#039;&#039;&#039;]&lt;br /&gt;
 | [[Media:ProjetXYZ/Rapport|rapport]] - [[Media:ProjetXXX-transparents.pdf|transparents]] - [[Media:ProjetXXX-flyer.pdf|flyer]]- [[Media:ProjetXXX-poster.pdf|poster]] - [http://youtube.com Video ou Screencast]&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
!scope=&amp;quot;row&amp;quot;| 9&lt;br /&gt;
 | [[Navigation et Montre connectée]]&lt;br /&gt;
 | Hamdani, Mesnier, Yao&lt;br /&gt;
 | Jacques Lemordant&lt;br /&gt;
  | [[Proj-2014-2015-Montreconnectée| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]] [[Proj-2014-2015-Montreconnectée/SRS| &#039;&#039;&#039;SRS&#039;&#039;&#039;]] [[Proj-2014-2015-Montreconnectée/UML| &#039;&#039;&#039;Diagrammes UML&#039;&#039;&#039;]] [[Proj-2014-2015-Montreconnectée/Scrum| &#039;&#039;&#039;Scrum&#039;&#039;&#039;]]&lt;br /&gt;
 | [https://github.com/ &#039;&#039;&#039;github&#039;&#039;&#039;]&lt;br /&gt;
 | [[Media:ProjetXYZ/Rapport|rapport]] - [[Media:ProjetXXX-transparents.pdf|transparents]] - [[Media:ProjetXXX-flyer.pdf|flyer]]- [[Media:ProjetXXX-poster.pdf|poster]] - [http://youtube.com Video ou Screencast]&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
!scope=&amp;quot;row&amp;quot;| 10&lt;br /&gt;
 | [[Python sur ESP8266]]&lt;br /&gt;
 | Libralesso, Soldano&lt;br /&gt;
 | Olivier Richard&lt;br /&gt;
 | [[Project-2014-2015-ESP8266| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]] [[Proj-2014-2015-ESP8266/SRS| &#039;&#039;&#039;SRS&#039;&#039;&#039;]]&lt;br /&gt;
 | [https://github.com/librallu/RICM4Projet/ &#039;&#039;&#039;github&#039;&#039;&#039;]&lt;br /&gt;
 | [[Media:ProjetXYZ/Rapport|rapport]] - [[Media:ProjetXXX-transparents.pdf|transparents]] - [[Media:ProjetXXX-flyer.pdf|flyer]]- [[Media:ProjetXXX-poster.pdf|poster]] - [http://youtube.com Video ou Screencast]&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
!scope=&amp;quot;row&amp;quot;| 11&lt;br /&gt;
 | [[Serious Game: Handicap, parole et geste v2]]&lt;br /&gt;
 | Aissanou, Codazzi, Guo&lt;br /&gt;
 | Olivier Richard&lt;br /&gt;
 | [[Proj-2014-2015-SeriousGamev2| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]][[Proj-2014-2015-SeriousGamev2/SRS| &#039;&#039;&#039;SRS&#039;&#039;&#039;]][[Proj-2014-2015-SeriousGamev2/Scrum| &#039;&#039;&#039;Scrum&#039;&#039;&#039;]]&lt;br /&gt;
 | [https://github.com/ &#039;&#039;&#039;github&#039;&#039;&#039;]&lt;br /&gt;
 | [[Media:ProjetXYZ/Rapport|rapport]] - [[Media:ProjetXXX-transparents.pdf|transparents]] - [[Media:ProjetXXX-flyer.pdf|flyer]]- [[Media:ProjetXXX-poster.pdf|poster]] - [http://youtube.com Video ou Screencast]&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
!scope=&amp;quot;row&amp;quot;| 12&lt;br /&gt;
 | [[Plateforme d&#039;expérimentation mini-datacentre]] Système&lt;br /&gt;
 | Fotsing, Morisson&lt;br /&gt;
 | Olivier Richard&lt;br /&gt;
 | [[Proj-2014-2015-Mini_DataCenter_Systeme| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]]&lt;br /&gt;
 | [https://github.com/ &#039;&#039;&#039;github&#039;&#039;&#039;]&lt;br /&gt;
 | [[Media:ProjetMini_DataCenter_Systeme/Rapport|rapport]] - [[Media:ProjetMini_DataCenter_Systeme-transparents.pdf|transparents]] - [[Media:ProjetMini_DataCenter_Systeme-flyer.pdf|flyer]]- [[Media:ProjetMini_DataCenter_Systeme-poster.pdf|poster]] - [http://youtube.com Video ou Screencast]&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
!scope=&amp;quot;row&amp;quot;| 13&lt;br /&gt;
 | [[Plateforme d&#039;expérimentation mini-datacentre]] Portail&lt;br /&gt;
 | Rossi, Eudes&lt;br /&gt;
 | Olivier Richard&lt;br /&gt;
 | [[Proj-2014-2015-Mini_datacenter_portail| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]]&lt;br /&gt;
 | [https://github.com/EudesRobin/Mini_datacenter_webui &#039;&#039;&#039;github&#039;&#039;&#039;]&lt;br /&gt;
 | [[Media:Projet_Projet_Mini_datacenter_portail/Rapport|rapport]] - [[Media:Projet_Mini_datacenter_portail-transparents.pdf|transparents]] - [[Media:Projet_Mini_datacenter_portail-flyer.pdf|flyer]]- [[Media:ProjetXXX-poster.pdf|poster]] - [http://youtube.com Video ou Screencast]&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Projet de monoski intelligent]] (RICM4 et 3I4 et Matériaux) pour le [http://www.defi-foly-laclusaz.com/ défi Foly 2015] : Didier Donsez, Pascal Jay, David Eon (2 élèves)&lt;br /&gt;
* [[Smart Classroom]] (avec ENSIMAG) Didier Donsez, Vivien Quema, Jérome Maisonnasse  (4 élèves)&lt;br /&gt;
* Robot [[RobAIR]]  à base de [[STM32 Nucleo]] (+ cartes additionnelles MEMS BLE4) et de téléphones [[Firefox OS]]. Didier Donsez (4 élèves)&lt;br /&gt;
* [[StartAIR]] (Fabrice Dubost) (2 élèves)&lt;br /&gt;
* [[IDS|Interactive Digitale Signage]] avec [[Reveal.js]], [[Kinect]], [[WebRTC]], [[Node.js]], [[Open Data]], [[NFC]], [[Miracast]] [http://blueimp.github.io/Bootstrap-Image-Gallery/ Bootstrap Gallery]... (Didier Donsez) (2 élèves)&lt;br /&gt;
* [[Régie vidéo autonome et mobile multi-caméra]] (Didier Donsez, Thierry C.) (2 élèves)&lt;br /&gt;
* Interface HTML5 à la [[IFTTT]] et à la [[Node-RED]] ou [[Flowhub]] pour [[OpenHAB]] (2 élèves)&lt;br /&gt;
* [[Intégration d&#039;Espruino à RIOT OS]] sur [[STM32 Nucleo]]: Application à la robotique [[RobAIR]] (Didier Donsez) (2 élèves)&lt;br /&gt;
* [[Inventaire Forestier]] sous Android (3I4 ou 5, RICM4) Emmanuel Promayon (2 élèves)&lt;br /&gt;
* [[Navigation indoor basé iBeacons]], Jacques Lemordant (2 élèves)&lt;br /&gt;
* [[Navigation et Montre connectée]], Jacques Lemordant (2 élèves)&lt;br /&gt;
* [[Projets Sitra avec la région Rhône-Alpes]], Jacques Lemordant (2 élèves)&lt;br /&gt;
* [[CannonBall de voitures autonomes|CannonBall de voitures autonomes, Edition 2015]] Didier Donsez &amp;amp; Vivien Quema (piste  [[Star War Drone Race]]) (2 élèves)&lt;br /&gt;
* [[Python sur ESP8266]] Olivier Richard  (2 élèves)&lt;br /&gt;
* [[Serious Game: Handicap, parole et geste v2]], edition 2015, Olivier Richard (2 élèves)&lt;br /&gt;
* [[Plateforme d&#039;expérimentation mini-datacentre]] édition 2015, Olivier Richard (2 élèves)&lt;br /&gt;
&lt;br /&gt;
==RICM5==&lt;br /&gt;
===Projet Semestre S10===&lt;br /&gt;
Démarrage : Lundi 26/01 à 8H00-12H00, P257 (Rendez-vous devant la salle AIR)&lt;br /&gt;
* [[Extensions XBMC Sujet 2015]] Nicolas Palix&lt;br /&gt;
* [[Smart Classroom]] (avec ENSIMAG) Didier Donsez &amp;amp; Vivien Quema : tables tactiles en mode [[Tiled Display]], Murs interactifs, Robots de Téléprésence, ...&lt;br /&gt;
* Défi H 2015 : Rééducation de la main, Didier Donsez &amp;amp; Alessandro Semere &amp;amp; Nicolas Vuillerme&lt;br /&gt;
* Plateforme Ubilitics pour [[SmartCampus 2015]] (déploiement grande échelle de capteurs [[LoRa]]), Didier Donsez &amp;amp; Vivien Quema (voir [[OpenBAS]])&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
Remarque: il y aura 3 étudiants PEIPD de l&#039;IUT 1 qui participeront aux projets.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable alternance&amp;quot;&lt;br /&gt;
 |+ Affectation des projets RICM5 2014-2015&lt;br /&gt;
 |-&lt;br /&gt;
 |&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Sujet&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Etudiants&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Enseignant(s)&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Fiche de suivi&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Dépot git&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
 | [[iRock]] :Plateforme Ubilitics pour la surveillance des risques naturelles (déploiement grande échelle de capteurs [[LoRa]] sur le terrain pour l&#039;observation de glissement de terrain) .&lt;br /&gt;
 | Peyre, Guo, Ginoux, Boey&lt;br /&gt;
 | Didier Donsez &amp;amp; Denis Jongmans &amp;amp; Georges-Pierre Bonneau&lt;br /&gt;
 | [[Proj-2014-2015-iRock| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]] [[Proj-2014-2015-iRock/SRS| &#039;&#039;&#039;SRS&#039;&#039;&#039;]] [[Proj-2014-2015-iRock/UML| &#039;&#039;&#039;Diagrammes UML&#039;&#039;&#039;]] [[Proj-2014-2015-iRock/Scrum| &#039;&#039;&#039;Scrum&#039;&#039;&#039;]]&lt;br /&gt;
 | [https://github.com/ &#039;&#039;&#039;github&#039;&#039;&#039;]&lt;br /&gt;
 | [[Media:Proj-2014-2015-iRock/Rapport|rapport]] - [[Media:Proj-2014-2015-iRock-transparents.pdf|transparents]] - [[Media:Proj-2014-2015-iRock-flyer.pdf|flyer]] - [[Media:Proj-2014-2015-iRock-poster.pdf|poster]] - [http://youtube.com Video ou Screencast]&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
 | [[Extensions XBMC Sujet 2015]]&lt;br /&gt;
 | Valentin, Bobo, Perruche&lt;br /&gt;
 | Nicolas Palix&lt;br /&gt;
 | [[Proj-2014-2015-Ext_XBMC| &#039;&#039;&#039;Fiche&#039;&#039;&#039;]] [[Proj-2014-2015-Ext_XBMC/SRS| &#039;&#039;&#039;SRS&#039;&#039;&#039;]] [[Proj-2014-2015-Ext_XBMC/UML| &#039;&#039;&#039;Diagrammes UML&#039;&#039;&#039;]] [[Proj-2014-2015-Ext_XBMC/Scrum| &#039;&#039;&#039;Scrum&#039;&#039;&#039;]]&lt;br /&gt;
 | [https://github.com/ &#039;&#039;&#039;github&#039;&#039;&#039;]&lt;br /&gt;
 | [[Media:Proj-2014-2015-Ext_XBMC/Rapport|rapport]] - [[Media:Proj-2014-2015-Ext_XBMC-transparents.pdf|transparents]] - [[Media:Proj-2014-2015-Ext_XBMC-flyer.pdf|flyer]] - [[Media:Proj-2014-2015-Ext_XBMC-poster.pdf|poster]] - [http://youtube.com Video ou Screencast]&lt;br /&gt;
 |-&lt;br /&gt;
&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Rappel: les séances de MPI (Management de Projet Innovant) auront lieu les jours suivants (salles sur ADE) :&lt;br /&gt;
* Mardi 27/01 après-midi  (Stéphanie Diligent)&lt;br /&gt;
* Lundi 2/02 matin (Emmanuelle Tréhoust)&lt;br /&gt;
* Lundi 9/02 matin (Emmanuelle Tréhoust)&lt;br /&gt;
* Lundi 23/02 matin (Stéphanie Diligent)&lt;br /&gt;
* Mardi 17/03 matin (Stéphanie Diligent+Emmanuelle Tréhoust)&lt;br /&gt;
&lt;br /&gt;
===Projet Biométrie===&lt;br /&gt;
Démarrage : Lundi 26/01 à 8H00-9H45&lt;br /&gt;
&lt;br /&gt;
Voir Laurent Besacier &amp;amp; François Portet&lt;br /&gt;
&lt;br /&gt;
=3I=&lt;br /&gt;
==3I3==&lt;br /&gt;
&lt;br /&gt;
==3I4==&lt;br /&gt;
&lt;br /&gt;
==3I5==&lt;br /&gt;
* Carte d&#039;extension Semtech [[LoRa]] pour [[Arduino]] et [[STM32 Nucleo]] (Didier Donsez)&lt;br /&gt;
&lt;br /&gt;
=M2PGI=&lt;br /&gt;
* Extensions à [[SmartCampus]]&lt;br /&gt;
&lt;br /&gt;
=Bachelor Summer Program=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Année A définir=&lt;br /&gt;
* [[Smart campus augmenté et contributif]]&lt;br /&gt;
* [[Intégration OpenHAB / OpenTele]]&lt;br /&gt;
* [[Client MQTT pour OBD]] sur Android&lt;br /&gt;
* [[Sommeilomètre]] (Michael Perin, Didier Donsez)&lt;br /&gt;
* [[Open DynDNS]]&lt;br /&gt;
* [[IllumiRoom]]&lt;br /&gt;
* [[Emergency mobile app]] Nicolas Palix pour TIS, PRI et RICM&lt;br /&gt;
* [[OwnPOI]] ownCloud plugin and osmand plugin to share POI and favorite positions. Nicolas Palix.&lt;br /&gt;
* [[OwnList]] ownCloud plugin and Android app to share a TODO list. Nicolas Palix.&lt;br /&gt;
* [[floatingimage UPnP feed]] Nicolas Palix&lt;br /&gt;
* [[XBMC Reflexive Remote]] Dynamic remote control for XBMC. Nicolas Palix.&lt;br /&gt;
* [http://intgat.tigress.co.uk/rmy/uml/index.html Zerofree] Portage de zerofree pour d&#039;autres systèmes de fichiers que ext2/3/4 (notamment Unix FS). Voir également la page [http://packages.qa.debian.org/z/zerofree.html QA de Debian]. Nicolas Palix.&lt;br /&gt;
* [[Bracelet électronique de monitoriing de l&#039;alcoolémie]]&lt;br /&gt;
* [[Oxymètre DIY]]&lt;br /&gt;
* [[PinSound]]&lt;br /&gt;
* [[Extension du support STM32Fx-Discovery dans libopencm3]] : Olivier Richard&lt;br /&gt;
* [[Arduino et libopencm3]] : Olivier Richard&lt;br /&gt;
* [[Data Acquisition System et Stm32f4-Discovery]] : Olivier Richard&lt;br /&gt;
* [[Distributed Data Storage System]] : Olivier Richard&lt;br /&gt;
* [[Dashboard based on w2ui]]&lt;br /&gt;
* [[Environnement logiciel pour FabLab]] : Olivier Richard&lt;br /&gt;
* [[Environnement logiciel pour le Live Programming]] : Olivier Richard&lt;br /&gt;
* [[VirtualPinball]]&lt;br /&gt;
* Tondeuse dessinatrice&lt;br /&gt;
* [[ImmersiveDog]] Nicolas Glade, Didier Donsez&lt;br /&gt;
* Projet avec [[OpenROV]] ???? : Didier Donsez&lt;br /&gt;
* [[Sphero]] malin (Michael Périn) (2 etudiants)&lt;br /&gt;
* [[Drone paramoteur]] ???&lt;br /&gt;
* [[IRock : Surveillance Géotechnique LoRa|iRock]]: Plateforme Ubilitics pour la surveillance des risques naturelles (déploiement grande échelle de capteurs [[LoRa]] sur le terrain pour l&#039;observation de glissement de terrain) en commun avec Geotech (à confirmer) : Didier Donsez &amp;amp; Denis Jongmans&lt;br /&gt;
* [[Optimisation de l&#039;énergie pour cyclotouriste électrique]]&lt;br /&gt;
* [[SmartSelfService|Smart Self-Service 2015]] Didier Donsez &amp;amp; Vivien Quema&lt;br /&gt;
* [[Station Météo LoRa]] : contribution au projet [[LoRA-Fabian]] (Didier Donsez)&lt;br /&gt;
&lt;br /&gt;
=Réserve (boite à idées)=&lt;br /&gt;
&lt;br /&gt;
# [[Tag et Paint Ball en réalité augmentée]] (Michaël Périn) &lt;br /&gt;
# [[Passe moi ton fichier]] (Michaël Périn) &lt;br /&gt;
# [[Extensions à Fab Server]] (Jean-Michel Molenaar) sous reserve (CM ou SR)&lt;br /&gt;
# [[Table multijeux de café 2.0]]&lt;br /&gt;
# [[ GPIO_Qemu_RasPI| Emulation des GPIO dans QEMU pour le carte Raspberry Pi]] (Olivier Richard)&lt;br /&gt;
# [[ Qemu et STM32F0-Discovery ]] (Olivier Richard)&lt;br /&gt;
# [[Serrure à clé MIDI multifactorielle]] (Didier Donsez)&lt;br /&gt;
# [[Table interactive musicale]] (Didier Donsez)&lt;br /&gt;
# [[iMailbox]] (Didier Donsez)&lt;br /&gt;
# [[AmILight]] (eclairage d&#039;ambience intelligent) (Didier Donsez)&lt;br /&gt;
# [[PDAmeetPDA]] (synchronisation d&#039;agenda) (Michaël Périn)&lt;br /&gt;
# [[1 000 000 VMs]] (expérimentation d&#039;application distribuée à très grande échelle) (Olivier Richard) (2-3 RICM4)&lt;br /&gt;
# [[Multiple Kinect]] (utilisation simultanée de plusieurs Kinect) (Olivier Richard) (RICM ou 3I)&lt;br /&gt;
# [[Kinect musicale]] (Didier Donsez) (RICM)&lt;br /&gt;
# [[Ktechlab Simavr Arduino | Ktechlab et integration de Simavr(Arduino)]] (Olivier Richard) (2-3 RICM4-SR)&lt;br /&gt;
# Ocaml on AVR (Arduino)&lt;br /&gt;
# Ocaml on Cortex-M3&lt;br /&gt;
# [[Arduino on STM32 Discovery]]&lt;br /&gt;
# [[Reverse Geocache Puzzle Box]]&lt;br /&gt;
# [[OSGi ME]] (Didier Donsez)&lt;br /&gt;
# [[Affichage Etudiant à Polytech]]&lt;br /&gt;
# Synthèse 3D + motion capture Kinect&lt;br /&gt;
# Logiciel d&#039;[[apprentissage du calcul]] sur tablette Android (reconnaissance de chiffres manuscrits)&lt;br /&gt;
# Plancher de verre (saint gobain) à la [http://www.wat.tv/video/mickael-jackson-billie-jean-oewj_2ey2h_.html Mickael Jackson dans Billie Jean] ! woo&lt;br /&gt;
# [[Ktechlab Simavr Arduino | Ktechlab et integration de Simavr(Arduino)]] (Olivier Richard) (2-3 RICM4-SR)&lt;br /&gt;
# [[CNC]]&lt;br /&gt;
# [[Idées en Vrac]]&lt;br /&gt;
# Scheme Everywhere (Olivier Richard) (2-3 RICM4-SR)&lt;br /&gt;
# [[Projet Station Météo]]&lt;br /&gt;
# Ocaml on AVR (Arduino)&lt;br /&gt;
# [[Table interactive musicale]] (Didier Donsez)&lt;br /&gt;
# [[AmILight]] (eclairage d&#039;amnbience intelligent) (Didier Donsez)&lt;br /&gt;
# [[Cube pointeur]] d&#039;activité ingénieur&lt;br /&gt;
# [http://www.instructables.com/id/Puppeteer-Motion-Capture-Costume/ Puppeteer Motion-Capture Costume]&lt;br /&gt;
# [[Musical Staircase]] @ Polytech (Didier Donsez, 1 RICM4 + 1 3I4)&lt;br /&gt;
# [[Total Recall]] (Didier Donsez)&lt;br /&gt;
# [[SoundMachine]]&lt;br /&gt;
# [[IGN-OSM|Importation de données IGN publiques dans OSM]]&lt;br /&gt;
# [[Speed-limit-OSM|Analyse de traces GPX pour déterminer les limitations de vitesse]]&lt;br /&gt;
# [[Multi perceptual cameras]] (Didier Donsez)&lt;br /&gt;
# [[Photomaton 3D]] (Didier Donsez)&lt;br /&gt;
# [[ArduCopter]]&lt;br /&gt;
# [[Parking Intelligent]]&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18757</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18757"/>
		<updated>2014-10-17T12:07:24Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPGPU, GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPGPU, GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calculs graphiques permettant l&#039;affichage sur un écran. Leur architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leur nombre de coeur, les GPU ont gagné en puissance brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent des calculs à hautes performances. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifiques tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grands ensembles de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratisent l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécutés sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grandes solutions.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode est celle présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|right|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
L&#039;un des principaux problème de accélération GPU et qu&#039;ils étaient soit difficile à utiliser (au travers des shader) soit limité à certaines machine de par l’implémentation propre à chaque propriétaire. OpenCl résout ce problème partiellement en offrant un standard inter-constructeur. OpenCl est maintenant disponible dans plusieurs langages, permet à toutes les cartes compatibles d&#039;utiliser GPGPU et d&#039;effectuer des calculs hautes performances. CUDA reste tout d même le plus utilisé pour l&#039;acceleration GPU.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
*Alexandre Chariot, Quelques Applications de la Programmation des Processeurs Graphiques à la Simulation Neuronale et à la Vision par Ordinateur, Thèse, [https://tel.archives-ouvertes.fr/file/index/docid/501212/filename/These_AChariot.pdf]&lt;br /&gt;
&lt;br /&gt;
* [https://software.intel.com/en-us/intel-opencl https://software.intel.com/en-us/intel-opencl]&lt;br /&gt;
&lt;br /&gt;
* [http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/ http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/]&lt;br /&gt;
Permet de comprendre le fonctionnement des ID dans OpenCl&lt;br /&gt;
&lt;br /&gt;
*[http://gpgpu.org/ http://gpgpu.org/]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/registry/cl/specs/opencl-1.2.pdf OpenCl specification]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/ https://www.khronos.org/]&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18756</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18756"/>
		<updated>2014-10-17T12:06:37Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* OpenCl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPGPU, GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPGPU, GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calculs graphiques permettant l&#039;affichage sur un écran. Leur architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leur nombre de coeur, les GPU ont gagné en puissance brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent des calculs à hautes performances. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifiques tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grands ensembles de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratisent l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécutés sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grandes solutions.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode est celle présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|right|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
L&#039;un des principaux problème de accélération GPU et qu&#039;ils étaient soit difficile à utiliser (au travers des shader) soit limité à certaines machine de par l’implémentation propre à chaque propriétaire. OpenCl résout ce problème partiellement en offrant un standard inter-constructeur. OpenCl est maintenant disponible dans plusieurs langages, permet à toutes les cartes compatibles d&#039;utiliser GPGPU et d&#039;effectuer des calculs hautes performances.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
*Alexandre Chariot, Quelques Applications de la Programmation des Processeurs Graphiques à la Simulation Neuronale et à la Vision par Ordinateur, Thèse, [https://tel.archives-ouvertes.fr/file/index/docid/501212/filename/These_AChariot.pdf]&lt;br /&gt;
&lt;br /&gt;
* [https://software.intel.com/en-us/intel-opencl https://software.intel.com/en-us/intel-opencl]&lt;br /&gt;
&lt;br /&gt;
* [http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/ http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/]&lt;br /&gt;
Permet de comprendre le fonctionnement des ID dans OpenCl&lt;br /&gt;
&lt;br /&gt;
*[http://gpgpu.org/ http://gpgpu.org/]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/registry/cl/specs/opencl-1.2.pdf OpenCl specification]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/ https://www.khronos.org/]&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18755</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18755"/>
		<updated>2014-10-17T11:47:59Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPGPU, GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPGPU, GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calculs graphiques permettant l&#039;affichage sur un écran. Leur architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leur nombre de coeur, les GPU ont gagné en puissance brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent des calculs à hautes performances. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifiques tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grands ensembles de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratisent l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécutés sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grandes solutions.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode est celle présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|right|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
L&#039;un des principaux problème de accélération GPU et qu&#039;ils étaient soit difficile à utiliser (au travers des shader) soit limité à certaines machine de par l’implémentation propre à chaque propriétaire. OpenCl résout ce problème partiellement en offrant un standard inter-constructeur. OpenCl est maintenant disponible dans plusieurs langages, permet à toutes les cartes compatibles d&#039;utiliser GPGPU et d&#039;effectuer des calculs hautes performances.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
*Alexandre Chariot, Quelques Applications de la Programmation des Processeurs Graphiques à la Simulation Neuronale et à la Vision par Ordinateur, Thèse, [https://tel.archives-ouvertes.fr/file/index/docid/501212/filename/These_AChariot.pdf]&lt;br /&gt;
&lt;br /&gt;
* [https://software.intel.com/en-us/intel-opencl https://software.intel.com/en-us/intel-opencl]&lt;br /&gt;
&lt;br /&gt;
* [http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/ http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/]&lt;br /&gt;
Permet de comprendre le fonctionnement des ID dans OpenCl&lt;br /&gt;
&lt;br /&gt;
*[http://gpgpu.org/ http://gpgpu.org/]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/registry/cl/specs/opencl-1.2.pdf OpenCl specification]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/ https://www.khronos.org/]&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18754</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18754"/>
		<updated>2014-10-17T11:46:16Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Pre-conditions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPGPU, GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPGPU, GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calculs graphiques permettant l&#039;affichage sur un écran. Leur architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leur nombre de coeur, les GPU ont gagné en puissance brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent des calculs à hautes performances. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifiques tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grands ensembles de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratisent l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécutés sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|right|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
L&#039;un des principaux problème de accélération GPU et qu&#039;ils étaient soit difficile à utiliser (au travers des shader) soit limité à certaines machine de par l’implémentation propre à chaque propriétaire. OpenCl résout ce problème partiellement en offrant un standard inter-constructeur. OpenCl est maintenant disponible dans plusieurs langages, permet à toutes les cartes compatibles d&#039;utiliser GPGPU et d&#039;effectuer des calculs hautes performances.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
*Alexandre Chariot, Quelques Applications de la Programmation des Processeurs Graphiques à la Simulation Neuronale et à la Vision par Ordinateur, Thèse, [https://tel.archives-ouvertes.fr/file/index/docid/501212/filename/These_AChariot.pdf]&lt;br /&gt;
&lt;br /&gt;
* [https://software.intel.com/en-us/intel-opencl https://software.intel.com/en-us/intel-opencl]&lt;br /&gt;
&lt;br /&gt;
* [http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/ http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/]&lt;br /&gt;
Permet de comprendre le fonctionnement des ID dans OpenCl&lt;br /&gt;
&lt;br /&gt;
*[http://gpgpu.org/ http://gpgpu.org/]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/registry/cl/specs/opencl-1.2.pdf OpenCl specification]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/ https://www.khronos.org/]&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18753</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18753"/>
		<updated>2014-10-17T11:45:24Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Motivations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPGPU, GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPGPU, GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calculs graphiques permettant l&#039;affichage sur un écran. Leur architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leur nombre de coeur, les GPU ont gagné en puissance brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent des calculs à hautes performances. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifiques tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grands ensembles de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratisent l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|right|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
L&#039;un des principaux problème de accélération GPU et qu&#039;ils étaient soit difficile à utiliser (au travers des shader) soit limité à certaines machine de par l’implémentation propre à chaque propriétaire. OpenCl résout ce problème partiellement en offrant un standard inter-constructeur. OpenCl est maintenant disponible dans plusieurs langages, permet à toutes les cartes compatibles d&#039;utiliser GPGPU et d&#039;effectuer des calculs hautes performances.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
*Alexandre Chariot, Quelques Applications de la Programmation des Processeurs Graphiques à la Simulation Neuronale et à la Vision par Ordinateur, Thèse, [https://tel.archives-ouvertes.fr/file/index/docid/501212/filename/These_AChariot.pdf]&lt;br /&gt;
&lt;br /&gt;
* [https://software.intel.com/en-us/intel-opencl https://software.intel.com/en-us/intel-opencl]&lt;br /&gt;
&lt;br /&gt;
* [http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/ http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/]&lt;br /&gt;
Permet de comprendre le fonctionnement des ID dans OpenCl&lt;br /&gt;
&lt;br /&gt;
*[http://gpgpu.org/ http://gpgpu.org/]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/registry/cl/specs/opencl-1.2.pdf OpenCl specification]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/ https://www.khronos.org/]&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18752</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18752"/>
		<updated>2014-10-17T11:42:34Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPGPU, GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPGPU, GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calculs graphiques permettant l&#039;affichage sur un écran. Leur architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leur nombre de coeur, les GPU ont gagné en puissance brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|right|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
L&#039;un des principaux problème de accélération GPU et qu&#039;ils étaient soit difficile à utiliser (au travers des shader) soit limité à certaines machine de par l’implémentation propre à chaque propriétaire. OpenCl résout ce problème partiellement en offrant un standard inter-constructeur. OpenCl est maintenant disponible dans plusieurs langages, permet à toutes les cartes compatibles d&#039;utiliser GPGPU et d&#039;effectuer des calculs hautes performances.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
*Alexandre Chariot, Quelques Applications de la Programmation des Processeurs Graphiques à la Simulation Neuronale et à la Vision par Ordinateur, Thèse, [https://tel.archives-ouvertes.fr/file/index/docid/501212/filename/These_AChariot.pdf]&lt;br /&gt;
&lt;br /&gt;
* [https://software.intel.com/en-us/intel-opencl https://software.intel.com/en-us/intel-opencl]&lt;br /&gt;
&lt;br /&gt;
* [http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/ http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/]&lt;br /&gt;
Permet de comprendre le fonctionnement des ID dans OpenCl&lt;br /&gt;
&lt;br /&gt;
*[http://gpgpu.org/ http://gpgpu.org/]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/registry/cl/specs/opencl-1.2.pdf OpenCl specification]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/ https://www.khronos.org/]&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18751</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18751"/>
		<updated>2014-10-17T11:38:44Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Key Words */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPGPU, GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPGPU, GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|right|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
L&#039;un des principaux problème de accélération GPU et qu&#039;ils étaient soit difficile à utiliser (au travers des shader) soit limité à certaines machine de par l’implémentation propre à chaque propriétaire. OpenCl résout ce problème partiellement en offrant un standard inter-constructeur. OpenCl est maintenant disponible dans plusieurs langages, permet à toutes les cartes compatibles d&#039;utiliser GPGPU et d&#039;effectuer des calculs hautes performances.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
*Alexandre Chariot, Quelques Applications de la Programmation des Processeurs Graphiques à la Simulation Neuronale et à la Vision par Ordinateur, Thèse, [https://tel.archives-ouvertes.fr/file/index/docid/501212/filename/These_AChariot.pdf]&lt;br /&gt;
&lt;br /&gt;
* [https://software.intel.com/en-us/intel-opencl https://software.intel.com/en-us/intel-opencl]&lt;br /&gt;
&lt;br /&gt;
* [http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/ http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/]&lt;br /&gt;
Permet de comprendre le fonctionnement des ID dans OpenCl&lt;br /&gt;
&lt;br /&gt;
*[http://gpgpu.org/ http://gpgpu.org/]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/registry/cl/specs/opencl-1.2.pdf OpenCl specification]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/ https://www.khronos.org/]&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18750</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18750"/>
		<updated>2014-10-17T11:38:32Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Mots Clés */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPGPU, GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|right|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
L&#039;un des principaux problème de accélération GPU et qu&#039;ils étaient soit difficile à utiliser (au travers des shader) soit limité à certaines machine de par l’implémentation propre à chaque propriétaire. OpenCl résout ce problème partiellement en offrant un standard inter-constructeur. OpenCl est maintenant disponible dans plusieurs langages, permet à toutes les cartes compatibles d&#039;utiliser GPGPU et d&#039;effectuer des calculs hautes performances.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
*Alexandre Chariot, Quelques Applications de la Programmation des Processeurs Graphiques à la Simulation Neuronale et à la Vision par Ordinateur, Thèse, [https://tel.archives-ouvertes.fr/file/index/docid/501212/filename/These_AChariot.pdf]&lt;br /&gt;
&lt;br /&gt;
* [https://software.intel.com/en-us/intel-opencl https://software.intel.com/en-us/intel-opencl]&lt;br /&gt;
&lt;br /&gt;
* [http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/ http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/]&lt;br /&gt;
Permet de comprendre le fonctionnement des ID dans OpenCl&lt;br /&gt;
&lt;br /&gt;
*[http://gpgpu.org/ http://gpgpu.org/]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/registry/cl/specs/opencl-1.2.pdf OpenCl specification]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/ https://www.khronos.org/]&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18749</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18749"/>
		<updated>2014-10-17T11:37:29Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Notes et références */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|right|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
L&#039;un des principaux problème de accélération GPU et qu&#039;ils étaient soit difficile à utiliser (au travers des shader) soit limité à certaines machine de par l’implémentation propre à chaque propriétaire. OpenCl résout ce problème partiellement en offrant un standard inter-constructeur. OpenCl est maintenant disponible dans plusieurs langages, permet à toutes les cartes compatibles d&#039;utiliser GPGPU et d&#039;effectuer des calculs hautes performances.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
*Alexandre Chariot, Quelques Applications de la Programmation des Processeurs Graphiques à la Simulation Neuronale et à la Vision par Ordinateur, Thèse, [https://tel.archives-ouvertes.fr/file/index/docid/501212/filename/These_AChariot.pdf]&lt;br /&gt;
&lt;br /&gt;
* [https://software.intel.com/en-us/intel-opencl https://software.intel.com/en-us/intel-opencl]&lt;br /&gt;
&lt;br /&gt;
* [http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/ http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/]&lt;br /&gt;
Permet de comprendre le fonctionnement des ID dans OpenCl&lt;br /&gt;
&lt;br /&gt;
*[http://gpgpu.org/ http://gpgpu.org/]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/registry/cl/specs/opencl-1.2.pdf OpenCl specification]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/ https://www.khronos.org/]&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18748</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18748"/>
		<updated>2014-10-17T11:36:39Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Notes et références */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|right|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
L&#039;un des principaux problème de accélération GPU et qu&#039;ils étaient soit difficile à utiliser (au travers des shader) soit limité à certaines machine de par l’implémentation propre à chaque propriétaire. OpenCl résout ce problème partiellement en offrant un standard inter-constructeur. OpenCl est maintenant disponible dans plusieurs langages, permet à toutes les cartes compatibles d&#039;utiliser GPGPU et d&#039;effectuer des calculs hautes performances.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
*Alexandre Chariot, Quelques Applications de la Programmation des Processeurs Graphiques à la Simulation Neuronale et à la Vision par Ordinateur, Thèse, [https://tel.archives-ouvertes.fr/file/index/docid/501212/filename/These_AChariot.pdf]&lt;br /&gt;
&lt;br /&gt;
* [https://software.intel.com/en-us/intel-opencl https://software.intel.com/en-us/intel-opencl]&lt;br /&gt;
&lt;br /&gt;
* [http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/ http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/]&lt;br /&gt;
Permet de comprendre le fonctionnement des ID dans OpenCl&lt;br /&gt;
&lt;br /&gt;
*[http://gpgpu.org/ http://gpgpu.org/]&lt;br /&gt;
&lt;br /&gt;
*[https://www.khronos.org/registry/cl/specs/opencl-1.2.pdf OpenCl specification]&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18747</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18747"/>
		<updated>2014-10-17T11:35:10Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Notes et références */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|right|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
L&#039;un des principaux problème de accélération GPU et qu&#039;ils étaient soit difficile à utiliser (au travers des shader) soit limité à certaines machine de par l’implémentation propre à chaque propriétaire. OpenCl résout ce problème partiellement en offrant un standard inter-constructeur. OpenCl est maintenant disponible dans plusieurs langages, permet à toutes les cartes compatibles d&#039;utiliser GPGPU et d&#039;effectuer des calculs hautes performances.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
*Alexandre Chariot, Quelques Applications de la Programmation des Processeurs Graphiques à la Simulation Neuronale et à la Vision par Ordinateur, Thèse, [https://tel.archives-ouvertes.fr/file/index/docid/501212/filename/These_AChariot.pdf]&lt;br /&gt;
&lt;br /&gt;
* [https://software.intel.com/en-us/intel-opencl https://software.intel.com/en-us/intel-opencl]&lt;br /&gt;
&lt;br /&gt;
* [http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/ http://jorudolph.wordpress.com/2012/02/03/opencl-work-item-ids-globalgrouplocal/]&lt;br /&gt;
Permet de comprendre le fonctionnement des ID dans OpenCl&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18746</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18746"/>
		<updated>2014-10-17T11:32:59Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Notes et références */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|right|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
L&#039;un des principaux problème de accélération GPU et qu&#039;ils étaient soit difficile à utiliser (au travers des shader) soit limité à certaines machine de par l’implémentation propre à chaque propriétaire. OpenCl résout ce problème partiellement en offrant un standard inter-constructeur. OpenCl est maintenant disponible dans plusieurs langages, permet à toutes les cartes compatibles d&#039;utiliser GPGPU et d&#039;effectuer des calculs hautes performances.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
*Alexandre Chariot, Quelques Applications de la Programmation des Processeurs Graphiques à la Simulation Neuronale et à la Vision par Ordinateur, Thèse, [https://tel.archives-ouvertes.fr/file/index/docid/501212/filename/These_AChariot.pdf]&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18745</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18745"/>
		<updated>2014-10-17T11:24:48Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* OpenCl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|right|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
L&#039;un des principaux problème de accélération GPU et qu&#039;ils étaient soit difficile à utiliser (au travers des shader) soit limité à certaines machine de par l’implémentation propre à chaque propriétaire. OpenCl résout ce problème partiellement en offrant un standard inter-constructeur. OpenCl est maintenant disponible dans plusieurs langages, permet à toutes les cartes compatibles d&#039;utiliser GPGPU et d&#039;effectuer des calculs hautes performances.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18742</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18742"/>
		<updated>2014-10-17T11:12:25Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* OpenCl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|right|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18741</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18741"/>
		<updated>2014-10-17T11:11:45Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* OpenCl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|center|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18740</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18740"/>
		<updated>2014-10-17T11:11:20Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* OpenCl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|center|Organisation des executions dans OpenCl]]&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|center|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18739</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18739"/>
		<updated>2014-10-17T11:11:01Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* OpenCl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|center|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18738</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18738"/>
		<updated>2014-10-17T11:10:07Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* OpenCl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter dans des fichiers &amp;quot;.cl&amp;quot; . L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|right|center|Diagramme de classe de l&#039;API]]&lt;br /&gt;
L&#039;API bien qu&#039;initialement prevu en C est aussi decliné en C++. Le diagramme de classe associé permet de mieux comprendre la construction de l&#039;API.&lt;br /&gt;
*Platform : Versions d&#039;OpenCL exécutables sur cette machines&lt;br /&gt;
*Device : Les GPU ou CPU supportant la plateformes.&lt;br /&gt;
*Program : Un fichier .cl une fois compilé.&lt;br /&gt;
*Kernel : L&#039;un des points d&#039;entré du programme.&lt;br /&gt;
*Command Queue : La serie de command que devra executer un &amp;quot;device&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18737</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18737"/>
		<updated>2014-10-17T10:54:09Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté : OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter. L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|thumb|center|Diagramme de classe de l&#039;API]]&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18736</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18736"/>
		<updated>2014-10-17T10:53:52Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
&lt;br /&gt;
La dernière méthode et celle qui est présenté est OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter. L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|thumb|center|Diagramme de classe de l&#039;API]]&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:EA2014_GPGPU_OpenClClasse.jpg&amp;diff=18735</id>
		<title>File:EA2014 GPGPU OpenClClasse.jpg</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:EA2014_GPGPU_OpenClClasse.jpg&amp;diff=18735"/>
		<updated>2014-10-17T10:51:20Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18734</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18734"/>
		<updated>2014-10-17T10:50:44Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* OpenCl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
La dernière méthode et celle qui est présenté est OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter. L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.jpg|300px|thumb|center|Diagramme de classe de l&#039;API]]&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:EA2014_GPGPU_OpenClexecution.jpg&amp;diff=18733</id>
		<title>File:EA2014 GPGPU OpenClexecution.jpg</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:EA2014_GPGPU_OpenClexecution.jpg&amp;diff=18733"/>
		<updated>2014-10-17T10:49:27Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18732</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18732"/>
		<updated>2014-10-17T10:48:57Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* OpenCl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
La dernière méthode et celle qui est présenté est OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter. L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.jpg|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.png|300px|thumb|center|Diagramme de classe de l&#039;API]]&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:EA2014_GPGPU_OpenClSurcouche.png&amp;diff=18731</id>
		<title>File:EA2014 GPGPU OpenClSurcouche.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:EA2014_GPGPU_OpenClSurcouche.png&amp;diff=18731"/>
		<updated>2014-10-17T10:46:43Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:EA2014_GPGPU_algorithme.png&amp;diff=18730</id>
		<title>File:EA2014 GPGPU algorithme.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:EA2014_GPGPU_algorithme.png&amp;diff=18730"/>
		<updated>2014-10-17T10:44:50Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:EA2014_GPGPU_power.png&amp;diff=18729</id>
		<title>File:EA2014 GPGPU power.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:EA2014_GPGPU_power.png&amp;diff=18729"/>
		<updated>2014-10-17T10:42:35Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:EA2014_GPGPU_graph.png&amp;diff=18728</id>
		<title>File:EA2014 GPGPU graph.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:EA2014_GPGPU_graph.png&amp;diff=18728"/>
		<updated>2014-10-17T10:40:44Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18725</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18725"/>
		<updated>2014-10-17T09:54:17Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Principes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
La dernière méthode et celle qui est présenté est OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter. L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.png|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClClasse.png|300px|thumb|center|Diagramme de classe de l&#039;API]]&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18724</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18724"/>
		<updated>2014-10-17T09:53:20Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* OpenCl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
La dernière méthode et celle qui est présenté est OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter. L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClexecution.png|300px|thumb|right|Organisation des executions dans OpenCl]]&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. &lt;br /&gt;
Pour OpenCl, l&#039;unité est le work-item. Pour chaque work-item, une execution de l&#039;algorithme est invoqué. Chaque work-item a une memoire privée.&lt;br /&gt;
Les work-item sont rassemblé dans es work-group. Chaque work-item d&#039;un work-group partagent une mémoire local.&lt;br /&gt;
Le nombre total de work-item est specifié par la taille des données à traiter. Il y a une memoire constante et une memoire globale partagé par tout les work-item.&lt;br /&gt;
&lt;br /&gt;
OpenCl utilise la notion de dimension. Les work-item et les work-group peuvent être déclaré avec des indices dimensionnel plutôt qu&#039;un entier simple.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18723</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18723"/>
		<updated>2014-10-17T09:31:15Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* OpenCl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
La dernière méthode et celle qui est présenté est OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_OpenClSurcouche.png|300px|thumb|right|OpenCl et certaines de ses surcouche]]&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter. L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet d&#039;utiliser GPGPU mais va au delà. Ce standard est conçu pour qu&#039;avec le même code, l’exécution puisse être faite sur un GPU ou un CPU.&lt;br /&gt;
&lt;br /&gt;
===Principes===&lt;br /&gt;
Les programmes crées dans le langage OpenCl sont compilé à l’exécution à l&#039;aide de l&#039;API OpenCl. Cela rappel l&#039;utilisation des shader dans OpenGl.&lt;br /&gt;
Il est possible de créer un pont entre OpenCl et OpenGl pour échanger des objets tel que des buffers.&lt;br /&gt;
&lt;br /&gt;
Le CUDA se basait sur l&#039;unité &amp;quot;Thread&amp;quot; pour exprimé l’exécution parallèle. Pour OpenCl, l&#039;unité est le work-item.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18720</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18720"/>
		<updated>2014-10-17T09:13:17Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* OpenCL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
La dernière méthode et celle qui est présenté est OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCl==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OpenCl ou Open Computing Langage est un standard proposé par le Khronos Group. C&#039;est un consortium industriel dont font parti entre autres Nvidia, ATI, AMD, ARM et Intel.&lt;br /&gt;
&lt;br /&gt;
OpenCL spécifie une API et un langage. Le langage est un dérivé du C et permet d’écrire les algorithme à exécuter. L&#039;API permet de gérer les entré sorties de l&#039;algorithme, la synchronisation et l’exécution.&lt;br /&gt;
OpenCL permet&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18715</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18715"/>
		<updated>2014-10-17T08:53:44Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Pre-conditions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
==Solutions==&lt;br /&gt;
Il y a trois grand type de solution.&lt;br /&gt;
La plus ancienne est celle des shaders qui semblera familière aux utilisateurs d&#039;OpenGL.&lt;br /&gt;
La second méthode est conçu par les constructeurs de GPU. Nvidia a fait CUDA et AMD FireStream par exemple.&lt;br /&gt;
La dernière méthode et celle qui est présenté est OpenCL.&lt;br /&gt;
&lt;br /&gt;
==OpenCL==&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18713</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18713"/>
		<updated>2014-10-17T08:46:02Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Pre-conditions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
Ce type d’exécution rend très efficace le traitement de grands ensembles de données dans le cas où le traitement est identique pour chacun de ces éléments.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18712</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18712"/>
		<updated>2014-10-17T08:36:48Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Synthèse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallèle.&lt;br /&gt;
[[Image:EA2014_GPGPU_algorithme.png|300px|thumb|center|Exécution en série et exécution parallèle]]&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18711</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18711"/>
		<updated>2014-10-17T08:25:53Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Motivations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calculs hautes performances peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallelle&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18710</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18710"/>
		<updated>2014-10-17T08:18:29Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Motivations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calcul hautes performance peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
==Pre-conditions==&lt;br /&gt;
Les algorithmes exécuté sur les GPU ne sont pas les même que ceux sur les CPU. Les algorithmes doivent être re-écris pour une exécution parallelle&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18709</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18709"/>
		<updated>2014-10-17T08:01:06Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Motivations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
Les calcul hautes performance peuvent aussi être fait sur des CPU à l&#039;aide de cluster mais le coût est incomparable. Le rapport prix/puissance baisse régulièrement grâce aux jeux vidéos qui démocratise l&#039;utilisation de GPU.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18708</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18708"/>
		<updated>2014-10-17T07:52:23Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Motivations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU. &lt;br /&gt;
Les principaux domaines sont :&lt;br /&gt;
* Le traitement de l&#039;image&lt;br /&gt;
* Les simulations (Météorologique, simulation neuronal, simulation de fluide etc )&lt;br /&gt;
* Les outils scientifique tel que Matlab&lt;br /&gt;
* Tout ce qui calcul sur de grand ensemble de données (Moteur physique etc..)&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18707</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18707"/>
		<updated>2014-10-17T07:45:01Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18706</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18706"/>
		<updated>2014-10-17T07:44:44Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18705</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18705"/>
		<updated>2014-10-17T07:44:33Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|center|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18704</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18704"/>
		<updated>2014-10-17T07:44:11Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|center|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18703</id>
		<title>EA2014 GPGPU</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2014_GPGPU&amp;diff=18703"/>
		<updated>2014-10-17T07:43:18Z</updated>

		<summary type="html">&lt;p&gt;RICM4-prj14-grp5: /* Synthèse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:EA2014_GPGPU_thumb.png|right|thumb|300px|Logo d&#039;OpenCL]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
* Enseignants : Georges-Pierre Bonneau, Didier Donsez ([[EA2014]])&lt;br /&gt;
* Sujet : GPGPU&lt;br /&gt;
* Date :  17 octobre 2014&lt;br /&gt;
* Auteur : William Bobo &amp;lt;william.bobo@e.ujf-grenoble.fr&amp;gt;&lt;br /&gt;
* Lien vers les slides de la présentation : [[https://slides.com/willbobo/gpgpu Transparents]]&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
GPGPU ou General-purpose Processing on Graphics Processing Units. C&#039;est une méthode permettant l’exécution de calculs hautes performances sur des GPU.&lt;br /&gt;
Ces calculs peuvent ne pas être des calculs graphique pour lesquels ont été conçu les GPU à l&#039;origine.&lt;br /&gt;
Nous prenons OpenCL comme exemple pour l’exécution de calcul sur le GPU. &lt;br /&gt;
== Mots Clés ==&lt;br /&gt;
GPU, calculs hautes performances, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
GPGPU or General-purpose Processing on Graphics Processing Units. It&#039;s a methodology for high-performance computing that uses graphics processing.&lt;br /&gt;
Accelerated algorithms can be others than graphics algorithms that have enabled the development of GPU.&lt;br /&gt;
We will use OpenCL to run algorithms on a GPU.&lt;br /&gt;
== Key Words == &lt;br /&gt;
GPU, HPC, OpenCL&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Les GPU ont été à l&#039;origine concu pour les calcul graphique permettant l&#039;affichage sur un écran. Leurs architecture est différente des CPU, les GPU contiennent beaucoup plus de cœurs permettant la parallélisation d&#039;une même tache. Les écrans se modernisant, les besoins en calcul ont aussi augmenté et avec leurs nombre coeur, les GPU ont gagné en puissant brut comparé aux CPU.&lt;br /&gt;
En 2002, une importante avancée dans la flexibilité de la programmation des GPU facilite les calculs autres que graphiques sur ces circuits.&lt;br /&gt;
C&#039;est la naissance de la méthode GPGPU.&lt;br /&gt;
[[Image:EA2014_GPGPU_graph.png|300px|thumb|right|Puissances de calcul brutes comparées entre GPU NVidia et CPU Intel de 2003 à 2008.]]&lt;br /&gt;
[[Image:EA2014_GPGPU_power.png|300px|thumb|right|Representation schematique des coeurs des CPU et GPU]]&lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
De nombreux domaines nécessitent de calcul à haute performance. Le fait d&#039;utiliser GPGPU pour une application est appelé acceleration GPU.&lt;br /&gt;
&lt;br /&gt;
= Notes et références =&lt;br /&gt;
-&lt;/div&gt;</summary>
		<author><name>RICM4-prj14-grp5</name></author>
	</entry>
</feed>