Skip to content
Snippets Groups Projects
Commit ccdc095b authored by Jeffrey Phillips Freeman's avatar Jeffrey Phillips Freeman :boom:
Browse files

deploying.y

parent c6c3e321
No related branches found
No related tags found
No related merge requests found
Showing
with 4429 additions and 0 deletions
This diff is collapsed.
This diff is collapsed.
<!DOCTYPE html>
<html lang='en'>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'>
<meta content='width=device-width, initial-scale=1' name='viewport'>
<meta content='IE=edge' http-equiv='X-UA-Compatible'>
<meta content='no' name='msapplication-tap-highlight'>
<meta content='Materialize is a modern responsive CSS framework based on Material Design by Google. ' name='description'>
<title>
Aparapi | AddressSpacesUsingBuffers
</title>
<!-- Favicons -->
<link href='/images/favicon/apple-touch-icon-152x152.png' rel='apple-touch-icon-precomposed'>
<meta content='#FFFFFF' name='msapplication-TileColor'>
<meta content='/images/favicon/mstile-144x144.png' name='msapplication-TileImage'>
<link href='/images/favicon/favicon-32x32.png' rel='icon' sizes='32x32'>
<!-- Android 5 Chrome Color -->
<meta content='#EE6E73' name='theme-color'>
<!-- CSS -->
<link href='/stylesheets/highlight.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='/stylesheets/style.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/icon?family=Material+Icons' rel='stylesheet'>
</head>
<body>
<header>
<div class='container'>
<a class='button-collapse top-nav waves-effect waves-light circle hide-on-large-only' data-activates='nav-mobile' href='#'>
<i class='material-icons'>menu</i>
</a>
</div>
<ul class='side-nav fixed' id='nav-mobile'>
<li class='logo'>
<a class='brand-logo' href='http://materializecss.com/' id='logo-container'>
<object data='/images/logo.svg' id='front-page-logo' type='image/svg+xml'>Your browser does not support SVG</object>
</a>
</li>
<li class='search'>
<div class='search-wrapper card'>
<input id='search'>
<i class='material-icons'>search</i>
<div class='search-results'></div>
</div>
</li>
<li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Documentation</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AccessingMultiDimNDRangeProposal.html">AccessingMultiDimNDRangeProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddingLambdasToAparapi.html">AddingLambdasToAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddressSpacesUsingBuffers.html">AddressSpacesUsingBuffers</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiExtensionProposal.html">AparapiExtensionProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiPatterns.html">AparapiPatterns</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/Attribution.html">Attribution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/BuildingNBody.html">BuildingNBody</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ChoosingSpecificDevicesForExecution.html">ChoosingSpecificDevicesForExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ContributionGuide.html">ContributionGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ConvertingBytecodeToOpenCL.html">ConvertingBytecodeToOpenCL</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuide.html">DevelopersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideLinux.html">DevelopersGuideLinux</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideWindows.html">DevelopersGuideWindows</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DeviceProposal.html">DeviceProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/EmulatingMultipleEntrypointsUsingCurrentAPI.html">EmulatingMultipleEntrypointsUsingCurrentAPI</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ExplicitBufferHandling.html">ExplicitBufferHandling</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/FrequentlyAskedQuestions.html">FrequentlyAskedQuestions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranch.html">HSAEnablementOfLambdaBranch</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranchSidebar.html">HSAEnablementOfLambdaBranchSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HowToAddUML.html">HowToAddUML</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/JavaKernelGuidelines.html">JavaKernelGuidelines</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/LIbraryAgentDuality.html">LIbraryAgentDuality</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/MultipleEntryPointSupportProposal.html">MultipleEntryPointSupportProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewFeatures.html">NewFeatures</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewOpenCLBinding.html">NewOpenCLBinding</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PossibleAparapiLambdaSyntaxOptions.html">PossibleAparapiLambdaSyntaxOptions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PrivateMemorySpace.html">PrivateMemorySpace</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelExecution.html">ProfilingKernelExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelsFromEclipse.html">ProfilingKernelsFromEclipse</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/README.html">APARAPI Documentation</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapi.html">SettingUpLinuxHSAMachineForAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapiSidebar.html">SettingUpLinuxHSAMachineForAparapiSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UnitTestGuide.html">UnitTestGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsersGuide.html">UsersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingAparapiLambdaBranchWithHSASimulator.html">UsingAparapiLambdaBranchWithHSASimulator</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingConstantMemory.html">UsingConstantMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingLocalMemory.html">UsingLocalMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingMultiDimExecutionRanges.html">UsingMultiDimExecutionRanges</a></li></ul></li></ul></div></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/">Overview</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Introduction</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/about.html">About</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/getting-started.html">Getting Started</a></li></ul></li></ul></div></li></ul></li>
</ul>
</header>
<main>
<div class='section no-pad-bot' id='index-banner'>
<div class='container'>
<h1 class='header center-on-small-only'>AddressSpacesUsingBuffers</h1>
<div class='row center'>
</div>
</div>
</div>
<div class='container'>
<p><em>Proposal For OpenCL address space support using java Buffers instead of arrays. Updated Dec 8, 2011 by frost.g&hellip;@gmail.com</em>
The general idea is to have a AS<em>PRIMTYPE</em>Buffer for each AS=address space and PRIM=primitive type. Here is an example for LocalFloatBuffer which would be a buffer for floats that got mapped to OpenCL local address space.</p>
<p>As with normal FloatBuffers, the float elements are accessed using get and put methods</p>
<p>Although a LocalFloatBuffer conceptually exists only for the lifetime of a workgroup, it is still constructed in the enclosing Kernel, not in the Kernel.Entry.run method. (Aparapi does not support constructing new objects inside the Kernel.Entry.run method).</p>
<p>A typical declaration would be:</p>
<pre class="highlight plaintext"><code>LocalFloatBuffer locbuf = new LocalFloatBuffer{12);
</code></pre>
<p>The argument 12 here means that 12 floats would be used by each workitem in the workgroup. So the total buffer would be LocalSize*12 floats. Aparapi would at runtime allocate a total local OpenCL buffer to be this size. Note how this removes the need for the programmer to specify localSize anywhere.</p>
<p>Note: For each Kernel.Entry.execute(globalSize) call, the runtime will determine an appropriate workgroup size, also called localSize, depending on the capabilities of the device, and on the globalSize. The localSize will always evenly divide the globalSize, in other words all workgroups for an execute context will be the same size. A workitem can determine localSize by calling getLocalSize().</p>
<p>Because workitems operate simultaneously and in an undetermined order, workitems will generally only use put on its own portion of the LocalFloatBuffer between the LocalBarriers, and will generally only use get outside the LocalBarriers.</p>
<p>Some example code (from NBody) follows. Here each workitem copies a &ldquo;BODY&rdquo; consisting of 4 floats. The global array contains 4*globalSize floats, and we want to iterate thru this global array, copying it into local memory and operating on it there. This will take globalSize/localSize &ldquo;tiles&rdquo;. For each tile, each workitem fills in one &ldquo;BODY&rdquo;&rsquo;s worth or 4 elements</p>
<pre class="highlight plaintext"><code> // outside run method...
final int BODYSIZE = 4;
LocalFloatBuffer pos_xyzm_local = new LocalFloatBuffer(BODYSIZE);
//
// inside run method...
int numTiles = globalSize / localSize;
for (int i = 0; i &lt; numTiles; ++i) {
// load one tile into local memory
int idx = i * localSize + localId; // index into a global memory array
localBarrier();
pos_xyzm_local.put(localId * BODYSIZE + 0, pos_xyzm[idx * BODYSIZE + 0]);
pos_xyzm_local.put(localId * BODYSIZE + 1, pos_xyzm[idx * BODYSIZE + 1]);
pos_xyzm_local.put(localId * BODYSIZE + 2, pos_xyzm[idx * BODYSIZE + 2]);
pos_xyzm_local.put(localId * BODYSIZE + 3, pos_xyzm[idx * BODYSIZE + 3]);
// Synchronize to make sure data is available for processing
localBarrier();
// now the entire LocalFloatBuffer has been filled.
// each workitem might use the entire Buffer
// which consists of localSize BODYs
for (int j = 0; j &lt; localSize; ++j) {
float r_x = pos_xyzm_local.get(j * BODYSIZE + 0) - myPos_x;
float r_y = pos_xyzm_local.get(j * BODYSIZE + 1) - myPos_y;
float r_z = pos_xyzm_local.get(j * BODYSIZE + 2) - myPos_z;
// ...etc
</code></pre>
</div>
</main>
<footer class='page-footer'>
<div class='container'>
<div class='row'>
<div class='col l4 s12'>
<h5 class='white-text'>Help Aparapi Grow</h5>
<p class='grey-text text-lighten-4'>We are a team of volunteers working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.</p>
<form action='https://www.paypal.com/cgi-bin/webscr' id='paypal-donate' method='post' target='_top'>
<input name='cmd' type='hidden' value='_s-xclick'>
<input name='encrypted' type='hidden' value='-----BEGIN PKCS7-----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-----END PKCS7-----'>
<button alt='PayPal - The safer, easier way to pay online!' class='btn waves-effect waves-light red lighten-3' name='action' type='submit'>
Donate Now
</button>
</form>
</div>
<div class='col l4 s12'>
<h5 class='white-text'>Join the Discussion</h5>
<p class='grey-text text-lighten-4'>We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.</p>
<a class='btn waves-effect waves-light red lighten-3' href='https://gitter.im/Syncleus/aparapi' target='_blank'>Chat</a>
</div>
<div class='col l4 s12' style='overflow: hidden;'>
<h5 class='white-text'>Connect</h5>
<iframe allowtransparency='true' frameborder='0' height='30' scrolling='0' src='http://ghbtns.com/github-btn.html?user=Syncleus&amp;repo=aparapi&amp;type=watch&amp;count=true&amp;size=large' width='170'></iframe>
<br>
<a class='twitter-follow-button' data-dnt='true' data-show-count='true' data-size='large' href='https://twitter.com/AparapiLib'>Follow @AparapiLib</a>
<br>
<div class='g-follow' data-annotation='bubble' data-height='24' data-href='https://plus.google.com/102266131584900704956' data-rel='publisher'></div>
</div>
</div>
</div>
<div class='footer-copyright'>
<div class='container'>
© 2016-2017 Syncleus, All rights reserved.
<a class='grey-text text-lighten-4 right' href='https://github.com/Syncleus/aparapi/blob/master/LICENSE'>Apache License v2</a>
</div>
</div>
</footer>
<!-- Scripts -->
<script src='https://code.jquery.com/jquery-2.1.4.min.js'></script>
<script>
if (!window.jQuery) { document.write('<script src="bin/jquery-2.1.1.min.js"><\/script>'); }
</script>
<script src='/javascripts/jquery.timeago.js'></script>
<script src='/javascripts/materialize.min.js'></script>
<script src='/javascripts/lunr.min.js'></script>
<script src='/javascripts/search.js'></script>
<script src='/javascripts/materialize.js'></script>
<script src='/javascripts/init.js'></script>
<!-- Twitter Button -->
<script>
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');
</script>
<!-- Google Plus Button -->
<script async='' defer='defer' src='https://apis.google.com/js/platform.js'></script>
</body>
</html>
This diff is collapsed.
This diff is collapsed.
<!DOCTYPE html>
<html lang='en'>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'>
<meta content='width=device-width, initial-scale=1' name='viewport'>
<meta content='IE=edge' http-equiv='X-UA-Compatible'>
<meta content='no' name='msapplication-tap-highlight'>
<meta content='Materialize is a modern responsive CSS framework based on Material Design by Google. ' name='description'>
<title>
Aparapi | Attribution
</title>
<!-- Favicons -->
<link href='/images/favicon/apple-touch-icon-152x152.png' rel='apple-touch-icon-precomposed'>
<meta content='#FFFFFF' name='msapplication-TileColor'>
<meta content='/images/favicon/mstile-144x144.png' name='msapplication-TileImage'>
<link href='/images/favicon/favicon-32x32.png' rel='icon' sizes='32x32'>
<!-- Android 5 Chrome Color -->
<meta content='#EE6E73' name='theme-color'>
<!-- CSS -->
<link href='/stylesheets/highlight.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='/stylesheets/style.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/icon?family=Material+Icons' rel='stylesheet'>
</head>
<body>
<header>
<div class='container'>
<a class='button-collapse top-nav waves-effect waves-light circle hide-on-large-only' data-activates='nav-mobile' href='#'>
<i class='material-icons'>menu</i>
</a>
</div>
<ul class='side-nav fixed' id='nav-mobile'>
<li class='logo'>
<a class='brand-logo' href='http://materializecss.com/' id='logo-container'>
<object data='/images/logo.svg' id='front-page-logo' type='image/svg+xml'>Your browser does not support SVG</object>
</a>
</li>
<li class='search'>
<div class='search-wrapper card'>
<input id='search'>
<i class='material-icons'>search</i>
<div class='search-results'></div>
</div>
</li>
<li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Documentation</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AccessingMultiDimNDRangeProposal.html">AccessingMultiDimNDRangeProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddingLambdasToAparapi.html">AddingLambdasToAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddressSpacesUsingBuffers.html">AddressSpacesUsingBuffers</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiExtensionProposal.html">AparapiExtensionProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiPatterns.html">AparapiPatterns</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/Attribution.html">Attribution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/BuildingNBody.html">BuildingNBody</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ChoosingSpecificDevicesForExecution.html">ChoosingSpecificDevicesForExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ContributionGuide.html">ContributionGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ConvertingBytecodeToOpenCL.html">ConvertingBytecodeToOpenCL</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuide.html">DevelopersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideLinux.html">DevelopersGuideLinux</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideWindows.html">DevelopersGuideWindows</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DeviceProposal.html">DeviceProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/EmulatingMultipleEntrypointsUsingCurrentAPI.html">EmulatingMultipleEntrypointsUsingCurrentAPI</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ExplicitBufferHandling.html">ExplicitBufferHandling</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/FrequentlyAskedQuestions.html">FrequentlyAskedQuestions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranch.html">HSAEnablementOfLambdaBranch</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranchSidebar.html">HSAEnablementOfLambdaBranchSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HowToAddUML.html">HowToAddUML</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/JavaKernelGuidelines.html">JavaKernelGuidelines</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/LIbraryAgentDuality.html">LIbraryAgentDuality</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/MultipleEntryPointSupportProposal.html">MultipleEntryPointSupportProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewFeatures.html">NewFeatures</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewOpenCLBinding.html">NewOpenCLBinding</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PossibleAparapiLambdaSyntaxOptions.html">PossibleAparapiLambdaSyntaxOptions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PrivateMemorySpace.html">PrivateMemorySpace</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelExecution.html">ProfilingKernelExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelsFromEclipse.html">ProfilingKernelsFromEclipse</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/README.html">APARAPI Documentation</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapi.html">SettingUpLinuxHSAMachineForAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapiSidebar.html">SettingUpLinuxHSAMachineForAparapiSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UnitTestGuide.html">UnitTestGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsersGuide.html">UsersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingAparapiLambdaBranchWithHSASimulator.html">UsingAparapiLambdaBranchWithHSASimulator</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingConstantMemory.html">UsingConstantMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingLocalMemory.html">UsingLocalMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingMultiDimExecutionRanges.html">UsingMultiDimExecutionRanges</a></li></ul></li></ul></div></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/">Overview</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Introduction</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/about.html">About</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/getting-started.html">Getting Started</a></li></ul></li></ul></div></li></ul></li>
</ul>
</header>
<main>
<div class='section no-pad-bot' id='index-banner'>
<div class='container'>
<h1 class='header center-on-small-only'>Attribution</h1>
<div class='row center'>
</div>
</div>
</div>
<div class='container'>
<p><em>Attribution Updated Sep 13, 2011 by frost.g&hellip;@gmail.com</em></p>
<h2>Attribution</h2>
<p>AMD, AMD Radeon, the AMD arrow logo, and combinations thereof are trademarks of Advanced Micro Devices, Inc.</p>
<p>OpenCL is a trademark of Apple Inc used under license to the Khronos Group, Inc.</p>
<p>NVIDIA, the NVIDIA logo, and CUDA are trademarks or registered trademarks of NVIDIA Corporation.</p>
<p>Java , JVM, JDK and “Write Once, Run Anywhere&quot; are trademarks of Oracle and/or its affiliates.</p>
<p>Eclipse and the related logos are a trademark of The Eclipse Foundation in the United States, other countries, or both.</p>
<p>Microsoft, Windows, Visual Studio, Visual Studio Express Edition are trademarks of Microsoft Corporation in the United States, other countries, or both.</p>
<p>Linux is a registered trademark of Linus Torvalds</p>
<p>Ubuntu is a trademark of Canonical Ltd</p>
<p>Red Hat is a registered trademark of Red Hat, Inc. in the United States and other countries.</p>
<p>OpenGL® and the oval logo are trademarks or registered trademarks of Silicon Graphics, Inc. in the United States and/or other countries worldwide.</p>
<p>All other names used in this documentation are for identification purposes only and may be trademarks of their respective owners.</p>
</div>
</main>
<footer class='page-footer'>
<div class='container'>
<div class='row'>
<div class='col l4 s12'>
<h5 class='white-text'>Help Aparapi Grow</h5>
<p class='grey-text text-lighten-4'>We are a team of volunteers working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.</p>
<form action='https://www.paypal.com/cgi-bin/webscr' id='paypal-donate' method='post' target='_top'>
<input name='cmd' type='hidden' value='_s-xclick'>
<input name='encrypted' type='hidden' value='-----BEGIN PKCS7-----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-----END PKCS7-----'>
<button alt='PayPal - The safer, easier way to pay online!' class='btn waves-effect waves-light red lighten-3' name='action' type='submit'>
Donate Now
</button>
</form>
</div>
<div class='col l4 s12'>
<h5 class='white-text'>Join the Discussion</h5>
<p class='grey-text text-lighten-4'>We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.</p>
<a class='btn waves-effect waves-light red lighten-3' href='https://gitter.im/Syncleus/aparapi' target='_blank'>Chat</a>
</div>
<div class='col l4 s12' style='overflow: hidden;'>
<h5 class='white-text'>Connect</h5>
<iframe allowtransparency='true' frameborder='0' height='30' scrolling='0' src='http://ghbtns.com/github-btn.html?user=Syncleus&amp;repo=aparapi&amp;type=watch&amp;count=true&amp;size=large' width='170'></iframe>
<br>
<a class='twitter-follow-button' data-dnt='true' data-show-count='true' data-size='large' href='https://twitter.com/AparapiLib'>Follow @AparapiLib</a>
<br>
<div class='g-follow' data-annotation='bubble' data-height='24' data-href='https://plus.google.com/102266131584900704956' data-rel='publisher'></div>
</div>
</div>
</div>
<div class='footer-copyright'>
<div class='container'>
© 2016-2017 Syncleus, All rights reserved.
<a class='grey-text text-lighten-4 right' href='https://github.com/Syncleus/aparapi/blob/master/LICENSE'>Apache License v2</a>
</div>
</div>
</footer>
<!-- Scripts -->
<script src='https://code.jquery.com/jquery-2.1.4.min.js'></script>
<script>
if (!window.jQuery) { document.write('<script src="bin/jquery-2.1.1.min.js"><\/script>'); }
</script>
<script src='/javascripts/jquery.timeago.js'></script>
<script src='/javascripts/materialize.min.js'></script>
<script src='/javascripts/lunr.min.js'></script>
<script src='/javascripts/search.js'></script>
<script src='/javascripts/materialize.js'></script>
<script src='/javascripts/init.js'></script>
<!-- Twitter Button -->
<script>
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');
</script>
<!-- Google Plus Button -->
<script async='' defer='defer' src='https://apis.google.com/js/platform.js'></script>
</body>
</html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'>
<meta content='width=device-width, initial-scale=1' name='viewport'>
<meta content='IE=edge' http-equiv='X-UA-Compatible'>
<meta content='no' name='msapplication-tap-highlight'>
<meta content='Materialize is a modern responsive CSS framework based on Material Design by Google. ' name='description'>
<title>
Aparapi | BuildingNBody
</title>
<!-- Favicons -->
<link href='/images/favicon/apple-touch-icon-152x152.png' rel='apple-touch-icon-precomposed'>
<meta content='#FFFFFF' name='msapplication-TileColor'>
<meta content='/images/favicon/mstile-144x144.png' name='msapplication-TileImage'>
<link href='/images/favicon/favicon-32x32.png' rel='icon' sizes='32x32'>
<!-- Android 5 Chrome Color -->
<meta content='#EE6E73' name='theme-color'>
<!-- CSS -->
<link href='/stylesheets/highlight.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='/stylesheets/style.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/icon?family=Material+Icons' rel='stylesheet'>
</head>
<body>
<header>
<div class='container'>
<a class='button-collapse top-nav waves-effect waves-light circle hide-on-large-only' data-activates='nav-mobile' href='#'>
<i class='material-icons'>menu</i>
</a>
</div>
<ul class='side-nav fixed' id='nav-mobile'>
<li class='logo'>
<a class='brand-logo' href='http://materializecss.com/' id='logo-container'>
<object data='/images/logo.svg' id='front-page-logo' type='image/svg+xml'>Your browser does not support SVG</object>
</a>
</li>
<li class='search'>
<div class='search-wrapper card'>
<input id='search'>
<i class='material-icons'>search</i>
<div class='search-results'></div>
</div>
</li>
<li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Documentation</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AccessingMultiDimNDRangeProposal.html">AccessingMultiDimNDRangeProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddingLambdasToAparapi.html">AddingLambdasToAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddressSpacesUsingBuffers.html">AddressSpacesUsingBuffers</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiExtensionProposal.html">AparapiExtensionProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiPatterns.html">AparapiPatterns</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/Attribution.html">Attribution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/BuildingNBody.html">BuildingNBody</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ChoosingSpecificDevicesForExecution.html">ChoosingSpecificDevicesForExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ContributionGuide.html">ContributionGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ConvertingBytecodeToOpenCL.html">ConvertingBytecodeToOpenCL</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuide.html">DevelopersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideLinux.html">DevelopersGuideLinux</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideWindows.html">DevelopersGuideWindows</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DeviceProposal.html">DeviceProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/EmulatingMultipleEntrypointsUsingCurrentAPI.html">EmulatingMultipleEntrypointsUsingCurrentAPI</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ExplicitBufferHandling.html">ExplicitBufferHandling</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/FrequentlyAskedQuestions.html">FrequentlyAskedQuestions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranch.html">HSAEnablementOfLambdaBranch</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranchSidebar.html">HSAEnablementOfLambdaBranchSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HowToAddUML.html">HowToAddUML</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/JavaKernelGuidelines.html">JavaKernelGuidelines</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/LIbraryAgentDuality.html">LIbraryAgentDuality</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/MultipleEntryPointSupportProposal.html">MultipleEntryPointSupportProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewFeatures.html">NewFeatures</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewOpenCLBinding.html">NewOpenCLBinding</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PossibleAparapiLambdaSyntaxOptions.html">PossibleAparapiLambdaSyntaxOptions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PrivateMemorySpace.html">PrivateMemorySpace</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelExecution.html">ProfilingKernelExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelsFromEclipse.html">ProfilingKernelsFromEclipse</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/README.html">APARAPI Documentation</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapi.html">SettingUpLinuxHSAMachineForAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapiSidebar.html">SettingUpLinuxHSAMachineForAparapiSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UnitTestGuide.html">UnitTestGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsersGuide.html">UsersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingAparapiLambdaBranchWithHSASimulator.html">UsingAparapiLambdaBranchWithHSASimulator</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingConstantMemory.html">UsingConstantMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingLocalMemory.html">UsingLocalMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingMultiDimExecutionRanges.html">UsingMultiDimExecutionRanges</a></li></ul></li></ul></div></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/">Overview</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Introduction</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/about.html">About</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/getting-started.html">Getting Started</a></li></ul></li></ul></div></li></ul></li>
</ul>
</header>
<main>
<div class='section no-pad-bot' id='index-banner'>
<div class='container'>
<h1 class='header center-on-small-only'>BuildingNBody</h1>
<div class='row center'>
</div>
</div>
</div>
<div class='container'>
<p><em>How to build the NBody example. Updated Nov 11, 2011 by frost.g&hellip;@gmail.com</em></p>
<h2>Building NBody</h2>
<p>The NBody example is located in the/ examples subdirectory under the Aparapi trunk:</p>
<pre class="highlight plaintext"><code>trunk/
...
examples/
...
nbody/
src/java/com.amd.aparapi.nbody/
build.xml
nbody.sh
nbody.bat
</code></pre>
<p>The NBody example requires a little more work to build because it depends on a third party project named ‘JOGL’.</p>
<p>JOGL is a set of OpenGL™ bindings for Java® and the NBody example uses this library to render the particles/bodies (potentially many thousands of them) at runtime. More information about JOGL can be found here http://jogamp.org/jogl/www.</p>
<p>The build.xml file build target will download the jars required to build and run the nbody example if the files do not exist.</p>
<p>To build nbody, perform the following commands.</p>
<pre class="highlight plaintext"><code>C:&gt; ant clean build
</code></pre>
<p>The NBody build.xml file includes a ‘run’ target so you can launch the application using.</p>
<pre class="highlight plaintext"><code>C:&gt; ant run
</code></pre>
<p>Or if you prefer to launch from either the nbody.sh or nbody.bat script.</p>
<p>For Linux® we also need to chmod nbody.sh in order to execute it.</p>
<pre class="highlight plaintext"><code>chmod +x nbody.sh
</code></pre>
<p>The nbody scripts take the execution mode as the first argument, the number of bodies as the second argument, and then the height and width (in pixels).</p>
<p>Windows example:</p>
<pre class="highlight plaintext"><code>C:&gt; nbody GPU 32768 800 800
</code></pre>
<p>Linux example:</p>
<pre class="highlight plaintext"><code>$ ./nbody.sh GPU 32768 800 800
</code></pre>
<p>Attribution</p>
</div>
</main>
<footer class='page-footer'>
<div class='container'>
<div class='row'>
<div class='col l4 s12'>
<h5 class='white-text'>Help Aparapi Grow</h5>
<p class='grey-text text-lighten-4'>We are a team of volunteers working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.</p>
<form action='https://www.paypal.com/cgi-bin/webscr' id='paypal-donate' method='post' target='_top'>
<input name='cmd' type='hidden' value='_s-xclick'>
<input name='encrypted' type='hidden' value='-----BEGIN PKCS7-----MIIHoAYJKoZIhvcNAQcEoIIHkTCCB40CAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYATcKxN8t35TG2x34eY272SuZO3QbGy+BTGIM5DRV6Hmosotzw2TF42ceWmbXb3Gk4Wy5kUgo4TgHExCZHUSlHUl+A9KWLFejotgQJPhbiBsnns3klWbKftA3LEnP/kz/SW7OyBlpluoHoEGb354/aoX3JEctp3akHiZEmD7JyEgjELMAkGBSsOAwIaBQAwggEcBgkqhkiG9w0BBwEwFAYIKoZIhvcNAwcECOGCJwba6JICgIH4RtE1LE3juagKs+swI5tb9Y2LacWo+qn1H1aLKeg57bQMqqcWYvkoO1joYoglPc1h4mO0egZjHPQ6ih0K0IYlXw2SRpNylSlIMUE3GW6smjSSwRhscZfXQYUnmQsfYvkFwoKrlZGf/1u0Q7nwlZ1szIKnDMZ5f+k8xBcM0sMNutn/y9CH6A3zo01gQBIF29+1WYAoQspNAnfWQy3ydV7nbjIA9ThDp2WquWw3EVlvqlvm/3C2AFuH/L4q0ltn3qjkCdzXK0O2jW3TRrzligPkAy6CN0Tw2jGW5GENNC1L92vHFH4kBXUPlhvw39TgoN7/KRUjVoYPYgugggOHMIIDgzCCAuygAwIBAgIBADANBgkqhkiG9w0BAQUFADCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20wHhcNMDQwMjEzMTAxMzE1WhcNMzUwMjEzMTAxMzE1WjCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMFHTt38RMxLXJyO2SmS+Ndl72T7oKJ4u4uw+6awntALWh03PewmIJuzbALScsTS4sZoS1fKciBGoh11gIfHzylvkdNe/hJl66/RGqrj5rFb08sAABNTzDTiqqNpJeBsYs/c2aiGozptX2RlnBktH+SUNpAajW724Nv2Wvhif6sFAgMBAAGjge4wgeswHQYDVR0OBBYEFJaffLvGbxe9WT9S1wob7BDWZJRrMIG7BgNVHSMEgbMwgbCAFJaffLvGbxe9WT9S1wob7BDWZJRroYGUpIGRMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbYIBADAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAIFfOlaagFrl71+jq6OKidbWFSE+Q4FqROvdgIONth+8kSK//Y/4ihuE4Ymvzn5ceE3S/iBSQQMjyvb+s2TWbQYDwcp129OPIbD9epdr4tJOUNiSojw7BHwYRiPh58S1xGlFgHFXwrEBb3dgNbMUa+u4qectsMAXpVHnD9wIyfmHMYIBmjCCAZYCAQEwgZQwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tAgEAMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xNjExMjkyMjA1NTNaMCMGCSqGSIb3DQEJBDEWBBS4i3Exr/pFcKOJy8uKmH+nGIMjqDANBgkqhkiG9w0BAQEFAASBgDAbFZ2jieloeB/0wCAcvYCFAIXmmBaMS5js/byzU5gK7exSTlRMX74IkmHemItaOcw3wyFlu4i118D9K9SbSbFiX9DGDcezGh42u/6G8TuZMwlvmiehwMioTVcm4jWG40YLiv8pJZypfoSx2w4IAFb4na5i/E1qOrwQOpiBho+s-----END PKCS7-----'>
<button alt='PayPal - The safer, easier way to pay online!' class='btn waves-effect waves-light red lighten-3' name='action' type='submit'>
Donate Now
</button>
</form>
</div>
<div class='col l4 s12'>
<h5 class='white-text'>Join the Discussion</h5>
<p class='grey-text text-lighten-4'>We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.</p>
<a class='btn waves-effect waves-light red lighten-3' href='https://gitter.im/Syncleus/aparapi' target='_blank'>Chat</a>
</div>
<div class='col l4 s12' style='overflow: hidden;'>
<h5 class='white-text'>Connect</h5>
<iframe allowtransparency='true' frameborder='0' height='30' scrolling='0' src='http://ghbtns.com/github-btn.html?user=Syncleus&amp;repo=aparapi&amp;type=watch&amp;count=true&amp;size=large' width='170'></iframe>
<br>
<a class='twitter-follow-button' data-dnt='true' data-show-count='true' data-size='large' href='https://twitter.com/AparapiLib'>Follow @AparapiLib</a>
<br>
<div class='g-follow' data-annotation='bubble' data-height='24' data-href='https://plus.google.com/102266131584900704956' data-rel='publisher'></div>
</div>
</div>
</div>
<div class='footer-copyright'>
<div class='container'>
© 2016-2017 Syncleus, All rights reserved.
<a class='grey-text text-lighten-4 right' href='https://github.com/Syncleus/aparapi/blob/master/LICENSE'>Apache License v2</a>
</div>
</div>
</footer>
<!-- Scripts -->
<script src='https://code.jquery.com/jquery-2.1.4.min.js'></script>
<script>
if (!window.jQuery) { document.write('<script src="bin/jquery-2.1.1.min.js"><\/script>'); }
</script>
<script src='/javascripts/jquery.timeago.js'></script>
<script src='/javascripts/materialize.min.js'></script>
<script src='/javascripts/lunr.min.js'></script>
<script src='/javascripts/search.js'></script>
<script src='/javascripts/materialize.js'></script>
<script src='/javascripts/init.js'></script>
<!-- Twitter Button -->
<script>
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');
</script>
<!-- Google Plus Button -->
<script async='' defer='defer' src='https://apis.google.com/js/platform.js'></script>
</body>
</html>
File added
<!DOCTYPE html>
<html lang='en'>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'>
<meta content='width=device-width, initial-scale=1' name='viewport'>
<meta content='IE=edge' http-equiv='X-UA-Compatible'>
<meta content='no' name='msapplication-tap-highlight'>
<meta content='Materialize is a modern responsive CSS framework based on Material Design by Google. ' name='description'>
<title>
Aparapi | ChoosingSpecificDevicesForExecution
</title>
<!-- Favicons -->
<link href='/images/favicon/apple-touch-icon-152x152.png' rel='apple-touch-icon-precomposed'>
<meta content='#FFFFFF' name='msapplication-TileColor'>
<meta content='/images/favicon/mstile-144x144.png' name='msapplication-TileImage'>
<link href='/images/favicon/favicon-32x32.png' rel='icon' sizes='32x32'>
<!-- Android 5 Chrome Color -->
<meta content='#EE6E73' name='theme-color'>
<!-- CSS -->
<link href='/stylesheets/highlight.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='/stylesheets/style.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/icon?family=Material+Icons' rel='stylesheet'>
</head>
<body>
<header>
<div class='container'>
<a class='button-collapse top-nav waves-effect waves-light circle hide-on-large-only' data-activates='nav-mobile' href='#'>
<i class='material-icons'>menu</i>
</a>
</div>
<ul class='side-nav fixed' id='nav-mobile'>
<li class='logo'>
<a class='brand-logo' href='http://materializecss.com/' id='logo-container'>
<object data='/images/logo.svg' id='front-page-logo' type='image/svg+xml'>Your browser does not support SVG</object>
</a>
</li>
<li class='search'>
<div class='search-wrapper card'>
<input id='search'>
<i class='material-icons'>search</i>
<div class='search-results'></div>
</div>
</li>
<li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Documentation</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AccessingMultiDimNDRangeProposal.html">AccessingMultiDimNDRangeProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddingLambdasToAparapi.html">AddingLambdasToAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddressSpacesUsingBuffers.html">AddressSpacesUsingBuffers</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiExtensionProposal.html">AparapiExtensionProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiPatterns.html">AparapiPatterns</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/Attribution.html">Attribution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/BuildingNBody.html">BuildingNBody</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ChoosingSpecificDevicesForExecution.html">ChoosingSpecificDevicesForExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ContributionGuide.html">ContributionGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ConvertingBytecodeToOpenCL.html">ConvertingBytecodeToOpenCL</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuide.html">DevelopersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideLinux.html">DevelopersGuideLinux</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideWindows.html">DevelopersGuideWindows</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DeviceProposal.html">DeviceProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/EmulatingMultipleEntrypointsUsingCurrentAPI.html">EmulatingMultipleEntrypointsUsingCurrentAPI</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ExplicitBufferHandling.html">ExplicitBufferHandling</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/FrequentlyAskedQuestions.html">FrequentlyAskedQuestions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranch.html">HSAEnablementOfLambdaBranch</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranchSidebar.html">HSAEnablementOfLambdaBranchSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HowToAddUML.html">HowToAddUML</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/JavaKernelGuidelines.html">JavaKernelGuidelines</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/LIbraryAgentDuality.html">LIbraryAgentDuality</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/MultipleEntryPointSupportProposal.html">MultipleEntryPointSupportProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewFeatures.html">NewFeatures</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewOpenCLBinding.html">NewOpenCLBinding</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PossibleAparapiLambdaSyntaxOptions.html">PossibleAparapiLambdaSyntaxOptions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PrivateMemorySpace.html">PrivateMemorySpace</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelExecution.html">ProfilingKernelExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelsFromEclipse.html">ProfilingKernelsFromEclipse</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/README.html">APARAPI Documentation</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapi.html">SettingUpLinuxHSAMachineForAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapiSidebar.html">SettingUpLinuxHSAMachineForAparapiSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UnitTestGuide.html">UnitTestGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsersGuide.html">UsersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingAparapiLambdaBranchWithHSASimulator.html">UsingAparapiLambdaBranchWithHSASimulator</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingConstantMemory.html">UsingConstantMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingLocalMemory.html">UsingLocalMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingMultiDimExecutionRanges.html">UsingMultiDimExecutionRanges</a></li></ul></li></ul></div></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/">Overview</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Introduction</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/about.html">About</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/getting-started.html">Getting Started</a></li></ul></li></ul></div></li></ul></li>
</ul>
</header>
<main>
<div class='section no-pad-bot' id='index-banner'>
<div class='container'>
<h1 class='header center-on-small-only'>ChoosingSpecificDevicesForExecution</h1>
<div class='row center'>
</div>
</div>
</div>
<div class='container'>
<p><em>Using the new Device API&rsquo;s to choose Kernel execution on a specific device. Updated Sep 18, 2012 by frost.g&hellip;@gmail.com</em></p>
<p>Previously Aparapi chose the first GPU device when Kernel.execute() was called. This make it easy to execute simple Kernels, but was problematic when users wished finer control over which device should be chosen. Especially when the first device may be unsuitable. We recently added new classes and API&rsquo;s to allow the developer to specify exactly which device we intend to target.</p>
<p>A new Device class has been added. This allows the user to select a specific device; either by calling a helper method Device.firstGPU() or Device.best(). Or by allowing the user to iterate through all devices and choose one based on some other criteria (capabilities? vendor name?).</p>
<p>So selecting the &lsquo;best&rsquo; (most performant) device could be achieved using.</p>
<pre class="highlight plaintext"><code>Device device = Device.best();
</code></pre>
<p>Alternatively if I wanted the first AMD GPU device I might use:-</p>
<pre class="highlight plaintext"><code>Device chosen=null;
for (Device device: devices.getAll()){
if (device.getVendor().contains("AMD") &amp;&amp; device.isGPU()){
chosen = device;
break;
}
}
</code></pre>
<p>A Device can be queried <code>(isGPU(), isOpenCL(), isGroup(), isJava(), getOpenCLPlatform(), getMaxMemory(), getLocalSizes())</code> to yield it&rsquo;s characteristics.</p>
<p>To execute on a specific device we must use the device to create our range.</p>
<pre class="highlight plaintext"><code>Range range = device.createRange2D(width, height);
</code></pre>
<p>This allows the Range to be created with knowledge of the underlying device. So for example device.createRange3D(1024, 1024, 1024, 16, 16, 16) will fail if the device does not allow a local size of (16x16x16).</p>
<p>A range created using a device method captures the device which created it. The range instance has a device field which is set by the device which creates it.</p>
<p>It&rsquo;s as if we had this code</p>
<pre class="highlight plaintext"><code>Range range = Range.create(width, height);
range.setDevice(device);
</code></pre>
<p>So the Range locks the device that it can be used with.</p>
<p>Now when we have a Kernel.</p>
<pre class="highlight plaintext"><code>Kernel kernel = new Kernel(){
@Override public void run(){
...
}
}
</code></pre>
<p>And we then use a device created range.</p>
<pre class="highlight plaintext"><code>Device device = Device.firstGPU();
Kernel kernel = new Kernel(){
@Override public void run(){
// uses input[];
}
};
range = device.createRange2D(1024, 1024);
kernel.execute(range);
</code></pre>
<p>We have forced execution on the first GPU.</p>
</div>
</main>
<footer class='page-footer'>
<div class='container'>
<div class='row'>
<div class='col l4 s12'>
<h5 class='white-text'>Help Aparapi Grow</h5>
<p class='grey-text text-lighten-4'>We are a team of volunteers working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.</p>
<form action='https://www.paypal.com/cgi-bin/webscr' id='paypal-donate' method='post' target='_top'>
<input name='cmd' type='hidden' value='_s-xclick'>
<input name='encrypted' type='hidden' value='-----BEGIN PKCS7-----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-----END PKCS7-----'>
<button alt='PayPal - The safer, easier way to pay online!' class='btn waves-effect waves-light red lighten-3' name='action' type='submit'>
Donate Now
</button>
</form>
</div>
<div class='col l4 s12'>
<h5 class='white-text'>Join the Discussion</h5>
<p class='grey-text text-lighten-4'>We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.</p>
<a class='btn waves-effect waves-light red lighten-3' href='https://gitter.im/Syncleus/aparapi' target='_blank'>Chat</a>
</div>
<div class='col l4 s12' style='overflow: hidden;'>
<h5 class='white-text'>Connect</h5>
<iframe allowtransparency='true' frameborder='0' height='30' scrolling='0' src='http://ghbtns.com/github-btn.html?user=Syncleus&amp;repo=aparapi&amp;type=watch&amp;count=true&amp;size=large' width='170'></iframe>
<br>
<a class='twitter-follow-button' data-dnt='true' data-show-count='true' data-size='large' href='https://twitter.com/AparapiLib'>Follow @AparapiLib</a>
<br>
<div class='g-follow' data-annotation='bubble' data-height='24' data-href='https://plus.google.com/102266131584900704956' data-rel='publisher'></div>
</div>
</div>
</div>
<div class='footer-copyright'>
<div class='container'>
© 2016-2017 Syncleus, All rights reserved.
<a class='grey-text text-lighten-4 right' href='https://github.com/Syncleus/aparapi/blob/master/LICENSE'>Apache License v2</a>
</div>
</div>
</footer>
<!-- Scripts -->
<script src='https://code.jquery.com/jquery-2.1.4.min.js'></script>
<script>
if (!window.jQuery) { document.write('<script src="bin/jquery-2.1.1.min.js"><\/script>'); }
</script>
<script src='/javascripts/jquery.timeago.js'></script>
<script src='/javascripts/materialize.min.js'></script>
<script src='/javascripts/lunr.min.js'></script>
<script src='/javascripts/search.js'></script>
<script src='/javascripts/materialize.js'></script>
<script src='/javascripts/init.js'></script>
<!-- Twitter Button -->
<script>
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');
</script>
<!-- Google Plus Button -->
<script async='' defer='defer' src='https://apis.google.com/js/platform.js'></script>
</body>
</html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'>
<meta content='width=device-width, initial-scale=1' name='viewport'>
<meta content='IE=edge' http-equiv='X-UA-Compatible'>
<meta content='no' name='msapplication-tap-highlight'>
<meta content='Materialize is a modern responsive CSS framework based on Material Design by Google. ' name='description'>
<title>
Aparapi | ContributionGuide
</title>
<!-- Favicons -->
<link href='/images/favicon/apple-touch-icon-152x152.png' rel='apple-touch-icon-precomposed'>
<meta content='#FFFFFF' name='msapplication-TileColor'>
<meta content='/images/favicon/mstile-144x144.png' name='msapplication-TileImage'>
<link href='/images/favicon/favicon-32x32.png' rel='icon' sizes='32x32'>
<!-- Android 5 Chrome Color -->
<meta content='#EE6E73' name='theme-color'>
<!-- CSS -->
<link href='/stylesheets/highlight.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='/stylesheets/style.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/icon?family=Material+Icons' rel='stylesheet'>
</head>
<body>
<header>
<div class='container'>
<a class='button-collapse top-nav waves-effect waves-light circle hide-on-large-only' data-activates='nav-mobile' href='#'>
<i class='material-icons'>menu</i>
</a>
</div>
<ul class='side-nav fixed' id='nav-mobile'>
<li class='logo'>
<a class='brand-logo' href='http://materializecss.com/' id='logo-container'>
<object data='/images/logo.svg' id='front-page-logo' type='image/svg+xml'>Your browser does not support SVG</object>
</a>
</li>
<li class='search'>
<div class='search-wrapper card'>
<input id='search'>
<i class='material-icons'>search</i>
<div class='search-results'></div>
</div>
</li>
<li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Documentation</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AccessingMultiDimNDRangeProposal.html">AccessingMultiDimNDRangeProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddingLambdasToAparapi.html">AddingLambdasToAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddressSpacesUsingBuffers.html">AddressSpacesUsingBuffers</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiExtensionProposal.html">AparapiExtensionProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiPatterns.html">AparapiPatterns</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/Attribution.html">Attribution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/BuildingNBody.html">BuildingNBody</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ChoosingSpecificDevicesForExecution.html">ChoosingSpecificDevicesForExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ContributionGuide.html">ContributionGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ConvertingBytecodeToOpenCL.html">ConvertingBytecodeToOpenCL</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuide.html">DevelopersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideLinux.html">DevelopersGuideLinux</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideWindows.html">DevelopersGuideWindows</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DeviceProposal.html">DeviceProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/EmulatingMultipleEntrypointsUsingCurrentAPI.html">EmulatingMultipleEntrypointsUsingCurrentAPI</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ExplicitBufferHandling.html">ExplicitBufferHandling</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/FrequentlyAskedQuestions.html">FrequentlyAskedQuestions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranch.html">HSAEnablementOfLambdaBranch</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranchSidebar.html">HSAEnablementOfLambdaBranchSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HowToAddUML.html">HowToAddUML</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/JavaKernelGuidelines.html">JavaKernelGuidelines</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/LIbraryAgentDuality.html">LIbraryAgentDuality</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/MultipleEntryPointSupportProposal.html">MultipleEntryPointSupportProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewFeatures.html">NewFeatures</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewOpenCLBinding.html">NewOpenCLBinding</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PossibleAparapiLambdaSyntaxOptions.html">PossibleAparapiLambdaSyntaxOptions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PrivateMemorySpace.html">PrivateMemorySpace</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelExecution.html">ProfilingKernelExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelsFromEclipse.html">ProfilingKernelsFromEclipse</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/README.html">APARAPI Documentation</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapi.html">SettingUpLinuxHSAMachineForAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapiSidebar.html">SettingUpLinuxHSAMachineForAparapiSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UnitTestGuide.html">UnitTestGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsersGuide.html">UsersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingAparapiLambdaBranchWithHSASimulator.html">UsingAparapiLambdaBranchWithHSASimulator</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingConstantMemory.html">UsingConstantMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingLocalMemory.html">UsingLocalMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingMultiDimExecutionRanges.html">UsingMultiDimExecutionRanges</a></li></ul></li></ul></div></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/">Overview</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Introduction</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/about.html">About</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/getting-started.html">Getting Started</a></li></ul></li></ul></div></li></ul></li>
</ul>
</header>
<main>
<div class='section no-pad-bot' id='index-banner'>
<div class='container'>
<h1 class='header center-on-small-only'>ContributionGuide</h1>
<div class='row center'>
</div>
</div>
</div>
<div class='container'>
<p><em>How to contribute (bug fix or features). Updated Sep 13, 2011 by frost.g&hellip;@gmail.com</em></p>
<h2>Contribution Guide</h2>
<p>We welcome all contributions to add new features to Aparapi and make Aparapi more useful and high performing. These guidelines are intended to describe and streamline the contribution process.</p>
<p>A patch can be a bug fix, a new feature, a new JUnit test case or a documentation change.</p>
<p>Only members of the commit team are able to commit changes to the SVN repository.</p>
<p>Only patches submitted through the process described below will be committed to SVN.</p>
<p>The commit team will only applying patches which are submitted via the Aparapi project’s issue list.</p>
<p>http://code.google.com/p/aparapi/issues/list
The current commit team members are:
* Eric Caspole (AMD)
* Tom Deneau (AMD)
* Gary Frost (AMD)</p>
<p>If you would like to be considered for inclusion in the commit team, please send an email to anyone on the team and let them know.</p>
<h2>Submitting a patch</h2>
<p>If the bug or enhancement does not yet appear in the issues list, please take the time add a new issue.</p>
<p>Be sure to include sufficient detail to explain and recreate the bug or to justify the proposed enhancement.</p>
<p>Ensure that your patch/fix does not regress any of existing JUnit tests. The UnitTestGuide wiki page describes how to run the various Aparapi unit tests.</p>
<p>Ensure that your patch does not break any sample or example. Create a patch file (using SVN’s diff command) against a recently updated trunk, do not submit patches against branches. Name your patch file using the following filename convention</p>
<pre class="highlight plaintext"><code> aparapi-&lt;issue id&gt;-&lt;trunk revision id&gt;.patch
</code></pre>
<p>The following shows the sequence for creating a patch for issue number 1234.</p>
<pre class="highlight plaintext"><code>$ cd aparapi-trunk
$ svn update
At revision 10339
$ svn -diff &gt; aparapi-1234-10339.patch
</code></pre>
<p>Attach your patch file to the issue via Issue List.</p>
<h2>Attribution of contributions</h2>
<p>We want to correctly attribute all contributions and will maintain a CREDITS.txt file at the head of the trunk. We discourage including attribution as comments in the code, instead we intend to let the history feature of SVN be the primary method for tracking attributions. When patch is committed the commit team member will update the CREDITS.txt file and apply your patch, then will include your name (and email if you desire) as part of the SVN commit history.</p>
<h2>Contributions made under a different license than the existing BSD derived license</h2>
<p>We cannot accept contributions or patches which are subject to other licenses.</p>
<p>Attribution</p>
</div>
</main>
<footer class='page-footer'>
<div class='container'>
<div class='row'>
<div class='col l4 s12'>
<h5 class='white-text'>Help Aparapi Grow</h5>
<p class='grey-text text-lighten-4'>We are a team of volunteers working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.</p>
<form action='https://www.paypal.com/cgi-bin/webscr' id='paypal-donate' method='post' target='_top'>
<input name='cmd' type='hidden' value='_s-xclick'>
<input name='encrypted' type='hidden' value='-----BEGIN PKCS7-----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-----END PKCS7-----'>
<button alt='PayPal - The safer, easier way to pay online!' class='btn waves-effect waves-light red lighten-3' name='action' type='submit'>
Donate Now
</button>
</form>
</div>
<div class='col l4 s12'>
<h5 class='white-text'>Join the Discussion</h5>
<p class='grey-text text-lighten-4'>We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.</p>
<a class='btn waves-effect waves-light red lighten-3' href='https://gitter.im/Syncleus/aparapi' target='_blank'>Chat</a>
</div>
<div class='col l4 s12' style='overflow: hidden;'>
<h5 class='white-text'>Connect</h5>
<iframe allowtransparency='true' frameborder='0' height='30' scrolling='0' src='http://ghbtns.com/github-btn.html?user=Syncleus&amp;repo=aparapi&amp;type=watch&amp;count=true&amp;size=large' width='170'></iframe>
<br>
<a class='twitter-follow-button' data-dnt='true' data-show-count='true' data-size='large' href='https://twitter.com/AparapiLib'>Follow @AparapiLib</a>
<br>
<div class='g-follow' data-annotation='bubble' data-height='24' data-href='https://plus.google.com/102266131584900704956' data-rel='publisher'></div>
</div>
</div>
</div>
<div class='footer-copyright'>
<div class='container'>
© 2016-2017 Syncleus, All rights reserved.
<a class='grey-text text-lighten-4 right' href='https://github.com/Syncleus/aparapi/blob/master/LICENSE'>Apache License v2</a>
</div>
</div>
</footer>
<!-- Scripts -->
<script src='https://code.jquery.com/jquery-2.1.4.min.js'></script>
<script>
if (!window.jQuery) { document.write('<script src="bin/jquery-2.1.1.min.js"><\/script>'); }
</script>
<script src='/javascripts/jquery.timeago.js'></script>
<script src='/javascripts/materialize.min.js'></script>
<script src='/javascripts/lunr.min.js'></script>
<script src='/javascripts/search.js'></script>
<script src='/javascripts/materialize.js'></script>
<script src='/javascripts/init.js'></script>
<!-- Twitter Button -->
<script>
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');
</script>
<!-- Google Plus Button -->
<script async='' defer='defer' src='https://apis.google.com/js/platform.js'></script>
</body>
</html>
This diff is collapsed.
<!DOCTYPE html>
<html lang='en'>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'>
<meta content='width=device-width, initial-scale=1' name='viewport'>
<meta content='IE=edge' http-equiv='X-UA-Compatible'>
<meta content='no' name='msapplication-tap-highlight'>
<meta content='Materialize is a modern responsive CSS framework based on Material Design by Google. ' name='description'>
<title>
Aparapi | DevelopersGuide
</title>
<!-- Favicons -->
<link href='/images/favicon/apple-touch-icon-152x152.png' rel='apple-touch-icon-precomposed'>
<meta content='#FFFFFF' name='msapplication-TileColor'>
<meta content='/images/favicon/mstile-144x144.png' name='msapplication-TileImage'>
<link href='/images/favicon/favicon-32x32.png' rel='icon' sizes='32x32'>
<!-- Android 5 Chrome Color -->
<meta content='#EE6E73' name='theme-color'>
<!-- CSS -->
<link href='/stylesheets/highlight.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='/stylesheets/style.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/icon?family=Material+Icons' rel='stylesheet'>
</head>
<body>
<header>
<div class='container'>
<a class='button-collapse top-nav waves-effect waves-light circle hide-on-large-only' data-activates='nav-mobile' href='#'>
<i class='material-icons'>menu</i>
</a>
</div>
<ul class='side-nav fixed' id='nav-mobile'>
<li class='logo'>
<a class='brand-logo' href='http://materializecss.com/' id='logo-container'>
<object data='/images/logo.svg' id='front-page-logo' type='image/svg+xml'>Your browser does not support SVG</object>
</a>
</li>
<li class='search'>
<div class='search-wrapper card'>
<input id='search'>
<i class='material-icons'>search</i>
<div class='search-results'></div>
</div>
</li>
<li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Documentation</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AccessingMultiDimNDRangeProposal.html">AccessingMultiDimNDRangeProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddingLambdasToAparapi.html">AddingLambdasToAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddressSpacesUsingBuffers.html">AddressSpacesUsingBuffers</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiExtensionProposal.html">AparapiExtensionProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiPatterns.html">AparapiPatterns</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/Attribution.html">Attribution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/BuildingNBody.html">BuildingNBody</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ChoosingSpecificDevicesForExecution.html">ChoosingSpecificDevicesForExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ContributionGuide.html">ContributionGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ConvertingBytecodeToOpenCL.html">ConvertingBytecodeToOpenCL</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuide.html">DevelopersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideLinux.html">DevelopersGuideLinux</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideWindows.html">DevelopersGuideWindows</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DeviceProposal.html">DeviceProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/EmulatingMultipleEntrypointsUsingCurrentAPI.html">EmulatingMultipleEntrypointsUsingCurrentAPI</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ExplicitBufferHandling.html">ExplicitBufferHandling</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/FrequentlyAskedQuestions.html">FrequentlyAskedQuestions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranch.html">HSAEnablementOfLambdaBranch</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranchSidebar.html">HSAEnablementOfLambdaBranchSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HowToAddUML.html">HowToAddUML</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/JavaKernelGuidelines.html">JavaKernelGuidelines</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/LIbraryAgentDuality.html">LIbraryAgentDuality</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/MultipleEntryPointSupportProposal.html">MultipleEntryPointSupportProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewFeatures.html">NewFeatures</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewOpenCLBinding.html">NewOpenCLBinding</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PossibleAparapiLambdaSyntaxOptions.html">PossibleAparapiLambdaSyntaxOptions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PrivateMemorySpace.html">PrivateMemorySpace</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelExecution.html">ProfilingKernelExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelsFromEclipse.html">ProfilingKernelsFromEclipse</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/README.html">APARAPI Documentation</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapi.html">SettingUpLinuxHSAMachineForAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapiSidebar.html">SettingUpLinuxHSAMachineForAparapiSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UnitTestGuide.html">UnitTestGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsersGuide.html">UsersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingAparapiLambdaBranchWithHSASimulator.html">UsingAparapiLambdaBranchWithHSASimulator</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingConstantMemory.html">UsingConstantMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingLocalMemory.html">UsingLocalMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingMultiDimExecutionRanges.html">UsingMultiDimExecutionRanges</a></li></ul></li></ul></div></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/">Overview</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Introduction</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/about.html">About</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/getting-started.html">Getting Started</a></li></ul></li></ul></div></li></ul></li>
</ul>
</header>
<main>
<div class='section no-pad-bot' id='index-banner'>
<div class='container'>
<h1 class='header center-on-small-only'>DevelopersGuide</h1>
<div class='row center'>
</div>
</div>
</div>
<div class='container'>
<p><em>Aparapi developers guide. Updated Sep 13, 2011 by frost.g&hellip;@gmail.com</em></p>
<h2>Developer Guide</h2>
<p>Although the vast majority of the Aparapi code is Java® we do include some to C++ code (accessed from Java™ via JNI) to interface with existing OpenCL™ C/C++ headers and libraries. Therefore to build Aparapi for a given platform (Microsoft® Windows® 32- or 64- bit and or Linux® 32- or 64- bit) we do require developers to setup a build environment containing both Java® and C++ development tools. In this documentation we will describe the tools required to build Aparapi for the various supported platforms.</p>
<h2>Supported Platforms</h2>
<p>In general Aparapi can be used on any platform currently supported by AMD APP SDK v2.5 or later. Please check the AMD APP SDK site for details on supported platforms and installation help.</p>
<p><a href="http://developer.amd.com/sdks/amdappsdk/downloads/pages/default.aspx" rel="nofollow">http://developer.amd.com/sdks/amdappsdk/downloads/pages/default.aspx</a></p>
<p><a href="http://developer.amd.com/sdks/amdappsdk/downloads/pages/default.aspx" rel="nofollow">http://developer.amd.com/sdks/AMDAPPSDK/assets/AMD<em>APP</em>SDK<em>Installation</em>Notes.pdf</a></p>
<ul>
<li>32-bit Microsoft® Windows® 7</li>
<li>32-bit Microsoft® Windows Vista®</li>
<li>64-bit Microsoft® Windows® 7</li>
<li>64-bit Microsoft® Windows Vista®</li>
<li>32-bit Linux®</li>
<li>64-bit Linux®</li>
</ul>
<p>Clearly we will also depend on platform specific Oracle® Java® JDK 6 components and C++ compilers along with some platform neutral tools (such as SVN, ant and Junit) .</p>
<h2>Platform Specific Developer Guides</h2>
<p>We have broken the Developer Guide into two separate docs. One for Linux® (32- and 64- bit) and another for Microsoft® Windows® (32- and 64- bit). Please follow the appropriate link below.</p>
<p><a href="DevelopersGuideLinux.md" rel="nofollow">DevelopersGuideLinux</a></p>
<p><a href="DevelopersGuideWindows.md" rel="nofollow">DevelopersGuideWindows</a></p>
<p>Attribution</p>
</div>
</main>
<footer class='page-footer'>
<div class='container'>
<div class='row'>
<div class='col l4 s12'>
<h5 class='white-text'>Help Aparapi Grow</h5>
<p class='grey-text text-lighten-4'>We are a team of volunteers working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.</p>
<form action='https://www.paypal.com/cgi-bin/webscr' id='paypal-donate' method='post' target='_top'>
<input name='cmd' type='hidden' value='_s-xclick'>
<input name='encrypted' type='hidden' value='-----BEGIN PKCS7-----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-----END PKCS7-----'>
<button alt='PayPal - The safer, easier way to pay online!' class='btn waves-effect waves-light red lighten-3' name='action' type='submit'>
Donate Now
</button>
</form>
</div>
<div class='col l4 s12'>
<h5 class='white-text'>Join the Discussion</h5>
<p class='grey-text text-lighten-4'>We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.</p>
<a class='btn waves-effect waves-light red lighten-3' href='https://gitter.im/Syncleus/aparapi' target='_blank'>Chat</a>
</div>
<div class='col l4 s12' style='overflow: hidden;'>
<h5 class='white-text'>Connect</h5>
<iframe allowtransparency='true' frameborder='0' height='30' scrolling='0' src='http://ghbtns.com/github-btn.html?user=Syncleus&amp;repo=aparapi&amp;type=watch&amp;count=true&amp;size=large' width='170'></iframe>
<br>
<a class='twitter-follow-button' data-dnt='true' data-show-count='true' data-size='large' href='https://twitter.com/AparapiLib'>Follow @AparapiLib</a>
<br>
<div class='g-follow' data-annotation='bubble' data-height='24' data-href='https://plus.google.com/102266131584900704956' data-rel='publisher'></div>
</div>
</div>
</div>
<div class='footer-copyright'>
<div class='container'>
© 2016-2017 Syncleus, All rights reserved.
<a class='grey-text text-lighten-4 right' href='https://github.com/Syncleus/aparapi/blob/master/LICENSE'>Apache License v2</a>
</div>
</div>
</footer>
<!-- Scripts -->
<script src='https://code.jquery.com/jquery-2.1.4.min.js'></script>
<script>
if (!window.jQuery) { document.write('<script src="bin/jquery-2.1.1.min.js"><\/script>'); }
</script>
<script src='/javascripts/jquery.timeago.js'></script>
<script src='/javascripts/materialize.min.js'></script>
<script src='/javascripts/lunr.min.js'></script>
<script src='/javascripts/search.js'></script>
<script src='/javascripts/materialize.js'></script>
<script src='/javascripts/init.js'></script>
<!-- Twitter Button -->
<script>
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');
</script>
<!-- Google Plus Button -->
<script async='' defer='defer' src='https://apis.google.com/js/platform.js'></script>
</body>
</html>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<!DOCTYPE html>
<html lang='en'>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'>
<meta content='width=device-width, initial-scale=1' name='viewport'>
<meta content='IE=edge' http-equiv='X-UA-Compatible'>
<meta content='no' name='msapplication-tap-highlight'>
<meta content='Materialize is a modern responsive CSS framework based on Material Design by Google. ' name='description'>
<title>
Aparapi | HSAEnablementOfLambdaBranch
</title>
<!-- Favicons -->
<link href='/images/favicon/apple-touch-icon-152x152.png' rel='apple-touch-icon-precomposed'>
<meta content='#FFFFFF' name='msapplication-TileColor'>
<meta content='/images/favicon/mstile-144x144.png' name='msapplication-TileImage'>
<link href='/images/favicon/favicon-32x32.png' rel='icon' sizes='32x32'>
<!-- Android 5 Chrome Color -->
<meta content='#EE6E73' name='theme-color'>
<!-- CSS -->
<link href='/stylesheets/highlight.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='/stylesheets/style.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/icon?family=Material+Icons' rel='stylesheet'>
</head>
<body>
<header>
<div class='container'>
<a class='button-collapse top-nav waves-effect waves-light circle hide-on-large-only' data-activates='nav-mobile' href='#'>
<i class='material-icons'>menu</i>
</a>
</div>
<ul class='side-nav fixed' id='nav-mobile'>
<li class='logo'>
<a class='brand-logo' href='http://materializecss.com/' id='logo-container'>
<object data='/images/logo.svg' id='front-page-logo' type='image/svg+xml'>Your browser does not support SVG</object>
</a>
</li>
<li class='search'>
<div class='search-wrapper card'>
<input id='search'>
<i class='material-icons'>search</i>
<div class='search-results'></div>
</div>
</li>
<li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Documentation</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AccessingMultiDimNDRangeProposal.html">AccessingMultiDimNDRangeProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddingLambdasToAparapi.html">AddingLambdasToAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddressSpacesUsingBuffers.html">AddressSpacesUsingBuffers</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiExtensionProposal.html">AparapiExtensionProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiPatterns.html">AparapiPatterns</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/Attribution.html">Attribution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/BuildingNBody.html">BuildingNBody</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ChoosingSpecificDevicesForExecution.html">ChoosingSpecificDevicesForExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ContributionGuide.html">ContributionGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ConvertingBytecodeToOpenCL.html">ConvertingBytecodeToOpenCL</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuide.html">DevelopersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideLinux.html">DevelopersGuideLinux</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideWindows.html">DevelopersGuideWindows</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DeviceProposal.html">DeviceProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/EmulatingMultipleEntrypointsUsingCurrentAPI.html">EmulatingMultipleEntrypointsUsingCurrentAPI</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ExplicitBufferHandling.html">ExplicitBufferHandling</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/FrequentlyAskedQuestions.html">FrequentlyAskedQuestions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranch.html">HSAEnablementOfLambdaBranch</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranchSidebar.html">HSAEnablementOfLambdaBranchSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HowToAddUML.html">HowToAddUML</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/JavaKernelGuidelines.html">JavaKernelGuidelines</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/LIbraryAgentDuality.html">LIbraryAgentDuality</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/MultipleEntryPointSupportProposal.html">MultipleEntryPointSupportProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewFeatures.html">NewFeatures</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewOpenCLBinding.html">NewOpenCLBinding</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PossibleAparapiLambdaSyntaxOptions.html">PossibleAparapiLambdaSyntaxOptions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PrivateMemorySpace.html">PrivateMemorySpace</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelExecution.html">ProfilingKernelExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelsFromEclipse.html">ProfilingKernelsFromEclipse</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/README.html">APARAPI Documentation</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapi.html">SettingUpLinuxHSAMachineForAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapiSidebar.html">SettingUpLinuxHSAMachineForAparapiSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UnitTestGuide.html">UnitTestGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsersGuide.html">UsersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingAparapiLambdaBranchWithHSASimulator.html">UsingAparapiLambdaBranchWithHSASimulator</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingConstantMemory.html">UsingConstantMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingLocalMemory.html">UsingLocalMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingMultiDimExecutionRanges.html">UsingMultiDimExecutionRanges</a></li></ul></li></ul></div></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/">Overview</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Introduction</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/about.html">About</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/getting-started.html">Getting Started</a></li></ul></li></ul></div></li></ul></li>
</ul>
</header>
<main>
<div class='section no-pad-bot' id='index-banner'>
<div class='container'>
<h1 class='header center-on-small-only'>HSAEnablementOfLambdaBranch</h1>
<div class='row center'>
</div>
</div>
</div>
<div class='container'>
<p><em>Adding HSA Support to Aparapi lambda branch Updated Feb 28, 2014 by frost.g&hellip;@gmail.com</em></p>
<ul>
<li><a href="SettingUpLinuxHSAMachineForAparapi.md" rel="nofollow">How to setup a HSA enabled Linux Platform</a></li>
<li><a href="UsingAparapiLambdaBranchWithHSASimulator.md" rel="nofollow">How to setup a HSA simulator on a Linux Platform</a></li>
</ul>
<p>Recently the HSA Foundation released their ‘Programmers Reference Manual’. This manual is for developers wishing to write code for upcoming HSA compatible devices, it describes the HSA Intermediate Language (HSAIL) along with its binary form (BRIG) and describes how code is expected to execute on a HSA enabled devices.</p>
<p>In many ways we can think of HSAIL as we do Java bytecode. It is a common intermediate form that can be optimized at runtime to execute across a variety of future heterogeneous platforms. HSAIL will greatly simplify the development of software taking advantage of both sequential and parallel compute solutions.</p>
<p>Now that the spec is out, we have started adding HSA support to the Aparapi lambda branch. We believe that HSA combined with the upcoming Java 8 feature lambda will be a natural way to express parallel algorithms which can be executed on the GPU via HSA.</p>
<p>A HSA+Lambda enabled Aparapi will remove many of Aparapi&rsquo;s constraints. HSA allows all of the CPU&rsquo;s memory to be accessed directly from code running on the GPU. This means</p>
<ul>
<li>We no longer need to move data from the host CPU to the GPU.</li>
<li>We are no longer limited to the memory addressable from the GPU</li>
<li>We can access multi-dim arrays efficiently</li>
<li>We can access Java objects directly from the GPU.
These are all substantial benefits.</li>
</ul>
<p>In the existing code (early prototype) we provide access to HSA as a specific device type.</p>
<p>So our ubiquitous &lsquo;squares&rsquo; example will initially be written as:</p>
<pre class="highlight plaintext"><code>int in[] = ..//
int out[] = .../
Device.hsa().forEach(in.length, (i)-&gt;{
out[i] = in[i]*in[i];
});
</code></pre>
<p>You will obviously need a Java 8 compatible JDK (<a href="https://jdk8.java.net/download.html" rel="nofollow">https://jdk8.java.net/download.html</a>) in your path.</p>
<p>We also recommend using IntelliJ which has preliminary support for Java 8 lambda features. You can download the community edition of IntelliJ from <a href="http://www.jetbrains.com/idea/" rel="nofollow">http://www.jetbrains.com/idea/</a></p>
</div>
</main>
<footer class='page-footer'>
<div class='container'>
<div class='row'>
<div class='col l4 s12'>
<h5 class='white-text'>Help Aparapi Grow</h5>
<p class='grey-text text-lighten-4'>We are a team of volunteers working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.</p>
<form action='https://www.paypal.com/cgi-bin/webscr' id='paypal-donate' method='post' target='_top'>
<input name='cmd' type='hidden' value='_s-xclick'>
<input name='encrypted' type='hidden' value='-----BEGIN PKCS7-----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-----END PKCS7-----'>
<button alt='PayPal - The safer, easier way to pay online!' class='btn waves-effect waves-light red lighten-3' name='action' type='submit'>
Donate Now
</button>
</form>
</div>
<div class='col l4 s12'>
<h5 class='white-text'>Join the Discussion</h5>
<p class='grey-text text-lighten-4'>We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.</p>
<a class='btn waves-effect waves-light red lighten-3' href='https://gitter.im/Syncleus/aparapi' target='_blank'>Chat</a>
</div>
<div class='col l4 s12' style='overflow: hidden;'>
<h5 class='white-text'>Connect</h5>
<iframe allowtransparency='true' frameborder='0' height='30' scrolling='0' src='http://ghbtns.com/github-btn.html?user=Syncleus&amp;repo=aparapi&amp;type=watch&amp;count=true&amp;size=large' width='170'></iframe>
<br>
<a class='twitter-follow-button' data-dnt='true' data-show-count='true' data-size='large' href='https://twitter.com/AparapiLib'>Follow @AparapiLib</a>
<br>
<div class='g-follow' data-annotation='bubble' data-height='24' data-href='https://plus.google.com/102266131584900704956' data-rel='publisher'></div>
</div>
</div>
</div>
<div class='footer-copyright'>
<div class='container'>
© 2016-2017 Syncleus, All rights reserved.
<a class='grey-text text-lighten-4 right' href='https://github.com/Syncleus/aparapi/blob/master/LICENSE'>Apache License v2</a>
</div>
</div>
</footer>
<!-- Scripts -->
<script src='https://code.jquery.com/jquery-2.1.4.min.js'></script>
<script>
if (!window.jQuery) { document.write('<script src="bin/jquery-2.1.1.min.js"><\/script>'); }
</script>
<script src='/javascripts/jquery.timeago.js'></script>
<script src='/javascripts/materialize.min.js'></script>
<script src='/javascripts/lunr.min.js'></script>
<script src='/javascripts/search.js'></script>
<script src='/javascripts/materialize.js'></script>
<script src='/javascripts/init.js'></script>
<!-- Twitter Button -->
<script>
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');
</script>
<!-- Google Plus Button -->
<script async='' defer='defer' src='https://apis.google.com/js/platform.js'></script>
</body>
</html>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'>
<meta content='width=device-width, initial-scale=1' name='viewport'>
<meta content='IE=edge' http-equiv='X-UA-Compatible'>
<meta content='no' name='msapplication-tap-highlight'>
<meta content='Materialize is a modern responsive CSS framework based on Material Design by Google. ' name='description'>
<title>
Aparapi | HSAEnablementOfLambdaBranchSidebar
</title>
<!-- Favicons -->
<link href='/images/favicon/apple-touch-icon-152x152.png' rel='apple-touch-icon-precomposed'>
<meta content='#FFFFFF' name='msapplication-TileColor'>
<meta content='/images/favicon/mstile-144x144.png' name='msapplication-TileImage'>
<link href='/images/favicon/favicon-32x32.png' rel='icon' sizes='32x32'>
<!-- Android 5 Chrome Color -->
<meta content='#EE6E73' name='theme-color'>
<!-- CSS -->
<link href='/stylesheets/highlight.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='/stylesheets/style.css' media='screen,projection' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/icon?family=Material+Icons' rel='stylesheet'>
</head>
<body>
<header>
<div class='container'>
<a class='button-collapse top-nav waves-effect waves-light circle hide-on-large-only' data-activates='nav-mobile' href='#'>
<i class='material-icons'>menu</i>
</a>
</div>
<ul class='side-nav fixed' id='nav-mobile'>
<li class='logo'>
<a class='brand-logo' href='http://materializecss.com/' id='logo-container'>
<object data='/images/logo.svg' id='front-page-logo' type='image/svg+xml'>Your browser does not support SVG</object>
</a>
</li>
<li class='search'>
<div class='search-wrapper card'>
<input id='search'>
<i class='material-icons'>search</i>
<div class='search-results'></div>
</div>
</li>
<li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Documentation</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AccessingMultiDimNDRangeProposal.html">AccessingMultiDimNDRangeProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddingLambdasToAparapi.html">AddingLambdasToAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AddressSpacesUsingBuffers.html">AddressSpacesUsingBuffers</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiExtensionProposal.html">AparapiExtensionProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/AparapiPatterns.html">AparapiPatterns</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/Attribution.html">Attribution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/BuildingNBody.html">BuildingNBody</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ChoosingSpecificDevicesForExecution.html">ChoosingSpecificDevicesForExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ContributionGuide.html">ContributionGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ConvertingBytecodeToOpenCL.html">ConvertingBytecodeToOpenCL</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuide.html">DevelopersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideLinux.html">DevelopersGuideLinux</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DevelopersGuideWindows.html">DevelopersGuideWindows</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/DeviceProposal.html">DeviceProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/EmulatingMultipleEntrypointsUsingCurrentAPI.html">EmulatingMultipleEntrypointsUsingCurrentAPI</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ExplicitBufferHandling.html">ExplicitBufferHandling</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/FrequentlyAskedQuestions.html">FrequentlyAskedQuestions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranch.html">HSAEnablementOfLambdaBranch</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HSAEnablementOfLambdaBranchSidebar.html">HSAEnablementOfLambdaBranchSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/HowToAddUML.html">HowToAddUML</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/JavaKernelGuidelines.html">JavaKernelGuidelines</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/LIbraryAgentDuality.html">LIbraryAgentDuality</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/MultipleEntryPointSupportProposal.html">MultipleEntryPointSupportProposal</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewFeatures.html">NewFeatures</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/NewOpenCLBinding.html">NewOpenCLBinding</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PossibleAparapiLambdaSyntaxOptions.html">PossibleAparapiLambdaSyntaxOptions</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/PrivateMemorySpace.html">PrivateMemorySpace</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelExecution.html">ProfilingKernelExecution</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/ProfilingKernelsFromEclipse.html">ProfilingKernelsFromEclipse</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/README.html">APARAPI Documentation</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapi.html">SettingUpLinuxHSAMachineForAparapi</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/SettingUpLinuxHSAMachineForAparapiSidebar.html">SettingUpLinuxHSAMachineForAparapiSidebar</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UnitTestGuide.html">UnitTestGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsersGuide.html">UsersGuide</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingAparapiLambdaBranchWithHSASimulator.html">UsingAparapiLambdaBranchWithHSASimulator</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingConstantMemory.html">UsingConstantMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingLocalMemory.html">UsingLocalMemory</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/documentation/UsingMultiDimExecutionRanges.html">UsingMultiDimExecutionRanges</a></li></ul></li></ul></div></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/">Overview</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a class='collapsible-header waves-effect waves-teal'>Introduction</a><div class='collapsible-body'><ul><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/about.html">About</a></li></ul></li><li class='no-padding'><ul class='collapsible collapsible-accordion'><li class='bold'><a href="/introduction/getting-started.html">Getting Started</a></li></ul></li></ul></div></li></ul></li>
</ul>
</header>
<main>
<div class='section no-pad-bot' id='index-banner'>
<div class='container'>
<h1 class='header center-on-small-only'>HSAEnablementOfLambdaBranchSidebar</h1>
<div class='row center'>
</div>
</div>
</div>
<div class='container'>
<p><em>Sidebar for HSAEnablementOfLambdaBranchAparapi</em></p>
<p><a href="SettingUpLinuxHSAMachineForAparapi.md" rel="nofollow">How to setup a HSA enabled Linux Platform</a></p>
<p><a href="UsingAparapiLambdaBranchWithHSASimulator.md" rel="nofollow">How to setup a HSA simulator on a Linux Platform</a></p>
</div>
</main>
<footer class='page-footer'>
<div class='container'>
<div class='row'>
<div class='col l4 s12'>
<h5 class='white-text'>Help Aparapi Grow</h5>
<p class='grey-text text-lighten-4'>We are a team of volunteers working on this project like it's our full time job. Any amount would help support and continue development on this project and is greatly appreciated.</p>
<form action='https://www.paypal.com/cgi-bin/webscr' id='paypal-donate' method='post' target='_top'>
<input name='cmd' type='hidden' value='_s-xclick'>
<input name='encrypted' type='hidden' value='-----BEGIN PKCS7-----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-----END PKCS7-----'>
<button alt='PayPal - The safer, easier way to pay online!' class='btn waves-effect waves-light red lighten-3' name='action' type='submit'>
Donate Now
</button>
</form>
</div>
<div class='col l4 s12'>
<h5 class='white-text'>Join the Discussion</h5>
<p class='grey-text text-lighten-4'>We have a Gitter chat room set up where you can talk directly with us. Come in and discuss new features, future goals, general problems or questions, or anything else you can think of.</p>
<a class='btn waves-effect waves-light red lighten-3' href='https://gitter.im/Syncleus/aparapi' target='_blank'>Chat</a>
</div>
<div class='col l4 s12' style='overflow: hidden;'>
<h5 class='white-text'>Connect</h5>
<iframe allowtransparency='true' frameborder='0' height='30' scrolling='0' src='http://ghbtns.com/github-btn.html?user=Syncleus&amp;repo=aparapi&amp;type=watch&amp;count=true&amp;size=large' width='170'></iframe>
<br>
<a class='twitter-follow-button' data-dnt='true' data-show-count='true' data-size='large' href='https://twitter.com/AparapiLib'>Follow @AparapiLib</a>
<br>
<div class='g-follow' data-annotation='bubble' data-height='24' data-href='https://plus.google.com/102266131584900704956' data-rel='publisher'></div>
</div>
</div>
</div>
<div class='footer-copyright'>
<div class='container'>
© 2016-2017 Syncleus, All rights reserved.
<a class='grey-text text-lighten-4 right' href='https://github.com/Syncleus/aparapi/blob/master/LICENSE'>Apache License v2</a>
</div>
</div>
</footer>
<!-- Scripts -->
<script src='https://code.jquery.com/jquery-2.1.4.min.js'></script>
<script>
if (!window.jQuery) { document.write('<script src="bin/jquery-2.1.1.min.js"><\/script>'); }
</script>
<script src='/javascripts/jquery.timeago.js'></script>
<script src='/javascripts/materialize.min.js'></script>
<script src='/javascripts/lunr.min.js'></script>
<script src='/javascripts/search.js'></script>
<script src='/javascripts/materialize.js'></script>
<script src='/javascripts/init.js'></script>
<!-- Twitter Button -->
<script>
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');
</script>
<!-- Google Plus Button -->
<script async='' defer='defer' src='https://apis.google.com/js/platform.js'></script>
</body>
</html>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment