(4888,7,'2014-02-10 08:18:25','2014-02-10 08:18:25','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL[/custom_headline][gap size=\"12%\"][button  class=\"x-btn-custom-type\" type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" class=\"x-btn-custom-type\"]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"10%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.[</span><span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"]<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"CUDAandOpenCL\"]</span>\r\n\r\n[column type=\"one-half\"][gap size=\"15%\"]\r\n\r\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\"><img class=\"aligncenter\" alt=\"CUDA logo\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\" width=\"231\" height=\"140\" /></a>\r\n\r\n<img class=\"aligncenter\" alt=\"OpenCL\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/OpenCLLogo_678x452.png\" width=\"326\" height=\"217\" />\r\n\r\n[/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] ArrayFire for CUDA and OpenCL[/custom_headline]\r\n\r\nArrayFire supports CUDA-capable NVIDIA GPUs and most OpenCL devices, including AMD GPUs/APUs and Intel coprocessors. It also supports other OpenCL devices from ARM and Qualcomm.<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[/content_band][content_band id=\"documentation\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"documentation\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"]Documentation[/custom_headline]\r\n\r\n<strong>ArrayFire for C, C++, and Fortran</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/c\" target=\"_blank\">CUDA &amp; OpenCL C/C++</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/fortran\" target=\"_blank\">CUDA &amp; OpenCL Fortran</a></li>\r\n</ul>\r\n<strong>User Forums</strong>\r\nEvery post gets a response from ArrayFire engineers.\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://forums.accelereyes.com/\" target=\"_blank\">User Forums</a></li>\r\n</ul>\r\n<strong>Introductory Demo Videos</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=1\" target=\"_blank\">ArrayFire Overview</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=2\" target=\"_blank\">ArrayFire Demo</a></li>\r\n</ul>\r\n[/column][column type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/gears1-e1391783830561.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"whitepapers\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ]Whitepapers[/custom_headline]\r\n<p style=\"text-align: center;\"><img class=\"aligncenter  wp-image-4830\" alt=\"Whitepaper 1\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-1.png\" width=\"466\" height=\"374\" /></p>\r\n&nbsp;\r\n\r\n[/column]\r\n<p style=\"text-align: left;\">[column type=\"one-half\"]<img class=\"aligncenter  wp-image-4831\" alt=\"Whitepaper 2\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-2.png\" width=\"442\" height=\"304\" />[/column][column type=\"one-half\" last=\"true\"][/content_band]</p>\r\n[content_band inner_container=\"true\"  no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"benchmarks\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\" ]Benchmarks[/custom_headline]\r\n\r\nAll benchmarks were performed on a NVIDIA Tesla C2050 with an Intel i7-950 processor. The benchmarks compare ArrayFire with several popular CPU-based acceleration libraries, including <a href=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.[/column]\r\n\r\n[column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Benchmark-guy-torso-e1391784056150.png\"][/column]\r\n\r\n[column type=\"one-fifth\"][/column][column type=\"three-fifths\"][tab_nav type=\"four-up\" ] [tab_nav_item title=\"Base\" active=\"true\"] [tab_nav_item title=\"Linear Algebra\"] [tab_nav_item title=\"Convolution\"][tab_nav_item title=\"Utility\"][/tab_nav] [tabs] [tab active=\"true\"]<img class=\"aligncenter\" alt=\"Matrix Multiply\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_multiply-1024x730.png\" width=\"569\" height=\"405\" />[line]<img class=\"aligncenter\" alt=\"Matrix Transpose\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_transpose-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"FFT\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/fft-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [tab]<img class=\"aligncenter\" alt=\"LU\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/lu-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"SVD\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/svd-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Solve\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/solve-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"Convs\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/convs-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Conv\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/conv-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"sum\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sum-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"sort\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sort-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"scan\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/scan-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [/tabs][/column][column type=\"one-fifth\" last=\"true\"][/column][/content_band]\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirefree\"]</span>\r\n<div id=\"arrayfirefree\"></div>\r\n[column type=\"one-half\"][/column][column type=\"one-fourth\"][custom_headline type=\"center\" level=\"h3\"]ArrayFire Free[/custom_headline][/column][column type=\"one-fourth\" last=\"true\"][/column][column type=\"one-fourth\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/right-leaning-e1391788779101.png\"][/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Functions[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Basic Operations</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Arithmetic</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Signal Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Image Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Statistics</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Visualization</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Hardware[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] CUDA</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] OpenCL</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Languages[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] C/C++</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Fortran</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Advanced[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] GFOR Loop</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\" last=\"true\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Platforms[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Windows</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Linux</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Mac</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Data Types[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] All types</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Support[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] Forums</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirepro\"]\r\n<div id=\"arrayfirepro\"></div>\r\n[pricing_table  columns=\"3\"][pricing_table_column  featured=\"false\" title=\"ArrayFire Developer\" currency=\"$\" price=\"499 / year\" interval=\"$149 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item  type=\"times-circle\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"times-circle\"] Linear algebra [/icon_list_item] [icon_list_item type=\"times-circle\"] Sparse matrices [/icon_list_item][icon_list_item type=\"times-circle\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"true\" featured_sub=\"Most Popular\" title=\"ArrayFire Pro\" currency=\"$\" price=\"1,499 / year\" interval=\"$525 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"] Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; counsulting [/icon_list_item] [/icon_list] [button href=\"#\"]Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"false\" title=\"ArrayFire Enterprise\" currency=\"$\" price=\"2,999 / year\" interval=\"$1,049 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"]Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support[/icon_list_item][icon_list_item type=\"star\"]Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [/pricing_table] [/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\" none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"consulting\"]\r\n<div id=\"consulting\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"  ] GPU Consulting Services [/custom_headline]\r\n\r\nArrayFire provides GPU coding services. Hire us to accelerate your code.\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re sure that we can tackle your code too. [/column]\r\n\r\n[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"starter\"]\r\n<div id=\"starter\"></div>\r\n[column type=\"one-half\" last=\"false\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] Starter Package ($500)¹ [/custom_headline]\r\n\r\nHire us for 1-day. We set you up with one engineer dedicated for a full day, as well as support from senior and test engineers throughout the day. Here\'s how it works:\r\n<ul>\r\n	<li>Initial phone call (click \"Talk to Us\" below to get started)</li>\r\n	<li>You send us your code or algorithm</li>\r\n	<li>We analyze your code for potential GPU benefit</li>\r\n	<li>We accelerate as much of the code as is possible within the 1-day effort, applying our extensive GPU software libraries</li>\r\n	<li>We produce a final report, along with code</li>\r\n</ul>\r\nThe final report outlines the best approach to follow for full GPU-acceleration of your code.\r\n<h6>¹ Limit one (1) per customer.[/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou.png\"][/column][/content_band]</h6>\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"]\r\n<div id=\"customcoding\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ] Coding Work (Custom) [/custom_headline]\r\n\r\nHire us immediately to accelerate your code.\r\n\r\nWhy Choose Us?\r\n<ul>\r\n	<li>Deep experience, already servicing thousands of customers</li>\r\n	<li>Quality work, with leading GPU software</li>\r\n	<li>Efficient delivery, with ArrayFire\'s extensive code base we can deliver results fast</li>\r\n	<li>Proven, we make customers happy through faster code</li>\r\n</ul>\r\nOur Strengths\r\n<ul>\r\n	<li>Excellence in GPU code</li>\r\n	<li>Well-written, efficient C, C++, Fortran, Java, or .NET</li>\r\n	<li>Application porting and integration</li>\r\n	<li>Tuning software to peak hardware performance</li>\r\n	<li>Scalability of algorithms to handle enterprise-level programs</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\" ]Training[/custom_headline]\r\n\r\n<span style=\"line-height: 1.5em;\">Attendees will receive the latest industry knowledge and techniques for GPU computing in CUDA and OpenCL. Check out our [extra href=\"#example\" title=\"Training Course Syllabus\" info=\"popover\" info_place=\"top\" info_trigger=\"click\" info_content=\"</span>\r\n\r\n&nbsp;\r\n<h5>DAY 1, INTRODUCTION</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nParallel Computing Overview\r\nProgramming Models\r\nArchitectures Supported\r\nBasic Dataset Mapping Techniques\r\nAcceleration Libraries, ArrayFire\r\nAsynchronos Operation\r\nPortability\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nA Simple Kernel\r\nEquivalent ArrayFire Example\r\nMonte Carlo Pi Estimation\r\nUsing Libraries\r\nTiming\r\nPorting Code for Multiple Devices\r\n<h5>DAY 3, SCALING</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nMulti-Device Use Cases\r\nHeterogeneous Computing\r\nScaling Across Multiple Devices\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nOut of Core Problems: Matrix Multiply\r\nTask Level Parallelism: Optimization\r\nArrayFire Multi-Device\r\n<h5>DAY 2, OPTIMIZATION</h5>\r\n<strong>Lectures:\r\n</strong>Architecture\r\nMemory Models\r\nAdvanced Mapping Techniques\r\nArchitecture Specific Limitations and Optimizations\r\nArrayFire: Lazy Evaluation and Code Vectorization\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:\r\n</strong>Matrix Transpose\r\nOptimization Using Shared Memory\r\nMedian Filter\r\nOptimization Using Constant Memory\r\nCommand Queues Example\r\nArrayFire Example: Nearest Neighbor Algorithm\r\n\r\n&nbsp;\r\n<h5>DAY 4, ALGORITHM PROBLEMS</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures and Practice:\r\n</strong>Reductions\r\nScan Algorithms\r\nSort\r\nConvolution\r\nCustomer-Specific Problem\"]syllabus[/extra]!\r\n\r\nArrayFire offers up to four days of specialized GPU training in CUDA and OpenCL programming. Register for a general course, or schedule a course dedicated for your organization. We can travel to you, or you can travel to our Atlanta office. We recommend that attendees have a working knowledge of C/C++ in order to gain the most from the training courses.[/column][column type=\"one-third\" last=\"false\"]\r\n\r\n<strong>Fee includes:</strong>\r\n<ul>\r\n	<li>Instruction by an excellent and interesting expert. Many hands-on exercises.</li>\r\n	<li>Use of a laptop with CUDA and OpenCL capable GPUs and CPUs</li>\r\n	<li>Choice of Linux or Windows operating system</li>\r\n	<li>Printed manual of lecture material</li>\r\n	<li>Electronic copy of programming exercises</li>\r\n	<li>Certificate of Completion[/column][column type=\"one-third\" last=\"true\"][/column]</li>\r\n</ul>\r\n[column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" looks_like=\"h3 ]Upcoming Courses[/custom_headline]\r\n\r\n<strong>CUDA</strong>\r\n\r\n<strong>OpenCL</strong>\r\n\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 08:18:25','2014-02-10 08:18:25','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4889,7,'2014-02-10 08:18:56','2014-02-10 08:18:56','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  class=\"x-btn-custom-type\" type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" class=\"x-btn-custom-type\"]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"10%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.[</span><span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"]<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"CUDAandOpenCL\"]</span>\r\n\r\n[column type=\"one-half\"][gap size=\"15%\"]\r\n\r\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\"><img class=\"aligncenter\" alt=\"CUDA logo\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\" width=\"231\" height=\"140\" /></a>\r\n\r\n<img class=\"aligncenter\" alt=\"OpenCL\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/OpenCLLogo_678x452.png\" width=\"326\" height=\"217\" />\r\n\r\n[/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] ArrayFire for CUDA and OpenCL[/custom_headline]\r\n\r\nArrayFire supports CUDA-capable NVIDIA GPUs and most OpenCL devices, including AMD GPUs/APUs and Intel coprocessors. It also supports other OpenCL devices from ARM and Qualcomm.<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[/content_band][content_band id=\"documentation\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"documentation\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"]Documentation[/custom_headline]\r\n\r\n<strong>ArrayFire for C, C++, and Fortran</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/c\" target=\"_blank\">CUDA &amp; OpenCL C/C++</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/fortran\" target=\"_blank\">CUDA &amp; OpenCL Fortran</a></li>\r\n</ul>\r\n<strong>User Forums</strong>\r\nEvery post gets a response from ArrayFire engineers.\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://forums.accelereyes.com/\" target=\"_blank\">User Forums</a></li>\r\n</ul>\r\n<strong>Introductory Demo Videos</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=1\" target=\"_blank\">ArrayFire Overview</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=2\" target=\"_blank\">ArrayFire Demo</a></li>\r\n</ul>\r\n[/column][column type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/gears1-e1391783830561.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"whitepapers\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ]Whitepapers[/custom_headline]\r\n<p style=\"text-align: center;\"><img class=\"aligncenter  wp-image-4830\" alt=\"Whitepaper 1\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-1.png\" width=\"466\" height=\"374\" /></p>\r\n&nbsp;\r\n\r\n[/column]\r\n<p style=\"text-align: left;\">[column type=\"one-half\"]<img class=\"aligncenter  wp-image-4831\" alt=\"Whitepaper 2\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-2.png\" width=\"442\" height=\"304\" />[/column][column type=\"one-half\" last=\"true\"][/content_band]</p>\r\n[content_band inner_container=\"true\"  no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"benchmarks\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\" ]Benchmarks[/custom_headline]\r\n\r\nAll benchmarks were performed on a NVIDIA Tesla C2050 with an Intel i7-950 processor. The benchmarks compare ArrayFire with several popular CPU-based acceleration libraries, including <a href=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.[/column]\r\n\r\n[column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Benchmark-guy-torso-e1391784056150.png\"][/column]\r\n\r\n[column type=\"one-fifth\"][/column][column type=\"three-fifths\"][tab_nav type=\"four-up\" ] [tab_nav_item title=\"Base\" active=\"true\"] [tab_nav_item title=\"Linear Algebra\"] [tab_nav_item title=\"Convolution\"][tab_nav_item title=\"Utility\"][/tab_nav] [tabs] [tab active=\"true\"]<img class=\"aligncenter\" alt=\"Matrix Multiply\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_multiply-1024x730.png\" width=\"569\" height=\"405\" />[line]<img class=\"aligncenter\" alt=\"Matrix Transpose\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_transpose-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"FFT\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/fft-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [tab]<img class=\"aligncenter\" alt=\"LU\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/lu-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"SVD\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/svd-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Solve\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/solve-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"Convs\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/convs-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Conv\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/conv-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"sum\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sum-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"sort\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sort-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"scan\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/scan-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [/tabs][/column][column type=\"one-fifth\" last=\"true\"][/column][/content_band]\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirefree\"]</span>\r\n<div id=\"arrayfirefree\"></div>\r\n[column type=\"one-half\"][/column][column type=\"one-fourth\"][custom_headline type=\"center\" level=\"h3\"]ArrayFire Free[/custom_headline][/column][column type=\"one-fourth\" last=\"true\"][/column][column type=\"one-fourth\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/right-leaning-e1391788779101.png\"][/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Functions[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Basic Operations</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Arithmetic</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Signal Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Image Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Statistics</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Visualization</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Hardware[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] CUDA</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] OpenCL</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Languages[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] C/C++</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Fortran</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Advanced[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] GFOR Loop</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\" last=\"true\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Platforms[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Windows</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Linux</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Mac</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Data Types[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] All types</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Support[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] Forums</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirepro\"]\r\n<div id=\"arrayfirepro\"></div>\r\n[pricing_table  columns=\"3\"][pricing_table_column  featured=\"false\" title=\"ArrayFire Developer\" currency=\"$\" price=\"499 / year\" interval=\"$149 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item  type=\"times-circle\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"times-circle\"] Linear algebra [/icon_list_item] [icon_list_item type=\"times-circle\"] Sparse matrices [/icon_list_item][icon_list_item type=\"times-circle\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"true\" featured_sub=\"Most Popular\" title=\"ArrayFire Pro\" currency=\"$\" price=\"1,499 / year\" interval=\"$525 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"] Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; counsulting [/icon_list_item] [/icon_list] [button href=\"#\"]Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"false\" title=\"ArrayFire Enterprise\" currency=\"$\" price=\"2,999 / year\" interval=\"$1,049 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"]Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support[/icon_list_item][icon_list_item type=\"star\"]Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [/pricing_table] [/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\" none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"consulting\"]\r\n<div id=\"consulting\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"  ] GPU Consulting Services [/custom_headline]\r\n\r\nArrayFire provides GPU coding services. Hire us to accelerate your code.\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re sure that we can tackle your code too. [/column]\r\n\r\n[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"starter\"]\r\n<div id=\"starter\"></div>\r\n[column type=\"one-half\" last=\"false\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] Starter Package ($500)¹ [/custom_headline]\r\n\r\nHire us for 1-day. We set you up with one engineer dedicated for a full day, as well as support from senior and test engineers throughout the day. Here\'s how it works:\r\n<ul>\r\n	<li>Initial phone call (click \"Talk to Us\" below to get started)</li>\r\n	<li>You send us your code or algorithm</li>\r\n	<li>We analyze your code for potential GPU benefit</li>\r\n	<li>We accelerate as much of the code as is possible within the 1-day effort, applying our extensive GPU software libraries</li>\r\n	<li>We produce a final report, along with code</li>\r\n</ul>\r\nThe final report outlines the best approach to follow for full GPU-acceleration of your code.\r\n<h6>¹ Limit one (1) per customer.[/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou.png\"][/column][/content_band]</h6>\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"]\r\n<div id=\"customcoding\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ] Coding Work (Custom) [/custom_headline]\r\n\r\nHire us immediately to accelerate your code.\r\n\r\nWhy Choose Us?\r\n<ul>\r\n	<li>Deep experience, already servicing thousands of customers</li>\r\n	<li>Quality work, with leading GPU software</li>\r\n	<li>Efficient delivery, with ArrayFire\'s extensive code base we can deliver results fast</li>\r\n	<li>Proven, we make customers happy through faster code</li>\r\n</ul>\r\nOur Strengths\r\n<ul>\r\n	<li>Excellence in GPU code</li>\r\n	<li>Well-written, efficient C, C++, Fortran, Java, or .NET</li>\r\n	<li>Application porting and integration</li>\r\n	<li>Tuning software to peak hardware performance</li>\r\n	<li>Scalability of algorithms to handle enterprise-level programs</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\" ]Training[/custom_headline]\r\n\r\n<span style=\"line-height: 1.5em;\">Attendees will receive the latest industry knowledge and techniques for GPU computing in CUDA and OpenCL. Check out our [extra href=\"#example\" title=\"Training Course Syllabus\" info=\"popover\" info_place=\"top\" info_trigger=\"click\" info_content=\"</span>\r\n\r\n&nbsp;\r\n<h5>DAY 1, INTRODUCTION</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nParallel Computing Overview\r\nProgramming Models\r\nArchitectures Supported\r\nBasic Dataset Mapping Techniques\r\nAcceleration Libraries, ArrayFire\r\nAsynchronos Operation\r\nPortability\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nA Simple Kernel\r\nEquivalent ArrayFire Example\r\nMonte Carlo Pi Estimation\r\nUsing Libraries\r\nTiming\r\nPorting Code for Multiple Devices\r\n<h5>DAY 3, SCALING</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nMulti-Device Use Cases\r\nHeterogeneous Computing\r\nScaling Across Multiple Devices\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nOut of Core Problems: Matrix Multiply\r\nTask Level Parallelism: Optimization\r\nArrayFire Multi-Device\r\n<h5>DAY 2, OPTIMIZATION</h5>\r\n<strong>Lectures:\r\n</strong>Architecture\r\nMemory Models\r\nAdvanced Mapping Techniques\r\nArchitecture Specific Limitations and Optimizations\r\nArrayFire: Lazy Evaluation and Code Vectorization\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:\r\n</strong>Matrix Transpose\r\nOptimization Using Shared Memory\r\nMedian Filter\r\nOptimization Using Constant Memory\r\nCommand Queues Example\r\nArrayFire Example: Nearest Neighbor Algorithm\r\n\r\n&nbsp;\r\n<h5>DAY 4, ALGORITHM PROBLEMS</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures and Practice:\r\n</strong>Reductions\r\nScan Algorithms\r\nSort\r\nConvolution\r\nCustomer-Specific Problem\"]syllabus[/extra]!\r\n\r\nArrayFire offers up to four days of specialized GPU training in CUDA and OpenCL programming. Register for a general course, or schedule a course dedicated for your organization. We can travel to you, or you can travel to our Atlanta office. We recommend that attendees have a working knowledge of C/C++ in order to gain the most from the training courses.[/column][column type=\"one-third\" last=\"false\"]\r\n\r\n<strong>Fee includes:</strong>\r\n<ul>\r\n	<li>Instruction by an excellent and interesting expert. Many hands-on exercises.</li>\r\n	<li>Use of a laptop with CUDA and OpenCL capable GPUs and CPUs</li>\r\n	<li>Choice of Linux or Windows operating system</li>\r\n	<li>Printed manual of lecture material</li>\r\n	<li>Electronic copy of programming exercises</li>\r\n	<li>Certificate of Completion[/column][column type=\"one-third\" last=\"true\"][/column]</li>\r\n</ul>\r\n[column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" looks_like=\"h3 ]Upcoming Courses[/custom_headline]\r\n\r\n<strong>CUDA</strong>\r\n\r\n<strong>OpenCL</strong>\r\n\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 08:18:56','2014-02-10 08:18:56','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4890,7,'2014-02-10 08:20:32','2014-02-10 08:20:32','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  class=\"x-btn-custom-type\" type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" class=\"x-btn-custom-type\"]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.[</span><span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"]<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"CUDAandOpenCL\"]</span>\r\n\r\n[column type=\"one-half\"][gap size=\"15%\"]\r\n\r\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\"><img class=\"aligncenter\" alt=\"CUDA logo\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\" width=\"231\" height=\"140\" /></a>\r\n\r\n<img class=\"aligncenter\" alt=\"OpenCL\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/OpenCLLogo_678x452.png\" width=\"326\" height=\"217\" />\r\n\r\n[/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] ArrayFire for CUDA and OpenCL[/custom_headline]\r\n\r\nArrayFire supports CUDA-capable NVIDIA GPUs and most OpenCL devices, including AMD GPUs/APUs and Intel coprocessors. It also supports other OpenCL devices from ARM and Qualcomm.<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[/content_band][content_band id=\"documentation\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"documentation\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"]Documentation[/custom_headline]\r\n\r\n<strong>ArrayFire for C, C++, and Fortran</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/c\" target=\"_blank\">CUDA &amp; OpenCL C/C++</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/fortran\" target=\"_blank\">CUDA &amp; OpenCL Fortran</a></li>\r\n</ul>\r\n<strong>User Forums</strong>\r\nEvery post gets a response from ArrayFire engineers.\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://forums.accelereyes.com/\" target=\"_blank\">User Forums</a></li>\r\n</ul>\r\n<strong>Introductory Demo Videos</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=1\" target=\"_blank\">ArrayFire Overview</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=2\" target=\"_blank\">ArrayFire Demo</a></li>\r\n</ul>\r\n[/column][column type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/gears1-e1391783830561.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"whitepapers\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ]Whitepapers[/custom_headline]\r\n<p style=\"text-align: center;\"><img class=\"aligncenter  wp-image-4830\" alt=\"Whitepaper 1\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-1.png\" width=\"466\" height=\"374\" /></p>\r\n&nbsp;\r\n\r\n[/column]\r\n<p style=\"text-align: left;\">[column type=\"one-half\"]<img class=\"aligncenter  wp-image-4831\" alt=\"Whitepaper 2\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-2.png\" width=\"442\" height=\"304\" />[/column][column type=\"one-half\" last=\"true\"][/content_band]</p>\r\n[content_band inner_container=\"true\"  no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"benchmarks\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\" ]Benchmarks[/custom_headline]\r\n\r\nAll benchmarks were performed on a NVIDIA Tesla C2050 with an Intel i7-950 processor. The benchmarks compare ArrayFire with several popular CPU-based acceleration libraries, including <a href=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.[/column]\r\n\r\n[column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Benchmark-guy-torso-e1391784056150.png\"][/column]\r\n\r\n[column type=\"one-fifth\"][/column][column type=\"three-fifths\"][tab_nav type=\"four-up\" ] [tab_nav_item title=\"Base\" active=\"true\"] [tab_nav_item title=\"Linear Algebra\"] [tab_nav_item title=\"Convolution\"][tab_nav_item title=\"Utility\"][/tab_nav] [tabs] [tab active=\"true\"]<img class=\"aligncenter\" alt=\"Matrix Multiply\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_multiply-1024x730.png\" width=\"569\" height=\"405\" />[line]<img class=\"aligncenter\" alt=\"Matrix Transpose\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_transpose-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"FFT\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/fft-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [tab]<img class=\"aligncenter\" alt=\"LU\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/lu-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"SVD\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/svd-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Solve\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/solve-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"Convs\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/convs-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Conv\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/conv-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"sum\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sum-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"sort\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sort-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"scan\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/scan-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [/tabs][/column][column type=\"one-fifth\" last=\"true\"][/column][/content_band]\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirefree\"]</span>\r\n<div id=\"arrayfirefree\"></div>\r\n[column type=\"one-half\"][/column][column type=\"one-fourth\"][custom_headline type=\"center\" level=\"h3\"]ArrayFire Free[/custom_headline][/column][column type=\"one-fourth\" last=\"true\"][/column][column type=\"one-fourth\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/right-leaning-e1391788779101.png\"][/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Functions[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Basic Operations</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Arithmetic</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Signal Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Image Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Statistics</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Visualization</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Hardware[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] CUDA</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] OpenCL</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Languages[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] C/C++</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Fortran</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Advanced[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] GFOR Loop</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\" last=\"true\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Platforms[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Windows</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Linux</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Mac</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Data Types[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] All types</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Support[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] Forums</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirepro\"]\r\n<div id=\"arrayfirepro\"></div>\r\n[pricing_table  columns=\"3\"][pricing_table_column  featured=\"false\" title=\"ArrayFire Developer\" currency=\"$\" price=\"499 / year\" interval=\"$149 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item  type=\"times-circle\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"times-circle\"] Linear algebra [/icon_list_item] [icon_list_item type=\"times-circle\"] Sparse matrices [/icon_list_item][icon_list_item type=\"times-circle\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"true\" featured_sub=\"Most Popular\" title=\"ArrayFire Pro\" currency=\"$\" price=\"1,499 / year\" interval=\"$525 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"] Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; counsulting [/icon_list_item] [/icon_list] [button href=\"#\"]Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"false\" title=\"ArrayFire Enterprise\" currency=\"$\" price=\"2,999 / year\" interval=\"$1,049 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"]Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support[/icon_list_item][icon_list_item type=\"star\"]Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [/pricing_table] [/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\" none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"consulting\"]\r\n<div id=\"consulting\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"  ] GPU Consulting Services [/custom_headline]\r\n\r\nArrayFire provides GPU coding services. Hire us to accelerate your code.\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re sure that we can tackle your code too. [/column]\r\n\r\n[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"starter\"]\r\n<div id=\"starter\"></div>\r\n[column type=\"one-half\" last=\"false\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] Starter Package ($500)¹ [/custom_headline]\r\n\r\nHire us for 1-day. We set you up with one engineer dedicated for a full day, as well as support from senior and test engineers throughout the day. Here\'s how it works:\r\n<ul>\r\n	<li>Initial phone call (click \"Talk to Us\" below to get started)</li>\r\n	<li>You send us your code or algorithm</li>\r\n	<li>We analyze your code for potential GPU benefit</li>\r\n	<li>We accelerate as much of the code as is possible within the 1-day effort, applying our extensive GPU software libraries</li>\r\n	<li>We produce a final report, along with code</li>\r\n</ul>\r\nThe final report outlines the best approach to follow for full GPU-acceleration of your code.\r\n<h6>¹ Limit one (1) per customer.[/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou.png\"][/column][/content_band]</h6>\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"]\r\n<div id=\"customcoding\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ] Coding Work (Custom) [/custom_headline]\r\n\r\nHire us immediately to accelerate your code.\r\n\r\nWhy Choose Us?\r\n<ul>\r\n	<li>Deep experience, already servicing thousands of customers</li>\r\n	<li>Quality work, with leading GPU software</li>\r\n	<li>Efficient delivery, with ArrayFire\'s extensive code base we can deliver results fast</li>\r\n	<li>Proven, we make customers happy through faster code</li>\r\n</ul>\r\nOur Strengths\r\n<ul>\r\n	<li>Excellence in GPU code</li>\r\n	<li>Well-written, efficient C, C++, Fortran, Java, or .NET</li>\r\n	<li>Application porting and integration</li>\r\n	<li>Tuning software to peak hardware performance</li>\r\n	<li>Scalability of algorithms to handle enterprise-level programs</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\" ]Training[/custom_headline]\r\n\r\n<span style=\"line-height: 1.5em;\">Attendees will receive the latest industry knowledge and techniques for GPU computing in CUDA and OpenCL. Check out our [extra href=\"#example\" title=\"Training Course Syllabus\" info=\"popover\" info_place=\"top\" info_trigger=\"click\" info_content=\"</span>\r\n\r\n&nbsp;\r\n<h5>DAY 1, INTRODUCTION</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nParallel Computing Overview\r\nProgramming Models\r\nArchitectures Supported\r\nBasic Dataset Mapping Techniques\r\nAcceleration Libraries, ArrayFire\r\nAsynchronos Operation\r\nPortability\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nA Simple Kernel\r\nEquivalent ArrayFire Example\r\nMonte Carlo Pi Estimation\r\nUsing Libraries\r\nTiming\r\nPorting Code for Multiple Devices\r\n<h5>DAY 3, SCALING</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nMulti-Device Use Cases\r\nHeterogeneous Computing\r\nScaling Across Multiple Devices\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nOut of Core Problems: Matrix Multiply\r\nTask Level Parallelism: Optimization\r\nArrayFire Multi-Device\r\n<h5>DAY 2, OPTIMIZATION</h5>\r\n<strong>Lectures:\r\n</strong>Architecture\r\nMemory Models\r\nAdvanced Mapping Techniques\r\nArchitecture Specific Limitations and Optimizations\r\nArrayFire: Lazy Evaluation and Code Vectorization\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:\r\n</strong>Matrix Transpose\r\nOptimization Using Shared Memory\r\nMedian Filter\r\nOptimization Using Constant Memory\r\nCommand Queues Example\r\nArrayFire Example: Nearest Neighbor Algorithm\r\n\r\n&nbsp;\r\n<h5>DAY 4, ALGORITHM PROBLEMS</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures and Practice:\r\n</strong>Reductions\r\nScan Algorithms\r\nSort\r\nConvolution\r\nCustomer-Specific Problem\"]syllabus[/extra]!\r\n\r\nArrayFire offers up to four days of specialized GPU training in CUDA and OpenCL programming. Register for a general course, or schedule a course dedicated for your organization. We can travel to you, or you can travel to our Atlanta office. We recommend that attendees have a working knowledge of C/C++ in order to gain the most from the training courses.[/column][column type=\"one-third\" last=\"false\"]\r\n\r\n<strong>Fee includes:</strong>\r\n<ul>\r\n	<li>Instruction by an excellent and interesting expert. Many hands-on exercises.</li>\r\n	<li>Use of a laptop with CUDA and OpenCL capable GPUs and CPUs</li>\r\n	<li>Choice of Linux or Windows operating system</li>\r\n	<li>Printed manual of lecture material</li>\r\n	<li>Electronic copy of programming exercises</li>\r\n	<li>Certificate of Completion[/column][column type=\"one-third\" last=\"true\"][/column]</li>\r\n</ul>\r\n[column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" looks_like=\"h3 ]Upcoming Courses[/custom_headline]\r\n\r\n<strong>CUDA</strong>\r\n\r\n<strong>OpenCL</strong>\r\n\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 08:20:32','2014-02-10 08:20:32','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4891,7,'2014-02-10 08:21:13','2014-02-10 08:21:13','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  class=\"x-btn-custom-type\" type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" class=\"x-btn-custom-type\"]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][line]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.[</span><span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"]<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"CUDAandOpenCL\"]</span>\r\n\r\n[column type=\"one-half\"][gap size=\"15%\"]\r\n\r\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\"><img class=\"aligncenter\" alt=\"CUDA logo\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\" width=\"231\" height=\"140\" /></a>\r\n\r\n<img class=\"aligncenter\" alt=\"OpenCL\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/OpenCLLogo_678x452.png\" width=\"326\" height=\"217\" />\r\n\r\n[/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] ArrayFire for CUDA and OpenCL[/custom_headline]\r\n\r\nArrayFire supports CUDA-capable NVIDIA GPUs and most OpenCL devices, including AMD GPUs/APUs and Intel coprocessors. It also supports other OpenCL devices from ARM and Qualcomm.<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[/content_band][content_band id=\"documentation\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"documentation\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"]Documentation[/custom_headline]\r\n\r\n<strong>ArrayFire for C, C++, and Fortran</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/c\" target=\"_blank\">CUDA &amp; OpenCL C/C++</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/fortran\" target=\"_blank\">CUDA &amp; OpenCL Fortran</a></li>\r\n</ul>\r\n<strong>User Forums</strong>\r\nEvery post gets a response from ArrayFire engineers.\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://forums.accelereyes.com/\" target=\"_blank\">User Forums</a></li>\r\n</ul>\r\n<strong>Introductory Demo Videos</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=1\" target=\"_blank\">ArrayFire Overview</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=2\" target=\"_blank\">ArrayFire Demo</a></li>\r\n</ul>\r\n[/column][column type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/gears1-e1391783830561.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"whitepapers\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ]Whitepapers[/custom_headline]\r\n<p style=\"text-align: center;\"><img class=\"aligncenter  wp-image-4830\" alt=\"Whitepaper 1\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-1.png\" width=\"466\" height=\"374\" /></p>\r\n&nbsp;\r\n\r\n[/column]\r\n<p style=\"text-align: left;\">[column type=\"one-half\"]<img class=\"aligncenter  wp-image-4831\" alt=\"Whitepaper 2\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-2.png\" width=\"442\" height=\"304\" />[/column][column type=\"one-half\" last=\"true\"][/content_band]</p>\r\n[content_band inner_container=\"true\"  no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"benchmarks\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\" ]Benchmarks[/custom_headline]\r\n\r\nAll benchmarks were performed on a NVIDIA Tesla C2050 with an Intel i7-950 processor. The benchmarks compare ArrayFire with several popular CPU-based acceleration libraries, including <a href=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.[/column]\r\n\r\n[column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Benchmark-guy-torso-e1391784056150.png\"][/column]\r\n\r\n[column type=\"one-fifth\"][/column][column type=\"three-fifths\"][tab_nav type=\"four-up\" ] [tab_nav_item title=\"Base\" active=\"true\"] [tab_nav_item title=\"Linear Algebra\"] [tab_nav_item title=\"Convolution\"][tab_nav_item title=\"Utility\"][/tab_nav] [tabs] [tab active=\"true\"]<img class=\"aligncenter\" alt=\"Matrix Multiply\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_multiply-1024x730.png\" width=\"569\" height=\"405\" />[line]<img class=\"aligncenter\" alt=\"Matrix Transpose\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_transpose-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"FFT\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/fft-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [tab]<img class=\"aligncenter\" alt=\"LU\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/lu-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"SVD\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/svd-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Solve\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/solve-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"Convs\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/convs-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Conv\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/conv-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"sum\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sum-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"sort\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sort-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"scan\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/scan-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [/tabs][/column][column type=\"one-fifth\" last=\"true\"][/column][/content_band]\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirefree\"]</span>\r\n<div id=\"arrayfirefree\"></div>\r\n[column type=\"one-half\"][/column][column type=\"one-fourth\"][custom_headline type=\"center\" level=\"h3\"]ArrayFire Free[/custom_headline][/column][column type=\"one-fourth\" last=\"true\"][/column][column type=\"one-fourth\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/right-leaning-e1391788779101.png\"][/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Functions[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Basic Operations</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Arithmetic</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Signal Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Image Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Statistics</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Visualization</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Hardware[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] CUDA</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] OpenCL</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Languages[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] C/C++</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Fortran</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Advanced[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] GFOR Loop</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\" last=\"true\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Platforms[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Windows</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Linux</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Mac</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Data Types[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] All types</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Support[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] Forums</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirepro\"]\r\n<div id=\"arrayfirepro\"></div>\r\n[pricing_table  columns=\"3\"][pricing_table_column  featured=\"false\" title=\"ArrayFire Developer\" currency=\"$\" price=\"499 / year\" interval=\"$149 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item  type=\"times-circle\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"times-circle\"] Linear algebra [/icon_list_item] [icon_list_item type=\"times-circle\"] Sparse matrices [/icon_list_item][icon_list_item type=\"times-circle\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"true\" featured_sub=\"Most Popular\" title=\"ArrayFire Pro\" currency=\"$\" price=\"1,499 / year\" interval=\"$525 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"] Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; counsulting [/icon_list_item] [/icon_list] [button href=\"#\"]Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"false\" title=\"ArrayFire Enterprise\" currency=\"$\" price=\"2,999 / year\" interval=\"$1,049 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"]Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support[/icon_list_item][icon_list_item type=\"star\"]Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [/pricing_table] [/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\" none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"consulting\"]\r\n<div id=\"consulting\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"  ] GPU Consulting Services [/custom_headline]\r\n\r\nArrayFire provides GPU coding services. Hire us to accelerate your code.\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re sure that we can tackle your code too. [/column]\r\n\r\n[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"starter\"]\r\n<div id=\"starter\"></div>\r\n[column type=\"one-half\" last=\"false\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] Starter Package ($500)¹ [/custom_headline]\r\n\r\nHire us for 1-day. We set you up with one engineer dedicated for a full day, as well as support from senior and test engineers throughout the day. Here\'s how it works:\r\n<ul>\r\n	<li>Initial phone call (click \"Talk to Us\" below to get started)</li>\r\n	<li>You send us your code or algorithm</li>\r\n	<li>We analyze your code for potential GPU benefit</li>\r\n	<li>We accelerate as much of the code as is possible within the 1-day effort, applying our extensive GPU software libraries</li>\r\n	<li>We produce a final report, along with code</li>\r\n</ul>\r\nThe final report outlines the best approach to follow for full GPU-acceleration of your code.\r\n<h6>¹ Limit one (1) per customer.[/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou.png\"][/column][/content_band]</h6>\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"]\r\n<div id=\"customcoding\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ] Coding Work (Custom) [/custom_headline]\r\n\r\nHire us immediately to accelerate your code.\r\n\r\nWhy Choose Us?\r\n<ul>\r\n	<li>Deep experience, already servicing thousands of customers</li>\r\n	<li>Quality work, with leading GPU software</li>\r\n	<li>Efficient delivery, with ArrayFire\'s extensive code base we can deliver results fast</li>\r\n	<li>Proven, we make customers happy through faster code</li>\r\n</ul>\r\nOur Strengths\r\n<ul>\r\n	<li>Excellence in GPU code</li>\r\n	<li>Well-written, efficient C, C++, Fortran, Java, or .NET</li>\r\n	<li>Application porting and integration</li>\r\n	<li>Tuning software to peak hardware performance</li>\r\n	<li>Scalability of algorithms to handle enterprise-level programs</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\" ]Training[/custom_headline]\r\n\r\n<span style=\"line-height: 1.5em;\">Attendees will receive the latest industry knowledge and techniques for GPU computing in CUDA and OpenCL. Check out our [extra href=\"#example\" title=\"Training Course Syllabus\" info=\"popover\" info_place=\"top\" info_trigger=\"click\" info_content=\"</span>\r\n\r\n&nbsp;\r\n<h5>DAY 1, INTRODUCTION</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nParallel Computing Overview\r\nProgramming Models\r\nArchitectures Supported\r\nBasic Dataset Mapping Techniques\r\nAcceleration Libraries, ArrayFire\r\nAsynchronos Operation\r\nPortability\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nA Simple Kernel\r\nEquivalent ArrayFire Example\r\nMonte Carlo Pi Estimation\r\nUsing Libraries\r\nTiming\r\nPorting Code for Multiple Devices\r\n<h5>DAY 3, SCALING</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nMulti-Device Use Cases\r\nHeterogeneous Computing\r\nScaling Across Multiple Devices\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nOut of Core Problems: Matrix Multiply\r\nTask Level Parallelism: Optimization\r\nArrayFire Multi-Device\r\n<h5>DAY 2, OPTIMIZATION</h5>\r\n<strong>Lectures:\r\n</strong>Architecture\r\nMemory Models\r\nAdvanced Mapping Techniques\r\nArchitecture Specific Limitations and Optimizations\r\nArrayFire: Lazy Evaluation and Code Vectorization\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:\r\n</strong>Matrix Transpose\r\nOptimization Using Shared Memory\r\nMedian Filter\r\nOptimization Using Constant Memory\r\nCommand Queues Example\r\nArrayFire Example: Nearest Neighbor Algorithm\r\n\r\n&nbsp;\r\n<h5>DAY 4, ALGORITHM PROBLEMS</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures and Practice:\r\n</strong>Reductions\r\nScan Algorithms\r\nSort\r\nConvolution\r\nCustomer-Specific Problem\"]syllabus[/extra]!\r\n\r\nArrayFire offers up to four days of specialized GPU training in CUDA and OpenCL programming. Register for a general course, or schedule a course dedicated for your organization. We can travel to you, or you can travel to our Atlanta office. We recommend that attendees have a working knowledge of C/C++ in order to gain the most from the training courses.[/column][column type=\"one-third\" last=\"false\"]\r\n\r\n<strong>Fee includes:</strong>\r\n<ul>\r\n	<li>Instruction by an excellent and interesting expert. Many hands-on exercises.</li>\r\n	<li>Use of a laptop with CUDA and OpenCL capable GPUs and CPUs</li>\r\n	<li>Choice of Linux or Windows operating system</li>\r\n	<li>Printed manual of lecture material</li>\r\n	<li>Electronic copy of programming exercises</li>\r\n	<li>Certificate of Completion[/column][column type=\"one-third\" last=\"true\"][/column]</li>\r\n</ul>\r\n[column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" looks_like=\"h3 ]Upcoming Courses[/custom_headline]\r\n\r\n<strong>CUDA</strong>\r\n\r\n<strong>OpenCL</strong>\r\n\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 08:21:13','2014-02-10 08:21:13','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4892,7,'2014-02-10 08:25:20','2014-02-10 08:25:20','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  class=\"x-btn-custom-type\" type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" class=\"x-btn-custom-type\"]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][line]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.[</span><span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"]<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"CUDAandOpenCL\"]</span>\r\n\r\n[column type=\"one-half\"][gap size=\"15%\"]\r\n\r\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\"><img class=\"aligncenter\" alt=\"CUDA logo\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\" width=\"231\" height=\"140\" /></a>\r\n\r\n<img class=\"aligncenter\" alt=\"OpenCL\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/OpenCLLogo_678x452.png\" width=\"326\" height=\"217\" />\r\n\r\n[/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] ArrayFire for CUDA and OpenCL[/custom_headline]\r\n\r\nArrayFire supports CUDA-capable NVIDIA GPUs and most OpenCL devices, including AMD GPUs/APUs and Intel coprocessors. It also supports other OpenCL devices from ARM and Qualcomm.<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[/content_band][content_band id=\"documentation\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"documentation\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"]Documentation[/custom_headline]\r\n\r\n<strong>ArrayFire for C, C++, and Fortran</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/c\" target=\"_blank\">CUDA &amp; OpenCL C/C++</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/fortran\" target=\"_blank\">CUDA &amp; OpenCL Fortran</a></li>\r\n</ul>\r\n<strong>User Forums</strong>\r\nEvery post gets a response from ArrayFire engineers.\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://forums.accelereyes.com/\" target=\"_blank\">User Forums</a></li>\r\n</ul>\r\n<strong>Introductory Demo Videos</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=1\" target=\"_blank\">ArrayFire Overview</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=2\" target=\"_blank\">ArrayFire Demo</a></li>\r\n</ul>\r\n[/column][column type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/gears1-e1391783830561.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"whitepapers\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ]Whitepapers[/custom_headline]\r\n<p style=\"text-align: center;\"><img class=\"aligncenter  wp-image-4830\" alt=\"Whitepaper 1\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-1.png\" width=\"466\" height=\"374\" /></p>\r\n&nbsp;\r\n\r\n[/column]\r\n<p style=\"text-align: left;\">[column type=\"one-half\"]<img class=\"aligncenter  wp-image-4831\" alt=\"Whitepaper 2\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-2.png\" width=\"442\" height=\"304\" />[/column][column type=\"one-half\" last=\"true\"][/content_band]</p>\r\n[content_band inner_container=\"true\"  no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"benchmarks\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\" ]Benchmarks[/custom_headline]\r\n\r\nAll benchmarks were performed on a NVIDIA Tesla C2050 with an Intel i7-950 processor. The benchmarks compare ArrayFire with several popular CPU-based acceleration libraries, including <a href=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.[/column]\r\n\r\n[column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Benchmark-guy-torso-e1391784056150.png\"][/column]\r\n\r\n[column type=\"one-fifth\"][/column][column type=\"three-fifths\"][tab_nav type=\"four-up\" ] [tab_nav_item title=\"Base\" active=\"true\"] [tab_nav_item title=\"Linear Algebra\"] [tab_nav_item title=\"Convolution\"][tab_nav_item title=\"Utility\"][/tab_nav] [tabs] [tab active=\"true\"]<img class=\"aligncenter\" alt=\"Matrix Multiply\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_multiply-1024x730.png\" width=\"569\" height=\"405\" />[line]<img class=\"aligncenter\" alt=\"Matrix Transpose\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_transpose-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"FFT\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/fft-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [tab]<img class=\"aligncenter\" alt=\"LU\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/lu-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"SVD\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/svd-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Solve\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/solve-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"Convs\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/convs-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Conv\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/conv-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"sum\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sum-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"sort\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sort-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"scan\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/scan-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [/tabs][/column][column type=\"one-fifth\" last=\"true\"][/column][/content_band]\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirefree\"]</span>\r\n<div id=\"arrayfirefree\"></div>\r\n[column type=\"one-half\"][/column][column type=\"one-fourth\"][custom_headline type=\"center\" level=\"h3\"]ArrayFire Free[/custom_headline][/column][column type=\"one-fourth\" last=\"true\"][/column][column type=\"one-fourth\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/right-leaning-e1391788779101.png\"][/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Functions[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Basic Operations</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Arithmetic</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Signal Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Image Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Statistics</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Visualization</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Hardware[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] CUDA</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] OpenCL</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Languages[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] C/C++</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Fortran</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Advanced[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] GFOR Loop</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\" last=\"true\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Platforms[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Windows</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Linux</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Mac</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Data Types[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] All types</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Support[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] Forums</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirepro\"]\r\n<div id=\"arrayfirepro\"></div>\r\n[pricing_table  columns=\"3\"][pricing_table_column  featured=\"false\" title=\"ArrayFire Developer\" currency=\"$\" price=\"499 / year\" interval=\"$149 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item  type=\"times-circle\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"times-circle\"] Linear algebra [/icon_list_item] [icon_list_item type=\"times-circle\"] Sparse matrices [/icon_list_item][icon_list_item type=\"times-circle\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"true\" featured_sub=\"Most Popular\" title=\"ArrayFire Pro\" currency=\"$\" price=\"1,499 / year\" interval=\"$525 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"] Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; counsulting [/icon_list_item] [/icon_list] [button href=\"#\"]Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"false\" title=\"ArrayFire Enterprise\" currency=\"$\" price=\"2,999 / year\" interval=\"$1,049 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"]Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support[/icon_list_item][icon_list_item type=\"star\"]Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [/pricing_table] [/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\" none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"consulting\"]\r\n<div id=\"consulting\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"  ] GPU Consulting Services [/custom_headline]\r\n\r\nArrayFire provides GPU coding services. Hire us to accelerate your code.\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re sure that we can tackle your code too. [/column]\r\n\r\n[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"starter\"]\r\n<div id=\"starter\"></div>\r\n[column type=\"one-half\" last=\"false\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] Starter Package ($500)¹ [/custom_headline]\r\n\r\nHire us for 1-day. We set you up with one engineer dedicated for a full day, as well as support from senior and test engineers throughout the day. Here\'s how it works:\r\n<ul>\r\n	<li>Initial phone call (click \"Talk to Us\" below to get started)</li>\r\n	<li>You send us your code or algorithm</li>\r\n	<li>We analyze your code for potential GPU benefit</li>\r\n	<li>We accelerate as much of the code as is possible within the 1-day effort, applying our extensive GPU software libraries</li>\r\n	<li>We produce a final report, along with code</li>\r\n</ul>\r\nThe final report outlines the best approach to follow for full GPU-acceleration of your code.\r\n<h6>¹ Limit one (1) per customer.[/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou.png\"][/column][/content_band]</h6>\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"]\r\n<div id=\"customcoding\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ] Coding Work (Custom) [/custom_headline]\r\n\r\nHire us immediately to accelerate your code.\r\n\r\nWhy Choose Us?\r\n<ul>\r\n	<li>Deep experience, already servicing thousands of customers</li>\r\n	<li>Quality work, with leading GPU software</li>\r\n	<li>Efficient delivery, with ArrayFire\'s extensive code base we can deliver results fast</li>\r\n	<li>Proven, we make customers happy through faster code</li>\r\n</ul>\r\nOur Strengths\r\n<ul>\r\n	<li>Excellence in GPU code</li>\r\n	<li>Well-written, efficient C, C++, Fortran, Java, or .NET</li>\r\n	<li>Application porting and integration</li>\r\n	<li>Tuning software to peak hardware performance</li>\r\n	<li>Scalability of algorithms to handle enterprise-level programs</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\" ]Training[/custom_headline]\r\n\r\n<span style=\"line-height: 1.5em;\">Attendees will receive the latest industry knowledge and techniques for GPU computing in CUDA and OpenCL. Check out our [extra href=\"#example\" title=\"Training Course Syllabus\" info=\"popover\" info_place=\"top\" info_trigger=\"click\" info_content=\"</span>\r\n\r\n&nbsp;\r\n<h5>DAY 1, INTRODUCTION</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nParallel Computing Overview\r\nProgramming Models\r\nArchitectures Supported\r\nBasic Dataset Mapping Techniques\r\nAcceleration Libraries, ArrayFire\r\nAsynchronos Operation\r\nPortability\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nA Simple Kernel\r\nEquivalent ArrayFire Example\r\nMonte Carlo Pi Estimation\r\nUsing Libraries\r\nTiming\r\nPorting Code for Multiple Devices\r\n<h5>DAY 3, SCALING</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nMulti-Device Use Cases\r\nHeterogeneous Computing\r\nScaling Across Multiple Devices\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nOut of Core Problems: Matrix Multiply\r\nTask Level Parallelism: Optimization\r\nArrayFire Multi-Device\r\n<h5>DAY 2, OPTIMIZATION</h5>\r\n<strong>Lectures:\r\n</strong>Architecture\r\nMemory Models\r\nAdvanced Mapping Techniques\r\nArchitecture Specific Limitations and Optimizations\r\nArrayFire: Lazy Evaluation and Code Vectorization\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:\r\n</strong>Matrix Transpose\r\nOptimization Using Shared Memory\r\nMedian Filter\r\nOptimization Using Constant Memory\r\nCommand Queues Example\r\nArrayFire Example: Nearest Neighbor Algorithm\r\n\r\n&nbsp;\r\n<h5>DAY 4, ALGORITHM PROBLEMS</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures and Practice:\r\n</strong>Reductions\r\nScan Algorithms\r\nSort\r\nConvolution\r\nCustomer-Specific Problem\"]syllabus[/extra]!\r\n\r\nArrayFire offers up to four days of specialized GPU training in CUDA and OpenCL programming. Register for a general course, or schedule a course dedicated for your organization. We can travel to you, or you can travel to our Atlanta office. We recommend that attendees have a working knowledge of C/C++ in order to gain the most from the training courses.[/column][column type=\"one-third\" last=\"false\"]\r\n\r\n<strong>Fee includes:</strong>\r\n<ul>\r\n	<li>Instruction by an excellent and interesting expert. Many hands-on exercises.</li>\r\n	<li>Use of a laptop with CUDA and OpenCL capable GPUs and CPUs</li>\r\n	<li>Choice of Linux or Windows operating system</li>\r\n	<li>Printed manual of lecture material</li>\r\n	<li>Electronic copy of programming exercises</li>\r\n	<li>Certificate of Completion[/column][column type=\"one-third\" last=\"true\"][/column]</li>\r\n</ul>\r\n[column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" looks_like=\"h3 ]Upcoming Courses[/custom_headline]\r\n\r\n<strong>CUDA</strong>\r\n\r\n<strong>OpenCL</strong>\r\n\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 08:25:20','2014-02-10 08:25:20','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4893,7,'2014-02-10 08:25:44','2014-02-10 08:25:44','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  class=\"x-btn-custom-type\" type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" class=\"x-btn-custom-type\"]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.[</span><span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"]<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"CUDAandOpenCL\"]</span>\r\n\r\n[column type=\"one-half\"][gap size=\"15%\"]\r\n\r\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\"><img class=\"aligncenter\" alt=\"CUDA logo\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\" width=\"231\" height=\"140\" /></a>\r\n\r\n<img class=\"aligncenter\" alt=\"OpenCL\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/OpenCLLogo_678x452.png\" width=\"326\" height=\"217\" />\r\n\r\n[/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] ArrayFire for CUDA and OpenCL[/custom_headline]\r\n\r\nArrayFire supports CUDA-capable NVIDIA GPUs and most OpenCL devices, including AMD GPUs/APUs and Intel coprocessors. It also supports other OpenCL devices from ARM and Qualcomm.<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[/content_band][content_band id=\"documentation\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"documentation\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"]Documentation[/custom_headline]\r\n\r\n<strong>ArrayFire for C, C++, and Fortran</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/c\" target=\"_blank\">CUDA &amp; OpenCL C/C++</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/fortran\" target=\"_blank\">CUDA &amp; OpenCL Fortran</a></li>\r\n</ul>\r\n<strong>User Forums</strong>\r\nEvery post gets a response from ArrayFire engineers.\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://forums.accelereyes.com/\" target=\"_blank\">User Forums</a></li>\r\n</ul>\r\n<strong>Introductory Demo Videos</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=1\" target=\"_blank\">ArrayFire Overview</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=2\" target=\"_blank\">ArrayFire Demo</a></li>\r\n</ul>\r\n[/column][column type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/gears1-e1391783830561.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"whitepapers\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ]Whitepapers[/custom_headline]\r\n<p style=\"text-align: center;\"><img class=\"aligncenter  wp-image-4830\" alt=\"Whitepaper 1\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-1.png\" width=\"466\" height=\"374\" /></p>\r\n&nbsp;\r\n\r\n[/column]\r\n<p style=\"text-align: left;\">[column type=\"one-half\"]<img class=\"aligncenter  wp-image-4831\" alt=\"Whitepaper 2\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-2.png\" width=\"442\" height=\"304\" />[/column][column type=\"one-half\" last=\"true\"][/content_band]</p>\r\n[content_band inner_container=\"true\"  no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"benchmarks\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\" ]Benchmarks[/custom_headline]\r\n\r\nAll benchmarks were performed on a NVIDIA Tesla C2050 with an Intel i7-950 processor. The benchmarks compare ArrayFire with several popular CPU-based acceleration libraries, including <a href=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.[/column]\r\n\r\n[column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Benchmark-guy-torso-e1391784056150.png\"][/column]\r\n\r\n[column type=\"one-fifth\"][/column][column type=\"three-fifths\"][tab_nav type=\"four-up\" ] [tab_nav_item title=\"Base\" active=\"true\"] [tab_nav_item title=\"Linear Algebra\"] [tab_nav_item title=\"Convolution\"][tab_nav_item title=\"Utility\"][/tab_nav] [tabs] [tab active=\"true\"]<img class=\"aligncenter\" alt=\"Matrix Multiply\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_multiply-1024x730.png\" width=\"569\" height=\"405\" />[line]<img class=\"aligncenter\" alt=\"Matrix Transpose\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_transpose-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"FFT\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/fft-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [tab]<img class=\"aligncenter\" alt=\"LU\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/lu-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"SVD\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/svd-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Solve\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/solve-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"Convs\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/convs-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Conv\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/conv-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"sum\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sum-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"sort\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sort-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"scan\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/scan-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [/tabs][/column][column type=\"one-fifth\" last=\"true\"][/column][/content_band]\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirefree\"]</span>\r\n<div id=\"arrayfirefree\"></div>\r\n[column type=\"one-half\"][/column][column type=\"one-fourth\"][custom_headline type=\"center\" level=\"h3\"]ArrayFire Free[/custom_headline][/column][column type=\"one-fourth\" last=\"true\"][/column][column type=\"one-fourth\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/right-leaning-e1391788779101.png\"][/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Functions[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Basic Operations</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Arithmetic</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Signal Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Image Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Statistics</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Visualization</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Hardware[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] CUDA</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] OpenCL</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Languages[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] C/C++</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Fortran</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Advanced[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] GFOR Loop</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\" last=\"true\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Platforms[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Windows</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Linux</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Mac</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Data Types[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] All types</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Support[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] Forums</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirepro\"]\r\n<div id=\"arrayfirepro\"></div>\r\n[pricing_table  columns=\"3\"][pricing_table_column  featured=\"false\" title=\"ArrayFire Developer\" currency=\"$\" price=\"499 / year\" interval=\"$149 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item  type=\"times-circle\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"times-circle\"] Linear algebra [/icon_list_item] [icon_list_item type=\"times-circle\"] Sparse matrices [/icon_list_item][icon_list_item type=\"times-circle\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"true\" featured_sub=\"Most Popular\" title=\"ArrayFire Pro\" currency=\"$\" price=\"1,499 / year\" interval=\"$525 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"] Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; counsulting [/icon_list_item] [/icon_list] [button href=\"#\"]Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"false\" title=\"ArrayFire Enterprise\" currency=\"$\" price=\"2,999 / year\" interval=\"$1,049 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"]Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support[/icon_list_item][icon_list_item type=\"star\"]Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [/pricing_table] [/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\" none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"consulting\"]\r\n<div id=\"consulting\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"  ] GPU Consulting Services [/custom_headline]\r\n\r\nArrayFire provides GPU coding services. Hire us to accelerate your code.\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re sure that we can tackle your code too. [/column]\r\n\r\n[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"starter\"]\r\n<div id=\"starter\"></div>\r\n[column type=\"one-half\" last=\"false\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] Starter Package ($500)¹ [/custom_headline]\r\n\r\nHire us for 1-day. We set you up with one engineer dedicated for a full day, as well as support from senior and test engineers throughout the day. Here\'s how it works:\r\n<ul>\r\n	<li>Initial phone call (click \"Talk to Us\" below to get started)</li>\r\n	<li>You send us your code or algorithm</li>\r\n	<li>We analyze your code for potential GPU benefit</li>\r\n	<li>We accelerate as much of the code as is possible within the 1-day effort, applying our extensive GPU software libraries</li>\r\n	<li>We produce a final report, along with code</li>\r\n</ul>\r\nThe final report outlines the best approach to follow for full GPU-acceleration of your code.\r\n<h6>¹ Limit one (1) per customer.[/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou.png\"][/column][/content_band]</h6>\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"]\r\n<div id=\"customcoding\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ] Coding Work (Custom) [/custom_headline]\r\n\r\nHire us immediately to accelerate your code.\r\n\r\nWhy Choose Us?\r\n<ul>\r\n	<li>Deep experience, already servicing thousands of customers</li>\r\n	<li>Quality work, with leading GPU software</li>\r\n	<li>Efficient delivery, with ArrayFire\'s extensive code base we can deliver results fast</li>\r\n	<li>Proven, we make customers happy through faster code</li>\r\n</ul>\r\nOur Strengths\r\n<ul>\r\n	<li>Excellence in GPU code</li>\r\n	<li>Well-written, efficient C, C++, Fortran, Java, or .NET</li>\r\n	<li>Application porting and integration</li>\r\n	<li>Tuning software to peak hardware performance</li>\r\n	<li>Scalability of algorithms to handle enterprise-level programs</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\" ]Training[/custom_headline]\r\n\r\n<span style=\"line-height: 1.5em;\">Attendees will receive the latest industry knowledge and techniques for GPU computing in CUDA and OpenCL. Check out our [extra href=\"#example\" title=\"Training Course Syllabus\" info=\"popover\" info_place=\"top\" info_trigger=\"click\" info_content=\"</span>\r\n\r\n&nbsp;\r\n<h5>DAY 1, INTRODUCTION</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nParallel Computing Overview\r\nProgramming Models\r\nArchitectures Supported\r\nBasic Dataset Mapping Techniques\r\nAcceleration Libraries, ArrayFire\r\nAsynchronos Operation\r\nPortability\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nA Simple Kernel\r\nEquivalent ArrayFire Example\r\nMonte Carlo Pi Estimation\r\nUsing Libraries\r\nTiming\r\nPorting Code for Multiple Devices\r\n<h5>DAY 3, SCALING</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nMulti-Device Use Cases\r\nHeterogeneous Computing\r\nScaling Across Multiple Devices\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nOut of Core Problems: Matrix Multiply\r\nTask Level Parallelism: Optimization\r\nArrayFire Multi-Device\r\n<h5>DAY 2, OPTIMIZATION</h5>\r\n<strong>Lectures:\r\n</strong>Architecture\r\nMemory Models\r\nAdvanced Mapping Techniques\r\nArchitecture Specific Limitations and Optimizations\r\nArrayFire: Lazy Evaluation and Code Vectorization\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:\r\n</strong>Matrix Transpose\r\nOptimization Using Shared Memory\r\nMedian Filter\r\nOptimization Using Constant Memory\r\nCommand Queues Example\r\nArrayFire Example: Nearest Neighbor Algorithm\r\n\r\n&nbsp;\r\n<h5>DAY 4, ALGORITHM PROBLEMS</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures and Practice:\r\n</strong>Reductions\r\nScan Algorithms\r\nSort\r\nConvolution\r\nCustomer-Specific Problem\"]syllabus[/extra]!\r\n\r\nArrayFire offers up to four days of specialized GPU training in CUDA and OpenCL programming. Register for a general course, or schedule a course dedicated for your organization. We can travel to you, or you can travel to our Atlanta office. We recommend that attendees have a working knowledge of C/C++ in order to gain the most from the training courses.[/column][column type=\"one-third\" last=\"false\"]\r\n\r\n<strong>Fee includes:</strong>\r\n<ul>\r\n	<li>Instruction by an excellent and interesting expert. Many hands-on exercises.</li>\r\n	<li>Use of a laptop with CUDA and OpenCL capable GPUs and CPUs</li>\r\n	<li>Choice of Linux or Windows operating system</li>\r\n	<li>Printed manual of lecture material</li>\r\n	<li>Electronic copy of programming exercises</li>\r\n	<li>Certificate of Completion[/column][column type=\"one-third\" last=\"true\"][/column]</li>\r\n</ul>\r\n[column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" looks_like=\"h3 ]Upcoming Courses[/custom_headline]\r\n\r\n<strong>CUDA</strong>\r\n\r\n<strong>OpenCL</strong>\r\n\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 08:25:44','2014-02-10 08:25:44','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4894,7,'2014-02-10 08:26:37','2014-02-10 08:26:37','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  class=\"x-btn-custom-type\" type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" class=\"x-btn-custom-type\"]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.[</span><span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"]<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"CUDAandOpenCL\"]</span>\r\n\r\n[column type=\"one-half\"][gap size=\"15%\"]\r\n\r\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\"><img class=\"aligncenter\" alt=\"CUDA logo\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\" width=\"231\" height=\"140\" /></a>\r\n\r\n<img class=\"aligncenter\" alt=\"OpenCL\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/OpenCLLogo_678x452.png\" width=\"326\" height=\"217\" />\r\n\r\n[/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] ArrayFire for CUDA and OpenCL[/custom_headline]\r\n\r\nArrayFire supports CUDA-capable NVIDIA GPUs and most OpenCL devices, including AMD GPUs/APUs and Intel coprocessors. It also supports other OpenCL devices from ARM and Qualcomm.<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[/content_band][content_band id=\"documentation\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"documentation\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"]Documentation[/custom_headline]\r\n\r\n<strong>ArrayFire for C, C++, and Fortran</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/c\" target=\"_blank\">CUDA &amp; OpenCL C/C++</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/fortran\" target=\"_blank\">CUDA &amp; OpenCL Fortran</a></li>\r\n</ul>\r\n<strong>User Forums</strong>\r\nEvery post gets a response from ArrayFire engineers.\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://forums.accelereyes.com/\" target=\"_blank\">User Forums</a></li>\r\n</ul>\r\n<strong>Introductory Demo Videos</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=1\" target=\"_blank\">ArrayFire Overview</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=2\" target=\"_blank\">ArrayFire Demo</a></li>\r\n</ul>\r\n[/column][column type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/gears1-e1391783830561.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"whitepapers\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ]Whitepapers[/custom_headline]\r\n<p style=\"text-align: center;\"><img class=\"aligncenter  wp-image-4830\" alt=\"Whitepaper 1\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-1.png\" width=\"466\" height=\"374\" /></p>\r\n&nbsp;\r\n\r\n[/column]\r\n<p style=\"text-align: left;\">[column type=\"one-half\"]<img class=\"aligncenter  wp-image-4831\" alt=\"Whitepaper 2\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-2.png\" width=\"442\" height=\"304\" />[/column][column type=\"one-half\" last=\"true\"][/content_band]</p>\r\n[content_band inner_container=\"true\"  no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"benchmarks\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\" ]Benchmarks[/custom_headline]\r\n\r\nAll benchmarks were performed on a NVIDIA Tesla C2050 with an Intel i7-950 processor. The benchmarks compare ArrayFire with several popular CPU-based acceleration libraries, including <a href=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.[/column]\r\n\r\n[column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Benchmark-guy-torso-e1391784056150.png\"][/column]\r\n\r\n[column type=\"one-fifth\"][/column][column type=\"three-fifths\"][tab_nav type=\"four-up\" ] [tab_nav_item title=\"Base\" active=\"true\"] [tab_nav_item title=\"Linear Algebra\"] [tab_nav_item title=\"Convolution\"][tab_nav_item title=\"Utility\"][/tab_nav] [tabs] [tab active=\"true\"]<img class=\"aligncenter\" alt=\"Matrix Multiply\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_multiply-1024x730.png\" width=\"569\" height=\"405\" />[line]<img class=\"aligncenter\" alt=\"Matrix Transpose\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_transpose-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"FFT\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/fft-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [tab]<img class=\"aligncenter\" alt=\"LU\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/lu-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"SVD\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/svd-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Solve\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/solve-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"Convs\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/convs-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Conv\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/conv-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"sum\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sum-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"sort\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sort-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"scan\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/scan-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [/tabs][/column][column type=\"one-fifth\" last=\"true\"][/column][/content_band]\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirefree\"]</span>\r\n<div id=\"arrayfirefree\"></div>\r\n[column type=\"one-half\"][/column][column type=\"one-fourth\"][custom_headline type=\"center\" level=\"h3\"]ArrayFire Free[/custom_headline][/column][column type=\"one-fourth\" last=\"true\"][/column][column type=\"one-fourth\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/right-leaning-e1391788779101.png\"][/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Functions[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Basic Operations</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Arithmetic</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Signal Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Image Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Statistics</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Visualization</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Hardware[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] CUDA</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] OpenCL</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Languages[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] C/C++</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Fortran</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Advanced[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] GFOR Loop</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\" last=\"true\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Platforms[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Windows</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Linux</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Mac</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Data Types[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] All types</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Support[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] Forums</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirepro\"]\r\n<div id=\"arrayfirepro\"></div>\r\n[pricing_table  columns=\"3\"][pricing_table_column  featured=\"false\" title=\"ArrayFire Developer\" currency=\"$\" price=\"499 / year\" interval=\"$149 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item  type=\"times-circle\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"times-circle\"] Linear algebra [/icon_list_item] [icon_list_item type=\"times-circle\"] Sparse matrices [/icon_list_item][icon_list_item type=\"times-circle\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"true\" featured_sub=\"Most Popular\" title=\"ArrayFire Pro\" currency=\"$\" price=\"1,499 / year\" interval=\"$525 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"] Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; counsulting [/icon_list_item] [/icon_list] [button href=\"#\"]Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"false\" title=\"ArrayFire Enterprise\" currency=\"$\" price=\"2,999 / year\" interval=\"$1,049 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"]Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support[/icon_list_item][icon_list_item type=\"star\"]Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [/pricing_table] [/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\" none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"consulting\"]\r\n<div id=\"consulting\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"  ] GPU Consulting Services [/custom_headline]\r\n\r\nArrayFire provides GPU coding services. Hire us to accelerate your code.\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re sure that we can tackle your code too. [/column]\r\n\r\n[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"starter\"]\r\n<div id=\"starter\"></div>\r\n[column type=\"one-half\" last=\"false\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] Starter Package ($500)¹ [/custom_headline]\r\n\r\nHire us for 1-day. We set you up with one engineer dedicated for a full day, as well as support from senior and test engineers throughout the day. Here\'s how it works:\r\n<ul>\r\n	<li>Initial phone call (click \"Talk to Us\" below to get started)</li>\r\n	<li>You send us your code or algorithm</li>\r\n	<li>We analyze your code for potential GPU benefit</li>\r\n	<li>We accelerate as much of the code as is possible within the 1-day effort, applying our extensive GPU software libraries</li>\r\n	<li>We produce a final report, along with code</li>\r\n</ul>\r\nThe final report outlines the best approach to follow for full GPU-acceleration of your code.\r\n<h6>¹ Limit one (1) per customer.[/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou.png\"][/column][/content_band]</h6>\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"]\r\n<div id=\"customcoding\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ] Coding Work (Custom) [/custom_headline]\r\n\r\nHire us immediately to accelerate your code.\r\n\r\nWhy Choose Us?\r\n<ul>\r\n	<li>Deep experience, already servicing thousands of customers</li>\r\n	<li>Quality work, with leading GPU software</li>\r\n	<li>Efficient delivery, with ArrayFire\'s extensive code base we can deliver results fast</li>\r\n	<li>Proven, we make customers happy through faster code</li>\r\n</ul>\r\nOur Strengths\r\n<ul>\r\n	<li>Excellence in GPU code</li>\r\n	<li>Well-written, efficient C, C++, Fortran, Java, or .NET</li>\r\n	<li>Application porting and integration</li>\r\n	<li>Tuning software to peak hardware performance</li>\r\n	<li>Scalability of algorithms to handle enterprise-level programs</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\" ]Training[/custom_headline]\r\n\r\n<span style=\"line-height: 1.5em;\">Attendees will receive the latest industry knowledge and techniques for GPU computing in CUDA and OpenCL. Check out our [extra href=\"#example\" title=\"Training Course Syllabus\" info=\"popover\" info_place=\"top\" info_trigger=\"click\" info_content=\"</span>\r\n\r\n&nbsp;\r\n<h5>DAY 1, INTRODUCTION</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nParallel Computing Overview\r\nProgramming Models\r\nArchitectures Supported\r\nBasic Dataset Mapping Techniques\r\nAcceleration Libraries, ArrayFire\r\nAsynchronos Operation\r\nPortability\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nA Simple Kernel\r\nEquivalent ArrayFire Example\r\nMonte Carlo Pi Estimation\r\nUsing Libraries\r\nTiming\r\nPorting Code for Multiple Devices\r\n<h5>DAY 3, SCALING</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nMulti-Device Use Cases\r\nHeterogeneous Computing\r\nScaling Across Multiple Devices\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nOut of Core Problems: Matrix Multiply\r\nTask Level Parallelism: Optimization\r\nArrayFire Multi-Device\r\n<h5>DAY 2, OPTIMIZATION</h5>\r\n<strong>Lectures:\r\n</strong>Architecture\r\nMemory Models\r\nAdvanced Mapping Techniques\r\nArchitecture Specific Limitations and Optimizations\r\nArrayFire: Lazy Evaluation and Code Vectorization\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:\r\n</strong>Matrix Transpose\r\nOptimization Using Shared Memory\r\nMedian Filter\r\nOptimization Using Constant Memory\r\nCommand Queues Example\r\nArrayFire Example: Nearest Neighbor Algorithm\r\n\r\n&nbsp;\r\n<h5>DAY 4, ALGORITHM PROBLEMS</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures and Practice:\r\n</strong>Reductions\r\nScan Algorithms\r\nSort\r\nConvolution\r\nCustomer-Specific Problem\"]syllabus[/extra]!\r\n\r\nArrayFire offers up to four days of specialized GPU training in CUDA and OpenCL programming. Register for a general course, or schedule a course dedicated for your organization. We can travel to you, or you can travel to our Atlanta office. We recommend that attendees have a working knowledge of C/C++ in order to gain the most from the training courses.[/column][column type=\"one-third\" last=\"false\"]\r\n\r\n<strong>Fee includes:</strong>\r\n<ul>\r\n	<li>Instruction by an excellent and interesting expert. Many hands-on exercises.</li>\r\n	<li>Use of a laptop with CUDA and OpenCL capable GPUs and CPUs</li>\r\n	<li>Choice of Linux or Windows operating system</li>\r\n	<li>Printed manual of lecture material</li>\r\n	<li>Electronic copy of programming exercises</li>\r\n	<li>Certificate of Completion[/column][column type=\"one-third\" last=\"true\"][/column]</li>\r\n</ul>\r\n[column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" looks_like=\"h3 ]Upcoming Courses[/custom_headline]\r\n\r\n<strong>CUDA</strong>\r\n\r\n<strong>OpenCL</strong>\r\n\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 08:26:37','2014-02-10 08:26:37','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4895,7,'2014-02-10 08:29:00','2014-02-10 08:29:00','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\" fade=\"true\" fade_animation=\"in-from-left\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  class=\"x-btn-custom-type\" type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" class=\"x-btn-custom-type\"]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.[</span><span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"]<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"CUDAandOpenCL\"]</span>\r\n\r\n[column type=\"one-half\"][gap size=\"15%\"]\r\n\r\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\"><img class=\"aligncenter\" alt=\"CUDA logo\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/CUDA-logo.jpg\" width=\"231\" height=\"140\" /></a>\r\n\r\n<img class=\"aligncenter\" alt=\"OpenCL\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/OpenCLLogo_678x452.png\" width=\"326\" height=\"217\" />\r\n\r\n[/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] ArrayFire for CUDA and OpenCL[/custom_headline]\r\n\r\nArrayFire supports CUDA-capable NVIDIA GPUs and most OpenCL devices, including AMD GPUs/APUs and Intel coprocessors. It also supports other OpenCL devices from ARM and Qualcomm.<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n[/content_band][content_band id=\"documentation\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"documentation\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"]Documentation[/custom_headline]\r\n\r\n<strong>ArrayFire for C, C++, and Fortran</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/c\" target=\"_blank\">CUDA &amp; OpenCL C/C++</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire/fortran\" target=\"_blank\">CUDA &amp; OpenCL Fortran</a></li>\r\n</ul>\r\n<strong>User Forums</strong>\r\nEvery post gets a response from ArrayFire engineers.\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://forums.accelereyes.com/\" target=\"_blank\">User Forums</a></li>\r\n</ul>\r\n<strong>Introductory Demo Videos</strong>\r\n<ul>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=1\" target=\"_blank\">ArrayFire Overview</a></li>\r\n	<li id=\"overview\"><a href=\"http://www.accelereyes.com/arrayfire_tour?idx=2\" target=\"_blank\">ArrayFire Demo</a></li>\r\n</ul>\r\n[/column][column type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/gears1-e1391783830561.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"whitepapers\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ]Whitepapers[/custom_headline]\r\n<p style=\"text-align: center;\"><img class=\"aligncenter  wp-image-4830\" alt=\"Whitepaper 1\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-1.png\" width=\"466\" height=\"374\" /></p>\r\n&nbsp;\r\n\r\n[/column]\r\n<p style=\"text-align: left;\">[column type=\"one-half\"]<img class=\"aligncenter  wp-image-4831\" alt=\"Whitepaper 2\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Whitepaper-2.png\" width=\"442\" height=\"304\" />[/column][column type=\"one-half\" last=\"true\"][/content_band]</p>\r\n[content_band inner_container=\"true\"  no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"benchmarks\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\" ]Benchmarks[/custom_headline]\r\n\r\nAll benchmarks were performed on a NVIDIA Tesla C2050 with an Intel i7-950 processor. The benchmarks compare ArrayFire with several popular CPU-based acceleration libraries, including <a href=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.[/column]\r\n\r\n[column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Benchmark-guy-torso-e1391784056150.png\"][/column]\r\n\r\n[column type=\"one-fifth\"][/column][column type=\"three-fifths\"][tab_nav type=\"four-up\" ] [tab_nav_item title=\"Base\" active=\"true\"] [tab_nav_item title=\"Linear Algebra\"] [tab_nav_item title=\"Convolution\"][tab_nav_item title=\"Utility\"][/tab_nav] [tabs] [tab active=\"true\"]<img class=\"aligncenter\" alt=\"Matrix Multiply\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_multiply-1024x730.png\" width=\"569\" height=\"405\" />[line]<img class=\"aligncenter\" alt=\"Matrix Transpose\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_transpose-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"FFT\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/fft-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [tab]<img class=\"aligncenter\" alt=\"LU\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/lu-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"SVD\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/svd-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Solve\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/solve-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"Convs\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/convs-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"Conv\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/conv-1024x730.png\" width=\"553\" height=\"394\" />[/tab][tab]<img class=\"aligncenter\" alt=\"sum\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sum-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"sort\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/sort-1024x730.png\" width=\"553\" height=\"394\" />[line]<img class=\"aligncenter\" alt=\"scan\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/scan-1024x730.png\" width=\"553\" height=\"394\" />[/tab] [/tabs][/column][column type=\"one-fifth\" last=\"true\"][/column][/content_band]\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirefree\"]</span>\r\n<div id=\"arrayfirefree\"></div>\r\n[column type=\"one-half\"][/column][column type=\"one-fourth\"][custom_headline type=\"center\" level=\"h3\"]ArrayFire Free[/custom_headline][/column][column type=\"one-fourth\" last=\"true\"][/column][column type=\"one-fourth\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/right-leaning-e1391788779101.png\"][/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Functions[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Basic Operations</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Arithmetic</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Signal Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Image Processing</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Statistics</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Visualization</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Hardware[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] CUDA</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] OpenCL</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Languages[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] C/C++</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Fortran</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Advanced[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] GFOR Loop</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][column type=\"one-fourth\" last=\"true\"]\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Platforms[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Windows</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Linux</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] Mac</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Data Types[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td>[icon type=\"check-circle\"] All types</td>\r\n</tr>\r\n<tr>\r\n<td>[custom_headline type=\"center\" level=\"h5\"]Support[/custom_headline]</td>\r\n</tr>\r\n<tr>\r\n<td> [icon type=\"check-circle\"] Forums</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n[/column][/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"arrayfirepro\"]\r\n<div id=\"arrayfirepro\"></div>\r\n[pricing_table  columns=\"3\"][pricing_table_column  featured=\"false\" title=\"ArrayFire Developer\" currency=\"$\" price=\"499 / year\" interval=\"$149 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item  type=\"times-circle\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"times-circle\"] Linear algebra [/icon_list_item] [icon_list_item type=\"times-circle\"] Sparse matrices [/icon_list_item][icon_list_item type=\"times-circle\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"true\" featured_sub=\"Most Popular\" title=\"ArrayFire Pro\" currency=\"$\" price=\"1,499 / year\" interval=\"$525 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"] Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support [/icon_list_item][icon_list_item type=\"times-circle\"] Premium support &amp; counsulting [/icon_list_item] [/icon_list] [button href=\"#\"]Purchase [/button] [/pricing_table_column] [pricing_table_column featured=\"false\" title=\"ArrayFire Enterprise\" currency=\"$\" price=\"2,999 / year\" interval=\"$1,049 / year (Academic)\"] [icon_list] [icon_list_item type=\"star\"] Dedicated license [/icon_list_item] [icon_list_item type=\"star\"] Starts at 2 GPUs or devices [/icon_list_item] [icon_list_item type=\"star\"] Linear algebra [/icon_list_item][icon_list_item type=\"star\"]Sparse matrices [/icon_list_item][icon_list_item type=\"star\"] Phone support[/icon_list_item][icon_list_item type=\"star\"]Premium support &amp; consulting [/icon_list_item][/icon_list] [button href=\"#\"] Purchase [/button] [/pricing_table_column] [/pricing_table] [/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\" none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"consulting\"]\r\n<div id=\"consulting\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"  ] GPU Consulting Services [/custom_headline]\r\n\r\nArrayFire provides GPU coding services. Hire us to accelerate your code.\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re sure that we can tackle your code too. [/column]\r\n\r\n[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"starter\"]\r\n<div id=\"starter\"></div>\r\n[column type=\"one-half\" last=\"false\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"] Starter Package ($500)¹ [/custom_headline]\r\n\r\nHire us for 1-day. We set you up with one engineer dedicated for a full day, as well as support from senior and test engineers throughout the day. Here\'s how it works:\r\n<ul>\r\n	<li>Initial phone call (click \"Talk to Us\" below to get started)</li>\r\n	<li>You send us your code or algorithm</li>\r\n	<li>We analyze your code for potential GPU benefit</li>\r\n	<li>We accelerate as much of the code as is possible within the 1-day effort, applying our extensive GPU software libraries</li>\r\n	<li>We produce a final report, along with code</li>\r\n</ul>\r\nThe final report outlines the best approach to follow for full GPU-acceleration of your code.\r\n<h6>¹ Limit one (1) per customer.[/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou.png\"][/column][/content_band]</h6>\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"]\r\n<div id=\"customcoding\"></div>\r\n[column type=\"one-half\"  fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ] Coding Work (Custom) [/custom_headline]\r\n\r\nHire us immediately to accelerate your code.\r\n\r\nWhy Choose Us?\r\n<ul>\r\n	<li>Deep experience, already servicing thousands of customers</li>\r\n	<li>Quality work, with leading GPU software</li>\r\n	<li>Efficient delivery, with ArrayFire\'s extensive code base we can deliver results fast</li>\r\n	<li>Proven, we make customers happy through faster code</li>\r\n</ul>\r\nOur Strengths\r\n<ul>\r\n	<li>Excellence in GPU code</li>\r\n	<li>Well-written, efficient C, C++, Fortran, Java, or .NET</li>\r\n	<li>Application porting and integration</li>\r\n	<li>Tuning software to peak hardware performance</li>\r\n	<li>Scalability of algorithms to handle enterprise-level programs</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" id=\"customcoding\"][column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\" ]Training[/custom_headline]\r\n\r\n<span style=\"line-height: 1.5em;\">Attendees will receive the latest industry knowledge and techniques for GPU computing in CUDA and OpenCL. Check out our [extra href=\"#example\" title=\"Training Course Syllabus\" info=\"popover\" info_place=\"top\" info_trigger=\"click\" info_content=\"</span>\r\n\r\n&nbsp;\r\n<h5>DAY 1, INTRODUCTION</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nParallel Computing Overview\r\nProgramming Models\r\nArchitectures Supported\r\nBasic Dataset Mapping Techniques\r\nAcceleration Libraries, ArrayFire\r\nAsynchronos Operation\r\nPortability\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nA Simple Kernel\r\nEquivalent ArrayFire Example\r\nMonte Carlo Pi Estimation\r\nUsing Libraries\r\nTiming\r\nPorting Code for Multiple Devices\r\n<h5>DAY 3, SCALING</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures:</strong>\r\nMulti-Device Use Cases\r\nHeterogeneous Computing\r\nScaling Across Multiple Devices\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:</strong>\r\nOut of Core Problems: Matrix Multiply\r\nTask Level Parallelism: Optimization\r\nArrayFire Multi-Device\r\n<h5>DAY 2, OPTIMIZATION</h5>\r\n<strong>Lectures:\r\n</strong>Architecture\r\nMemory Models\r\nAdvanced Mapping Techniques\r\nArchitecture Specific Limitations and Optimizations\r\nArrayFire: Lazy Evaluation and Code Vectorization\r\n\r\n&nbsp;\r\n\r\n<strong>Practice:\r\n</strong>Matrix Transpose\r\nOptimization Using Shared Memory\r\nMedian Filter\r\nOptimization Using Constant Memory\r\nCommand Queues Example\r\nArrayFire Example: Nearest Neighbor Algorithm\r\n\r\n&nbsp;\r\n<h5>DAY 4, ALGORITHM PROBLEMS</h5>\r\n&nbsp;\r\n\r\n<strong>Lectures and Practice:\r\n</strong>Reductions\r\nScan Algorithms\r\nSort\r\nConvolution\r\nCustomer-Specific Problem\"]syllabus[/extra]!\r\n\r\nArrayFire offers up to four days of specialized GPU training in CUDA and OpenCL programming. Register for a general course, or schedule a course dedicated for your organization. We can travel to you, or you can travel to our Atlanta office. We recommend that attendees have a working knowledge of C/C++ in order to gain the most from the training courses.[/column][column type=\"one-third\" last=\"false\"]\r\n\r\n<strong>Fee includes:</strong>\r\n<ul>\r\n	<li>Instruction by an excellent and interesting expert. Many hands-on exercises.</li>\r\n	<li>Use of a laptop with CUDA and OpenCL capable GPUs and CPUs</li>\r\n	<li>Choice of Linux or Windows operating system</li>\r\n	<li>Printed manual of lecture material</li>\r\n	<li>Electronic copy of programming exercises</li>\r\n	<li>Certificate of Completion[/column][column type=\"one-third\" last=\"true\"][/column]</li>\r\n</ul>\r\n[column type=\"one-half\"][/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" looks_like=\"h3 ]Upcoming Courses[/custom_headline]\r\n\r\n<strong>CUDA</strong>\r\n\r\n<strong>OpenCL</strong>\r\n\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 08:29:00','2014-02-10 08:29:00','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4896,7,'2014-02-10 08:43:27','2014-02-10 08:43:27','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\" fade=\"true\" fade_animation=\"in-from-left\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  class=\"x-btn-custom-type\" type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" class=\"x-btn-custom-type\"]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.[</span><span style=\"line-height: 1.5em;\">/column]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" last=\'true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"]<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]</span>\r\n\r\n[column type=\"one-half\"]<img class=\"aligncenter size-large wp-image-462\" alt=\"Bat signal\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal-1024x639.png\" width=\"1024\" height=\"639\" />[/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\"]Need an expert?[/custom_headline]\r\n\r\n&nbsp;\r\n\r\nHire us to accelerate your code. Or to train your pros. Or to even write your code!\r\n\r\n&nbsp;\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re pretty sure that we can tackle your code, too.\r\n\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 08:43:27','2014-02-10 08:43:27','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4897,7,'2014-02-10 08:47:15','2014-02-10 08:47:15','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\" fade=\"true\" fade_animation=\"in-from-left\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  class=\"x-btn-custom-type\" type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" class=\"x-btn-custom-type\"]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.[</span><span style=\"line-height: 1.5em;\">/column]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"]<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" fade=\"true\" fade_animation=\"in-from-left\"]<img class=\"aligncenter size-large wp-image-462\" alt=\"Bat signal\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal-1024x639.png\" width=\"1024\" height=\"639\" />[/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\"]Need an expert?[/custom_headline]\r\n\r\nHire us to accelerate your code. Or to train your pros. Or to even write your code!\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re pretty sure that we can tackle your code, too.\r\n\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 08:47:15','2014-02-10 08:47:15','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4898,7,'2014-02-10 08:49:19','2014-02-10 08:49:19','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\" fade=\"true\" fade_animation=\"in-from-left\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  class=\"x-btn-custom-type\" type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" class=\"x-btn-custom-type\"]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.[</span><span style=\"line-height: 1.5em;\">/column]</span>\r\n\r\n[column class=\"center-text\" type=\"three-fifths\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"]<span style=\"line-height: 1.5em;\">[/column]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" fade=\"true\" fade_animation=\"in-from-left\"]<img class=\"aligncenter size-large wp-image-462\" alt=\"Bat signal\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal-1024x639.png\" width=\"1024\" height=\"639\" />[/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\"]Need an expert?[/custom_headline]\r\n\r\nHire us to accelerate your code. Or to train your pros. Or to even write your code!\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re pretty sure that we can tackle your code, too.\r\n\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 08:49:19','2014-02-10 08:49:19','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4899,7,'2014-02-10 08:51:12','2014-02-10 08:51:12','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\" fade=\"true\" fade_animation=\"in-from-left\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  class=\"x-btn-custom-type\" type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" class=\"x-btn-custom-type\"]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.[/column]\r\n\r\n[column class=\"center-text\" type=\"three-fifths\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"][/column]\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" fade=\"true\" fade_animation=\"in-from-left\"]<img class=\"aligncenter size-large wp-image-462\" alt=\"Bat signal\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal-1024x639.png\" width=\"1024\" height=\"639\" />[/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\"]Need an expert?[/custom_headline]\r\n\r\nHire us to accelerate your code. Or to train your pros. Or to even write your code!\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re pretty sure that we can tackle your code, too.\r\n\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 08:51:12','2014-02-10 08:51:12','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4900,7,'2014-02-10 08:55:11','2014-02-10 08:55:11','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\" fade=\"true\" fade_animation=\"in-from-left\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  class=\"x-btn-custom-type\" type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" class=\"x-btn-custom-type\"]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"#\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column]</span>\r\n\r\n[column class=\"center-text\" type=\"three-fifths\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"][/column]\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" fade=\"true\" fade_animation=\"in-from-left\"]<img class=\"aligncenter size-large wp-image-462\" alt=\"Bat signal\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal-1024x639.png\" width=\"1024\" height=\"639\" />[/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\"]Need an expert?[/custom_headline]\r\n\r\nHire us to accelerate your code. Or to train your pros. Or to even write your code!\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re pretty sure that we can tackle your code, too.\r\n\r\n<span style=\"line-height: 1.5em;\">[/column][/content_band]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 08:55:11','2014-02-10 08:55:11','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4901,7,'2014-02-10 08:56:55','2014-02-10 08:56:55','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\" fade=\"true\" fade_animation=\"in-from-left\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" class=\"x-btn-custom-type\"]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"#\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column]</span>\r\n\r\n[column class=\"center-text\" type=\"three-fifths\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"][/column]\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" fade=\"true\" fade_animation=\"in-from-left\"]<img class=\"aligncenter size-large wp-image-462\" alt=\"Bat signal\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal-1024x639.png\" width=\"1024\" height=\"639\" />[/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\"]Need an expert?[/custom_headline]\r\n\r\nHire us to accelerate your code. Or to train your pros. Or to even write your code!\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re pretty sure that we can tackle your code, too.\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"#\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column][/content_band]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 08:56:55','2014-02-10 08:56:55','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4902,7,'2014-02-10 08:57:33','2014-02-10 08:57:33','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\" fade=\"true\" fade_animation=\"in-from-left\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" ]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"#\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column]</span>\r\n\r\n[column class=\"center-text\" type=\"three-fifths\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"][/column]\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" fade=\"true\" fade_animation=\"in-from-left\"]<img class=\"aligncenter size-large wp-image-462\" alt=\"Bat signal\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal-1024x639.png\" width=\"1024\" height=\"639\" />[/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\"]Need an expert?[/custom_headline]\r\n\r\nHire us to accelerate your code. Or to train your pros. Or to even write your code!\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re pretty sure that we can tackle your code, too.\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"#\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column][/content_band]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 08:57:33','2014-02-10 08:57:33','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4903,7,'2014-02-10 09:05:25','2014-02-10 09:05:25','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\" fade=\"true\" fade_animation=\"in-from-left\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" ]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"#\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column]</span>\r\n\r\n[column class=\"center-text\" type=\"three-fifths\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"][/column]\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" fade=\"true\" fade_animation=\"in-from-left\"]<img class=\"aligncenter size-large wp-image-462\" alt=\"Bat signal\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal-1024x639.png\" width=\"1024\" height=\"639\" />[/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\"]Need an expert?[/custom_headline]\r\n\r\nHire us to accelerate your code. Or to train your pros. Or to even write your code!\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re pretty sure that we can tackle your code, too.\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"#\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column][/content_band]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">Check out our blog for the latest and greatest of GPU and accelerator computing. See how ArrayFire is delivering speedups in real applications.[/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 09:05:25','2014-02-10 09:05:25','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4904,7,'2014-02-10 09:06:05','2014-02-10 09:06:05','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\" fade=\"true\" fade_animation=\"in-from-left\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" ]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"#\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column]</span>\r\n\r\n[column class=\"center-text\" type=\"three-fifths\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"][/column]\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" fade=\"true\" fade_animation=\"in-from-left\"]<img class=\"aligncenter size-large wp-image-462\" alt=\"Bat signal\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal-1024x639.png\" width=\"1024\" height=\"639\" />[/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\"]Need an expert?[/custom_headline]\r\n\r\nHire us to accelerate your code. Or to train your pros. Or to even write your code!\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re pretty sure that we can tackle your code, too.\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"#\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column][/content_band]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">Check out our blog for the latest and greatest of GPU and accelerator computing. See how ArrayFire is delivering speedups in real applications.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"#\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Take me there![/button][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 09:06:05','2014-02-10 09:06:05','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4905,7,'2014-02-10 09:19:46','2014-02-10 09:19:46','','Hardware','','publish','open','closed','','hardware','','','2014-04-01 13:51:19','2014-04-01 13:51:19','',0,'http://sandbox.arrayfire.com/?p=4905',2,'nav_menu_item','',0),(4906,7,'2014-02-10 09:19:46','2014-02-10 09:19:46','','Documentation','','publish','open','closed','','documentation','','','2014-04-01 13:51:19','2014-04-01 13:51:19','',0,'http://sandbox.arrayfire.com/?p=4906',4,'nav_menu_item','',0),(4908,7,'2014-02-10 09:19:47','2014-02-10 09:19:47','','Whitepapers','','publish','open','closed','','whitepapers','','','2014-04-01 13:51:19','2014-04-01 13:51:19','',0,'http://sandbox.arrayfire.com/?p=4908',7,'nav_menu_item','',0),(4910,7,'2014-02-10 09:19:47','2014-02-10 09:19:47','','Licensing','','publish','open','closed','','licensing','','','2014-04-01 13:51:19','2014-04-01 13:51:19','',0,'http://sandbox.arrayfire.com/?p=4910',6,'nav_menu_item','',0),(4911,7,'2014-02-10 09:20:10','2014-02-10 09:20:10','','Case Studies','','publish','open','closed','','case-studies','','','2014-04-01 13:51:19','2014-04-01 13:51:19','',0,'http://sandbox.arrayfire.com/?p=4911',8,'nav_menu_item','',0),(4912,7,'2014-02-10 09:22:57','2014-02-10 09:22:57','','Consulting','','publish','open','closed','','starter-package','','','2015-05-01 21:26:34','2015-05-01 21:26:34','',0,'http://sandbox.arrayfire.com/?p=4912',2,'nav_menu_item','',0),(4913,7,'2014-02-10 09:22:57','2014-02-10 09:22:57','','Resources','','publish','open','closed','','custom-code','','','2015-05-01 21:26:34','2015-05-01 21:26:34','',0,'http://sandbox.arrayfire.com/?p=4913',7,'nav_menu_item','',0),(4914,7,'2014-02-10 09:22:57','2014-02-10 09:22:57','','Blog','','publish','open','closed','','training','','','2015-05-01 21:26:34','2015-05-01 21:26:34','',0,'http://sandbox.arrayfire.com/?p=4914',11,'nav_menu_item','',0),(4917,7,'2014-02-10 09:23:28','2014-02-10 09:23:28','','Products','','publish','open','closed','','arrayfire-2','','','2014-04-01 13:51:19','2014-04-01 13:51:19','',0,'http://sandbox.arrayfire.com/?p=4917',1,'nav_menu_item','',0),(4930,7,'2014-02-10 10:07:06','2014-02-10 10:07:06','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\" fade=\"true\" fade_animation=\"in-from-left\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" ]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"http://sandbox.arrayfire.com/fire/\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column]</span>\r\n\r\n[column class=\"center-text\" type=\"three-fifths\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"][/column]\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" fade=\"true\" fade_animation=\"in-from-left\"]<img class=\"aligncenter size-large wp-image-462\" alt=\"Bat signal\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal-1024x639.png\" width=\"1024\" height=\"639\" />[/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\"]Need an expert?[/custom_headline]\r\n\r\nHire us to accelerate your code. Or to train your pros. Or to even write your code!\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re pretty sure that we can tackle your code, too.\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"#\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column][/content_band]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">Check out our blog for the latest and greatest of GPU and accelerator computing. See how ArrayFire is delivering speedups in real applications.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"#\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Take me there![/button][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 10:07:06','2014-02-10 10:07:06','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4935,7,'2014-02-10 10:34:50','2014-02-10 10:34:50','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\" fade=\"true\" fade_animation=\"in-from-left\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" ]Schedule a consultation[/button][/column][column type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"http://sandbox.arrayfire.com/fire/\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column]</span>\r\n\r\n[column class=\"center-text\" type=\"three-fifths\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"][/column]\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" fade=\"true\" fade_animation=\"in-from-left\"]<img class=\"aligncenter size-large wp-image-462\" alt=\"Bat signal\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal-1024x639.png\" width=\"1024\" height=\"639\" />[/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\"]Need an expert?[/custom_headline]\r\n\r\nHire us to accelerate your code. Or to train your pros. Or to even write your code!\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re pretty sure that we can tackle your code, too.\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"http://sandbox.arrayfire.com/consult/\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column][/content_band]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">Check out our blog for the latest and greatest of GPU and accelerator computing. See how ArrayFire is delivering speedups in real applications.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"http://sandbox.arrayfire.com/blog-2/\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]This way[/button][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 10:34:50','2014-02-10 10:34:50','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4936,7,'2014-02-10 11:11:52','2014-02-10 11:11:52','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\" fade=\"true\" fade_animation=\"in-from-left\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" ]Schedule a consultation[/button][/column][column fade=\"true\" type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"http://sandbox.arrayfire.com/fire/\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column]</span>\r\n\r\n[column class=\"center-text\" type=\"three-fifths\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Single-glame-guy-torso-e1391782556876.png\"][/column]\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" fade=\"true\" fade_animation=\"in-from-left\"]<img class=\"aligncenter size-large wp-image-462\" alt=\"Bat signal\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal-1024x639.png\" width=\"1024\" height=\"639\" />[/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\"]Need an expert?[/custom_headline]\r\n\r\nHire us to accelerate your code. Or to train your pros. Or to even write your code!\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re pretty sure that we can tackle your code, too.\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"http://sandbox.arrayfire.com/consult/\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column][/content_band]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">Check out our blog for the latest and greatest of GPU and accelerator computing. See how ArrayFire is delivering speedups in real applications.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"http://sandbox.arrayfire.com/blog-2/\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]This way[/button][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-10 11:11:52','2014-02-10 11:11:52','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4955,7,'2014-02-11 15:15:55','2014-02-11 15:15:55','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\"] [custom_headline type=\"left\" level=\"h3\" ]About[/custom_headline]ArrayFire is the software shop for CUDA and OpenCL. Since 2007, ArrayFire has offered the most productive solutions for accelerating code using GPUs. Today, ArrayFire delivers products which are used to accelerate C, C++, and Fortran codes on CUDA GPUs and OpenCL devices. ArrayFire has thousands of customers. These customers come from a wide range of industries, including defense and intelligence, life science, oil and gas, finance, manufacturing, media, and others. ArrayFire has had success accelerating numerous application types, including math and numerical algorithms, image processing, signal processing, statistics, optimization, and more. Many ArrayFire customers are realizing 100X speed-up with much less effort than is typically required to accelerate code.[/column][column type=\"one-half\" last=\"true\"] [/column] [column type=\"one-third\"][custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Email[/custom_headline] Sales: sales@arrayfire.com\r\nSupport: sales@arrayfire.com\r\nCareers: jobs@arrayfire.com[/column] [column type=\"one-third\"][custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Phone[/custom_headline] Sales: +1 (800) 570-1941 x 1\r\nTechnical Support: +1 (800) 570-1941 x 2 [/column][column type=\"one-third\" last=\"true\"][custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Headquarters[/custom_headline] 3423 Piedmont Rd NE STE 330\r\nAtlanta, GA 30305[/column] [/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\" ]Careers[/custom_headline]As a global leader in GPU computing software, our business opportunities are always expanding. We are constantly searching for talented, qualified individuals to join the AccelerEyes team. AccelerEyes is committed to providing employees with the opportunity to grow and learn, the freedom to express ideas and contribute to new developments, and the motivation to succeed. To start the application process, simply email us your resume and let us know which position(s) you\'re interested in.[/column][column type=\"one-half\" last=\"true\"][/column]\r\n\r\n[column class=\"center-text\" type=\"one-third\"][promo image=\"http://bit.ly/1i39aq7\" alt=\"Alt Text\"]<strong>Software Engineer - Atlanta, GA\r\n</strong><em>Responsibilities -</em> Develop in C/C++, Fortran, CUDA, and OpenCL. Respond to forum posts and customer support tickets.\r\n<em>Qualifications -</em> A background in any of high-performance computing, operating systems, or compilers. Several years of C/C++ and at least one year of CUDA or similar technology. Familiarity with Fortran is a plus. Undergraduate or graduate work in CS or related field. [/promo][/column][column class=\"center-text\" type=\"one-third\"]promo image=\"http://bit.ly/1i39aq7\" alt=\"Alt Text\"] Add in your content here. [/promo][/column][column type=\"one-third\" last=\"true\" class=\"center-text\"]promo image=\"http://bit.ly/1i39aq7\" alt=\"Alt Text\"] Add in your content here. [/promo][/column]\r\n\r\n[icon_list] [icon_list_item type=\"angle-double-right\"]<strong>Software Engineer - Atlanta, GA\r\n</strong><em>Responsibilities -</em> Develop in C/C++, Fortran, CUDA, and OpenCL. Respond to forum posts and customer support tickets. <em>Qualifications -</em> A background in any of high-performance computing, operating systems, or compilers. Several years of C/C++ and at least one year of CUDA or similar technology. Familiarity with Fortran is a plus. Undergraduate or graduate work in CS or related field.[/icon_list_item] [icon_list_item type=\"angle-double-right\"]<strong>Application Engineer - Atlanta, GA</strong>\r\n<em>Responsibilities -</em> Work closely with customers to develop software solutions using our products. Develop technical marketing materials including demos, webinars, tutorials, etc. Respond to forum posts and customer support tickets.\r\n<em>Qualifications -</em> Undergraduate or graduate work in CS or related field. Strong programming skills in C/C++. Excellent communication skills.[/icon_list_item] [icon_list_item type=\"angle-double-right\"]<strong>Web/Devops Engineer - Atlanta, GA</strong>\r\n<em>Responsibilities -</em> Develop PHP/MySQL backend infrastructure with basic HTML/CSS/JavaScript frontend work. Developing lightweight webapps for system monitoring. Maintaining Magento and SalesForce integration. Maintaining server/cluster infrastructure.\r\n<em>Qualifications -</em> Strong PHP and MySQL experience. Very comfortable at a shell prompt. Proficient in HTML, CSS, and JavaScript. Familiarity with Magento or SalesForce is a plus.[/icon_list_item] [/icon_list]\r\n\r\n[/column][column type=\"one-half\" last=\"true\"][/content_band]','Company','','inherit','open','closed','','329-revision-v1','','','2014-02-11 15:15:55','2014-02-11 15:15:55','',329,'http://sandbox.arrayfire.com/329-revision-v1/',0,'revision','',0),(4959,7,'2014-02-11 21:24:57','2014-02-11 21:24:57','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\" fade=\"true\" fade_animation=\"in-from-left\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" ]Schedule a consultation[/button][/column][column fade=\"true\" type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"http://sandbox.arrayfire.com/fire/\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column]</span>\r\n\r\n[column class=\"center-text\" type=\"three-fifths\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Triumvirate.png\"][/column]\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" fade=\"true\" fade_animation=\"in-from-left\"]<img class=\"aligncenter size-large wp-image-462\" alt=\"Bat signal\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal-1024x639.png\" width=\"1024\" height=\"639\" />[/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\"]Need an expert?[/custom_headline]\r\n\r\nHire us to accelerate your code. Or to train your pros. Or to even write your code!\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re pretty sure that we can tackle your code, too.\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"http://sandbox.arrayfire.com/consult/\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column][/content_band]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">Check out our blog for the latest and greatest of GPU and accelerator computing. See how ArrayFire is delivering speedups in real applications.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"http://sandbox.arrayfire.com/blog-2/\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]This way[/button][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Hunched-over.png\"][/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-11 21:24:57','2014-02-11 21:24:57','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4960,7,'2014-02-11 21:30:21','2014-02-11 21:30:21','','coder with computer','','inherit','open','closed','','coder-with-computer','','','2014-02-11 21:30:21','2014-02-11 21:30:21','',245,'http://sandbox.arrayfire.com/wp-content/uploads/2014/01/coder-with-computer.png',0,'attachment','image/png',0),(4961,7,'2014-02-11 21:34:15','2014-02-11 21:34:15','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]\r\n<p style=\"text-align: left;\">[column type=\"two-fifths\" fade=\"true\" fade_animation=\"in-from-left\"][custom_headline type=\"left\" class=\"mtn\" level=\"h2\"]An acceleration library for CUDA and OpenCL.[/custom_headline][gap size=\"12%\"][button  type=\"flat\" shape=\"rounded\" href=\"#\" size=\"jumbo\" block=\"true\"]Download ArrayFire[/button]</p>\r\n[gap size=\"10%\"]\r\n<p style=\"text-align: left;\">[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"#\" size=\"jumbo\" ]Schedule a consultation[/button][/column][column fade=\"true\" type=\"three-fifths\" last=\"true\"]</p>\r\n<p style=\"text-align: center;\"><iframe name=\"wistia_embed\" src=\"//fast.wistia.net/embed/iframe/rj2bar3xxp\" height=\"360\" width=\"640\" allowfullscreen=\"\" frameborder=\"0\" scrolling=\"no\"></iframe>[/column][gap size=\"5%\"]</p>\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" bg_color=\"transparent\" ]<span style=\"line-height: 1.5em;\">[column type=\"two-fifths\" last=\"false\" ] [custom_headline type=\"left\" level=\"h3\"]It was a pleasure to burn.[/custom_headline]ArrayFire is a fast, hardware-neutral software library for GPU computing with an easy-to-use API. Its array-based function set makes GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"http://sandbox.arrayfire.com/fire/\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column]</span>\r\n\r\n[column class=\"center-text\" type=\"three-fifths\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Triumvirate.png\"][/column]\r\n\r\n<span style=\"line-height: 1.5em;\">[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ]</span>\r\n\r\n[column class=\"center-text\" type=\"one-half\" fade=\"true\" fade_animation=\"in-from-left\"]<img class=\"aligncenter size-large wp-image-462\" alt=\"Bat signal\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal-1024x639.png\" width=\"1024\" height=\"639\" />[/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h3\"]Need an expert?[/custom_headline]\r\n\r\nHire us to accelerate your code. Or to train your pros. Or to even write your code!\r\n\r\nWe\'ve already helped thousands of organizations speedup their code. We\'ve accelerated all sorts of algorithms, data sets, and challenging problems in the past and we\'re pretty sure that we can tackle your code, too.\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"http://sandbox.arrayfire.com/consult/\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]Learn more...[/button][/column][/content_band]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]The ArrayFire Blog[/custom_headline]</span>\r\n\r\n<span style=\"line-height: 1.5em;\">Check out our blog for the latest and greatest of GPU and accelerator computing. See how ArrayFire is delivering speedups in real applications.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">[button href=\"http://sandbox.arrayfire.com/blog-2/\" title=\"Learn more\" target=\"blank\" shape=\"rounded\" size=\"large\" ]This way[/button][/column][column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" ][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/coder-with-computer.png\"][/column][/content_band]</span>','Home','','inherit','open','closed','','245-revision-v1','','','2014-02-11 21:34:15','2014-02-11 21:34:15','',245,'http://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(4962,7,'2014-02-11 21:42:58','2014-02-11 21:42:58','','Benchmark guy, torso opposite','','inherit','open','closed','','benchmark-guy-torso-opposite','','','2014-11-07 19:29:52','2014-11-07 19:29:52','',6634,'http://sandbox.arrayfire.com/wp-content/uploads/2014/02/Benchmark-guy-torso-opposite.png',0,'attachment','image/png',0),(4967,7,'2014-02-12 14:31:14','2014-02-12 14:31:14','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\"] [custom_headline type=\"left\" level=\"h3\" ]About[/custom_headline]ArrayFire is the software shop for CUDA and OpenCL. Since 2007, ArrayFire has offered the most productive solutions for accelerating code using GPUs. Today, ArrayFire delivers products which are used to accelerate C, C++, and Fortran codes on CUDA GPUs and OpenCL devices. ArrayFire has thousands of customers. These customers come from a wide range of industries, including defense and intelligence, life science, oil and gas, finance, manufacturing, media, and others. ArrayFire has had success accelerating numerous application types, including math and numerical algorithms, image processing, signal processing, statistics, optimization, and more. Many ArrayFire customers are realizing 100X speed-up with much less effort than is typically required to accelerate code.[/column][column type=\"one-half\" last=\"true\" fade=\"true\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame.png\"] [/column] [column type=\"one-third\"][custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Email[/custom_headline] Sales: sales@arrayfire.com Support: sales@arrayfire.com Careers: jobs@arrayfire.com[/column] [column type=\"one-third\"][custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Phone[/custom_headline] Sales: +1 (800) 570-1941 x 1 Technical Support: +1 (800) 570-1941 x 2 [/column][column type=\"one-third\" last=\"true\"][custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Headquarters[/custom_headline] 3423 Piedmont Rd NE STE 330 Atlanta, GA 30305[/column] [/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ] [content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\" ]Careers[/custom_headline]As a global leader in GPU computing software, our business opportunities are always expanding. We are constantly searching for talented, qualified individuals to join the AccelerEyes team. AccelerEyes is committed to providing employees with the opportunity to grow and learn, the freedom to express ideas and contribute to new developments, and the motivation to succeed. To start the application process, simply email us your resume and let us know which position(s) you\'re interested in.[/column][column type=\"one-half\" last=\"true\"][/column] [column type=\"one-third\"][promo image=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/jango-fett.png\" alt=\"Alt Text\"]<strong>Software Engineer - Atlanta, GA </strong><em>Responsibilities -</em> Develop in C/C++, Fortran, CUDA, and OpenCL. Respond to forum posts and customer support tickets. <em>Qualifications -</em> A background in any of high-performance computing, operating systems, or compilers. Several years of C/C++ and at least one year of CUDA or similar technology. Familiarity with Fortran is a plus. Undergraduate or graduate work in CS or related field. [/promo][/column][column class=\"center-text\" type=\"one-third\"]promo image=\"http://bit.ly/1i39aq7\" alt=\"Alt Text\"] Add in your content here. [/promo][/column][column type=\"one-third\" last=\"true\" class=\"center-text\"]promo image=\"http://bit.ly/1i39aq7\" alt=\"Alt Text\"] Add in your content here. [/promo][/column] [icon_list] [icon_list_item type=\"angle-double-right\"]<strong>Software Engineer - Atlanta, GA </strong><em>Responsibilities -</em> Develop in C/C++, Fortran, CUDA, and OpenCL. Respond to forum posts and customer support tickets. <em>Qualifications -</em> A background in any of high-performance computing, operating systems, or compilers. Several years of C/C++ and at least one year of CUDA or similar technology. Familiarity with Fortran is a plus. Undergraduate or graduate work in CS or related field.[/icon_list_item] [icon_list_item type=\"angle-double-right\"]<strong>Application Engineer - Atlanta, GA</strong> <em>Responsibilities -</em> Work closely with customers to develop software solutions using our products. Develop technical marketing materials including demos, webinars, tutorials, etc. Respond to forum posts and customer support tickets. <em>Qualifications -</em> Undergraduate or graduate work in CS or related field. Strong programming skills in C/C++. Excellent communication skills.[/icon_list_item] [icon_list_item type=\"angle-double-right\"]<strong>Web/Devops Engineer - Atlanta, GA</strong> <em>Responsibilities -</em> Develop PHP/MySQL backend infrastructure with basic HTML/CSS/JavaScript frontend work. Developing lightweight webapps for system monitoring. Maintaining Magento and SalesForce integration. Maintaining server/cluster infrastructure. <em>Qualifications -</em> Strong PHP and MySQL experience. Very comfortable at a shell prompt. Proficient in HTML, CSS, and JavaScript. Familiarity with Magento or SalesForce is a plus.[/icon_list_item] [/icon_list] [/column][column type=\"one-half\" last=\"true\"][/content_band]','Company','','inherit','open','closed','','329-revision-v1','','','2014-02-12 14:31:14','2014-02-12 14:31:14','',329,'http://sandbox.arrayfire.com/329-revision-v1/',0,'revision','',0),(4968,7,'2014-02-12 15:18:44','2014-02-12 15:18:44','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\"] [custom_headline type=\"left\" level=\"h3\" ]About[/custom_headline]ArrayFire is the software shop for CUDA and OpenCL. Since 2007, ArrayFire has offered the most productive solutions for accelerating code using GPUs. Today, ArrayFire delivers products which are used to accelerate C, C++, and Fortran codes on CUDA GPUs and OpenCL devices. ArrayFire has thousands of customers. These customers come from a wide range of industries, including defense and intelligence, life science, oil and gas, finance, manufacturing, media, and others. ArrayFire has had success accelerating numerous application types, including math and numerical algorithms, image processing, signal processing, statistics, optimization, and more. Many ArrayFire customers are realizing 100X speed-up with much less effort than is typically required to accelerate code.[/column][column type=\"one-half\" last=\"true\" fade=\"true\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame.png\"] [/column] [column type=\"one-third\"][custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Email[/custom_headline] Sales: sales@arrayfire.com Support: sales@arrayfire.com Careers: jobs@arrayfire.com[/column] [column type=\"one-third\"][custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Phone[/custom_headline] Sales: +1 (800) 570-1941 x 1 Technical Support: +1 (800) 570-1941 x 2 [/column][column type=\"one-third\" last=\"true\"][custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Headquarters[/custom_headline] 3423 Piedmont Rd NE STE 330 Atlanta, GA 30305[/column]\r\n\r\n[/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\" ]Careers[/custom_headline]As a global leader in GPU computing software, our business opportunities are always expanding. We are constantly searching for talented, qualified individuals to join the AccelerEyes team. AccelerEyes is committed to providing employees with the opportunity to grow and learn, the freedom to express ideas and contribute to new developments, and the motivation to succeed. To start the application process, simply email us your resume and let us know which position(s) you\'re interested in.[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"][/column][column type=\"one-half\"][icon_list] [icon_list_item type=\"angle-double-right\"]<strong>Software Engineer - Atlanta, GA </strong><em>Responsibilities -</em> Develop in C/C++, Fortran, CUDA, and OpenCL. Respond to forum posts and customer support tickets. <em>Qualifications -</em> A background in any of high-performance computing, operating systems, or compilers. Several years of C/C++ and at least one year of CUDA or similar technology. Familiarity with Fortran is a plus. Undergraduate or graduate work in CS or related field.[/icon_list_item] [icon_list_item type=\"angle-double-right\"]<strong>Application Engineer - Atlanta, GA</strong> <em>Responsibilities -</em> Work closely with customers to develop software solutions using our products. Develop technical marketing materials including demos, webinars, tutorials, etc. Respond to forum posts and customer support tickets. <em>Qualifications -</em> Undergraduate or graduate work in CS or related field. Strong programming skills in C/C++. Excellent communication skills.[/icon_list_item] [icon_list_item type=\"angle-double-right\"]<strong>Web/Devops Engineer - Atlanta, GA</strong> <em>Responsibilities -</em> Develop PHP/MySQL backend infrastructure with basic HTML/CSS/JavaScript frontend work. Developing lightweight webapps for system monitoring. Maintaining Magento and SalesForce integration. Maintaining server/cluster infrastructure. <em>Qualifications -</em> Strong PHP and MySQL experience. Very comfortable at a shell prompt. Proficient in HTML, CSS, and JavaScript. Familiarity with Magento or SalesForce is a plus.[/icon_list_item] [/icon_list][/column][column type=\"one-half\" last=\"true\"][/column][/content_band]','Company','','inherit','open','closed','','329-revision-v1','','','2014-02-12 15:18:44','2014-02-12 15:18:44','',329,'http://sandbox.arrayfire.com/329-revision-v1/',0,'revision','',0),(4973,6,'2014-02-12 23:10:09','2014-02-12 23:10:09','ArrayFire Developer designated computer license. ArrayFire Developer dedicated computer licenses are sold as 1-year subscriptions that include updates.  ArrayFire Developer licenses include support for a single GPU. At the end of the year, customers may either renew the subscription or continue using ArrayFire Developer without future updates.  Licenses include: image processing, signal processing, statistics, visualization, and arithmetic functions, and other basic operations. All licenses are subject to the EULA found at http://accelereyes.com/eula.','ArrayFire Developer','','inherit','open','closed','','44-autosave-v1','','','2014-02-12 23:10:09','2014-02-12 23:10:09','',44,'http://sandbox.arrayfire.com/44-autosave-v1/',0,'revision','',0),(4974,6,'2014-02-12 23:15:22','2014-02-12 23:15:22','ArrayFire Enterprise Edition. ArrayFire Enterprise includes one (1) ArrayFire Pro dedicated license with support for 2 GPUs or devices. ArrayFire Enterprise also includes (1) free GPU consulting starter package, technical phone support with priority support response times, and prioritized feature requests. ArrayFire 2 GPU Designated computer licenses are sold as 1-year subscriptions that include updates. At the end of the year, customers may either renew the subscription or continue using ArrayFire Pro without future updates. License includes: Image Processing, Signal Processing, Statistics, Graphics Library, Linear Algebra, Sparse Matrices, and many other functions, as well as support in the ArrayFire forums.  All licenses are subject to the EULA found at http://accelereyes.com/eula.','ArrayFire Enterprise (Includes Consulting Starter Package)','Support for 2 GPUs in a single designated computer.  Includes Consulting Starter Package and technical phoIncludes additional linear algebra and sparse functions.  Provides a perpetual dedicated license with a 1-year subscription to updates.  Enterprise support included.','inherit','open','closed','','42-autosave-v1','','','2014-02-12 23:15:22','2014-02-12 23:15:22','',42,'http://sandbox.arrayfire.com/42-autosave-v1/',0,'revision','',0),(4975,6,'2014-02-12 23:18:11','2014-02-12 23:18:11','ArrayFire Professional Phone Support for a 2 GPU Designated Computer License.  The phone support is for 1 year.','ArrayFire Professional Phone Support','Phone support from ArrayFire\'s developers.','inherit','open','closed','','43-autosave-v1','','','2014-02-12 23:18:11','2014-02-12 23:18:11','',43,'http://sandbox.arrayfire.com/43-autosave-v1/',0,'revision','',0),(4976,6,'2014-02-12 23:21:05','2014-02-12 23:21:05','','Starter Package','One day of ArrayFire professional coding services to perform code assessment. Upon completion of Starter Package, a detailed report will be provided with results and analysis of speedup/function assessment, an assessment of next steps, and sales estimate for additional coding services, if applicable.','publish','open','closed','','consulting-starter-package','','','2014-11-12 15:12:53','2014-11-12 15:12:53','',0,'http://sandbox.arrayfire.com/?post_type=product&#038;p=4976',0,'product','',0),(4979,6,'2014-02-12 23:24:53','2014-02-12 23:24:53','2-Day CUDA training course located in designated US city.','2-Day CUDA Training Course','2-Day CUDA training course located in designated US city.','publish','open','closed','','2-day-cuda-training-course','','','2014-03-05 20:35:02','2014-03-05 20:35:02','',0,'http://sandbox.arrayfire.com/?post_type=product&#038;p=4979',0,'product','',0),(4980,6,'2014-02-12 23:26:12','2014-02-12 23:26:12','2-Day OpenCL training course located in designated US city.','2-Day OpenCL Training Course','2-Day OpenCL training course located in designated US city.','publish','open','closed','','2-day-opencl-training-course','','','2014-03-21 14:35:04','2014-03-21 14:35:04','',0,'http://sandbox.arrayfire.com/?post_type=product&#038;p=4980',0,'product','',0),(4981,6,'2014-02-12 23:27:15','2014-02-12 23:27:15','Customized application consulting services; based on hourly rate, as agreed-upon per SOW with customer.','Hourly Rate Support','Customized application consulting services for customer based on hourly rate.','publish','open','closed','','custom-application-consulting-hourly-rate','','','2014-11-12 15:02:52','2014-11-12 15:02:52','',0,'http://sandbox.arrayfire.com/?post_type=product&#038;p=4981',0,'product','',0),(4983,7,'2014-02-13 14:47:58','2014-02-13 14:47:58','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\"] [custom_headline type=\"left\" level=\"h3\" ]About[/custom_headline]ArrayFire is the software shop for CUDA and OpenCL. Since 2007, ArrayFire has offered the most productive solutions for accelerating code using GPUs. Today, ArrayFire delivers products which are used to accelerate C, C++, and Fortran codes on CUDA GPUs and OpenCL devices. ArrayFire has thousands of customers. These customers come from a wide range of industries, including defense and intelligence, life science, oil and gas, finance, manufacturing, media, and others. ArrayFire has had success accelerating numerous application types, including math and numerical algorithms, image processing, signal processing, statistics, optimization, and more. Many ArrayFire customers are realizing 100X speed-up with much less effort than is typically required to accelerate code.[/column][column type=\"one-half\" last=\"true\" fade=\"true\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame.png\"] [/column] [column type=\"one-third\"][custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Email[/custom_headline] Sales: sales@arrayfire.com Support: sales@arrayfire.com Careers: jobs@arrayfire.com[/column] [column type=\"one-third\"][custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Phone[/custom_headline] Sales: +1 (800) 570-1941 x 1 Technical Support: +1 (800) 570-1941 x 2 [/column][column type=\"one-third\" last=\"true\"][custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Headquarters[/custom_headline] 3423 Piedmont Rd NE STE 330 Atlanta, GA 30305[/column] [/content_band][content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\" ] [content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\" ]Careers[/custom_headline]As a global leader in GPU computing software, our business opportunities are always expanding. We are constantly searching for talented, qualified individuals to join the AccelerEyes team. AccelerEyes is committed to providing employees with the opportunity to grow and learn, the freedom to express ideas and contribute to new developments, and the motivation to succeed. To start the application process, simply email us your resume and let us know which position(s) you\'re interested in.[/column][column type=\"one-half\" last=\"true\"][/column] [column type=\"one-third\"][promo image=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/jango-fett.png\" alt=\"Alt Text\"]<strong>Software Engineer - Atlanta, GA </strong><em>Responsibilities -</em> Develop in C/C++, Fortran, CUDA, and OpenCL. Respond to forum posts and customer support tickets. <em>Qualifications -</em> A background in any of high-performance computing, operating systems, or compilers. Several years of C/C++ and at least one year of CUDA or similar technology. Familiarity with Fortran is a plus. Undergraduate or graduate work in CS or related field. [/promo][/column][column class=\"center-text\" type=\"one-third\"]promo image=\"http://bit.ly/1i39aq7\" alt=\"Alt Text\"] Add in your content here. [/promo][/column][column type=\"one-third\" last=\"true\" class=\"center-text\"]promo image=\"http://bit.ly/1i39aq7\" alt=\"Alt Text\"] Add in your content here. [/promo][/column] [icon_list] [icon_list_item type=\"angle-double-right\"]<strong>Software Engineer - Atlanta, GA </strong><em>Responsibilities -</em> Develop in C/C++, Fortran, CUDA, and OpenCL. Respond to forum posts and customer support tickets. <em>Qualifications -</em> A background in any of high-performance computing, operating systems, or compilers. Several years of C/C++ and at least one year of CUDA or similar technology. Familiarity with Fortran is a plus. Undergraduate or graduate work in CS or related field.[/icon_list_item] [icon_list_item type=\"angle-double-right\"]<strong>Application Engineer - Atlanta, GA</strong> <em>Responsibilities -</em> Work closely with customers to develop software solutions using our products. Develop technical marketing materials including demos, webinars, tutorials, etc. Respond to forum posts and customer support tickets. <em>Qualifications -</em> Undergraduate or graduate work in CS or related field. Strong programming skills in C/C++. Excellent communication skills.[/icon_list_item] [icon_list_item type=\"angle-double-right\"]<strong>Web/Devops Engineer - Atlanta, GA</strong> <em>Responsibilities -</em> Develop PHP/MySQL backend infrastructure with basic HTML/CSS/JavaScript frontend work. Developing lightweight webapps for system monitoring. Maintaining Magento and SalesForce integration. Maintaining server/cluster infrastructure. <em>Qualifications -</em> Strong PHP and MySQL experience. Very comfortable at a shell prompt. Proficient in HTML, CSS, and JavaScript. Familiarity with Magento or SalesForce is a plus.[/icon_list_item] [/icon_list] [/column][column type=\"one-half\" last=\"true\"][/content_band]','Company','','inherit','open','closed','','329-revision-v1','','','2014-02-13 14:47:58','2014-02-13 14:47:58','',329,'http://sandbox.arrayfire.com/329-revision-v1/',0,'revision','',0),(4984,7,'2014-02-13 14:51:58','2014-02-13 14:51:58','','little boba fett','','inherit','open','closed','','little-boba-fett','','','2014-02-13 14:51:58','2014-02-13 14:51:58','',329,'http://sandbox.arrayfire.com/wp-content/uploads/2014/01/little-boba-fett.png',0,'attachment','image/png',0),(4985,7,'2014-02-13 15:19:44','2014-02-13 15:19:44','','uncle sam','','inherit','open','closed','','uncle-sam','','','2014-02-13 15:19:44','2014-02-13 15:19:44','',329,'http://sandbox.arrayfire.com/wp-content/uploads/2014/01/uncle-sam.png',0,'attachment','image/png',0),(4986,7,'2014-02-13 16:00:29','2014-02-13 16:00:29','','i see pride, i see power','','inherit','open','closed','','i-see-pride-i-see-power','','','2014-02-13 16:00:29','2014-02-13 16:00:29','',329,'http://sandbox.arrayfire.com/wp-content/uploads/2014/01/i-see-pride-i-see-power.png',0,'attachment','image/png',0),(4987,7,'2014-02-13 16:27:29','2014-02-13 16:27:29','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\"] [custom_headline type=\"left\" level=\"h3\" ]About[/custom_headline]ArrayFire is the software shop for CUDA and OpenCL. Since 2007, ArrayFire has offered the most productive solutions for accelerating code using GPUs. Today, ArrayFire delivers products which are used to accelerate C, C++, and Fortran codes on CUDA GPUs and OpenCL devices. ArrayFire has thousands of customers. These customers come from a wide range of industries, including defense and intelligence, life science, oil and gas, finance, manufacturing, media, and others.\r\n\r\nArrayFire has had success accelerating numerous application types, including math and numerical algorithms, image processing, signal processing, statistics, optimization, and more. Many ArrayFire customers are realizing 100X speed-up with much less effort than is typically required to accelerate code.[/column][column type=\"one-half\" last=\"true\" fade=\"true\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame.png\"] [/column]\r\n\r\n[line][column type=\"one-third\"][custom_headline type=\"center\" level=\"h5\" accent=\"false\"]Email[/custom_headline]\r\n<p style=\"text-align: center;\">Sales: sales@arrayfire.com\r\nSupport: sales@arrayfire.com\r\nCareers: jobs@arrayfire.com[/column]</p>\r\n[column type=\"one-third\"][custom_headline type=\"center\" level=\"h5\" accent=\"false\"]Phone[/custom_headline]\r\n<p style=\"text-align: center;\">Sales: +1 (800) 570-1941 x 1\r\nTechnical Support: +1 (800) 570-1941 x 2 [/column]</p>\r\n[column type=\"one-third\" last=\"true\"][custom_headline type=\"center\" level=\"h5\" accent=\"false\"]Headquarters[/custom_headline]\r\n<p style=\"text-align: center;\">3423 Piedmont Rd NE STE 330\r\nAtlanta, GA 30305[/column] [/content_band]</p>\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\" ]Careers[/custom_headline]As a global leader in GPU computing software, our business opportunities are always expanding. We are constantly searching for talented, qualified individuals to join the ArrayFire team. ArrayFire is committed to providing employees with the opportunity to grow and learn, the freedom to express ideas and contribute to new developments, and the motivation to succeed. To start the application process, simply email us your resume and let us know which position(s) you\'re interested in.[/column][column type=\"one-half\" last=\"true\"][/column]\r\n\r\n&nbsp;\r\n\r\n[column type=\"one-third\"][promo image=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/little-boba-fett.png\" alt=\"Alt Text\"][custom_headline type=\"left\" level=\"h5\"  class=\"mtn\"]Software Engineer - Atlanta, GA[/custom_headline]\r\n\r\n<strong>Responsibilities:</strong> Develop in C/C++, Fortran, CUDA, and OpenCL. Respond to forum posts and customer support tickets.\r\n\r\n<strong>Qualifications</strong>: A background in any of high-performance computing, operating systems, or compilers. Several years of C/C++ and at least one year of CUDA or similar technology. Familiarity with Fortran is a plus. Undergraduate or graduate work in CS or related field. [/promo][/column]\r\n\r\n[column type=\"one-third\"][promo image=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/uncle-sam.png\" alt=\"Alt Text\"] [custom_headline type=\"left\" level=\"h5\"  class=\"mtn\"]Application Engineer - Atlanta, GA[/custom_headline]\r\n\r\n<strong>Responsibilities: </strong>Work closely with customers to develop software solutions using our products. Develop technical marketing materials including demos, webinars, tutorials, etc. Respond to forum posts and customer support tickets.\r\n\r\n<strong>Qualifications:</strong> Undergraduate or graduate work in CS or related field. Strong programming skills in C/C++. Excellent communication skills.[/promo][/column]\r\n\r\n[column type=\"one-third\" last=\"true\"][promo image=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/i-see-pride-i-see-power.png\" alt=\"Alt Text\"][custom_headline type=\"left\" level=\"h5\" class=\"mtn\"]Web/Devops Engineer - Atlanta, GA[/custom_headline]\r\n\r\n<strong>Responsibilities: </strong>Develop PHP/MySQL backend infrastructure with basic HTML/CSS/JavaScript frontend work. Developing lightweight webapps for system monitoring. Maintaining Magento and SalesForce integration. Maintaining server/cluster infrastructure.\r\n\r\n<strong>Qualifications:</strong> Strong PHP and MySQL experience. Very comfortable at a shell prompt. Proficient in HTML, CSS, and JavaScript. Familiarity with Magento or SalesForce is a plus.[/promo][/column][/content_band]','Company','','inherit','open','closed','','329-revision-v1','','','2014-02-13 16:27:29','2014-02-13 16:27:29','',329,'http://sandbox.arrayfire.com/329-revision-v1/',0,'revision','',0),(4988,7,'2014-02-13 16:31:49','2014-02-13 16:31:49','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\"] [custom_headline type=\"left\" level=\"h3\" ]About[/custom_headline]ArrayFire is the software shop for CUDA and OpenCL. Since 2007, ArrayFire has offered the most productive solutions for accelerating code using GPUs. Today, ArrayFire delivers products which are used to accelerate C, C++, and Fortran codes on CUDA GPUs and OpenCL devices. ArrayFire has thousands of customers. These customers come from a wide range of industries, including defense and intelligence, life science, oil and gas, finance, manufacturing, media, and others.\r\n\r\nArrayFire has had success accelerating numerous application types, including math and numerical algorithms, image processing, signal processing, statistics, optimization, and more. Many ArrayFire customers are realizing 100X speed-up with much less effort than is typically required to accelerate code.[/column][column type=\"one-half\" last=\"true\" fade=\"true\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame.png\"] [/column]\r\n\r\n[line][column type=\"one-third\"][custom_headline type=\"center\" level=\"h5\" accent=\"false\"]Email[/custom_headline]\r\n<p style=\"text-align: center;\">Sales: sales@arrayfire.com\r\nSupport: sales@arrayfire.com\r\nCareers: jobs@arrayfire.com[/column]</p>\r\n[column type=\"one-third\"][custom_headline type=\"center\" level=\"h5\" accent=\"false\"]Phone[/custom_headline]\r\n<p style=\"text-align: center;\">Sales: +1 (800) 570-1941 x 1\r\nTechnical Support: +1 (800) 570-1941 x 2 [/column]</p>\r\n[column type=\"one-third\" last=\"true\"][custom_headline type=\"center\" level=\"h5\" accent=\"false\"]Headquarters[/custom_headline]\r\n<p style=\"text-align: center;\">3423 Piedmont Rd NE STE 330\r\nAtlanta, GA 30305[/column] [/content_band]</p>\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\" ]Careers[/custom_headline]As a global leader in GPU computing software, our business opportunities are always expanding. We are constantly searching for talented, qualified individuals to join the ArrayFire team. ArrayFire is committed to providing employees with the opportunity to grow and learn, the freedom to express ideas and contribute to new developments, and the motivation to succeed. To start the application process, simply email us your resume and let us know which position(s) you\'re interested in.[/column][column type=\"one-half\" last=\"true\"][/column]\r\n\r\n&nbsp;\r\n\r\n[column type=\"one-third\"][promo image=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/little-boba-fett.png\" alt=\"Alt Text\"][custom_headline type=\"left\" level=\"h5\"  class=\"mtn\"]Software Engineer - Atlanta, GA[/custom_headline]\r\n\r\n<strong>Responsibilities:</strong> Develop in C/C++, Fortran, CUDA, and OpenCL. Respond to forum posts and customer support tickets.\r\n\r\n<strong>Qualifications</strong>: A background in any of high-performance computing, operating systems, or compilers. Several years of C/C++ and at least one year of CUDA or similar technology. Familiarity with Fortran is a plus. Undergraduate or graduate work in CS or related field. [/promo][/column]\r\n\r\n[column type=\"one-third\"][promo image=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/uncle-sam.png\" alt=\"Alt Text\"] [custom_headline type=\"left\" level=\"h5\"  class=\"mtn\"]Application Engineer - Atlanta, GA[/custom_headline]\r\n\r\n<strong>Responsibilities: </strong>Work closely with customers to develop software solutions using our products. Develop technical marketing materials including demos, webinars, tutorials, etc. Respond to forum posts and customer support tickets.\r\n\r\n<strong>Qualifications:</strong> Undergraduate or graduate work in CS or related field. Strong programming skills in C/C++. Excellent communication skills.[/promo][/column]\r\n\r\n[column type=\"one-third\" last=\"true\"][promo image=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/i-see-pride-i-see-power.png\" alt=\"Alt Text\"][custom_headline type=\"left\" level=\"h5\" class=\"mtn\"]Web/Dev Engineer - Atlanta, GA[/custom_headline]\r\n\r\n<strong>Responsibilities: </strong>Develop PHP/MySQL backend infrastructure with basic HTML/CSS/JavaScript frontend work. Developing lightweight webapps for system monitoring. Maintaining Magento and SalesForce integration. Maintaining server/cluster infrastructure.\r\n\r\n<strong>Qualifications:</strong> Strong PHP and MySQL experience. Very comfortable at a shell prompt. Proficient in HTML, CSS, and JavaScript. Familiarity with Wordpress or SalesForce is a plus.[/promo][/column][/content_band]','Company','','inherit','open','closed','','329-revision-v1','','','2014-02-13 16:31:49','2014-02-13 16:31:49','',329,'http://sandbox.arrayfire.com/329-revision-v1/',0,'revision','',0),(4989,7,'2014-02-13 16:32:21','2014-02-13 16:32:21','[content_band inner_container=\"true\" no_margin=\"true\" border=\"bottom\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\"] [custom_headline type=\"left\" level=\"h3\" ]About[/custom_headline]ArrayFire is the software shop for CUDA and OpenCL. Since 2007, ArrayFire has offered the most productive solutions for accelerating code using GPUs. Today, ArrayFire delivers products which are used to accelerate C, C++, and Fortran codes on CUDA GPUs and OpenCL devices. ArrayFire has thousands of customers. These customers come from a wide range of industries, including defense and intelligence, life science, oil and gas, finance, manufacturing, media, and others.\r\n\r\nArrayFire has had success accelerating numerous application types, including math and numerical algorithms, image processing, signal processing, statistics, optimization, and more. Many ArrayFire customers are realizing 100X speed-up with much less effort than is typically required to accelerate code.[/column][column type=\"one-half\" last=\"true\" fade=\"true\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame.png\"] [/column]\r\n\r\n[line][column type=\"one-third\"][custom_headline type=\"center\" level=\"h5\" accent=\"false\"]Email[/custom_headline]\r\n<p style=\"text-align: center;\">Sales: sales@arrayfire.com\r\nSupport: sales@arrayfire.com\r\nCareers: jobs@arrayfire.com[/column]</p>\r\n[column type=\"one-third\"][custom_headline type=\"center\" level=\"h5\" accent=\"false\"]Phone[/custom_headline]\r\n<p style=\"text-align: center;\">Sales: +1 (800) 570-1941 x 1\r\nTechnical Support: +1 (800) 570-1941 x 2 [/column]</p>\r\n[column type=\"one-third\" last=\"true\"][custom_headline type=\"center\" level=\"h5\" accent=\"false\"]Headquarters[/custom_headline]\r\n<p style=\"text-align: center;\">3423 Piedmont Rd NE STE 330\r\nAtlanta, GA 30305[/column] [/content_band]</p>\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\" ]Careers[/custom_headline]As a global leader in GPU computing software, our business opportunities are always expanding. We are constantly searching for talented, qualified individuals to join the ArrayFire team. ArrayFire is committed to providing employees with the opportunity to grow and learn, the freedom to express ideas and contribute to new developments, and the motivation to succeed. To start the application process, simply email us your resume and let us know which position(s) you\'re interested in.[/column][column type=\"one-half\" last=\"true\"][/column]\r\n\r\n&nbsp;\r\n\r\n[column type=\"one-third\"][promo image=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/little-boba-fett.png\" alt=\"Alt Text\"][custom_headline type=\"left\" level=\"h5\"  class=\"mtn\"]Software Engineer - Atlanta, GA[/custom_headline]\r\n\r\n<strong>Responsibilities:</strong> Develop in C/C++, Fortran, CUDA, and OpenCL. Respond to forum posts and customer support tickets.\r\n\r\n<strong>Qualifications</strong>: A background in any of high-performance computing, operating systems, or compilers. Several years of C/C++ and at least one year of CUDA or similar technology. Familiarity with Fortran is a plus. Undergraduate or graduate work in CS or related field. [/promo][/column]\r\n\r\n[column type=\"one-third\"][promo image=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/uncle-sam.png\" alt=\"Alt Text\"] [custom_headline type=\"left\" level=\"h5\"  class=\"mtn\"]Application Engineer - Atlanta, GA[/custom_headline]\r\n\r\n<strong>Responsibilities: </strong>Work closely with customers to develop software solutions using our products. Develop technical marketing materials including demos, webinars, tutorials, etc. Respond to forum posts and customer support tickets.\r\n\r\n<strong>Qualifications:</strong> Undergraduate or graduate work in CS or related field. Strong programming skills in C/C++. Excellent communication skills.[/promo][/column]\r\n\r\n[column type=\"one-third\" last=\"true\"][promo image=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/i-see-pride-i-see-power.png\" alt=\"Alt Text\"][custom_headline type=\"left\" level=\"h5\" class=\"mtn\"]Web/Dev Engineer - Atlanta, GA[/custom_headline]\r\n\r\n<strong>Responsibilities: </strong>Develop PHP/MySQL backend infrastructure with basic HTML/CSS/JavaScript frontend work. Developing lightweight webapps for system monitoring. Maintaining Wordpress and SalesForce integration. Maintaining server/cluster infrastructure.\r\n\r\n<strong>Qualifications:</strong> Strong PHP and MySQL experience. Very comfortable at a shell prompt. Proficient in HTML, CSS, and JavaScript. Familiarity with Wordpress or SalesForce is a plus.[/promo][/column][/content_band]','Company','','inherit','open','closed','','329-revision-v1','','','2014-02-13 16:32:21','2014-02-13 16:32:21','',329,'http://sandbox.arrayfire.com/329-revision-v1/',0,'revision','',0);

INSERT INTO `wp_posts` VALUES (5502,7,'2014-05-06 19:23:42','2014-05-06 19:23:42','<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd.png\"><img class=\"aligncenter size-medium wp-image-242\" alt=\"arrayfire_logo_whitebkgnd\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd-300x42.png\" width=\"300\" height=\"42\" /></a>\r\n\r\nIt\'s that time again—we\'re pleased to announce the release of our newest version of ArrayFire: <strong>ArrayFire v2.1</strong>.\r\n\r\nArrayFire v2.1 is now bigger, faster, and stronger, thanks to some key function additions, API changes, feature improvements, and bug fixes.\r\n\r\nArrayFire is a CUDA and OpenCL library designed for maximum speed without the hassle of writing time-consuming CUDA and OpenCL device code.  With ArrayFire’s library functions, developers can maximize productivity and performance. Each of ArrayFire’s functions has been hand-tuned by CUDA and OpenCL experts.\r\n<h3>Major Updates</h3>\r\n[icon type=\"angle-double-right\"] Support for CUDA 6.0\r\n[icon type=\"angle-double-right\"] Support for Mac OS X\r\n[icon type=\"angle-double-right\"] New language support (<a href=\"https://github.com/arrayfire\">available on github</a>)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_java\">ArrayFire for Java</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_r\">ArrayFire for R!</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_fortran\">ArrayFire for Fortran</a>*\r\n[icon type=\"angle-double-right\"] <a href=\"https://github.com/arrayfire\">ArrayFire Extras on Github</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] All language wrappers\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_examples\">Rolling updates to examples</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">OpenGL interop example</a>\r\n\r\n<em>*ArrayFire for Fortan has been removed from the installed library, but can be downloaded from the ArrayFire Extras GitHub page linked above.</em>\r\n<h3>Function Additions</h3>\r\n[icon type=\"angle-double-right\"] Image transformation (warp affine) functions\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__transform.htm#ga886e586ee8e8c259202c06bd134d828a\">transform()</a>\r\n[icon type=\"angle-right\"] affine and inverse affine transform of an image\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__translate.htm#ga1615c8ea000ad113a0dc7a9313d7b645\">translate()</a>\r\n[icon type=\"angle-right\"] translate an image using affine transforms\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__scale.htm#ga288ebb8f3c3fb1c3a96260db4cc3b0cc\">scale()</a>\r\n[icon type=\"angle-right\"] scale an image using affine transforms\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__skew.htm#gaacc7eb5f757a28d2e7d762f6b489fd5b\">skew()</a>\r\n[icon type=\"angle-right\"] skew an image using affine transforms\r\n[icon type=\"angle-double-right\"] Coordinate transformation (homogeneous transformation) functions\r\n[icon type=\"caret-right\"] transform_coords()\r\n[icon type=\"angle-right\"] Up to 3D homogeneous transformations\r\n[icon type=\"caret-right\"] rotate_coords()\r\n[icon type=\"angle-right\"] rotation matrix wrapper for homogeneous coordinate transformation\r\n<h3>API Changes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n[icon type=\"caret-right\"] Added optional 4th parameter `recenter`\r\n[icon type=\"angle-double-right\"] af_filter removed\r\n<h3>Feature Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a> and <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#ga33ead0c86faace1072a227cd82a19bc1\">approx2()</a> now support nearest interpolation\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__convolve.htm#ga7a76750edf6c2d200ce8adf0740574c5\">convolve()</a> work for stack of images(3D) and gfor\r\n[icon type=\"angle-double-right\"] new indexing functions to add support for 4-th dimension gfor\r\n[icon type=\"angle-double-right\"] host pinned memory support for OpenCL\r\n<h3>Bug Fixes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__loadimage.htm#gacd12e91d2760fe62fc6b781ae39d30be\">loadimage()</a>\r\n[icon type=\"caret-right\"] fixed bug with grayscale image reading\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__gaussiankernel.htm#gad77314eb6df8aae428d52898b5b6a78e\">gaussiankernel()</a>\r\n[icon type=\"caret-right\"] fixed computation of gaussian kernel values\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>\r\n[icon type=\"caret-right\"] fixed resize in OpenCL\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__medfilt.htm#ga4bf90c566ac99adb38d679a5a598b65f\">medfilt()</a>\r\n[icon type=\"caret-right\"] fixed to handle more data types\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n[icon type=\"caret-right\"] fixed rounding issue on Tahiti GPUs\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a>\r\n[icon type=\"caret-right\"] fixed for gfor use\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__array__func__cpp__flip.htm#ga920af856ce0c993a929850149a289d60\">flip()</a>\r\n[icon type=\"caret-right\"] fixed launch configuration\r\n[icon type=\"angle-double-right\"] indexing now works on intel GPUs\r\n<h3>Performance Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a> rewritten to improve performance\r\n\r\n<span style=\"line-height: 1.5em;\">Visit our sleek, new <a href=\"http://www.sandbox.arrayfire.com/docs/\">documentation</a> to see ArrayFire in action and to view the complete list of all the enhancements available with ArrayFire v2.1.</span>\r\n\r\nWhile you\'re at it, be sure to check out our <a href=\"http://sandbox.arrayfire.com/#licensing\">ArrayFire licensing information</a>  to learn more about which licensing option would be the best for your needs.\r\n<div>\r\n\r\nJust getting started with GPU computing? Need an extra hand on a project? Tap into our deep parallel computing expertise and vast code base by setting up a free <a href=\"http://www.meetme.so/arrayfire\">technical consultation</a> today.\r\n\r\nWe’re always looking to make ArrayFire even better—let us know your thoughts through this short <a href=\"https://www.surveymonkey.com/s/arrayfire-new-feature\">survey</a>. We promise it’ll be worth your while!\r\n\r\n</div>','ArrayFire v2.1 Official Release','','inherit','open','closed','','5341-revision-v1','','','2014-05-06 19:23:42','2014-05-06 19:23:42','',5341,'http://sandbox.arrayfire.com/5341-revision-v1/',0,'revision','',0),(5503,7,'2014-05-06 19:25:53','2014-05-06 19:25:53','<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd.png\"><img class=\"aligncenter size-medium wp-image-242\" alt=\"arrayfire_logo_whitebkgnd\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd-300x42.png\" width=\"300\" height=\"42\" /></a>\r\n\r\nIt\'s that time again—we\'re pleased to announce the release of our newest version of ArrayFire: <strong>ArrayFire v2.1</strong>.\r\n\r\nArrayFire v2.1 is now bigger, faster, and stronger, thanks to some key function additions, API changes, feature improvements, and bug fixes.\r\n\r\nArrayFire is a CUDA and OpenCL library designed for maximum speed without the hassle of writing time-consuming CUDA and OpenCL device code.  With ArrayFire’s library functions, developers can maximize productivity and performance. Each of ArrayFire’s functions has been hand-tuned by CUDA and OpenCL experts.\r\n<h3>Major Updates</h3>\r\n[icon type=\"angle-double-right\"] Support for CUDA 6.0\r\n[icon type=\"angle-double-right\"] Support for Mac OS X\r\n[icon type=\"angle-double-right\"] New language support (<a href=\"https://github.com/arrayfire\">available on github</a>)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_java\">ArrayFire for Java</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_r\">ArrayFire for R!</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_fortran\">ArrayFire for Fortran</a>*\r\n[icon type=\"angle-double-right\"] <a href=\"https://github.com/arrayfire\">ArrayFire Extras on Github</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] All language wrappers\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_examples\">Rolling updates to examples</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">OpenGL interop example</a>\r\n\r\n<em>*ArrayFire for Fortan has been removed from the installed library, but can be downloaded from the ArrayFire Extras GitHub page linked above.</em>\r\n<h3>Function Additions</h3>\r\n[icon type=\"angle-double-right\"] Image transformation (warp affine) functions\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__transform.htm#ga886e586ee8e8c259202c06bd134d828a\">transform()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] affine and inverse affine transform of an image\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__translate.htm#ga1615c8ea000ad113a0dc7a9313d7b645\">translate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] translate an image using affine transforms\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__scale.htm#ga288ebb8f3c3fb1c3a96260db4cc3b0cc\">scale()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] scale an image using affine transforms\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__skew.htm#gaacc7eb5f757a28d2e7d762f6b489fd5b\">skew()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] skew an image using affine transforms\r\n[icon type=\"angle-double-right\"] Coordinate transformation (homogeneous transformation) functions\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] transform_coords()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] Up to 3D homogeneous transformations\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] rotate_coords()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] rotation matrix wrapper for homogeneous coordinate transformation\r\n<h3>API Changes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] Added optional 4th parameter `recenter`\r\n[icon type=\"angle-double-right\"] af_filter removed\r\n<h3>Feature Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a> and <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#ga33ead0c86faace1072a227cd82a19bc1\">approx2()</a> now support nearest interpolation\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__convolve.htm#ga7a76750edf6c2d200ce8adf0740574c5\">convolve()</a> work for stack of images(3D) and gfor\r\n[icon type=\"angle-double-right\"] new indexing functions to add support for 4-th dimension gfor\r\n[icon type=\"angle-double-right\"] host pinned memory support for OpenCL\r\n<h3>Bug Fixes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__loadimage.htm#gacd12e91d2760fe62fc6b781ae39d30be\">loadimage()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed bug with grayscale image reading\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__gaussiankernel.htm#gad77314eb6df8aae428d52898b5b6a78e\">gaussiankernel()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed computation of gaussian kernel values\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed resize in OpenCL\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__medfilt.htm#ga4bf90c566ac99adb38d679a5a598b65f\">medfilt()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed to handle more data types\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed rounding issue on Tahiti GPUs\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed for gfor use\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__array__func__cpp__flip.htm#ga920af856ce0c993a929850149a289d60\">flip()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed launch configuration\r\n[icon type=\"angle-double-right\"] indexing now works on intel GPUs\r\n<h3>Performance Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a> rewritten to improve performance\r\n\r\n<span style=\"line-height: 1.5em;\">Visit our sleek, new <a href=\"http://www.sandbox.arrayfire.com/docs/\">documentation</a> to see ArrayFire in action and to view the complete list of all the enhancements available with ArrayFire v2.1.</span>\r\n\r\nWhile you\'re at it, be sure to check out our <a href=\"http://sandbox.arrayfire.com/#licensing\">ArrayFire licensing information</a>  to learn more about which licensing option would be the best for your needs.\r\n<div>\r\n\r\nJust getting started with GPU computing? Need an extra hand on a project? Tap into our deep parallel computing expertise and vast code base by setting up a free <a href=\"http://www.meetme.so/arrayfire\">technical consultation</a> today.\r\n\r\nWe’re always looking to make ArrayFire even better—let us know your thoughts through this short <a href=\"https://www.surveymonkey.com/s/arrayfire-new-feature\">survey</a>. We promise it’ll be worth your while!\r\n\r\n</div>','ArrayFire v2.1 Official Release','','inherit','open','closed','','5341-revision-v1','','','2014-05-06 19:25:53','2014-05-06 19:25:53','',5341,'http://sandbox.arrayfire.com/5341-revision-v1/',0,'revision','',0),(5504,7,'2014-05-06 19:30:15','2014-05-06 19:30:15','<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd.png\"><img class=\"aligncenter size-medium wp-image-242\" alt=\"arrayfire_logo_whitebkgnd\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd-300x42.png\" width=\"300\" height=\"42\" /></a>\r\n\r\nIt\'s that time again—we\'re pleased to announce the release of our newest version of ArrayFire: <a href=\"http://www.sandbox.arrayfire.com/docs/installation.htm\"><strong>ArrayFire v2.1</strong></a>.\r\n\r\nArrayFire v2.1 is now bigger, faster, and stronger, thanks to some key function additions, API changes, feature improvements, and bug fixes.\r\n\r\nArrayFire is a CUDA and OpenCL library designed for maximum speed without the hassle of writing time-consuming CUDA and OpenCL device code.  With ArrayFire’s library functions, developers can maximize productivity and performance. Each of ArrayFire’s functions has been hand-tuned by CUDA and OpenCL experts.\r\n<h3>Major Updates</h3>\r\n[icon type=\"angle-double-right\"] Support for CUDA 6.0\r\n[icon type=\"angle-double-right\"] Support for Mac OS X\r\n[icon type=\"angle-double-right\"] New language support (<a href=\"https://github.com/arrayfire\">available on github</a>)\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_java\">ArrayFire for Java</a>\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_r\">ArrayFire for R!</a>\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_fortran\">ArrayFire for Fortran</a>*\r\n[icon type=\"angle-double-right\"] <a href=\"https://github.com/arrayfire\">ArrayFire Extras on Github</a>\r\n[icon type=\"caret-right\"] All language wrappers\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_examples\">Rolling updates to examples</a>\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">OpenGL interop example</a>\r\n\r\n<em>*ArrayFire for Fortan has been removed from the installed library, but can be downloaded from the ArrayFire Extras GitHub page linked above.</em>\r\n<h3>Function Additions</h3>\r\n[icon type=\"angle-double-right\"] Image transformation (warp affine) functions\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__transform.htm#ga886e586ee8e8c259202c06bd134d828a\">transform()</a>\r\n[icon type=\"angle-right\"] affine and inverse affine transform of an image\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__translate.htm#ga1615c8ea000ad113a0dc7a9313d7b645\">translate()</a>\r\n[icon type=\"angle-right\"] translate an image using affine transforms\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__scale.htm#ga288ebb8f3c3fb1c3a96260db4cc3b0cc\">scale()</a>\r\n[icon type=\"angle-right\"] scale an image using affine transforms\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__skew.htm#gaacc7eb5f757a28d2e7d762f6b489fd5b\">skew()</a>\r\n[icon type=\"angle-right\"] skew an image using affine transforms\r\n[icon type=\"angle-double-right\"] Coordinate transformation (homogeneous transformation) functions\r\n[icon type=\"caret-right\"] transform_coords()\r\n[icon type=\"angle-right\"] Up to 3D homogeneous transformations\r\n[icon type=\"caret-right\"] rotate_coords()\r\n[icon type=\"angle-right\"] rotation matrix wrapper for homogeneous coordinate transformation\r\n<h3>API Changes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n[icon type=\"caret-right\"] Added optional 4th parameter `recenter`\r\n[icon type=\"angle-double-right\"] af_filter removed\r\n<h3>Feature Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a> and <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#ga33ead0c86faace1072a227cd82a19bc1\">approx2()</a> now support nearest interpolation\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__convolve.htm#ga7a76750edf6c2d200ce8adf0740574c5\">convolve()</a> work for stack of images(3D) and gfor\r\n[icon type=\"angle-double-right\"] new indexing functions to add support for 4-th dimension gfor\r\n[icon type=\"angle-double-right\"] host pinned memory support for OpenCL\r\n<h3>Bug Fixes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__loadimage.htm#gacd12e91d2760fe62fc6b781ae39d30be\">loadimage()</a>\r\n[icon type=\"caret-right\"] fixed bug with grayscale image reading\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__gaussiankernel.htm#gad77314eb6df8aae428d52898b5b6a78e\">gaussiankernel()</a>\r\n[icon type=\"caret-right\"] fixed computation of gaussian kernel values\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>\r\n[icon type=\"caret-right\"] fixed resize in OpenCL\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__medfilt.htm#ga4bf90c566ac99adb38d679a5a598b65f\">medfilt()</a>\r\n[icon type=\"caret-right\"] fixed to handle more data types\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n[icon type=\"caret-right\"] fixed rounding issue on Tahiti GPUs\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a>\r\n[icon type=\"caret-right\"] fixed for gfor use\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__array__func__cpp__flip.htm#ga920af856ce0c993a929850149a289d60\">flip()</a>\r\n[icon type=\"caret-right\"] fixed launch configuration\r\n[icon type=\"angle-double-right\"] indexing now works on intel GPUs\r\n<h3>Performance Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a> rewritten to improve performance\r\n\r\n<span style=\"line-height: 1.5em;\">Visit our sleek, new <a href=\"http://www.sandbox.arrayfire.com/docs/\">documentation</a> to see ArrayFire in action and to view the complete list of all the enhancements available with ArrayFire v2.1.</span>\r\n\r\nWhile you\'re at it, be sure to check out our <a href=\"http://sandbox.arrayfire.com/#licensing\">ArrayFire licensing information</a>  to learn more about which licensing option would be the best for your needs.\r\n<div>\r\n\r\nJust getting started with GPU computing? Need an extra hand on a project? Tap into our deep parallel computing expertise and vast code base by setting up a free <a href=\"http://www.meetme.so/arrayfire\">technical consultation</a> today.\r\n\r\nWe’re always looking to make ArrayFire even better—let us know your thoughts through this short <a href=\"https://www.surveymonkey.com/s/arrayfire-new-feature\">survey</a>. We promise it’ll be worth your while!\r\n\r\n</div>','ArrayFire v2.1 Official Release','','inherit','open','closed','','5341-revision-v1','','','2014-05-06 19:30:15','2014-05-06 19:30:15','',5341,'http://sandbox.arrayfire.com/5341-revision-v1/',0,'revision','',0),(5505,7,'2014-05-06 19:36:19','2014-05-06 19:36:19','<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd.png\"><img class=\"aligncenter size-medium wp-image-242\" alt=\"arrayfire_logo_whitebkgnd\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd-300x42.png\" width=\"300\" height=\"42\" /></a>\r\n\r\nIt\'s that time again—we\'re pleased to announce the release of our newest version of ArrayFire: <a href=\"http://www.sandbox.arrayfire.com/docs/installation.htm\"><strong>ArrayFire v2.1</strong></a>.\r\n\r\nArrayFire v2.1 is now bigger, faster, and stronger, thanks to some key function additions, API changes, feature improvements, and bug fixes.\r\n\r\nArrayFire is a CUDA and OpenCL library designed for maximum speed without the hassle of writing time-consuming CUDA and OpenCL device code.  With ArrayFire’s library functions, developers can maximize productivity and performance. Each of ArrayFire’s functions has been hand-tuned by CUDA and OpenCL experts.\r\n<h3>Major Updates</h3>\r\n[icon type=\"angle-double-right\"] Support for CUDA 6.0\r\n[icon type=\"angle-double-right\"] Support for Mac OS X\r\n[icon type=\"angle-double-right\"] New language support (<a href=\"https://github.com/arrayfire\">available on github</a>)\r\n<p style=\"padding-left: 30px;\">[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_java\">ArrayFire for Java</a>\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_r\">ArrayFire for R!</a>\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_fortran\">ArrayFire for Fortran</a>*\r\n[icon type=\"angle-double-right\"] <a href=\"https://github.com/arrayfire\">ArrayFire Extras on Github</a>\r\n[icon type=\"caret-right\"] All language wrappers\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_examples\">Rolling updates to examples</a>\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">OpenGL interop example</a></p>\r\n<em>*ArrayFire for Fortan has been removed from the installed library, but can be downloaded from the ArrayFire Extras GitHub page linked above.</em>\r\n<h3>Function Additions</h3>\r\n[icon type=\"angle-double-right\"] Image transformation (warp affine) functions\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__transform.htm#ga886e586ee8e8c259202c06bd134d828a\">transform()</a>\r\n[icon type=\"angle-right\"] affine and inverse affine transform of an image\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__translate.htm#ga1615c8ea000ad113a0dc7a9313d7b645\">translate()</a>\r\n[icon type=\"angle-right\"] translate an image using affine transforms\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__scale.htm#ga288ebb8f3c3fb1c3a96260db4cc3b0cc\">scale()</a>\r\n[icon type=\"angle-right\"] scale an image using affine transforms\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__skew.htm#gaacc7eb5f757a28d2e7d762f6b489fd5b\">skew()</a>\r\n[icon type=\"angle-right\"] skew an image using affine transforms\r\n[icon type=\"angle-double-right\"] Coordinate transformation (homogeneous transformation) functions\r\n[icon type=\"caret-right\"] transform_coords()\r\n[icon type=\"angle-right\"] Up to 3D homogeneous transformations\r\n[icon type=\"caret-right\"] rotate_coords()\r\n[icon type=\"angle-right\"] rotation matrix wrapper for homogeneous coordinate transformation\r\n<h3>API Changes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n[icon type=\"caret-right\"] Added optional 4th parameter `recenter`\r\n[icon type=\"angle-double-right\"] af_filter removed\r\n<h3>Feature Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a> and <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#ga33ead0c86faace1072a227cd82a19bc1\">approx2()</a> now support nearest interpolation\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__convolve.htm#ga7a76750edf6c2d200ce8adf0740574c5\">convolve()</a> work for stack of images(3D) and gfor\r\n[icon type=\"angle-double-right\"] new indexing functions to add support for 4-th dimension gfor\r\n[icon type=\"angle-double-right\"] host pinned memory support for OpenCL\r\n<h3>Bug Fixes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__loadimage.htm#gacd12e91d2760fe62fc6b781ae39d30be\">loadimage()</a>\r\n[icon type=\"caret-right\"] fixed bug with grayscale image reading\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__gaussiankernel.htm#gad77314eb6df8aae428d52898b5b6a78e\">gaussiankernel()</a>\r\n[icon type=\"caret-right\"] fixed computation of gaussian kernel values\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>\r\n[icon type=\"caret-right\"] fixed resize in OpenCL\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__medfilt.htm#ga4bf90c566ac99adb38d679a5a598b65f\">medfilt()</a>\r\n[icon type=\"caret-right\"] fixed to handle more data types\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n[icon type=\"caret-right\"] fixed rounding issue on Tahiti GPUs\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a>\r\n[icon type=\"caret-right\"] fixed for gfor use\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__array__func__cpp__flip.htm#ga920af856ce0c993a929850149a289d60\">flip()</a>\r\n[icon type=\"caret-right\"] fixed launch configuration\r\n[icon type=\"angle-double-right\"] indexing now works on intel GPUs\r\n<h3>Performance Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a> rewritten to improve performance\r\n\r\n<span style=\"line-height: 1.5em;\">Visit our sleek, new <a href=\"http://www.sandbox.arrayfire.com/docs/\">documentation</a> to see ArrayFire in action and to view the complete list of all the enhancements available with ArrayFire v2.1.</span>\r\n\r\nWhile you\'re at it, be sure to check out our <a href=\"http://sandbox.arrayfire.com/#licensing\">ArrayFire licensing information</a>  to learn more about which licensing option would be the best for your needs.\r\n<div>\r\n\r\nJust getting started with GPU computing? Need an extra hand on a project? Tap into our deep parallel computing expertise and vast code base by setting up a free <a href=\"http://www.meetme.so/arrayfire\">technical consultation</a> today.\r\n\r\nWe’re always looking to make ArrayFire even better—let us know your thoughts through this short <a href=\"https://www.surveymonkey.com/s/arrayfire-new-feature\">survey</a>. We promise it’ll be worth your while!\r\n\r\n</div>','ArrayFire v2.1 Official Release','','inherit','open','closed','','5341-revision-v1','','','2014-05-06 19:36:19','2014-05-06 19:36:19','',5341,'http://sandbox.arrayfire.com/5341-revision-v1/',0,'revision','',0),(5506,7,'2014-05-06 19:37:36','2014-05-06 19:37:36','<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd.png\"><img class=\"aligncenter size-medium wp-image-242\" alt=\"arrayfire_logo_whitebkgnd\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd-300x42.png\" width=\"300\" height=\"42\" /></a>\r\n\r\nIt\'s that time again—we\'re pleased to announce the release of our newest version of ArrayFire: <a href=\"http://www.sandbox.arrayfire.com/docs/installation.htm\"><strong>ArrayFire v2.1</strong></a>.\r\n\r\nArrayFire v2.1 is now bigger, faster, and stronger, thanks to some key function additions, API changes, feature improvements, and bug fixes.\r\n\r\nArrayFire is a CUDA and OpenCL library designed for maximum speed without the hassle of writing time-consuming CUDA and OpenCL device code.  With ArrayFire’s library functions, developers can maximize productivity and performance. Each of ArrayFire’s functions has been hand-tuned by CUDA and OpenCL experts.\r\n<h3>Major Updates</h3>\r\n[icon type=\"angle-double-right\"] Support for CUDA 6.0\r\n[icon type=\"angle-double-right\"] Support for Mac OS X\r\n[icon type=\"angle-double-right\"] New language support (<a href=\"https://github.com/arrayfire\">available on github</a>)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_java\">ArrayFire for Java</a>\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_r\">ArrayFire for R!</a>\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_fortran\">ArrayFire for Fortran</a>*\r\n[icon type=\"angle-double-right\"] <a href=\"https://github.com/arrayfire\">ArrayFire Extras on Github</a>\r\n[icon type=\"caret-right\"] All language wrappers\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_examples\">Rolling updates to examples</a>\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">OpenGL interop example</a>\r\n\r\n<em>*ArrayFire for Fortan has been removed from the installed library, but can be downloaded from the ArrayFire Extras GitHub page linked above.</em>\r\n<h3>Function Additions</h3>\r\n[icon type=\"angle-double-right\"] Image transformation (warp affine) functions\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__transform.htm#ga886e586ee8e8c259202c06bd134d828a\">transform()</a>\r\n[icon type=\"angle-right\"] affine and inverse affine transform of an image\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__translate.htm#ga1615c8ea000ad113a0dc7a9313d7b645\">translate()</a>\r\n[icon type=\"angle-right\"] translate an image using affine transforms\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__scale.htm#ga288ebb8f3c3fb1c3a96260db4cc3b0cc\">scale()</a>\r\n[icon type=\"angle-right\"] scale an image using affine transforms\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__skew.htm#gaacc7eb5f757a28d2e7d762f6b489fd5b\">skew()</a>\r\n[icon type=\"angle-right\"] skew an image using affine transforms\r\n[icon type=\"angle-double-right\"] Coordinate transformation (homogeneous transformation) functions\r\n[icon type=\"caret-right\"] transform_coords()\r\n[icon type=\"angle-right\"] Up to 3D homogeneous transformations\r\n[icon type=\"caret-right\"] rotate_coords()\r\n[icon type=\"angle-right\"] rotation matrix wrapper for homogeneous coordinate transformation\r\n<h3>API Changes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n[icon type=\"caret-right\"] Added optional 4th parameter `recenter`\r\n[icon type=\"angle-double-right\"] af_filter removed\r\n<h3>Feature Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a> and <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#ga33ead0c86faace1072a227cd82a19bc1\">approx2()</a> now support nearest interpolation\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__convolve.htm#ga7a76750edf6c2d200ce8adf0740574c5\">convolve()</a> work for stack of images(3D) and gfor\r\n[icon type=\"angle-double-right\"] new indexing functions to add support for 4-th dimension gfor\r\n[icon type=\"angle-double-right\"] host pinned memory support for OpenCL\r\n<h3>Bug Fixes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__loadimage.htm#gacd12e91d2760fe62fc6b781ae39d30be\">loadimage()</a>\r\n[icon type=\"caret-right\"] fixed bug with grayscale image reading\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__gaussiankernel.htm#gad77314eb6df8aae428d52898b5b6a78e\">gaussiankernel()</a>\r\n[icon type=\"caret-right\"] fixed computation of gaussian kernel values\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>\r\n[icon type=\"caret-right\"] fixed resize in OpenCL\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__medfilt.htm#ga4bf90c566ac99adb38d679a5a598b65f\">medfilt()</a>\r\n[icon type=\"caret-right\"] fixed to handle more data types\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n[icon type=\"caret-right\"] fixed rounding issue on Tahiti GPUs\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a>\r\n[icon type=\"caret-right\"] fixed for gfor use\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__array__func__cpp__flip.htm#ga920af856ce0c993a929850149a289d60\">flip()</a>\r\n[icon type=\"caret-right\"] fixed launch configuration\r\n[icon type=\"angle-double-right\"] indexing now works on intel GPUs\r\n<h3>Performance Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a> rewritten to improve performance\r\n\r\n<span style=\"line-height: 1.5em;\">Visit our sleek, new <a href=\"http://www.sandbox.arrayfire.com/docs/\">documentation</a> to see ArrayFire in action and to view the complete list of all the enhancements available with ArrayFire v2.1.</span>\r\n\r\nWhile you\'re at it, be sure to check out our <a href=\"http://sandbox.arrayfire.com/#licensing\">ArrayFire licensing information</a>  to learn more about which licensing option would be the best for your needs.\r\n<div>\r\n\r\nJust getting started with GPU computing? Need an extra hand on a project? Tap into our deep parallel computing expertise and vast code base by setting up a free <a href=\"http://www.meetme.so/arrayfire\">technical consultation</a> today.\r\n\r\nWe’re always looking to make ArrayFire even better—let us know your thoughts through this short <a href=\"https://www.surveymonkey.com/s/arrayfire-new-feature\">survey</a>. We promise it’ll be worth your while!\r\n\r\n</div>','ArrayFire v2.1 Official Release','','inherit','open','closed','','5341-revision-v1','','','2014-05-06 19:37:36','2014-05-06 19:37:36','',5341,'http://sandbox.arrayfire.com/5341-revision-v1/',0,'revision','',0),(5507,7,'2014-05-06 19:39:29','2014-05-06 19:39:29','<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd.png\"><img class=\"aligncenter size-medium wp-image-242\" alt=\"arrayfire_logo_whitebkgnd\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd-300x42.png\" width=\"300\" height=\"42\" /></a>\r\n\r\nIt\'s that time again—we\'re pleased to announce the release of our newest version of ArrayFire: <a href=\"http://www.sandbox.arrayfire.com/docs/installation.htm\"><strong>ArrayFire v2.1</strong></a>.\r\n\r\nArrayFire v2.1 is now bigger, faster, and stronger, thanks to some key function additions, API changes, feature improvements, and bug fixes.\r\n\r\nArrayFire is a CUDA and OpenCL library designed for maximum speed without the hassle of writing time-consuming CUDA and OpenCL device code.  With ArrayFire’s library functions, developers can maximize productivity and performance. Each of ArrayFire’s functions has been hand-tuned by CUDA and OpenCL experts.\r\n<h3>Major Updates</h3>\r\n[icon type=\"angle-double-right\"] Support for CUDA 6.0\r\n[icon type=\"angle-double-right\"] Support for Mac OS X\r\n[icon type=\"angle-double-right\"] New language support (<a href=\"https://github.com/arrayfire\">available on github</a>)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_java\">ArrayFire for Java</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_r\">ArrayFire for R!</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_fortran\">ArrayFire for Fortran</a>*\r\n[icon type=\"angle-double-right\"] <a href=\"https://github.com/arrayfire\">ArrayFire Extras on Github</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] All language wrappers\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_examples\">Rolling updates to examples</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">OpenGL interop example</a>\r\n\r\n<em>*ArrayFire for Fortan has been removed from the installed library, but can be downloaded from the ArrayFire Extras GitHub page linked above.</em>\r\n<h3>Function Additions</h3>\r\n[icon type=\"angle-double-right\"] Image transformation (warp affine) functions\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__transform.htm#ga886e586ee8e8c259202c06bd134d828a\">transform()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] affine and inverse affine transform of an image\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__translate.htm#ga1615c8ea000ad113a0dc7a9313d7b645\">translate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] translate an image using affine transforms\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__scale.htm#ga288ebb8f3c3fb1c3a96260db4cc3b0cc\">scale()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] scale an image using affine transforms\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__skew.htm#gaacc7eb5f757a28d2e7d762f6b489fd5b\">skew()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] skew an image using affine transforms\r\n[icon type=\"angle-double-right\"] Coordinate transformation (homogeneous transformation) functions\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] transform_coords()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] Up to 3D homogeneous transformations\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] rotate_coords()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] rotation matrix wrapper for homogeneous coordinate transformation\r\n<h3>API Changes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] Added optional 4th parameter `recenter`\r\n[icon type=\"angle-double-right\"] af_filter removed\r\n<h3>Feature Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a> and <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#ga33ead0c86faace1072a227cd82a19bc1\">approx2()</a> now support nearest interpolation\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__convolve.htm#ga7a76750edf6c2d200ce8adf0740574c5\">convolve()</a> work for stack of images(3D) and gfor\r\n[icon type=\"angle-double-right\"] new indexing functions to add support for 4-th dimension gfor\r\n[icon type=\"angle-double-right\"] host pinned memory support for OpenCL\r\n<h3>Bug Fixes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__loadimage.htm#gacd12e91d2760fe62fc6b781ae39d30be\">loadimage()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed bug with grayscale image reading\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__gaussiankernel.htm#gad77314eb6df8aae428d52898b5b6a78e\">gaussiankernel()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed computation of gaussian kernel values\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed resize in OpenCL\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__medfilt.htm#ga4bf90c566ac99adb38d679a5a598b65f\">medfilt()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed to handle more data types\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed rounding issue on Tahiti GPUs\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed for gfor use\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__array__func__cpp__flip.htm#ga920af856ce0c993a929850149a289d60\">flip()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed launch configuration\r\n[icon type=\"angle-double-right\"] indexing now works on intel GPUs\r\n<h3>Performance Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a> rewritten to improve performance\r\n\r\n<span style=\"line-height: 1.5em;\">Visit our sleek, new <a href=\"http://www.sandbox.arrayfire.com/docs/\">documentation</a> to see ArrayFire in action and to view the complete list of all the enhancements available with ArrayFire v2.1.</span>\r\n\r\nWhile you\'re at it, be sure to check out our <a href=\"http://sandbox.arrayfire.com/#licensing\">ArrayFire licensing information</a>  to learn more about which licensing option would be the best for your needs.\r\n<div>\r\n\r\nJust getting started with GPU computing? Need an extra hand on a project? Tap into our deep parallel computing expertise and vast code base by setting up a free <a href=\"http://www.meetme.so/arrayfire\">technical consultation</a> today.\r\n\r\nWe’re always looking to make ArrayFire even better—let us know your thoughts through this short <a href=\"https://www.surveymonkey.com/s/arrayfire-new-feature\">survey</a>. We promise it’ll be worth your while!\r\n\r\n</div>','ArrayFire v2.1 Official Release','','inherit','open','closed','','5341-revision-v1','','','2014-05-06 19:39:29','2014-05-06 19:39:29','',5341,'http://sandbox.arrayfire.com/5341-revision-v1/',0,'revision','',0),(5508,7,'2014-05-06 19:40:35','2014-05-06 19:40:35','<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd.png\"><img class=\"aligncenter size-medium wp-image-242\" alt=\"arrayfire_logo_whitebkgnd\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd-300x42.png\" width=\"300\" height=\"42\" /></a>\r\n\r\nIt\'s that time again—we\'re pleased to announce the release of our newest version of ArrayFire: <a href=\"http://www.sandbox.arrayfire.com/docs/installation.htm\"><strong>ArrayFire v2.1</strong></a>\r\n\r\nArrayFire v2.1 is now bigger, faster, and stronger, thanks to some key function additions, API changes, feature improvements, and bug fixes.\r\n\r\nArrayFire is a CUDA and OpenCL library designed for maximum speed without the hassle of writing time-consuming CUDA and OpenCL device code.  With ArrayFire’s library functions, developers can maximize productivity and performance. Each of ArrayFire’s functions has been hand-tuned by CUDA and OpenCL experts.\r\n<h3>Major Updates</h3>\r\n[icon type=\"angle-double-right\"] Support for CUDA 6.0\r\n[icon type=\"angle-double-right\"] Support for Mac OS X\r\n[icon type=\"angle-double-right\"] New language support (<a href=\"https://github.com/arrayfire\">available on github</a>)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_java\">ArrayFire for Java</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_r\">ArrayFire for R!</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_fortran\">ArrayFire for Fortran</a>*\r\n[icon type=\"angle-double-right\"] <a href=\"https://github.com/arrayfire\">ArrayFire Extras on Github</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] All language wrappers\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_examples\">Rolling updates to examples</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">OpenGL interop example</a>\r\n\r\n<em>*ArrayFire for Fortan has been removed from the installed library, but can be downloaded from the ArrayFire Extras GitHub page linked above.</em>\r\n<h3>Function Additions</h3>\r\n[icon type=\"angle-double-right\"] Image transformation (warp affine) functions\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__transform.htm#ga886e586ee8e8c259202c06bd134d828a\">transform()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] affine and inverse affine transform of an image\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__translate.htm#ga1615c8ea000ad113a0dc7a9313d7b645\">translate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] translate an image using affine transforms\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__scale.htm#ga288ebb8f3c3fb1c3a96260db4cc3b0cc\">scale()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] scale an image using affine transforms\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__skew.htm#gaacc7eb5f757a28d2e7d762f6b489fd5b\">skew()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] skew an image using affine transforms\r\n[icon type=\"angle-double-right\"] Coordinate transformation (homogeneous transformation) functions\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] transform_coords()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] Up to 3D homogeneous transformations\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] rotate_coords()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] rotation matrix wrapper for homogeneous coordinate transformation\r\n<h3>API Changes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] Added optional 4th parameter `recenter`\r\n[icon type=\"angle-double-right\"] af_filter removed\r\n<h3>Feature Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a> and <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#ga33ead0c86faace1072a227cd82a19bc1\">approx2()</a> now support nearest interpolation\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__convolve.htm#ga7a76750edf6c2d200ce8adf0740574c5\">convolve()</a> work for stack of images(3D) and gfor\r\n[icon type=\"angle-double-right\"] new indexing functions to add support for 4-th dimension gfor\r\n[icon type=\"angle-double-right\"] host pinned memory support for OpenCL\r\n<h3>Bug Fixes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__loadimage.htm#gacd12e91d2760fe62fc6b781ae39d30be\">loadimage()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed bug with grayscale image reading\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__gaussiankernel.htm#gad77314eb6df8aae428d52898b5b6a78e\">gaussiankernel()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed computation of gaussian kernel values\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed resize in OpenCL\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__medfilt.htm#ga4bf90c566ac99adb38d679a5a598b65f\">medfilt()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed to handle more data types\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed rounding issue on Tahiti GPUs\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed for gfor use\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__array__func__cpp__flip.htm#ga920af856ce0c993a929850149a289d60\">flip()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed launch configuration\r\n[icon type=\"angle-double-right\"] indexing now works on intel GPUs\r\n<h3>Performance Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a> rewritten to improve performance\r\n\r\n<span style=\"line-height: 1.5em;\">Visit our sleek, new <a href=\"http://www.sandbox.arrayfire.com/docs/\">documentation</a> to see ArrayFire in action and to view the complete list of all the enhancements available with ArrayFire v2.1.</span>\r\n\r\nWhile you\'re at it, be sure to check out our <a href=\"http://sandbox.arrayfire.com/#licensing\">ArrayFire licensing information</a>  to learn more about which licensing option would be the best for your needs.\r\n<div>\r\n\r\nJust getting started with GPU computing? Need an extra hand on a project? Tap into our deep parallel computing expertise and vast code base by setting up a free <a href=\"http://www.meetme.so/arrayfire\">technical consultation</a> today.\r\n\r\nWe’re always looking to make ArrayFire even better—let us know your thoughts through this short <a href=\"https://www.surveymonkey.com/s/arrayfire-new-feature\">survey</a>. We promise it’ll be worth your while!\r\n\r\n</div>','ArrayFire v2.1 Official Release','','inherit','open','closed','','5341-revision-v1','','','2014-05-06 19:40:35','2014-05-06 19:40:35','',5341,'http://sandbox.arrayfire.com/5341-revision-v1/',0,'revision','',0),(5509,7,'2014-05-06 19:40:57','2014-05-06 19:40:57','<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd.png\"><img class=\"aligncenter size-medium wp-image-242\" alt=\"arrayfire_logo_whitebkgnd\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd-300x42.png\" width=\"300\" height=\"42\" /></a>\r\n\r\nIt\'s that time again—we\'re pleased to announce the release of our newest version of ArrayFire: <a href=\"http://www.sandbox.arrayfire.com/docs/installation.htm\">ArrayFire v2.1</a>.\r\n\r\nArrayFire v2.1 is now bigger, faster, and stronger, thanks to some key function additions, API changes, feature improvements, and bug fixes.\r\n\r\nArrayFire is a CUDA and OpenCL library designed for maximum speed without the hassle of writing time-consuming CUDA and OpenCL device code.  With ArrayFire’s library functions, developers can maximize productivity and performance. Each of ArrayFire’s functions has been hand-tuned by CUDA and OpenCL experts.\r\n<h3>Major Updates</h3>\r\n[icon type=\"angle-double-right\"] Support for CUDA 6.0\r\n[icon type=\"angle-double-right\"] Support for Mac OS X\r\n[icon type=\"angle-double-right\"] New language support (<a href=\"https://github.com/arrayfire\">available on github</a>)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_java\">ArrayFire for Java</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_r\">ArrayFire for R!</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_fortran\">ArrayFire for Fortran</a>*\r\n[icon type=\"angle-double-right\"] <a href=\"https://github.com/arrayfire\">ArrayFire Extras on Github</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] All language wrappers\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_examples\">Rolling updates to examples</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">OpenGL interop example</a>\r\n\r\n<em>*ArrayFire for Fortan has been removed from the installed library, but can be downloaded from the ArrayFire Extras GitHub page linked above.</em>\r\n<h3>Function Additions</h3>\r\n[icon type=\"angle-double-right\"] Image transformation (warp affine) functions\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__transform.htm#ga886e586ee8e8c259202c06bd134d828a\">transform()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] affine and inverse affine transform of an image\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__translate.htm#ga1615c8ea000ad113a0dc7a9313d7b645\">translate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] translate an image using affine transforms\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__scale.htm#ga288ebb8f3c3fb1c3a96260db4cc3b0cc\">scale()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] scale an image using affine transforms\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__skew.htm#gaacc7eb5f757a28d2e7d762f6b489fd5b\">skew()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] skew an image using affine transforms\r\n[icon type=\"angle-double-right\"] Coordinate transformation (homogeneous transformation) functions\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] transform_coords()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] Up to 3D homogeneous transformations\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] rotate_coords()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] rotation matrix wrapper for homogeneous coordinate transformation\r\n<h3>API Changes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] Added optional 4th parameter `recenter`\r\n[icon type=\"angle-double-right\"] af_filter removed\r\n<h3>Feature Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a> and <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#ga33ead0c86faace1072a227cd82a19bc1\">approx2()</a> now support nearest interpolation\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__convolve.htm#ga7a76750edf6c2d200ce8adf0740574c5\">convolve()</a> work for stack of images(3D) and gfor\r\n[icon type=\"angle-double-right\"] new indexing functions to add support for 4-th dimension gfor\r\n[icon type=\"angle-double-right\"] host pinned memory support for OpenCL\r\n<h3>Bug Fixes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__loadimage.htm#gacd12e91d2760fe62fc6b781ae39d30be\">loadimage()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed bug with grayscale image reading\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__gaussiankernel.htm#gad77314eb6df8aae428d52898b5b6a78e\">gaussiankernel()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed computation of gaussian kernel values\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed resize in OpenCL\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__medfilt.htm#ga4bf90c566ac99adb38d679a5a598b65f\">medfilt()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed to handle more data types\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed rounding issue on Tahiti GPUs\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed for gfor use\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__array__func__cpp__flip.htm#ga920af856ce0c993a929850149a289d60\">flip()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed launch configuration\r\n[icon type=\"angle-double-right\"] indexing now works on intel GPUs\r\n<h3>Performance Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a> rewritten to improve performance\r\n\r\n<span style=\"line-height: 1.5em;\">Visit our sleek, new <a href=\"http://www.sandbox.arrayfire.com/docs/\">documentation</a> to see ArrayFire in action and to view the complete list of all the enhancements available with ArrayFire v2.1.</span>\r\n\r\nWhile you\'re at it, be sure to check out our <a href=\"http://sandbox.arrayfire.com/#licensing\">ArrayFire licensing information</a>  to learn more about which licensing option would be the best for your needs.\r\n<div>\r\n\r\nJust getting started with GPU computing? Need an extra hand on a project? Tap into our deep parallel computing expertise and vast code base by setting up a free <a href=\"http://www.meetme.so/arrayfire\">technical consultation</a> today.\r\n\r\nWe’re always looking to make ArrayFire even better—let us know your thoughts through this short <a href=\"https://www.surveymonkey.com/s/arrayfire-new-feature\">survey</a>. We promise it’ll be worth your while!\r\n\r\n</div>','ArrayFire v2.1 Official Release','','inherit','open','closed','','5341-revision-v1','','','2014-05-06 19:40:57','2014-05-06 19:40:57','',5341,'http://sandbox.arrayfire.com/5341-revision-v1/',0,'revision','',0),(5510,7,'2014-05-06 19:41:24','2014-05-06 19:41:24','<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd.png\"><img class=\"aligncenter size-medium wp-image-242\" alt=\"arrayfire_logo_whitebkgnd\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd-300x42.png\" width=\"300\" height=\"42\" /></a>\r\n\r\nIt\'s that time again—we\'re pleased to announce the release of our newest version of ArrayFire: <a href=\"http://www.sandbox.arrayfire.com/docs/installation.htm\"><strong>ArrayFire v2.1</strong></a>.\r\n\r\nArrayFire v2.1 is now bigger, faster, and stronger, thanks to some key function additions, API changes, feature improvements, and bug fixes.\r\n\r\nArrayFire is a CUDA and OpenCL library designed for maximum speed without the hassle of writing time-consuming CUDA and OpenCL device code.  With ArrayFire’s library functions, developers can maximize productivity and performance. Each of ArrayFire’s functions has been hand-tuned by CUDA and OpenCL experts.\r\n<h3>Major Updates</h3>\r\n[icon type=\"angle-double-right\"] Support for CUDA 6.0\r\n[icon type=\"angle-double-right\"] Support for Mac OS X\r\n[icon type=\"angle-double-right\"] New language support (<a href=\"https://github.com/arrayfire\">available on github</a>)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_java\">ArrayFire for Java</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_r\">ArrayFire for R!</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_fortran\">ArrayFire for Fortran</a>*\r\n[icon type=\"angle-double-right\"] <a href=\"https://github.com/arrayfire\">ArrayFire Extras on Github</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] All language wrappers\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_examples\">Rolling updates to examples</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">OpenGL interop example</a>\r\n\r\n<em>*ArrayFire for Fortan has been removed from the installed library, but can be downloaded from the ArrayFire Extras GitHub page linked above.</em>\r\n<h3>Function Additions</h3>\r\n[icon type=\"angle-double-right\"] Image transformation (warp affine) functions\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__transform.htm#ga886e586ee8e8c259202c06bd134d828a\">transform()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] affine and inverse affine transform of an image\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__translate.htm#ga1615c8ea000ad113a0dc7a9313d7b645\">translate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] translate an image using affine transforms\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__scale.htm#ga288ebb8f3c3fb1c3a96260db4cc3b0cc\">scale()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] scale an image using affine transforms\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__skew.htm#gaacc7eb5f757a28d2e7d762f6b489fd5b\">skew()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] skew an image using affine transforms\r\n[icon type=\"angle-double-right\"] Coordinate transformation (homogeneous transformation) functions\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] transform_coords()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] Up to 3D homogeneous transformations\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] rotate_coords()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] rotation matrix wrapper for homogeneous coordinate transformation\r\n<h3>API Changes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] Added optional 4th parameter `recenter`\r\n[icon type=\"angle-double-right\"] af_filter removed\r\n<h3>Feature Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a> and <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#ga33ead0c86faace1072a227cd82a19bc1\">approx2()</a> now support nearest interpolation\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__convolve.htm#ga7a76750edf6c2d200ce8adf0740574c5\">convolve()</a> work for stack of images(3D) and gfor\r\n[icon type=\"angle-double-right\"] new indexing functions to add support for 4-th dimension gfor\r\n[icon type=\"angle-double-right\"] host pinned memory support for OpenCL\r\n<h3>Bug Fixes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__loadimage.htm#gacd12e91d2760fe62fc6b781ae39d30be\">loadimage()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed bug with grayscale image reading\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__gaussiankernel.htm#gad77314eb6df8aae428d52898b5b6a78e\">gaussiankernel()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed computation of gaussian kernel values\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed resize in OpenCL\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__medfilt.htm#ga4bf90c566ac99adb38d679a5a598b65f\">medfilt()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed to handle more data types\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed rounding issue on Tahiti GPUs\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed for gfor use\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__array__func__cpp__flip.htm#ga920af856ce0c993a929850149a289d60\">flip()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed launch configuration\r\n[icon type=\"angle-double-right\"] indexing now works on intel GPUs\r\n<h3>Performance Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a> rewritten to improve performance\r\n\r\n<span style=\"line-height: 1.5em;\">Visit our sleek, new <a href=\"http://www.sandbox.arrayfire.com/docs/\">documentation</a> to see ArrayFire in action and to view the complete list of all the enhancements available with ArrayFire v2.1.</span>\r\n\r\nWhile you\'re at it, be sure to check out our <a href=\"http://sandbox.arrayfire.com/#licensing\">ArrayFire licensing information</a>  to learn more about which licensing option would be the best for your needs.\r\n<div>\r\n\r\nJust getting started with GPU computing? Need an extra hand on a project? Tap into our deep parallel computing expertise and vast code base by setting up a free <a href=\"http://www.meetme.so/arrayfire\">technical consultation</a> today.\r\n\r\nWe’re always looking to make ArrayFire even better—let us know your thoughts through this short <a href=\"https://www.surveymonkey.com/s/arrayfire-new-feature\">survey</a>. We promise it’ll be worth your while!\r\n\r\n</div>','ArrayFire v2.1 Official Release','','inherit','open','closed','','5341-revision-v1','','','2014-05-06 19:41:24','2014-05-06 19:41:24','',5341,'http://sandbox.arrayfire.com/5341-revision-v1/',0,'revision','',0),(5511,6,'2014-05-07 14:17:10','2014-05-07 14:17:10','<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd.png\"><img class=\"aligncenter size-medium wp-image-242\" alt=\"arrayfire_logo_whitebkgnd\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd-300x42.png\" width=\"300\" height=\"42\" /></a>\r\n\r\nIt\'s that time again—we\'re pleased to announce the release of our newest version of ArrayFire: <a href=\"http://www.sandbox.arrayfire.com/docs/installation.htm\"><strong>ArrayFire v2.1</strong></a>.\r\n\r\nArrayFire v2.1 is now bigger, faster, and stronger, thanks to some key function additions, API changes, feature improvements, and bug fixes.\r\n\r\nArrayFire is a CUDA and OpenCL library designed for maximum speed without the hassle of writing time-consuming CUDA and OpenCL device code.  With ArrayFire’s library functions, developers can maximize productivity and performance. Each of ArrayFire’s functions has been hand-tuned by CUDA and OpenCL experts.\r\n<h3>Major Updates</h3>\r\n[icon type=\"angle-double-right\"] Support for CUDA 6.0\r\n[icon type=\"angle-double-right\"] Support for Mac OS X\r\n[icon type=\"angle-double-right\"] New language support (<a href=\"https://github.com/arrayfire\">available on github</a>)\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_java\">ArrayFire for Java</a>\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_r\">ArrayFire for R!</a>\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_fortran\">ArrayFire for Fortran</a>*\r\n[icon type=\"angle-double-right\"] <a href=\"https://github.com/arrayfire\">ArrayFire Extras on Github</a>\r\n[icon type=\"caret-right\"] All language wrappers\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_examples\">Rolling updates to examples</a>\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">OpenGL interop example</a>\r\n\r\n<em>*ArrayFire for Fortan has been removed from the installed library, but can be downloaded from the ArrayFire Extras GitHub page linked above.</em>\r\n<h3>Function Additions</h3>\r\n[icon type=\"angle-double-right\"] Image transformation (warp affine) functions\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__transform.htm#ga886e586ee8e8c259202c06bd134d828a\">transform()</a>\r\n[icon type=\"angle-right\"] affine and inverse affine transform of an image\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__translate.htm#ga1615c8ea000ad113a0dc7a9313d7b645\">translate()</a>\r\n[icon type=\"angle-right\"] translate an image using affine transforms\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__scale.htm#ga288ebb8f3c3fb1c3a96260db4cc3b0cc\">scale()</a>\r\n[icon type=\"angle-right\"] scale an image using affine transforms\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__skew.htm#gaacc7eb5f757a28d2e7d762f6b489fd5b\">skew()</a>\r\n[icon type=\"angle-right\"] skew an image using affine transforms\r\n[icon type=\"angle-double-right\"] Coordinate transformation (homogeneous transformation) functions\r\n[icon type=\"caret-right\"] transform_coords()\r\n[icon type=\"angle-right\"] Up to 3D homogeneous transformations\r\n[icon type=\"caret-right\"] rotate_coords()\r\n[icon type=\"angle-right\"] rotation matrix wrapper for homogeneous coordinate transformation\r\n<h3>API Changes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n[icon type=\"caret-right\"] Added optional 4th parameter `recenter`\r\n[icon type=\"angle-double-right\"] af_filter removed\r\n<h3>Feature Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a> and <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#ga33ead0c86faace1072a227cd82a19bc1\">approx2()</a> now support nearest interpolation\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__convolve.htm#ga7a76750edf6c2d200ce8adf0740574c5\">convolve()</a> work for stack of images(3D) and gfor\r\n[icon type=\"angle-double-right\"] new indexing functions to add support for 4-th dimension gfor\r\n[icon type=\"angle-double-right\"] host pinned memory support for OpenCL\r\n<h3>Bug Fixes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__loadimage.htm#gacd12e91d2760fe62fc6b781ae39d30be\">loadimage()</a>\r\n[icon type=\"caret-right\"] fixed bug with grayscale image reading\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__gaussiankernel.htm#gad77314eb6df8aae428d52898b5b6a78e\">gaussiankernel()</a>\r\n[icon type=\"caret-right\"] fixed computation of gaussian kernel values\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>\r\n[icon type=\"caret-right\"] fixed resize in OpenCL\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__medfilt.htm#ga4bf90c566ac99adb38d679a5a598b65f\">medfilt()</a>\r\n[icon type=\"caret-right\"] fixed to handle more data types\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n[icon type=\"caret-right\"] fixed rounding issue on Tahiti GPUs\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a>\r\n[icon type=\"caret-right\"] fixed for gfor use\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__array__func__cpp__flip.htm#ga920af856ce0c993a929850149a289d60\">flip()</a>\r\n[icon type=\"caret-right\"] fixed launch configuration\r\n[icon type=\"angle-double-right\"] indexing now works on intel GPUs\r\n<h3>Performance Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a> rewritten to improve performance\r\n\r\n<span style=\"line-height: 1.5em;\">Visit our sleek, new <a href=\"http://www.sandbox.arrayfire.com/docs/\">documentation</a> to see ArrayFire in action and to view the complete list of all the enhancements available with ArrayFire v2.1.</span>\r\n\r\nWhile you\'re at it, be sure to check out our <a href=\"http://sandbox.arrayfire.com/#licensing\">ArrayFire licensing information</a>  to learn more about which licensing option would be the best for your needs.\r\n<div>\r\n\r\nJust getting started with GPU computing? Need an extra hand on a project? Tap into our deep parallel computing expertise and vast code base by setting up a free <a href=\"http://www.meetme.so/arrayfire\">technical consultation</a> today.\r\n\r\nWe’re always looking to make ArrayFire even better—let us know your thoughts through this short <a href=\"https://www.surveymonkey.com/s/arrayfire-new-feature\">survey</a>. We promise it’ll be worth your while!\r\n\r\n</div>','ArrayFire v2.1 Official Release','','inherit','open','closed','','5341-autosave-v1','','','2014-05-07 14:17:10','2014-05-07 14:17:10','',5341,'http://sandbox.arrayfire.com/5341-autosave-v1/',0,'revision','',0),(5512,6,'2014-05-07 14:22:07','2014-05-07 14:22:07','<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd.png\"><img class=\"aligncenter size-medium wp-image-242\" alt=\"arrayfire_logo_whitebkgnd\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd-300x42.png\" width=\"300\" height=\"42\" /></a>\r\n\r\nIt\'s that time again—we\'re pleased to announce the release of our newest version of ArrayFire: <a href=\"http://www.sandbox.arrayfire.com/docs/installation.htm\"><strong>ArrayFire v2.1</strong></a>.\r\n\r\nArrayFire v2.1 is now bigger, faster, and stronger, thanks to some key function additions, API changes, feature improvements, and bug fixes.\r\n\r\nArrayFire is a CUDA and OpenCL library designed for maximum speed without the hassle of writing time-consuming CUDA and OpenCL device code.  With ArrayFire’s library functions, developers can maximize productivity and performance. Each of ArrayFire’s functions has been hand-tuned by CUDA and OpenCL experts.\r\n<h3>Major Updates</h3>\r\n[icon type=\"angle-double-right\"] Support for CUDA 6.0\r\n[icon type=\"angle-double-right\"] Support for Mac OS X\r\n[icon type=\"angle-double-right\"] New language support (<a href=\"https://github.com/arrayfire\">available on github</a>)\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_java\">ArrayFire for Java</a>\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_r\">ArrayFire for R!</a>\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_fortran\">ArrayFire for Fortran</a>*\r\n[icon type=\"angle-double-right\"] <a href=\"https://github.com/arrayfire\">ArrayFire Extras on Github</a>\r\n[icon type=\"caret-right\"] All language wrappers\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_examples\">Rolling updates to examples</a>\r\n[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">OpenGL interop example</a>\r\n\r\n<em>*ArrayFire for Fortan has been removed from the installed library, but can be downloaded from the ArrayFire Extras GitHub page linked above.</em>\r\n<h3>Function Additions</h3>\r\n[icon type=\"angle-double-right\"] Image transformation (warp affine) functions\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__transform.htm#ga886e586ee8e8c259202c06bd134d828a\">transform()</a>\r\n[icon type=\"angle-right\"] affine and inverse affine transform of an image\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__translate.htm#ga1615c8ea000ad113a0dc7a9313d7b645\">translate()</a>\r\n[icon type=\"angle-right\"] translate an image using affine transforms\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__scale.htm#ga288ebb8f3c3fb1c3a96260db4cc3b0cc\">scale()</a>\r\n[icon type=\"angle-right\"] scale an image using affine transforms\r\n[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__skew.htm#gaacc7eb5f757a28d2e7d762f6b489fd5b\">skew()</a>\r\n[icon type=\"angle-right\"] skew an image using affine transforms\r\n[icon type=\"angle-double-right\"] Coordinate transformation (homogeneous transformation) functions\r\n[icon type=\"caret-right\"] transform_coords()\r\n[icon type=\"angle-right\"] Up to 3D homogeneous transformations\r\n[icon type=\"caret-right\"] rotate_coords()\r\n[icon type=\"angle-right\"] rotation matrix wrapper for homogeneous coordinate transformation\r\n<h3>API Changes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n[icon type=\"caret-right\"] Added optional 4th parameter `recenter`\r\n[icon type=\"angle-double-right\"] af_filter removed\r\n<h3>Feature Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a> and <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#ga33ead0c86faace1072a227cd82a19bc1\">approx2()</a> now support nearest interpolation\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__convolve.htm#ga7a76750edf6c2d200ce8adf0740574c5\">convolve()</a> work for stack of images(3D) and gfor\r\n[icon type=\"angle-double-right\"] new indexing functions to add support for 4-th dimension gfor\r\n[icon type=\"angle-double-right\"] host pinned memory support for OpenCL\r\n<h3>Bug Fixes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__loadimage.htm#gacd12e91d2760fe62fc6b781ae39d30be\">loadimage()</a>\r\n[icon type=\"caret-right\"] fixed bug with grayscale image reading\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__gaussiankernel.htm#gad77314eb6df8aae428d52898b5b6a78e\">gaussiankernel()</a>\r\n[icon type=\"caret-right\"] fixed computation of gaussian kernel values\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>\r\n[icon type=\"caret-right\"] fixed resize in OpenCL\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__medfilt.htm#ga4bf90c566ac99adb38d679a5a598b65f\">medfilt()</a>\r\n[icon type=\"caret-right\"] fixed to handle more data types\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n[icon type=\"caret-right\"] fixed rounding issue on Tahiti GPUs\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a>\r\n[icon type=\"caret-right\"] fixed for gfor use\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__array__func__cpp__flip.htm#ga920af856ce0c993a929850149a289d60\">flip()</a>\r\n[icon type=\"caret-right\"] fixed launch configuration\r\n[icon type=\"angle-double-right\"] indexing now works on intel GPUs\r\n<h3>Performance Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a> rewritten to improve performance\r\n\r\n<span style=\"line-height: 1.5em;\">Visit our sleek, new <a href=\"http://www.sandbox.arrayfire.com/docs/\">documentation</a> to see ArrayFire in action and to view the complete list of all the enhancements available with ArrayFire v2.1.</span>\r\n\r\nWhile you\'re at it, be sure to check out our <a href=\"http://sandbox.arrayfire.com/#licensing\">ArrayFire licensing information</a>  to learn more about which licensing option would be the best for your needs.\r\n<div>\r\n\r\nJust getting started with GPU computing? Need an extra hand on a project? Tap into our deep parallel computing expertise and vast code base by setting up a free <a href=\"http://www.meetme.so/arrayfire\">technical consultation</a> today.\r\n\r\nWe’re always looking to make ArrayFire even better—let us know your thoughts through this short <a href=\"https://www.surveymonkey.com/s/arrayfire-new-feature\">survey</a>. We promise it’ll be worth your while!\r\n\r\n</div>','ArrayFire v2.1 Official Release','','inherit','open','closed','','5341-revision-v1','','','2014-05-07 14:22:07','2014-05-07 14:22:07','',5341,'http://sandbox.arrayfire.com/5341-revision-v1/',0,'revision','',0),(5513,7,'2014-05-07 14:32:10','2014-05-07 14:32:10','<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd.png\"><img class=\"aligncenter size-medium wp-image-242\" alt=\"arrayfire_logo_whitebkgnd\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/arrayfire_logo_whitebkgnd-300x42.png\" width=\"300\" height=\"42\" /></a>\r\n\r\nIt\'s that time again—we\'re pleased to announce the release of our newest version of ArrayFire: <a href=\"http://www.sandbox.arrayfire.com/docs/installation.htm\"><strong>ArrayFire v2.1</strong></a>.\r\n\r\nArrayFire v2.1 is now bigger, faster, and stronger, thanks to some key function additions, API changes, feature improvements, and bug fixes.\r\n\r\nArrayFire is a CUDA and OpenCL library designed for maximum speed without the hassle of writing time-consuming CUDA and OpenCL device code.  With ArrayFire’s library functions, developers can maximize productivity and performance. Each of ArrayFire’s functions has been hand-tuned by CUDA and OpenCL experts.\r\n<h3>Major Updates</h3>\r\n[icon type=\"angle-double-right\"] Support for CUDA 6.0\r\n[icon type=\"angle-double-right\"] Support for Mac OS X\r\n[icon type=\"angle-double-right\"] New language support (<a href=\"https://github.com/arrayfire\">available on github</a>)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_java\">ArrayFire for Java</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_r\">ArrayFire for R!</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_fortran\">ArrayFire for Fortran</a>*\r\n[icon type=\"angle-double-right\"] <a href=\"https://github.com/arrayfire\">ArrayFire Extras on Github</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] All language wrappers\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_examples\">Rolling updates to examples</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">OpenGL interop example</a>\r\n\r\n<em>*ArrayFire for Fortan has been removed from the installed library, but can be downloaded from the ArrayFire Extras GitHub page linked above.</em>\r\n<h3>Function Additions</h3>\r\n[icon type=\"angle-double-right\"] Image transformation (warp affine) functions\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__transform.htm#ga886e586ee8e8c259202c06bd134d828a\">transform()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] affine and inverse affine transform of an image\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__translate.htm#ga1615c8ea000ad113a0dc7a9313d7b645\">translate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] translate an image using affine transforms\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__scale.htm#ga288ebb8f3c3fb1c3a96260db4cc3b0cc\">scale()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] scale an image using affine transforms\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__skew.htm#gaacc7eb5f757a28d2e7d762f6b489fd5b\">skew()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] skew an image using affine transforms\r\n[icon type=\"angle-double-right\"] Coordinate transformation (homogeneous transformation) functions\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] transform_coords()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] Up to 3D homogeneous transformations\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] rotate_coords()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"angle-right\"] rotation matrix wrapper for homogeneous coordinate transformation\r\n<h3>API Changes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] Added optional 4th parameter `recenter`\r\n[icon type=\"angle-double-right\"] af_filter removed\r\n<h3>Feature Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a> and <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#ga33ead0c86faace1072a227cd82a19bc1\">approx2()</a> now support nearest interpolation\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>, <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__convolve.htm#ga7a76750edf6c2d200ce8adf0740574c5\">convolve()</a> work for stack of images(3D) and gfor\r\n[icon type=\"angle-double-right\"] new indexing functions to add support for 4-th dimension gfor\r\n[icon type=\"angle-double-right\"] host pinned memory support for OpenCL\r\n<h3>Bug Fixes</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__loadimage.htm#gacd12e91d2760fe62fc6b781ae39d30be\">loadimage()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed bug with grayscale image reading\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__gaussiankernel.htm#gad77314eb6df8aae428d52898b5b6a78e\">gaussiankernel()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed computation of gaussian kernel values\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__resize.htm#ga68a694d57cbb95ca74b6f9763fd6500b\">resize()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed resize in OpenCL\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__medfilt.htm#ga4bf90c566ac99adb38d679a5a598b65f\">medfilt()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed to handle more data types\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a>\r\n[icon type=\"caret-right\"] fixed rounding issue on Tahiti GPUs\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__signal__func__cpp__approx.htm#gadf7bb6bdd0fb3c9008096d47c349d073\">approx1()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed for gfor use\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__array__func__cpp__flip.htm#ga920af856ce0c993a929850149a289d60\">flip()</a>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[icon type=\"caret-right\"] fixed launch configuration\r\n[icon type=\"angle-double-right\"] indexing now works on intel GPUs\r\n<h3>Performance Improvements</h3>\r\n[icon type=\"angle-double-right\"] <a href=\"http://www.sandbox.arrayfire.com/docs/group__image__func__cpp__rotate.htm#ga4e7771d3b41adcb8223aa043e2e31b98\">rotate()</a> rewritten to improve performance\r\n\r\n<span style=\"line-height: 1.5em;\">Visit our sleek, new <a href=\"http://www.sandbox.arrayfire.com/docs/\">documentation</a> to see ArrayFire in action and to view the complete list of all the enhancements available with ArrayFire v2.1.</span>\r\n\r\nWhile you\'re at it, be sure to check out our <a href=\"http://sandbox.arrayfire.com/#licensing\">ArrayFire licensing information</a>  to learn more about which licensing option would be the best for your needs.\r\n<div>\r\n\r\nJust getting started with GPU computing? Need an extra hand on a project? Tap into our deep parallel computing expertise and vast code base by setting up a free <a href=\"http://www.meetme.so/arrayfire\">technical consultation</a> today.\r\n\r\nWe’re always looking to make ArrayFire even better—let us know your thoughts through this short <a href=\"https://www.surveymonkey.com/s/arrayfire-new-feature\">survey</a>. We promise it’ll be worth your while!\r\n\r\n</div>','ArrayFire v2.1 Official Release','','inherit','open','closed','','5341-revision-v1','','','2014-05-07 14:32:10','2014-05-07 14:32:10','',5341,'http://sandbox.arrayfire.com/5341-revision-v1/',0,'revision','',0),(5514,17728,'2014-05-07 18:42:58','2014-05-07 18:42:58','SC13 was awesome this week! Tomorrow is the last day of the exhibition. For those of you that did not make it to the show, here are some pictures from our exhibit:\r\n<p style=\"text-align: center;\"><a href=\"http://blog.accelereyes.com/blog/wp-content/uploads/2013/11/IMG_1450.jpg\"><img class=\"aligncenter  wp-image-4564\" alt=\"IMG_1450\" src=\"http://blog.accelereyes.com/blog/wp-content/uploads/2013/11/IMG_1450.jpg\" width=\"614\" height=\"461\" /></a></p>\r\n<p style=\"text-align: center;\"><img class=\"aligncenter  wp-image-4561\" alt=\"IMG_1457\" src=\"http://blog.accelereyes.com/blog/wp-content/uploads/2013/11/IMG_1457.jpg\" width=\"614\" height=\"532\" /></p>\r\n<p style=\"text-align: center;\"><strong>The AccelerEyes Booth</strong></p>\r\n<p style=\"text-align: center;\">--------------------------------------------------------------------------------------------------------</p>\r\n<p style=\"text-align: center;\"><a href=\"http://blog.accelereyes.com/blog/wp-content/uploads/2013/11/IMG_1451.jpg\"><img class=\"aligncenter  wp-image-4557\" alt=\"IMG_1451\" src=\"http://blog.accelereyes.com/blog/wp-content/uploads/2013/11/IMG_1451.jpg\" width=\"461\" height=\"614\" /></a></p>\r\n<p style=\"text-align: center;\"><strong>ArrayFire OpenCL Demo on ARM Mali</strong></p>\r\n<p style=\"text-align: center;\">--------------------------------------------------------------------------------------------------------</p>\r\n<p style=\"text-align: center;\"><a href=\"http://blog.accelereyes.com/blog/wp-content/uploads/2013/11/IMG_1452.jpg\"><img class=\"aligncenter  wp-image-4558\" alt=\"IMG_1452\" src=\"http://blog.accelereyes.com/blog/wp-content/uploads/2013/11/IMG_1452.jpg\" width=\"461\" height=\"614\" /></a></p>\r\n<p style=\"text-align: center;\"><strong>ArrayFire CUDA Demo on NVIDIA K40</strong></p>\r\n<p style=\"text-align: center;\">--------------------------------------------------------------------------------------------------------</p>\r\n<p style=\"text-align: center;\"><a href=\"http://blog.accelereyes.com/blog/wp-content/uploads/2013/11/IMG_1453.jpg\"><img class=\"aligncenter  wp-image-4559\" alt=\"IMG_1453\" src=\"http://blog.accelereyes.com/blog/wp-content/uploads/2013/11/IMG_1453.jpg\" width=\"461\" height=\"614\" /></a></p>\r\n<p style=\"text-align: center;\"><strong>ArrayFire OpenCL Demo on Intel Xeon Phi Coprocessor</strong></p>\r\n<p style=\"text-align: center;\">--------------------------------------------------------------------------------------------------------</p>\r\n<p style=\"text-align: center;\"><a href=\"http://blog.accelereyes.com/blog/wp-content/uploads/2013/11/IMG_1454.jpg\"><img class=\"aligncenter  wp-image-4560\" alt=\"IMG_1454\" src=\"http://blog.accelereyes.com/blog/wp-content/uploads/2013/11/IMG_1454.jpg\" width=\"461\" height=\"614\" /></a></p>\r\n<p style=\"text-align: center;\"><strong>ArrayFire OpenCL Demo on AMD FirePro GPU</strong></p>\r\n<p style=\"text-align: center;\">--------------------------------------------------------------------------------------------------------</p>\r\n<p style=\"text-align: left;\">It was a great show and wonderful to see so many ArrayFire users in person. If you could not attend and would like to learn more about our CUDA or OpenCL products or services, let us know!</p>\r\n\r\n<h6 class=\"zemanta-related-title\" style=\"font-size: 1em;\">Related articles</h6>\r\n<ul class=\"zemanta-article-ul zemanta-article-ul-image\" style=\"margin: 0; padding: 0; overflow: hidden;\">\r\n	<li class=\"zemanta-article-ul-li-image zemanta-article-ul-li\" style=\"padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;\"><a style=\"box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;\" href=\"http://blog.accelereyes.com/blog/2013/10/07/arrayfire-v2-0-release-candidate-now-available-for-download/\" target=\"_blank\"><img style=\"padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;\" alt=\"\" src=\"http://i.zemanta.com/noimg_63_80_80.jpg\" /></a><a style=\"display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;\" href=\"http://blog.accelereyes.com/blog/2013/10/07/arrayfire-v2-0-release-candidate-now-available-for-download/\" target=\"_blank\">ArrayFire v2.0 Release Candidate Now Available for Download</a></li>\r\n	<li class=\"zemanta-article-ul-li-image zemanta-article-ul-li\" style=\"padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;\"><a style=\"box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;\" href=\"http://notonlyluck.com/2013/11/18/two-kinds-of-exhibits-to-watch-at-tradeshows/\" target=\"_blank\"><img style=\"padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;\" alt=\"\" src=\"http://i.zemanta.com/noimg_124_80_80.jpg\" /></a><a style=\"display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;\" href=\"http://notonlyluck.com/2013/11/18/two-kinds-of-exhibits-to-watch-at-tradeshows/\" target=\"_blank\">Two Kinds of Exhibits to Watch at Tradeshows</a></li>\r\n	<li class=\"zemanta-article-ul-li-image zemanta-article-ul-li\" style=\"padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;\"><a style=\"box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;\" href=\"http://www.eweek.com/servers/intel-execs-talk-xeon-phi-at-supercomputing-show.html\" target=\"_blank\"><img style=\"padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;\" alt=\"\" src=\"http://i.zemanta.com/222596490_80_80.jpg\" /></a><a style=\"display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;\" href=\"http://www.eweek.com/servers/intel-execs-talk-xeon-phi-at-supercomputing-show.html\" target=\"_blank\">Intel Execs Talk Xeon Phi at Supercomputing Show</a></li>\r\n	<li class=\"zemanta-article-ul-li-image zemanta-article-ul-li\" style=\"padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;\"><a style=\"box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;\" href=\"http://www.fool.com/investing/general/2013/11/18/nvidias-partnership-with-ibm-makes-sense.aspx\" target=\"_blank\"><img style=\"padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;\" alt=\"\" src=\"http://i.zemanta.com/222178847_80_80.jpg\" /></a><a style=\"display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;\" href=\"http://www.fool.com/investing/general/2013/11/18/nvidias-partnership-with-ibm-makes-sense.aspx\" target=\"_blank\">NVIDIA\'s Partnership With IBM Makes Sense</a></li>\r\n	<li class=\"zemanta-article-ul-li-image zemanta-article-ul-li\" style=\"padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;\"><a style=\"box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;\" href=\"http://www.anandtech.com/show/7515/nvidia-announces-cuda-6-unified-memory-for-cuda\" target=\"_blank\"><img style=\"padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;\" alt=\"\" src=\"http://i.zemanta.com/220889050_80_80.jpg\" /></a><a style=\"display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;\" href=\"http://www.anandtech.com/show/7515/nvidia-announces-cuda-6-unified-memory-for-cuda\" target=\"_blank\">NVIDIA Announces CUDA 6: Unified Memory for CUDA</a></li>\r\n	<li class=\"zemanta-article-ul-li-image zemanta-article-ul-li\" style=\"padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;\"><a style=\"box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;\" href=\"http://www.legitreviews.com/amd-enables-server-apu-software-to-reimagine-the-server_128704\" target=\"_blank\"><img style=\"padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;\" alt=\"\" src=\"http://i.zemanta.com/219980829_80_80.jpg\" /></a><a style=\"display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;\" href=\"http://www.legitreviews.com/amd-enables-server-apu-software-to-reimagine-the-server_128704\" target=\"_blank\">AMD Enables Server APU Software to Reimagine the Server</a></li>\r\n</ul>\r\n<div class=\"zemanta-pixie\" style=\"margin-top: 10px; height: 15px;\"><a class=\"zemanta-pixie-a\" title=\"Enhanced by Zemanta\" href=\"http://www.zemanta.com/?px\"><img class=\"zemanta-pixie-img\" style=\"border: none; float: right;\" alt=\"Enhanced by Zemanta\" src=\"http://img.zemanta.com/zemified_e.png?x-id=9e9b61cd-6523-444f-a6d3-bc03e1db5626\" /></a></div>','Photos from SC13','','inherit','open','closed','','4543-revision-v1','','','2014-05-07 18:42:58','2014-05-07 18:42:58','',4543,'http://sandbox.arrayfire.com/4543-revision-v1/',0,'revision','',0),(5523,11,'2014-05-09 21:56:05','2014-05-09 21:56:05','<span style=\"line-height: 1.5em;\">Until recently, we had our central git repositories hosted on a virtual machine. This was running on a big, noisy, rack mounted server. We started thinking about cutting down the number of machines we use on a daily basis (Just can\'t stop optimizing). The opportunity popped up during an office move to our new location.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">We had discussed this idea in a few meetings before, but for various reasons, they were not acted upon.</span><span style=\"line-height: 1.5em;\"> During the move</span> <a href=\"https://twitter.com/arshad_umar\" target=\"_blank\">Umar</a> started hacking on <a title=\"GitLab\" href=\"http://https://www.gitlab.com/\" target=\"_blank\">GitLab</a> to get it working for us internally. The office move came as a blessing in disguise. He used one of our old Dell Inspiron laptops that was just gathering dust. We ordered new DDR2 (yes, DDR2) RAM for it and installed Ubuntu. Soon, we were ready to go. It has been about 3 weeks since we have been using GitLab, and it has been nothing but great. Here few of the benefits of deploying GitLab:\r\n<ul>\r\n	<li><strong>Accounts</strong>: Each user has their own account and can manage SSH Keys. Previously we had to semi-automatically distribute keys throughout our build setup.</li>\r\n	<li><strong>Keeping track of commits</strong>: Using git hooks, we had the updates going on a news group. This approach was not popular with many of our developers. Using GitLab, the dashboard shows updates and activities to all the branches and repos that you are either participating or watching.</li>\r\n	<li><strong>Groups</strong>: We do a lot of development, on ArrayFire as well as accelerating software for our customers. GitLab\'s  groups feature makes it easier to isolate independent projects.</li>\r\n	<li><strong>Owners</strong>: Previously access to the development and master branches was only restricted by word of mouth. However this was not always stringently enforced. GitLab made it easier to restrict access to such branches. Only the Owners are allowed to push and anyone else needs so send out a \"Merge Request\" (similar to a pull request on GitHub).</li>\r\n	<li><strong>Merge Requests</strong>: When we want to merge our changes to one of our main branches, we send out a merge request to the branch owners. The owner\'s receive notification and can review the various commits and diffs on a browser and merge the changes.</li>\r\n	<li><strong>Code Review</strong>: Users can add comments to specific lines of code or in general. Comments can also include \"Thumbs Up\" and \"Thumbs Down\" icons which can be used to indicate great work or to indicate votes when doing a code review. We can add comments to comments which makes them look neatly organized.</li>\r\n	<li><strong>Issues</strong>: One of the best parts of GitLab has been the ability to create issues. Previously, we used JIRA to handle this side of our workflow. With GitLab, that extra system has been eliminated. Like JIRA, GitLab allows you to create and close issues. It might not be as robust as JIRA but its nice that is integrated into one tool.</li>\r\n	<li><strong>Stats</strong>: GitLab also creates various statistics and graphs on its own, such as number of commits, lines added and deleted. Each user gets their own chart as well. The only thing we really use this for? Bragging rights.</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">GitLab has been so useful that it has become a pinned tab on my browser (and pretty much everyone else here). It has been the best thing to happen to our workflow since our automated build system on Jenkins (the appreciation of Jenkins will be whole another blog on its own).</span> What your experiences with internal development tools you use?','GitLab at ArrayFire','','publish','open','closed','','gitlab-at-arrayfire','','','2014-05-09 22:12:52','2014-05-09 22:12:52','',0,'http://sandbox.arrayfire.com/?p=5523',0,'post','',0),(5524,11,'2014-05-08 21:08:44','2014-05-08 21:08:44','At GTC 2014, NVIDIA announced the Jetson TK1 mobile supercomputer dev board. We received ours at the start of this week and have been playing around with it.\r\n\r\nThe board is a handy at 5\"x5\". It comes with an active cooling fan similar to ones on most laptops but pretty quiet. The design of the board is ','Jetson TK1','','inherit','open','closed','','5523-revision-v1','','','2014-05-08 21:08:44','2014-05-08 21:08:44','',5523,'http://sandbox.arrayfire.com/5523-revision-v1/',0,'revision','',0),(5527,11,'2014-05-08 22:10:13','2014-05-08 22:10:13','Until recently, we have been using a virtual machine as our git server. The computer that hosted this was a big, noisy, ancient computer that ran XenServer and sat in a server rack.\r\n\r\nWe have been on the move and will be in temporary spaces until we move to our permanent location in Q3. This led us to cut down on the number of computers we depend on, especially our servers. We had to figure out a way to keep our dev loop going without sacrificing work space environment.\r\n\r\nIt was then that Umar started hacking on GitLab to get it working for us internally. We had discussed this idea in a few meetings before, but for various reasons, they were not acted upon. The office move came as a blessing in disguise.\r\n\r\nUmar used one of our old Dell laptops that was just gathering dust. We ordered new DDR2 (yes, DDR2) RAM for it and installed Ubuntu. Soon, we were ready to go.\r\n\r\nIt has been about 3 weeks since we have been using GitLab, and it has been nothing but great. Here few of the benefits of deploying GitLab:\r\n<ul>\r\n	<li><strong>Accounts</strong>: Each user has their own account and can manage SSH Keys. Previously we had to semi-automatically distribute keys throughout our build setup.</li>\r\n	<li><strong>Automatic Email Updates</strong>: Using native git on a server, we had no auto-updates to really know what everyone was working on. Unless we checkout a branch and look at the logs, we would have no idea about the development going except for asking the person who is working on it. Also, the dashboard shows updates and activities to all the branches and repos that you are participating in or have marked as watch.</li>\r\n	<li><strong>Groups and Owners</strong>: In our dev loop, we have various things going on. From adding new features to fixing existing bugs and adding unit tests, benchmarks and examples. This has led to most people \"owning\" a branch of ArrayFire. GitLab has allowed us to restrict push access to these branches. Only the Owners are allowed to push and anyone else needs so send out a \"Merge Request\" (similar to a pull request on GitHub). This has allowed us to restrict access to our main development branch. Any work now needs a new branch followed by a merge request. I had been one of the persons who worked directly on the devel branch. That being said, I am so much more happier now that my access to it restricted. This has made me work on new branches more often and not send out silly commits to the development branch.</li>\r\n	<li><strong>Merge Requests</strong>: As soon as new code is open to be merged, we send out a merge request to the branch owners. The owner\'s receive notification and can review the various commits and diffs on the browser itself. Then we review, comment and create issues as discussed below.</li>\r\n	<li><strong>Reviews and Comments</strong>: Users can add comments to specific lines of code or in general. Comments can also include \"Thumbs Up\" and \"Thumbs Down\" icons which really help in recognizing great work (albeit, we use thumbs up a lot more than thumbs down).  Comments can also include links to external websites as well as GitLab commits which can show that a comment that needs attention has been fixed. Users can also be tagged using the @username handle which sends them an email notification. And lastly, we can add comments to comments which makes them look neatly organized.</li>\r\n	<li><strong>Issues</strong>: One of the best parts of GitLab has been the ability to create issues. Previously, we used Jira to handle this side of our dev loop. However the serious downside of Jira was that it required manual input at most times and had no way to link with git. Jira had become such a chore that at one point we had to make it company rule to have at least 1 Jira action a day. Even that failed to get us developers to use Jira effectively. I\'m not saying that Jira was bad, it most definitely wasn\'t. The issue with Jira was that it was just another system we had to work with. With GitLab, that extra system has been eliminated. The issue system in GitLab provides the ability to create and close issues similar to Jira. But the additional benefits are all in its ability to integrated perfectly with our git activity.</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">GitLab has been so useful that it has become a pinned tab on my browser (and from most people\'s from what I have seen). It have been the best thing to happen to our dev loop since our automated build system on Jenkins (the appreciation of Jenkins is a whole another blog on its own).</span>\r\n\r\nLet us know what your experiences with internal development are and the tools that you use. If you are/have used GitLab in your development, let us know what you think of it and how it affected your productivity.','GitLab','','inherit','open','closed','','5523-revision-v1','','','2014-05-08 22:10:13','2014-05-08 22:10:13','',5523,'http://sandbox.arrayfire.com/5523-revision-v1/',0,'revision','',0),(5528,11,'2014-05-09 14:55:06','2014-05-09 14:55:06','Until recently, we have been using a virtual machine as our git server. The computer that hosted this was a big, noisy, ancient computer that ran XenServer and sat in a server rack.\r\n\r\nWe have been on the move recently and will be in temporary locations until we move to our permanent location in Q3 \'14. This led us to cut down on the number of computers we depend on, especially our servers. We had to figure out a way to keep our dev loop going without sacrificing work space environment.\r\n\r\nIt was then that Umar started hacking on GitLab to get it working for us internally. We had discussed this idea in a few meetings before, but for various reasons, they were not acted upon. The office move came as a blessing in disguise. Umar used one of our old Dell laptops that was just gathering dust. We ordered new DDR2 (yes, DDR2) RAM for it and installed Ubuntu. Soon, we were ready to go.\r\n\r\nIt has been about 3 weeks since we have been using GitLab, and it has been nothing but great. Here few of the benefits of deploying GitLab:\r\n<ul>\r\n	<li><strong>Accounts</strong>: Each user has their own account and can manage SSH Keys. Previously we had to semi-automatically distribute keys throughout our build setup.</li>\r\n	<li><strong>Automatic Email Updates</strong>: Using native git on a server, we had no auto-updates to really know what everyone was working on. Unless we checkout a branch and look at the logs, we would have no idea about the development going except for asking the person who is working on it. Also, the dashboard shows updates and activities to all the branches and repos that you are participating in or have marked as watch.</li>\r\n	<li><strong>Groups and Owners</strong>: In our dev loop, we have various things going on. From adding new features to fixing existing bugs and adding unit tests, benchmarks and examples. This has led to most people \"owning\" a branch of ArrayFire. GitLab has allowed us to restrict push access to these branches. Only the Owners are allowed to push and anyone else needs so send out a \"Merge Request\" (similar to a pull request on GitHub). This has allowed us to restrict access to our main development branch. Any work now needs a new branch followed by a merge request. I had been one of the persons who worked directly on the devel branch. That being said, I am so much more happier now that my access to it restricted. This has made me work on new branches more often and not send out silly commits to the development branch.</li>\r\n	<li><strong>Merge Requests</strong>: As soon as new code is open to be merged, we send out a merge request to the branch owners. The owner\'s receive notification and can review the various commits and diffs on the browser itself. Then we review, comment and create issues as discussed below.</li>\r\n	<li><strong>Reviews and Comments</strong>: Users can add comments to specific lines of code or in general. Comments can also include \"Thumbs Up\" and \"Thumbs Down\" icons which really help in recognizing great work (albeit, we use thumbs up a lot more than thumbs down).  Comments can also include links to external websites as well as GitLab commits which can show that a comment that needs attention has been fixed. Users can also be tagged using the @username handle which sends them an email notification. And lastly, we can add comments to comments which makes them look neatly organized.</li>\r\n	<li><strong>Issues</strong>: One of the best parts of GitLab has been the ability to create issues. Previously, we used Jira to handle this side of our dev loop. However the serious downside of Jira was that it required manual input at most times and had no way to link with git. Jira had become such a chore that at one point we had to make it company rule to have at least 1 Jira action a day. Even that failed to get us developers to use Jira effectively. I\'m not saying that Jira was bad, it most definitely wasn\'t. The issue with Jira was that it was just another system we had to work with. With GitLab, that extra system has been eliminated. The issue system in GitLab provides the ability to create and close issues similar to Jira. But the additional benefits are all in its ability to integrated perfectly with our git activity.</li>\r\n	<li><strong>Stats</strong>: GitLab also creates various statistics and graphs on its own, such as number of commits, lines added and deleted. Each user gets their own chart as well. The only thing we really use this for? Bragging rights.</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">GitLab has been so useful that it has become a pinned tab on my browser (and from most people\'s from what I have seen). It have been the best thing to happen to our dev loop since our automated build system on Jenkins (the appreciation of Jenkins is a whole another blog on its own).</span>\r\n\r\nLet us know what your experiences with internal development are and the tools that you use. If you are/have used GitLab in your development, let us know what you think of it and how it affected your productivity.','GitLab','','inherit','open','closed','','5523-revision-v1','','','2014-05-09 14:55:06','2014-05-09 14:55:06','',5523,'http://sandbox.arrayfire.com/5523-revision-v1/',0,'revision','',0),(5529,11,'2014-05-09 14:55:43','2014-05-09 14:55:43','Until recently, we have been using a virtual machine as our git server. The computer that hosted this was a big, noisy, ancient computer that ran XenServer and sat in a server rack.\r\n\r\nWe have been on the move recently and will be in temporary locations until we move to our permanent location in Q3 \'14. This led us to cut down on the number of computers we depend on, especially our servers. We had to figure out a way to keep our dev loop going without sacrificing work space environment.\r\n\r\nIt was then that Umar started hacking on GitLab to get it working for us internally. We had discussed this idea in a few meetings before, but for various reasons, they were not acted upon. The office move came as a blessing in disguise. Umar used one of our old Dell laptops that was just gathering dust. We ordered new DDR2 (yes, DDR2) RAM for it and installed Ubuntu. Soon, we were ready to go.\r\n\r\nIt has been about 3 weeks since we have been using GitLab, and it has been nothing but great. Here few of the benefits of deploying GitLab:\r\n<ul>\r\n	<li><strong>Accounts</strong>: Each user has their own account and can manage SSH Keys. Previously we had to semi-automatically distribute keys throughout our build setup.</li>\r\n	<li><strong>Automatic Email Updates</strong>: Using native git on a server, we had no auto-updates to really know what everyone was working on. Unless we checkout a branch and look at the logs, we would have no idea about the development going except for asking the person who is working on it. Also, the dashboard shows updates and activities to all the branches and repos that you are participating in or have marked as watch.</li>\r\n	<li><strong>Groups and Owners</strong>: In our dev loop, we have various things going on. From adding new features to fixing existing bugs and adding unit tests, benchmarks and examples. This has led to most people \"owning\" a branch of ArrayFire. GitLab has allowed us to restrict push access to these branches. Only the Owners are allowed to push and anyone else needs so send out a \"Merge Request\" (similar to a pull request on GitHub). This has allowed us to restrict access to our main development branch. Any work now needs a new branch followed by a merge request. I had been one of the persons who worked directly on the devel branch. That being said, I am so much more happier now that my access to it restricted. This has made me work on new branches more often and not send out silly commits to the development branch.</li>\r\n	<li><strong>Merge Requests</strong>: As soon as new code is open to be merged, we send out a merge request to the branch owners. The owner\'s receive notification and can review the various commits and diffs on the browser itself. Then we review, comment and create issues as discussed below.</li>\r\n	<li><strong>Reviews and Comments</strong>: Users can add comments to specific lines of code or in general. Comments can also include \"Thumbs Up\" and \"Thumbs Down\" icons which really help in recognizing great work (albeit, we use thumbs up a lot more than thumbs down).  Comments can also include links to external websites as well as GitLab commits which can show that a comment that needs attention has been fixed. Users can also be tagged using the @username handle which sends them an email notification. And lastly, we can add comments to comments which makes them look neatly organized.</li>\r\n	<li><strong>Issues</strong>: One of the best parts of GitLab has been the ability to create issues. Previously, we used Jira to handle this side of our dev loop. However the serious downside of Jira was that it required manual input at most times and had no way to link with git. Jira had become such a chore that at one point we had to make it company rule to have at least 1 Jira action a day. Even that failed to get us developers to use Jira effectively. I\'m not saying that Jira was bad, it most definitely wasn\'t. The issue with Jira was that it was just another system we had to work with. With GitLab, that extra system has been eliminated. The issue system in GitLab provides the ability to create and close issues similar to Jira. But the additional benefits are all in its ability to integrated perfectly with our git activity.</li>\r\n	<li><strong>Stats</strong>: GitLab also creates various statistics and graphs on its own, such as number of commits, lines added and deleted. Each user gets their own chart as well. The only thing we really use this for? Bragging rights.</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">GitLab has been so useful that it has become a pinned tab on my browser (and from most people\'s from what I have seen). It have been the best thing to happen to our dev loop since our automated build system on Jenkins (the appreciation of Jenkins is a whole another blog on its own).</span>\r\n\r\nLet us know what your experiences with internal development are and the tools that you use. If you are using or have used GitLab in your development, let us know what you think of it and how it affected your productivity.','GitLab','','inherit','open','closed','','5523-revision-v1','','','2014-05-09 14:55:43','2014-05-09 14:55:43','',5523,'http://sandbox.arrayfire.com/5523-revision-v1/',0,'revision','',0),(5530,11,'2014-05-09 15:20:18','2014-05-09 15:20:18','Until recently, we have been using a virtual machine as our git server. The computer that hosted this was a big, noisy, ancient computer that ran XenServer and sat in a server rack.\r\n\r\nWe have been on the move recently and will be in temporary locations until we move to our permanent location in Q3 \'14. This led us to cut down on the number of computers we depend on, especially our servers. We had to figure out a way to keep our dev loop going without sacrificing work space environment.\r\n\r\nIt was then that Umar started hacking on <a title=\"GitLab\" href=\"http://https://www.gitlab.com/\" target=\"_blank\">GitLab</a> to get it working for us internally. We had discussed this idea in a few meetings before, but for various reasons, they were not acted upon. The office move came as a blessing in disguise. Umar used one of our old Dell laptops that was just gathering dust. We ordered new DDR2 (yes, DDR2) RAM for it and installed Ubuntu. Soon, we were ready to go.\r\n\r\nIt has been about 3 weeks since we have been using GitLab, and it has been nothing but great. Here few of the benefits of deploying GitLab:\r\n<ul>\r\n	<li><strong>Accounts</strong>: Each user has their own account and can manage SSH Keys. Previously we had to semi-automatically distribute keys throughout our build setup.</li>\r\n	<li><strong>Automatic Email Updates</strong>: Using native git on a server, we had no auto-updates to really know what everyone was working on. Unless we checkout a branch and look at the logs, we would have no idea about the development going except for asking the person who is working on it. Also, the dashboard shows updates and activities to all the branches and repos that you are participating in or have marked as watch.</li>\r\n	<li><strong>Groups and Owners</strong>: In our dev loop, we have various things going on. From adding new features to fixing existing bugs and adding unit tests, benchmarks and examples. This has led to most people \"owning\" a branch of ArrayFire. GitLab has allowed us to restrict push access to these branches. Only the Owners are allowed to push and anyone else needs so send out a \"Merge Request\" (similar to a pull request on GitHub). This has allowed us to restrict access to our main development branch. Any work now needs a new branch followed by a merge request. I had been one of the persons who worked directly on the devel branch. That being said, I am so much more happier now that my access to it restricted. This has made me work on new branches more often and not send out silly commits to the development branch.</li>\r\n	<li><strong>Merge Requests</strong>: As soon as new code is open to be merged, we send out a merge request to the branch owners. The owner\'s receive notification and can review the various commits and diffs on the browser itself. Then we review, comment and create issues as discussed below.</li>\r\n	<li><strong>Reviews and Comments</strong>: Users can add comments to specific lines of code or in general. Comments can also include \"Thumbs Up\" and \"Thumbs Down\" icons which really help in recognizing great work (albeit, we use thumbs up a lot more than thumbs down).  Comments can also include links to external websites as well as GitLab commits which can show that a comment that needs attention has been fixed. Users can also be tagged using the @username handle which sends them an email notification. And lastly, we can add comments to comments which makes them look neatly organized.</li>\r\n	<li><strong>Issues</strong>: One of the best parts of GitLab has been the ability to create issues. Previously, we used Jira to handle this side of our dev loop. However the serious downside of Jira was that it required manual input at most times and had no way to link with git. Jira had become such a chore that at one point we had to make it company rule to have at least 1 Jira action a day. Even that failed to get us developers to use Jira effectively. I\'m not saying that Jira was bad, it most definitely wasn\'t. The issue with Jira was that it was just another system we had to work with. With GitLab, that extra system has been eliminated. The issue system in GitLab provides the ability to create and close issues similar to Jira. But the additional benefits are all in its ability to integrated perfectly with our git activity.</li>\r\n	<li><strong>Stats</strong>: GitLab also creates various statistics and graphs on its own, such as number of commits, lines added and deleted. Each user gets their own chart as well. The only thing we really use this for? Bragging rights.</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">GitLab has been so useful that it has become a pinned tab on my browser (and for most people\'s from what I have seen). It has been the best thing to happen to our dev loop since our automated build system on Jenkins (the appreciation of Jenkins is a whole another blog on its own).</span>\r\n\r\nLet us know what your experiences with internal development are and the tools that you use. If you are using or have used GitLab in your development, let us know what you think of it and how it affected your productivity.','GitLab','','inherit','open','closed','','5523-revision-v1','','','2014-05-09 15:20:18','2014-05-09 15:20:18','',5523,'http://sandbox.arrayfire.com/5523-revision-v1/',0,'revision','',0),(5531,17728,'2014-05-09 20:46:44','2014-05-09 20:46:44','<span style=\"line-height: 1.5em;\">Until recently, we have been using a virtual machine as our git server. The computer that hosted this was a big, noisy, rack mounted server running a XenServer.</span>\r\n\r\nA few weeks ago, we moved to a temporary location until we move to our permanent location in Q3 \'14. This led us to cut down on the number of computers we depend on, especially our servers. We had to figure out a way to keep our dev loop going without sacrificing work space environment.\r\n\r\nIt was then that <a href=\"https://twitter.com/arshad_umar\" target=\"_blank\">Umar</a> started hacking on <a title=\"GitLab\" href=\"http://https://www.gitlab.com/\" target=\"_blank\">GitLab</a> to get it working for us internally. We had discussed this idea in a few meetings before, but for various reasons, they were not acted upon. The office move came as a blessing in disguise. He used one of our old Dell Inspiron laptops that was just gathering dust. We ordered new DDR2 (yes, DDR2) RAM for it and installed Ubuntu. Soon, we were ready to go.\r\n\r\nIt has been about 3 weeks since we have been using GitLab, and it has been nothing but great. Here few of the benefits of deploying GitLab:\r\n<ul>\r\n	<li><strong>Accounts</strong>: Each user has their own account and can manage SSH Keys. Previously we had to semi-automatically distribute keys throughout our build setup.</li>\r\n	<li><strong>Keeping track of commits</strong>: Using native git on a server, we had the updates going on a news group. This was a bit hard to keep track of. Using GitLab, the dashboard shows updates and activities to all the branches and repos that you are either participating or watching.</li>\r\n	<li><strong>Groups</strong>: We do a lot of development, on ArrayFire as well as accelerating software for our customers. GitLab\'s  groups feature makes it easier to isolate independent projects.</li>\r\n	<li><strong>Owners</strong>: Previously access to the development and master branches was only restricted by word of mouth. However this was not always stringently enforced. GitLab made it easier to restrict access to such branches. Only the Owners are allowed to push and anyone else needs so send out a \"Merge Request\" (similar to a pull request on GitHub). I was one of the developers whose access has been restricted but I happy about this. It forces me to work in feature branches more often and not send out silly commits to our development branch.</li>\r\n	<li><strong>Merge Requests</strong>: As soon as new code is open to be merged, we send out a merge request to the branch owners. The owner\'s receive notification and can review the various commits and diffs on the browser itself. Then we review, comment and create issues as discussed below. This also had the side effect of being a distributed code-review process.</li>\r\n	<li><strong>Reviews and Comments</strong>: Users can add comments to specific lines of code or in general. Comments can also include \"Thumbs Up\" and \"Thumbs Down\" icons which can be used to indicate great work or to indicate votes when doing a code review. We can add comments to comments which makes them look neatly organized.</li>\r\n	<li><strong>Issues</strong>: One of the best parts of GitLab has been the ability to create issues. Previously, we used JIRA to handle this side of our dev loop. However JIRA became just another technology we had to live with. With GitLab, that extra system has been eliminated. The issue system in GitLab provides the ability to create and close issues. It also integrates nicely with git commits and merge requests.</li>\r\n	<li><strong>Stats</strong>: GitLab also creates various statistics and graphs on its own, such as number of commits, lines added and deleted. Each user gets their own chart as well. The only thing we really use this for? Bragging rights.</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">GitLab has been so useful that it has become a pinned tab on my browser (and for most people\'s from what I have seen). It has been the best thing to happen to our dev-loop since our automated build system on Jenkins (the appreciation of Jenkins will be whole another blog on its own).</span>\r\n\r\nLet us know what your experiences with internal development are and the tools that you use. If you are using GitLab, what are your experiences with it ?','Using GitLab at ArrayFire','','inherit','open','closed','','5523-autosave-v1','','','2014-05-09 20:46:44','2014-05-09 20:46:44','',5523,'http://sandbox.arrayfire.com/5523-autosave-v1/',0,'revision','',0),(5533,17728,'2014-05-09 20:55:48','2014-05-09 20:55:48','<span style=\"line-height: 1.5em;\">Until recently, we have been using a virtual machine as our git server. The computer that hosted this was a big, noisy, rack mounted server running a XenServer.</span> A few weeks ago, we moved to a temporary location until we move to our permanent location in Q3 \'14. This led us to cut down on the number of computers we depend on, especially our servers. We had to figure out a way to keep our dev loop going without sacrificing work space environment. It was then that <a href=\"https://twitter.com/arshad_umar\" target=\"_blank\">Umar</a> started hacking on <a title=\"GitLab\" href=\"http://https://www.gitlab.com/\" target=\"_blank\">GitLab</a> to get it working for us internally. We had discussed this idea in a few meetings before, but for various reasons, they were not acted upon. The office move came as a blessing in disguise. He used one of our old Dell Inspiron laptops that was just gathering dust. We ordered new DDR2 (yes, DDR2) RAM for it and installed Ubuntu. Soon, we were ready to go. It has been about 3 weeks since we have been using GitLab, and it has been nothing but great. Here few of the benefits of deploying GitLab:\r\n<ul>\r\n	<li><strong>Accounts</strong>: Each user has their own account and can manage SSH Keys. Previously we had to semi-automatically distribute keys throughout our build setup.</li>\r\n	<li><strong>Keeping track of commits</strong>: Using native git on a server, we had the updates going on a news group. This was a bit hard to keep track of. Using GitLab, the dashboard shows updates and activities to all the branches and repos that you are either participating or watching.</li>\r\n	<li><strong>Groups</strong>: We do a lot of development, on ArrayFire as well as accelerating software for our customers. GitLab\'s  groups feature makes it easier to isolate independent projects.</li>\r\n	<li><strong>Owners</strong>: Previously access to the development and master branches was only restricted by word of mouth. However this was not always stringently enforced. GitLab made it easier to restrict access to such branches. Only the Owners are allowed to push and anyone else needs so send out a \"Merge Request\" (similar to a pull request on GitHub). I was one of the developers whose access has been restricted but I happy about this. It forces me to work in feature branches more often and not send out silly commits to our development branch.</li>\r\n	<li><strong>Merge Requests</strong>: As soon as new code is open to be merged, we send out a merge request to the branch owners. The owner\'s receive notification and can review the various commits and diffs on the browser itself. Then we review, comment and create issues as discussed below. This also had the side effect of being a distributed code-review process.</li>\r\n	<li><strong>Reviews and Comments</strong>: Users can add comments to specific lines of code or in general. Comments can also include \"Thumbs Up\" and \"Thumbs Down\" icons which can be used to indicate great work or to indicate votes when doing a code review. We can add comments to comments which makes them look neatly organized.</li>\r\n	<li><strong>Issues</strong>: One of the best parts of GitLab has been the ability to create issues. Previously, we used JIRA to handle this side of our dev loop. However JIRA became just another technology we had to live with. With GitLab, that extra system has been eliminated. The issue system in GitLab provides the ability to create and close issues. It also integrates nicely with git commits and merge requests.</li>\r\n	<li><strong>Stats</strong>: GitLab also creates various statistics and graphs on its own, such as number of commits, lines added and deleted. Each user gets their own chart as well. The only thing we really use this for? Bragging rights.</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">GitLab has been so useful that it has become a pinned tab on my browser (and for most people\'s from what I have seen). It has been the best thing to happen to our dev-loop since our automated build system on Jenkins (the appreciation of Jenkins will be whole another blog on its own).</span> Let us know what your experiences with internal development are and the tools that you use. If you are using GitLab, what are your experiences with it ?','GitLab','','inherit','open','closed','','5523-revision-v1','','','2014-05-09 20:55:48','2014-05-09 20:55:48','',5523,'http://sandbox.arrayfire.com/5523-revision-v1/',0,'revision','',0),(5535,17794,'2014-05-09 21:05:48','2014-05-09 21:05:48','<span style=\"line-height: 1.5em;\">Until recently, we have been using a virtual machine as our git server. The computer that hosted this was a big, noisy, rack mounted server running a XenServer.</span> A few weeks ago, we moved to a temporary location until we move to our permanent location in Q3 \'14. This led us to cut down on the number of computers we depend on, especially our servers. We had to figure out a way to keep our dev loop going without sacrificing work space environment. It was then that <a href=\"https://twitter.com/arshad_umar\" target=\"_blank\">Umar</a> started hacking on <a title=\"GitLab\" href=\"http://https://www.gitlab.com/\" target=\"_blank\">GitLab</a> to get it working for us internally. We had discussed this idea in a few meetings before, but for various reasons, they were not acted upon. The office move came as a blessing in disguise. He used one of our old Dell Inspiron laptops that was just gathering dust. We ordered new DDR2 (yes, DDR2) RAM for it and installed Ubuntu. Soon, we were ready to go. It has been about 3 weeks since we have been using GitLab, and it has been nothing but great. Here few of the benefits of deploying GitLab:\r\n<ul>\r\n	<li><strong>Accounts</strong>: Each user has their own account and can manage SSH Keys. Previously we had to semi-automatically distribute keys throughout our build setup.</li>\r\n	<li><strong>Keeping track of commits</strong>: Using native git on a server, we had the updates going on a news group. This was a bit hard to keep track of. Using GitLab, the dashboard shows updates and activities to all the branches and repos that you are either participating or watching.</li>\r\n	<li><strong>Groups</strong>: We do a lot of development, on ArrayFire as well as accelerating software for our customers. GitLab\'s  groups feature makes it easier to isolate independent projects.</li>\r\n	<li><strong>Owners</strong>: Previously access to the development and master branches was only restricted by word of mouth. However this was not always stringently enforced. GitLab made it easier to restrict access to such branches. Only the Owners are allowed to push and anyone else needs so send out a \"Merge Request\" (similar to a pull request on GitHub). I was one of the developers whose access has been restricted but I happy about this. It forces me to work in feature branches more often and not send out silly commits to our development branch.</li>\r\n	<li><strong>Merge Requests</strong>: As soon as new code is open to be merged, we send out a merge request to the branch owners. The owner\'s receive notification and can review the various commits and diffs on the browser itself. Then we review, comment and create issues as discussed below. This also had the side effect of being a distributed code-review process.</li>\r\n	<li><strong>Reviews and Comments</strong>: Users can add comments to specific lines of code or in general. Comments can also include \"Thumbs Up\" and \"Thumbs Down\" icons which can be used to indicate great work or to indicate votes when doing a code review. We can add comments to comments which makes them look neatly organized.</li>\r\n	<li><strong>Issues</strong>: One of the best parts of GitLab has been the ability to create issues. Previously, we used JIRA to handle this side of our dev loop. However JIRA became just another technology we had to live with. With GitLab, that extra system has been eliminated. The issue system in GitLab provides the ability to create and close issues. It also integrates nicely with git commits and merge requests.</li>\r\n	<li><strong>Stats</strong>: GitLab also creates various statistics and graphs on its own, such as number of commits, lines added and deleted. Each user gets their own chart as well. The only thing we really use this for? Bragging rights.</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">GitLab has been so useful that it has become a pinned tab on my browser (and for most people\'s from what I have seen). It has been the best thing to happen to our dev-loop since our automated build system on Jenkins (the appreciation of Jenkins will be whole another blog on its own).</span> Let us know what your experiences with internal development are and the tools that you use. If you are using GitLab, what are your experiences with it ?','GitLab','','inherit','open','closed','','5523-autosave-v1','','','2014-05-09 21:05:48','2014-05-09 21:05:48','',5523,'http://sandbox.arrayfire.com/5523-autosave-v1/',0,'revision','',0),(5536,17794,'2014-05-09 21:50:54','2014-05-09 21:50:54','<span style=\"line-height: 1.5em;\">Until recently, we had our central git repositories hosted on a virtual machine. This was running on a big, noisy, rack mounted server. We started thinking about cutting down the number of machines we use on a daily basis (Just can\'t stop optimizing). The opportunity popped up during an office move to our new location.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">We had discussed this idea in a few meetings before, but for various reasons, they were not acted upon.</span><span style=\"line-height: 1.5em;\"> During the move</span> <a href=\"https://twitter.com/arshad_umar\" target=\"_blank\">Umar</a> started hacking on <a title=\"GitLab\" href=\"http://https://www.gitlab.com/\" target=\"_blank\">GitLab</a> to get it working for us internally. The office move came as a blessing in disguise. He used one of our old Dell Inspiron laptops that was just gathering dust. We ordered new DDR2 (yes, DDR2) RAM for it and installed Ubuntu. Soon, we were ready to go. It has been about 3 weeks since we have been using GitLab, and it has been nothing but great. Here few of the benefits of deploying GitLab:\r\n<ul>\r\n	<li><strong>Accounts</strong>: Each user has their own account and can manage SSH Keys. Previously we had to semi-automatically distribute keys throughout our build setup.</li>\r\n	<li><strong>Keeping track of commits</strong>: Using git hooks, we had the updates going on a news group. This approach was not popular with many of our developers. Using GitLab, the dashboard shows updates and activities to all the branches and repos that you are either participating or watching.</li>\r\n	<li><strong>Groups</strong>: We do a lot of development, on ArrayFire as well as accelerating software for our customers. GitLab\'s  groups feature makes it easier to isolate independent projects.</li>\r\n	<li><strong>Owners</strong>: Previously access to the development and master branches was only restricted by word of mouth. However this was not always stringently enforced. GitLab made it easier to restrict access to such branches. Only the Owners are allowed to push and anyone else needs so send out a \"Merge Request\" (similar to a pull request on GitHub).</li>\r\n	<li><strong>Merge Requests</strong>: When we want to merge our changes to one of our main branches, we send out a merge request to the branch owners. The owner\'s receive notification and can review the various commits and diffs on a browser and merge the changes.</li>\r\n	<li><strong>Code Review</strong>: Users can add comments to specific lines of code or in general. Comments can also include \"Thumbs Up\" and \"Thumbs Down\" icons which can be used to indicate great work or to indicate votes when doing a code review. We can add comments to comments which makes them look neatly organized.</li>\r\n	<li><strong>Issues</strong>: One of the best parts of GitLab has been the ability to create issues. Previously, we used JIRA to handle this side of our workflow. With GitLab, that extra system has been eliminated. Like JIRA, GitLab allows you to create and close issues. It might not be as robust as JIRA but its nice that is integrated into one tool.</li>\r\n	<li><strong>Stats</strong>: GitLab also creates various statistics and graphs on its own, such as number of commits, lines added and deleted. Each user gets their own chart as well. The only thing we really use this for? Bragging rights.</li>\r\n</ul>\r\n<span style=\"line-height: 1.5em;\">GitLab has been so useful that it has become a pinned tab on my browser (and pretty much everyone else here). It has been the best thing to happen to our workflow since our automated build system on Jenkins (the appreciation of Jenkins will be whole another blog on its own).</span> What your experiences with internal development tools you use?','GitLab at ArrayFire','','inherit','open','closed','','5523-revision-v1','','','2014-05-09 21:50:54','2014-05-09 21:50:54','',5523,'http://sandbox.arrayfire.com/5523-revision-v1/',0,'revision','',0),(5538,17728,'2014-05-15 20:22:03','2014-05-15 20:22:03','<span style=\"line-height: 1.5em;\">At ArrayFire we like to use a lot of Free/Open Source software. We use various Linux distributions, </span><a style=\"line-height: 1.5em;\" href=\"http://jenkins-ci.org/\">Jenkins</a><span style=\"line-height: 1.5em;\">, </span><a style=\"line-height: 1.5em;\" href=\"https://www.gitlab.com/\">Gitlab</a><span style=\"line-height: 1.5em;\">, gcc, emacs, vim and numerous other <abbr title=\"Free Open Source Software\">FOSS</abbr> tools on a daily basis.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">We also love the idea of developing software collaboratively and openly. Last year we started <a href=\"http://sandbox.arrayfire.com/clmath-an-open-source-blas-and-fft-library-for-opencl/\">working with AMD</a> on <a href=\"https://github.com/clMathLibraries/\">CL Math Libraries</a>. Internally we\'ve had numerous discussions about contributing to the <abbr title=\"General Purpose Graphrics Processing Unit\">GPGPU</abbr> community. However, it\'s neither simple nor straightforward to take a closed software Open Source. </span>Earlier this year, we decided to take the first step and Open Source all of the ArrayFire library\'s  tertiary projects. This includes all of our ArrayFire library\'s language wrappers, examples, and source code used for our blog posts. All of our projects are hosted at <a href=\"https://github.com/arrayfire\">our GitHub page</a>.\r\n\r\nThese are some of the projects  you will find on our GitHub page:\r\n<ul>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_fortran\">FORTRAN wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_r\">R wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_java\">JAVA wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_examples\">All ArrayFire examples</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">Using OpenGL with CUDA and ArrayFire</a></li>\r\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\">Deploying CUDA on the cloud</a></li>\r\n</ul>\r\nAdditionally, some of our users have also created a GitHub page to host projects developed by our community. If you are an ArrayFire library user and have any projects you would like to share, please go to our <a href=\"https://github.com/arrayfire-community\">ArrayFire community</a> page and contribute!\r\n\r\nWe are working towards even bigger things in the future!','Open Source Initiatives from ArrayFire','','publish','open','closed','','open-source-initiatives-from-arrayfire','','','2014-05-15 20:56:23','2014-05-15 20:56:23','',0,'http://sandbox.arrayfire.com/?p=5538',0,'post','',0),(5539,17728,'2014-05-12 17:04:18','2014-05-12 17:04:18','','Open Source Initiatives from ArrayFire','','inherit','open','closed','','5538-revision-v1','','','2014-05-12 17:04:18','2014-05-12 17:04:18','',5538,'http://sandbox.arrayfire.com/5538-revision-v1/',0,'revision','',0),(5542,17728,'2014-05-12 17:15:55','2014-05-12 17:15:55','We get questions all the time about how to make GPU hardware decisions. We\'ve seen just about every scenario you can imagine, and so we always jump at the chance to help others through this decision process.\r\n\r\n<span style=\"line-height: 1.5em;\">Here\'s a recent question from a customer.</span>\r\n\r\n\"I\'ve just found your post on Analytic Bridge and have taken a look at your website ... I\'m replacing my two Tesla M1060 cards (computing capability too low) and I\'m considering used Tesla M2070s or the new GTX 760 cards. Could you offer any insight? I believe the GTX 760 cards may well outperform the older 2070s and are much cheaper.\"\r\n\r\nAnd here\'s our response.\r\n\r\nThe GTX 760 will probably outperform the M2070 for single precision FLOPS but not for double precision, if that matters to you. Not sure what your budget is, but there are other GeForce GPUs that are a lot cheaper than Tesla that have a control panel option to sacrifice clocks for higher double precision throughput (see GeForce GTX Titan).\r\n\r\nWe\'ve found that there\'s a lot of confusion out there regarding what\'s the best compute hardware for people who are restricted within a certain price range. A few key takeaways should be considered when trying to make the best GPU hardware decision. Here are some best practices you should consider.\r\n\r\n1) Do you want a reliable GPU that does fast double precision calculations ? Choose the Tesla K20, or the K40\r\n\r\n2) Do you want a reliable GPU that does fast single precision calculations ? Tesla K10 is for you.\r\n\r\n3) Are you doing a lot of visualization / video rendering along with compute ? Choose the Quadro line.\r\n\r\n4) Are you an enthusiast or are not worried about double precision or ECC memory ? Buy a GTX GPU within your budget.\r\n\r\nIf you are working with OpenCL, the AMD, Intel and others come into the fray as well. However we will talk about that another day.\r\n\r\n&nbsp;\r\n\r\n&nbsp;','How to Make GPU Hardware Decisions','','inherit','open','closed','','4685-revision-v1','','','2014-05-12 17:15:55','2014-05-12 17:15:55','',4685,'http://sandbox.arrayfire.com/4685-revision-v1/',0,'revision','',0),(5543,17728,'2014-05-12 17:17:09','2014-05-12 17:17:09','We get questions all the time about how to make GPU hardware decisions. We\'ve seen just about every scenario you can imagine, and so we always jump at the chance to help others through this decision process.\r\n\r\n<span style=\"line-height: 1.5em;\">Here\'s a recent question from a customer.</span>\r\n\r\n\"I\'ve just found your post on Analytic Bridge and have taken a look at your website ... I\'m replacing my two Tesla M1060 cards (computing capability too low) and I\'m considering used Tesla M2070s or the new GTX 760 cards. Could you offer any insight? I believe the GTX 760 cards may well outperform the older 2070s and are much cheaper.\"\r\n\r\nAnd here\'s our response.\r\n\r\nThe GTX 760 will probably outperform the M2070 for single precision FLOPS but not for double precision, if that matters to you. Not sure what your budget is, but there are other GeForce GPUs that are a lot cheaper than Tesla that have a control panel option to sacrifice clocks for higher double precision throughput (see GeForce GTX Titan).\r\n\r\nWe\'ve found that there\'s a lot of confusion out there regarding what\'s the best compute hardware for people who are restricted within a certain price range. A few key takeaways should be considered when trying to make the best GPU hardware decision. Here are some best practices you should consider.\r\n\r\n1) Do you want a reliable GPU that does fast double precision calculations ? Choose the Tesla K20, or the K40\r\n\r\n2) Do you want a reliable GPU that does fast single precision calculations ? Tesla K10 is for you.\r\n\r\n3) Are you doing a lot of visualization / video rendering along with compute ? Choose the Quadro line.\r\n\r\n4) Are you an enthusiast or are not worried about double precision and ECC memory ? Buy a GTX GPU within your budget.\r\n\r\nIf you are working with OpenCL, the AMD, Intel and others come into the fray as well. However we will talk about that another day.\r\n\r\n&nbsp;\r\n\r\n&nbsp;','How to Make GPU Hardware Decisions','','inherit','open','closed','','4685-revision-v1','','','2014-05-12 17:17:09','2014-05-12 17:17:09','',4685,'http://sandbox.arrayfire.com/4685-revision-v1/',0,'revision','',0),(5544,17728,'2014-05-12 17:17:26','2014-05-12 17:17:26','We get questions all the time about how to make GPU hardware decisions. We\'ve seen just about every scenario you can imagine, and so we always jump at the chance to help others through this decision process.\r\n\r\n<span style=\"line-height: 1.5em;\">Here\'s a recent question from a customer.</span>\r\n\r\n\"I\'ve just found your post on Analytic Bridge and have taken a look at your website ... I\'m replacing my two Tesla M1060 cards (computing capability too low) and I\'m considering used Tesla M2070s or the new GTX 760 cards. Could you offer any insight? I believe the GTX 760 cards may well outperform the older 2070s and are much cheaper.\"\r\n\r\nAnd here\'s our response.\r\n\r\nThe GTX 760 will probably outperform the M2070 for single precision FLOPS but not for double precision, if that matters to you. Not sure what your budget is, but there are other GeForce GPUs that are a lot cheaper than Tesla that have a control panel option to sacrifice clocks for higher double precision throughput (see GeForce GTX Titan).\r\n\r\nWe\'ve found that there\'s a lot of confusion out there regarding what\'s the best compute hardware for people who are restricted within a certain price range. A few key takeaways should be considered when trying to make the best GPU hardware decision. Here are some best practices you should consider.\r\n\r\n1) Do you want a reliable GPU that does fast double precision calculations ? Choose the Tesla K20, or the K40\r\n\r\n2) Do you want a reliable GPU that does fast single precision calculations ? Tesla K10 is for you.\r\n\r\n3) Are you doing a lot of visualization / video rendering along with compute ? Choose the Quadro line.\r\n\r\n4) Are you an enthusiast or are not worried about double precision and ECC memory ? Buy a GTX GPU within your budget.\r\n\r\nIf you are working with OpenCL, then AMD, Intel and others come into the fray as well. However we will talk about that another day.\r\n\r\n&nbsp;\r\n\r\n&nbsp;','How to Make GPU Hardware Decisions','','inherit','open','closed','','4685-revision-v1','','','2014-05-12 17:17:26','2014-05-12 17:17:26','',4685,'http://sandbox.arrayfire.com/4685-revision-v1/',0,'revision','',0),(5545,17728,'2014-05-12 17:17:41','2014-05-12 17:17:41','We get questions all the time about how to make GPU hardware decisions. We\'ve seen just about every scenario you can imagine, and so we always jump at the chance to help others through this decision process.\r\n\r\n<span style=\"line-height: 1.5em;\">Here\'s a recent question from a customer.</span>\r\n\r\n\"I\'ve just found your post on Analytic Bridge and have taken a look at your website ... I\'m replacing my two Tesla M1060 cards (computing capability too low) and I\'m considering used Tesla M2070s or the new GTX 760 cards. Could you offer any insight? I believe the GTX 760 cards may well outperform the older 2070s and are much cheaper.\"\r\n\r\nAnd here\'s our response.\r\n\r\nThe GTX 760 will probably outperform the M2070 for single precision FLOPS but not for double precision, if that matters to you. Not sure what your budget is, but there are other GeForce GPUs that are a lot cheaper than Tesla that have a control panel option to sacrifice clocks for higher double precision throughput (see GeForce GTX Titan).\r\n\r\nWe\'ve found that there\'s a lot of confusion out there regarding what\'s the best compute hardware for people who are restricted within a certain price range. A few key takeaways should be considered when trying to make the best GPU hardware decision. Here are some best practices you should consider.\r\n\r\n1) Do you want a reliable GPU that does fast double precision calculations ? Choose the Tesla K20, or the K40\r\n\r\n2) Do you want a reliable GPU that does fast single precision calculations ? Tesla K10 is for you.\r\n\r\n3) Are you doing a lot of visualization / video rendering along with compute ? Choose the Quadro line.\r\n\r\n4) Are you an enthusiast or are not worried about double precision and ECC memory ? Buy a GTX GPU within your budget.\r\n\r\nIf you are working with OpenCL, then AMD, Intel and other devices come into the fray as well. However we will talk about that another day.\r\n\r\n&nbsp;\r\n\r\n&nbsp;','How to Make GPU Hardware Decisions','','inherit','open','closed','','4685-revision-v1','','','2014-05-12 17:17:41','2014-05-12 17:17:41','',4685,'http://sandbox.arrayfire.com/4685-revision-v1/',0,'revision','',0),(5546,17728,'2014-05-12 17:18:41','2014-05-12 17:18:41','We get questions all the time about how to make GPU hardware decisions. We\'ve seen just about every scenario you can imagine, and so we always jump at the chance to help others through this decision process.\r\n\r\n<span style=\"line-height: 1.5em;\">Here\'s a recent question from a customer.</span>\r\n<blockquote>\"I\'ve just found your post on Analytic Bridge and have taken a look at your website ... I\'m replacing my two Tesla M1060 cards (computing capability too low) and I\'m considering used Tesla M2070s or the new GTX 760 cards. Could you offer any insight? I believe the GTX 760 cards may well outperform the older 2070s and are much cheaper.\"</blockquote>\r\nAnd here\'s our response.\r\n<blockquote>The GTX 760 will probably outperform the M2070 for single precision FLOPS but not for double precision, if that matters to you. Not sure what your budget is, but there are other GeForce GPUs that are a lot cheaper than Tesla that have a control panel option to sacrifice clocks for higher double precision throughput (see GeForce GTX Titan).</blockquote>\r\nWe\'ve found that there\'s a lot of confusion out there regarding what\'s the best compute hardware for people who are restricted within a certain price range. A few key takeaways should be considered when trying to make the best GPU hardware decision. Here are some best practices you should consider.\r\n\r\n1) Do you want a reliable GPU that does fast double precision calculations ? Choose the Tesla K20, or the K40\r\n\r\n2) Do you want a reliable GPU that does fast single precision calculations ? Tesla K10 is for you.\r\n\r\n3) Are you doing a lot of visualization / video rendering along with compute ? Choose the Quadro line.\r\n\r\n4) Are you an enthusiast or are not worried about double precision and ECC memory ? Buy a GTX GPU within your budget.\r\n\r\nIf you are working with OpenCL, then AMD, Intel and other devices come into the fray as well. However we will talk about that another day.\r\n\r\n&nbsp;\r\n\r\n&nbsp;','How to Make GPU Hardware Decisions','','inherit','open','closed','','4685-revision-v1','','','2014-05-12 17:18:41','2014-05-12 17:18:41','',4685,'http://sandbox.arrayfire.com/4685-revision-v1/',0,'revision','',0),(5547,17728,'2014-05-12 17:19:11','2014-05-12 17:19:11','We get questions all the time about how to make GPU hardware decisions. We\'ve seen just about every scenario you can imagine, and so we always jump at the chance to help others through this decision process.\r\n\r\n<span style=\"line-height: 1.5em;\">Here\'s a recent question from a customer.</span>\r\n\r\n\"I\'ve just found your post on Analytic Bridge and have taken a look at your website ... I\'m replacing my two Tesla M1060 cards (computing capability too low) and I\'m considering used Tesla M2070s or the new GTX 760 cards. Could you offer any insight? I believe the GTX 760 cards may well outperform the older 2070s and are much cheaper.\"\r\n\r\nAnd here\'s our response.\r\n\r\nThe GTX 760 will probably outperform the M2070 for single precision FLOPS but not for double precision, if that matters to you. Not sure what your budget is, but there are other GeForce GPUs that are a lot cheaper than Tesla that have a control panel option to sacrifice clocks for higher double precision throughput (see GeForce GTX Titan).\r\n\r\nWe\'ve found that there\'s a lot of confusion out there regarding what\'s the best compute hardware for people who are restricted within a certain price range. A few key takeaways should be considered when trying to make the best GPU hardware decision. Here are some best practices you should consider.\r\n\r\n1) Do you want a reliable GPU that does fast double precision calculations ? Choose the Tesla K20, or the K40\r\n\r\n2) Do you want a reliable GPU that does fast single precision calculations ? Tesla K10 is for you.\r\n\r\n3) Are you doing a lot of visualization / video rendering along with compute ? Choose the Quadro line.\r\n\r\n4) Are you an enthusiast or are not worried about double precision and ECC memory ? Buy a GTX GPU within your budget.\r\n\r\nIf you are working with OpenCL, then AMD, Intel and other devices come into the fray as well. However we will talk about that another day.\r\n\r\n&nbsp;\r\n\r\n&nbsp;','How to Make GPU Hardware Decisions','','inherit','open','closed','','4685-revision-v1','','','2014-05-12 17:19:11','2014-05-12 17:19:11','',4685,'http://sandbox.arrayfire.com/4685-revision-v1/',0,'revision','',0),(5548,17728,'2014-05-12 17:19:33','2014-05-12 17:19:33','We get questions all the time about how to make GPU hardware decisions. We\'ve seen just about every scenario you can imagine, and so we always jump at the chance to help others through this decision process.\r\n\r\n<span style=\"line-height: 1.5em;\">Here\'s a recent question from a customer.</span>\r\n\r\n<em>\"I\'ve just found your post on Analytic Bridge and have taken a look at your website ... I\'m replacing my two Tesla M1060 cards (computing capability too low) and I\'m considering used Tesla M2070s or the new GTX 760 cards. Could you offer any insight? I believe the GTX 760 cards may well outperform the older 2070s and are much cheaper.\"</em>\r\n\r\nAnd here\'s our response.\r\n\r\n<em>\"The GTX 760 will probably outperform the M2070 for single precision FLOPS but not for double precision, if that matters to you. Not sure what your budget is, but there are other GeForce GPUs that are a lot cheaper than Tesla that have a control panel option to sacrifice clocks for higher double precision throughput (see GeForce GTX Titan).\"</em>\r\n\r\nWe\'ve found that there\'s a lot of confusion out there regarding what\'s the best compute hardware for people who are restricted within a certain price range. A few key takeaways should be considered when trying to make the best GPU hardware decision. Here are some best practices you should consider.\r\n\r\n1) Do you want a reliable GPU that does fast double precision calculations ? Choose the Tesla K20, or the K40\r\n\r\n2) Do you want a reliable GPU that does fast single precision calculations ? Tesla K10 is for you.\r\n\r\n3) Are you doing a lot of visualization / video rendering along with compute ? Choose the Quadro line.\r\n\r\n4) Are you an enthusiast or are not worried about double precision and ECC memory ? Buy a GTX GPU within your budget.\r\n\r\nIf you are working with OpenCL, then AMD, Intel and other devices come into the fray as well. However we will talk about that another day.\r\n\r\n&nbsp;\r\n\r\n&nbsp;','How to Make GPU Hardware Decisions','','inherit','open','closed','','4685-revision-v1','','','2014-05-12 17:19:33','2014-05-12 17:19:33','',4685,'http://sandbox.arrayfire.com/4685-revision-v1/',0,'revision','',0),(5549,17728,'2014-05-12 17:25:59','2014-05-12 17:25:59','We get questions all the time about how to make GPU hardware decisions. We\'ve seen just about every scenario you can imagine, and so we always jump at the chance to help others through this decision process.\r\n\r\n<span style=\"line-height: 1.5em;\">Here\'s a recent question from a customer.</span>\r\n\r\n<em>\"I\'ve just found your post on Analytic Bridge and have taken a look at your website ... I\'m replacing my two Tesla M1060 cards (computing capability too low) and I\'m considering used Tesla M2070s or the new GTX 760 cards. Could you offer any insight? I believe the GTX 760 cards may well outperform the older 2070s and are much cheaper.\"</em>\r\n\r\nAnd here\'s our response.\r\n\r\n<em>\"The GTX 760 will probably outperform the M2070 for single precision FLOPS but not for double precision, if that matters to you. Not sure what your budget is, but there are other GeForce GPUs that are a lot cheaper than Tesla that have a control panel option to sacrifice clocks for higher double precision throughput (see GeForce GTX Titan).\"</em>\r\n\r\nWe\'ve found that there\'s a lot of confusion out there regarding what\'s the best compute hardware for people who are restricted within a certain price range. A few key takeaways should be considered when trying to make the best GPU hardware decision. Here are some best practices you should consider.\r\n\r\n1) Do you want a reliable GPU that does fast double precision calculations? Choose the Tesla K20, or the K40.\r\n\r\n2) Do you want a reliable GPU that does fast single precision calculations? Tesla K10 is for you.\r\n\r\n3) Are you doing a lot of visualization / video rendering along with compute? Choose the Quadro line.\r\n\r\n4) Are you an enthusiast or are not worried about double precision and ECC memory? Buy a GTX GPU within your budget.\r\n\r\nIf you are working with OpenCL, then AMD, Intel and other devices come into the fray as well. However we will talk about that another day.\r\n\r\n&nbsp;\r\n\r\n&nbsp;','How to Make GPU Hardware Decisions','','inherit','open','closed','','4685-revision-v1','','','2014-05-12 17:25:59','2014-05-12 17:25:59','',4685,'http://sandbox.arrayfire.com/4685-revision-v1/',0,'revision','',0),(5551,17728,'2014-05-12 17:29:19','2014-05-12 17:29:19','We get questions all the time about how to make GPU hardware decisions. We\'ve seen just about every scenario you can imagine, and so we always jump at the chance to help others through this decision process.\r\n\r\n<span style=\"line-height: 1.5em;\">Here\'s a recent question from a customer.</span>\r\n\r\n<em>\"I\'ve just found your post on Analytic Bridge and have taken a look at your website ... I\'m replacing my two Tesla M1060 cards (computing capability too low) and I\'m considering used Tesla M2070s or the new GTX 760 cards. Could you offer any insight? I believe the GTX 760 cards may well outperform the older 2070s and are much cheaper.\"</em>\r\n\r\nAnd here\'s our response.\r\n\r\n<em>\"The GTX 760 will probably outperform the M2070 for single precision FLOPS but not for double precision, if that matters to you. Not sure what your budget is, but there are other GeForce GPUs that are a lot cheaper than Tesla that have a control panel option to sacrifice clocks for higher double precision throughput (see GeForce GTX Titan).\"</em>\r\n\r\nWe\'ve found that there\'s a lot of confusion out there regarding what\'s the best compute hardware for people who are restricted within a certain price range. A few key takeaways should be considered when trying to make the best GPU hardware decision. Here are some best practices you should consider.\r\n\r\n1) Do you want a reliable GPU that does fast double precision calculations? Choose the Tesla K20, or the K40.\r\n\r\n2) Do you want a reliable GPU that does fast single precision calculations? Tesla K10 is for you.\r\n\r\n3) Are you doing a lot of visualization / video rendering along with compute? Choose the Quadro line.\r\n\r\n4) Are you an enthusiast or not worried about double precision and ECC memory? Buy a GTX GPU within your budget.\r\n\r\nIf you are working with OpenCL, then AMD, Intel and other devices come into the fray as well. However we will talk about that another day.\r\n\r\n&nbsp;\r\n\r\n&nbsp;','How to Make GPU Hardware Decisions','','inherit','open','closed','','4685-revision-v1','','','2014-05-12 17:29:19','2014-05-12 17:29:19','',4685,'http://sandbox.arrayfire.com/4685-revision-v1/',0,'revision','',0),(5552,17728,'2014-05-12 17:32:31','2014-05-12 17:32:31','We get questions all the time about how to make GPU hardware decisions. We\'ve seen just about every scenario you can imagine, and so we always jump at the chance to help others through this decision process.\r\n\r\n<span style=\"line-height: 1.5em;\">Here\'s a recent question from a customer.</span>\r\n\r\n<em>\"I\'ve just found your post on Analytic Bridge and have taken a look at your website ... I\'m replacing my two Tesla M1060 cards (computing capability too low) and I\'m considering used Tesla M2070s or the new GTX 760 cards. Could you offer any insight? I believe the GTX 760 cards may well outperform the older 2070s and are much cheaper.\"</em>\r\n\r\nAnd here\'s our response.\r\n\r\n<em>\"The GTX 760 will probably outperform the M2070 for single precision FLOPS but not for double precision, if that matters to you. Not sure what your budget is, but there are other GeForce GPUs that are a lot cheaper than Tesla that have a control panel option to sacrifice clocks for higher double precision throughput (see GeForce GTX Titan).\"</em>\r\n\r\nWe\'ve found that there\'s a lot of confusion out there regarding what\'s the best compute hardware for people who are restricted within a certain price range. A few key takeaways should be considered when trying to make the best GPU hardware decision. Here are some best practices you should consider.\r\n\r\n1) Do you want a reliable GPU that does fast double precision calculations? Choose the Tesla K20, or the K40.\r\n\r\n2) Do you want a reliable GPU that does fast single precision calculations? Tesla K10 is for you.\r\n\r\n3) Are you doing a lot of visualization / video rendering along with compute? Choose the Quadro line.\r\n\r\n4) Are you an enthusiast or not worried about double precision and ECC memory? Buy a GTX GPU within your budget.\r\n\r\nIf you are working with OpenCL, then AMD, Intel, and other devices come into the fray as well. However, we will talk about that another day!','How to Make GPU Hardware Decisions','','inherit','open','closed','','4685-revision-v1','','','2014-05-12 17:32:31','2014-05-12 17:32:31','',4685,'http://sandbox.arrayfire.com/4685-revision-v1/',0,'revision','',0),(5553,17728,'2014-05-12 17:33:17','2014-05-12 17:33:17','We get questions all the time about how to make GPU hardware decisions. We\'ve seen just about every scenario you can imagine, and so we always jump at the chance to help others through this decision process.\r\n\r\n<span style=\"line-height: 1.5em;\">Here\'s a recent question from a customer.</span>\r\n\r\n<em>\"I\'ve just found your post on Analytic Bridge and have taken a look at your website ... I\'m replacing my two Tesla M1060 cards (computing capability too low) and I\'m considering used Tesla M2070s or the new GTX 760 cards. Could you offer any insight? I believe the GTX 760 cards may well outperform the older 2070s and are much cheaper.\"</em>\r\n\r\nAnd here\'s our response.\r\n\r\n<em>\"The GTX 760 will probably outperform the M2070 for single precision FLOPS but not for double precision, if that matters to you. Not sure what your budget is, but there are other GeForce GPUs that are a lot cheaper than Tesla that have a control panel option to sacrifice clocks for higher double precision throughput (see GeForce GTX Titan).\"</em>\r\n\r\nWe\'ve found that there\'s a lot of confusion out there regarding what\'s the best compute hardware for people who are restricted within a certain price range. A few key takeaways should be considered when trying to make the best GPU hardware decision. Here are some best practices you should consider.\r\n\r\n1) Do you want a reliable GPU that does fast double precision calculations? Choose the Tesla K20, or the K40.\r\n\r\n2) Do you want a reliable GPU that does fast single precision calculations? Tesla K10 is for you.\r\n\r\n3) Are you doing a lot of visualization / video rendering along with compute? Choose the Quadro line.\r\n\r\n4) Are you an enthusiast or not worried about double precision and ECC memory? Buy a GTX GPU within your budget.\r\n\r\nIf you are working with OpenCL, then AMD, Intel, and other devices come into the fray as well. We will talk about that another day!','How to Make GPU Hardware Decisions','','inherit','open','closed','','4685-revision-v1','','','2014-05-12 17:33:17','2014-05-12 17:33:17','',4685,'http://sandbox.arrayfire.com/4685-revision-v1/',0,'revision','',0),(5554,6,'2014-05-12 17:44:19','2014-05-12 17:44:19','We get questions all the time about how to make GPU hardware decisions. We\'ve seen just about every scenario you can imagine, and so we always jump at the chance to help others through this decision process.\r\n\r\n<span style=\"line-height: 1.5em;\">Here\'s a recent question from a customer.</span>\r\n\r\n<em>\"I\'ve just found your post on Analytic Bridge and have taken a look at your website ... I\'m replacing my two Tesla M1060 cards (computing capability too low) and I\'m considering used Tesla M2070s or the new GTX 760 cards. Could you offer any insight? I believe the GTX 760 cards may well outperform the older 2070s and are much cheaper.\"</em>\r\n\r\nAnd here\'s our response.\r\n\r\n<em>\"The GTX 760 will probably outperform the M2070 for single precision FLOPS but not for double precision, if that matters to you. Not sure what your budget is, but there are other GeForce GPUs that are a lot cheaper than Tesla that have a control panel option to sacrifice clocks for higher double precision throughput (see GeForce GTX Titan).\"</em>\r\n\r\nWe\'ve found that there\'s a lot of confusion out there regarding what\'s the best compute hardware for people who are restricted within a certain price range. A few key takeaways should be considered when trying to make the best GPU hardware decision. Here are some best practices you should consider.\r\n\r\n1) Do you want a reliable GPU that does fast double precision calculations? Choose the Tesla K20, or the K40.\r\n\r\n2) Do you want a reliable GPU that does fast single precision calculations? Tesla K10 is for you.\r\n\r\n3) Are you doing a lot of visualization / video rendering along with compute? Choose the Quadro line.\r\n\r\n4) Are you an enthusiast or not worried about double precision and ECC memory? Buy a GTX GPU within your budget.\r\n\r\nIf you are working with OpenCL, then AMD, Intel, and other devices come into the fray as well. We will talk about that another day!\r\n\r\nDo you have any questions about GPUs? <a href=\"sales@arrayfire.com\">Contact us</a>!','How to Make GPU Hardware Decisions','','inherit','open','closed','','4685-revision-v1','','','2014-05-12 17:44:19','2014-05-12 17:44:19','',4685,'http://sandbox.arrayfire.com/4685-revision-v1/',0,'revision','',0),(5555,6,'2014-05-12 17:46:41','2014-05-12 17:46:41','We get questions all the time about how to make GPU hardware decisions. We\'ve seen just about every scenario you can imagine, and so we always jump at the chance to help others through this decision process.\r\n\r\n<span style=\"line-height: 1.5em;\">Here\'s a recent question from a customer.</span>\r\n\r\n<em>\"I\'ve just found your post on Analytic Bridge and have taken a look at your website ... I\'m replacing my two Tesla M1060 cards (computing capability too low) and I\'m considering used Tesla M2070s or the new GTX 760 cards. Could you offer any insight? I believe the GTX 760 cards may well outperform the older 2070s and are much cheaper.\"</em>\r\n\r\nAnd here\'s our response.\r\n\r\n<em>\"The GTX 760 will probably outperform the M2070 for single precision FLOPS but not for double precision, if that matters to you. Not sure what your budget is, but there are other GeForce GPUs that are a lot cheaper than Tesla that have a control panel option to sacrifice clocks for higher double precision throughput (see GeForce GTX Titan).\"</em>\r\n\r\nWe\'ve found that there\'s a lot of confusion out there regarding what\'s the best compute hardware for people who are restricted within a certain price range. A few key takeaways should be considered when trying to make the best GPU hardware decision. Here are some best practices you should consider.\r\n\r\n1) Do you want a reliable GPU that does fast double precision calculations? Choose the Tesla K20, or the K40.\r\n\r\n2) Do you want a reliable GPU that does fast single precision calculations? Tesla K10 is for you.\r\n\r\n3) Are you doing a lot of visualization / video rendering along with compute? Choose the Quadro line.\r\n\r\n4) Are you an enthusiast or not worried about double precision and ECC memory? Buy a GTX GPU within your budget.\r\n\r\nIf you are working with OpenCL, then AMD, Intel, and other devices come into the fray as well. We will talk about that another day!\r\n\r\nDo you have any questions about GPUs? <a href=\"http://sandbox.arrayfire.com/company/#contact\">Contact us</a>!','How to Make GPU Hardware Decisions','','inherit','open','closed','','4685-revision-v1','','','2014-05-12 17:46:41','2014-05-12 17:46:41','',4685,'http://sandbox.arrayfire.com/4685-revision-v1/',0,'revision','',0),(5556,6,'2014-05-12 17:49:37','2014-05-12 17:49:37','We get questions all the time about how to make GPU hardware decisions. We\'ve seen just about every scenario you can imagine, and so we always jump at the chance to help others through this decision process.\r\n\r\n<span style=\"line-height: 1.5em;\">Here\'s a recent question from a customer.</span>\r\n\r\n<em>\"I\'ve just found your post on Analytic Bridge and have taken a look at your website ... I\'m replacing my two Tesla M1060 cards (computing capability too low) and I\'m considering used Tesla M2070s or the new GTX 760 cards. Could you offer any insight? I believe the GTX 760 cards may well outperform the older 2070s and are much cheaper.\"</em>\r\n\r\nAnd here\'s our response.\r\n\r\n<em>\"The GTX 760 will probably outperform the M2070 for single precision FLOPS but not for double precision, if that matters to you. Not sure what your budget is, but there are other GeForce GPUs that are a lot cheaper than Tesla that have a control panel option to sacrifice clocks for higher double precision throughput (see GeForce GTX Titan).\"</em>\r\n\r\nWe\'ve found that there\'s a lot of confusion out there regarding what\'s the best compute hardware for people who are restricted within a certain price range. A few key takeaways should be considered when trying to make the best GPU hardware decision. Here are some best practices you should consider.\r\n\r\n1) Do you want a reliable GPU that does fast double precision calculations? Choose the Tesla K20, or the K40.\r\n\r\n2) Do you want a reliable GPU that does fast single precision calculations? Tesla K10 is for you.\r\n\r\n3) Are you doing a lot of visualization or video rendering along with compute? Choose the Quadro line.\r\n\r\n4) Are you an enthusiast or not worried about double precision and ECC memory? Buy a GTX GPU within your budget.\r\n\r\nIf you are working with OpenCL, then AMD, Intel, and other devices come into the fray as well. We will talk about that another day!\r\n\r\nDo you have any questions about GPUs? <a href=\"http://sandbox.arrayfire.com/company/#contact\">Contact us</a>!','How to Make GPU Hardware Decisions','','inherit','open','closed','','4685-revision-v1','','','2014-05-12 17:49:37','2014-05-12 17:49:37','',4685,'http://sandbox.arrayfire.com/4685-revision-v1/',0,'revision','',0),(5558,17728,'2014-05-15 19:40:37','2014-05-15 19:40:37','We use a lot of Free / Open Source software at ArrayFire. Here is a small list of FOSS software used by us on a daily basis.\r\n<ul>\r\n	<li><strong>Linux: </strong>The Operating System of choice for our developers.</li>\r\n	<li><strong>Jenkins: </strong>For continuous integration</li>\r\n	<li><strong>Gitlab: </strong>As our git server.</li>\r\n	<li><strong>gcc, emacs, vim </strong>and more.</li>\r\n</ul>\r\nLately we have been seeing more and more companies go Open Source route including a few surprising names (Microsoft, who would have thought!).\r\n\r\nAll of our language wrappers for ArrayFire:\r\n<ul>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_fortran\">FORTRAN wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_r\">R wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_java\">JAVA wrapper for ArrayFire</a></li>\r\n</ul>\r\nHere are a few other projects we have open sourced:\r\n<ul>\r\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\"><a href=\"https://github.com/arrayfire/arrayfire_examples\">All ArrayFire examples</a></a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">Using OpenGL with CUDA and ArrayFire</a></li>\r\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\">Deploying CUDA on the cloud</a></li>\r\n</ul>\r\nWe are working towards even bigger things. Keep checking back!','Open Source Initiatives from ArrayFire','','inherit','open','closed','','5538-revision-v1','','','2014-05-15 19:40:37','2014-05-15 19:40:37','',5538,'http://sandbox.arrayfire.com/5538-revision-v1/',0,'revision','',0),(5559,17728,'2014-05-15 19:51:41','2014-05-15 19:51:41','Lately we have seen many companies embrace this and go the Open Source route. This includes a few surprising names  like Microsoft (who would have thought!).\r\n\r\nAt ArrayFire we love and use a lot of Free / Open Source software. We use various Linux distributions, <a href=\"http://jenkins-ci.org/\">Jenkins</a>, <a href=\"https://www.gitlab.com/\">Gitlab</a>, gcc, emacs, vim and numerous other FOSS software on a daily basis.\r\n\r\n<span style=\"line-height: 1.5em;\">We also love the idea of developing software collaboratively and openly. Last year we started working with AMD on [CL Math Libraries](https://github.com/clMathLibraries/).\r\n</span>\r\n\r\nAll of our language wrappers for ArrayFire:\r\n<ul>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_fortran\">FORTRAN wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_r\">R wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_java\">JAVA wrapper for ArrayFire</a></li>\r\n</ul>\r\nHere are a few other projects we have open sourced:\r\n<ul>\r\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\"><a href=\"https://github.com/arrayfire/arrayfire_examples\">All ArrayFire examples</a></a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">Using OpenGL with CUDA and ArrayFire</a></li>\r\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\">Deploying CUDA on the cloud</a></li>\r\n</ul>\r\nWe are working towards even bigger things. Keep checking back!','Open Source Initiatives from ArrayFire','','inherit','open','closed','','5538-revision-v1','','','2014-05-15 19:51:41','2014-05-15 19:51:41','',5538,'http://sandbox.arrayfire.com/5538-revision-v1/',0,'revision','',0),(5560,17728,'2014-05-15 19:58:36','2014-05-15 19:58:36','Lately we have seen many companies Open Source their products. This includes a few surprising names  like Microsoft (who would have thought!).\r\n\r\nAt ArrayFire we love and use a lot of Free / Open Source software. We use various Linux distributions, <a href=\"http://jenkins-ci.org/\">Jenkins</a>, <a href=\"https://www.gitlab.com/\">Gitlab</a>, gcc, emacs, vim and numerous other FOSS software on a daily basis.\r\n\r\n<span style=\"line-height: 1.5em;\">We also love the idea of developing software collaboratively and openly. Last year we started <a href=\"http://sandbox.arrayfire.com/clmath-an-open-source-blas-and-fft-library-for-opencl/\">working with AMD</a> on <a href=\"https://github.com/clMathLibraries/\">CL Math Libraries</a>.\r\n</span>\r\n\r\nAll of our language wrappers for ArrayFire:\r\n<ul>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_fortran\">FORTRAN wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_r\">R wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_java\">JAVA wrapper for ArrayFire</a></li>\r\n</ul>\r\nOther products projects to ArrayFire:\r\n<ul>\r\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\"><a href=\"https://github.com/arrayfire/arrayfire_examples\">All ArrayFire examples</a></a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">Using OpenGL with CUDA and ArrayFire</a></li>\r\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\">Deploying CUDA on the cloud</a></li>\r\n</ul>\r\nSome of our users have also created a github page to host projects developed by our community. If you are an ArrayFire user have any projects you would like to share, please go to our <a href=\"https://github.com/arrayfire-community\">ArrayFire community</a> github page and add your project!\r\n\r\nThis is but a small step from us towards the eventual goal. We are working towards even bigger things.\r\n\r\nKeep checking back!','Open Source Initiatives from ArrayFire','','inherit','open','closed','','5538-revision-v1','','','2014-05-15 19:58:36','2014-05-15 19:58:36','',5538,'http://sandbox.arrayfire.com/5538-revision-v1/',0,'revision','',0),(5564,17728,'2014-05-15 20:06:02','2014-05-15 20:06:02','Lately we have seen many companies Open Source their products. This includes a few surprising names  like Microsoft (who would have thought!).\r\n\r\nAt ArrayFire we love and use a lot of Free / Open Source software. We use various Linux distributions, <a href=\"http://jenkins-ci.org/\">Jenkins</a>, <a href=\"https://www.gitlab.com/\">Gitlab</a>, gcc, emacs, vim and numerous other FOSS software on a daily basis.\r\n\r\n<span style=\"line-height: 1.5em;\">We also love the idea of developing software collaboratively and openly. Last year we started <a href=\"http://sandbox.arrayfire.com/clmath-an-open-source-blas-and-fft-library-for-opencl/\">working with AMD</a> on <a href=\"https://github.com/clMathLibraries/\">CL Math Libraries</a>. Internally we have had numerous discussions about doing more openly. However it is neither simple nor straightforward to take a closed software Open Source. </span>Earlier this year we decided to take the first step and Open Source all of ArrayFire\'s tertiary projects. This includes all of ArrayFire\'s language wrappers, ArrayFire\'s examples, and source code used for our blog posts. All of our projects are hosted at <a href=\"https://github.com/arrayfire\">our github page</a>.\r\n\r\nSome of the projects we have Open Sourced so far:\r\n<ul>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_fortran\">FORTRAN wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_r\">R wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_java\">JAVA wrapper for ArrayFire</a></li>\r\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\"><a href=\"https://github.com/arrayfire/arrayfire_examples\">All ArrayFire examples</a></a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">Using OpenGL with CUDA and ArrayFire</a></li>\r\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\">Deploying CUDA on the cloud</a></li>\r\n</ul>\r\nSome of our users have also created a github page to host projects developed by our community. If you are an ArrayFire user have any projects you would like to share, please go to our <a href=\"https://github.com/arrayfire-community\">ArrayFire community</a> github page and add your project!\r\n\r\nThis is but a small step from us towards the eventual goal. We are working towards even bigger things.\r\n\r\nKeep checking back!','Open Source Initiatives from ArrayFire','','inherit','open','closed','','5538-revision-v1','','','2014-05-15 20:06:02','2014-05-15 20:06:02','',5538,'http://sandbox.arrayfire.com/5538-revision-v1/',0,'revision','',0),(5565,17794,'2014-05-15 20:21:40','2014-05-15 20:21:40','<span style=\"line-height: 1.5em;\">At ArrayFire we love and use a lot of Free / Open Source software. We use various Linux distributions, </span><a style=\"line-height: 1.5em;\" href=\"http://jenkins-ci.org/\">Jenkins</a><span style=\"line-height: 1.5em;\">, </span><a style=\"line-height: 1.5em;\" href=\"https://www.gitlab.com/\">Gitlab</a><span style=\"line-height: 1.5em;\">, gcc, emacs, vim and numerous other <abbr title=\"Free Open Source Software\">FOSS</abbr> on a daily basis.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">We also love the idea of developing software collaboratively and openly. Last year we started <a href=\"http://sandbox.arrayfire.com/clmath-an-open-source-blas-and-fft-library-for-opencl/\">working with AMD</a> on <a href=\"https://github.com/clMathLibraries/\">CL Math Libraries</a>. Internally we have had numerous discussions about contributing to the <abbr title=\"General Purpose Graphrics Processing Unit\">GPGPU</abbr> community. However it is neither simple nor straightforward to take a closed software Open Source. </span>Earlier this year we decided to take the first step and Open Source all of ArrayFire\'s tertiary projects. This includes all of ArrayFire\'s language wrappers, ArrayFire\'s examples, and source code used for our blog posts. All of our projects are hosted at <a href=\"https://github.com/arrayfire\">our GitHub page</a>.\r\n\r\nThese are some of the projects  you will find on our GitHub page:\r\n<ul>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_fortran\">FORTRAN wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_r\">R wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_java\">JAVA wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_examples\">All ArrayFire examples</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">Using OpenGL with CUDA and ArrayFire</a></li>\r\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\">Deploying CUDA on the cloud</a></li>\r\n</ul>\r\nAdditionally some of our users have also created a GitHub page to host projects developed by our community. If you are an ArrayFire user and have any projects you would like to share, please go to our <a href=\"https://github.com/arrayfire-community\">ArrayFire community</a> page and contribute!\r\n\r\nAt ArrayFire we are working towards even bigger things in the future!','Open Source Initiatives from ArrayFire','','inherit','open','closed','','5538-autosave-v1','','','2014-05-15 20:21:40','2014-05-15 20:21:40','',5538,'http://sandbox.arrayfire.com/5538-autosave-v1/',0,'revision','',0),(5566,17728,'2014-05-15 20:10:27','2014-05-15 20:10:27','Lately we have seen many companies Open Source their products. This includes a few surprising names  like Microsoft (who would have thought!).\n\nAt ArrayFire we love and use a lot of Free / Open Source software. We use various Linux distributions, <a href=\"http://jenkins-ci.org/\">Jenkins</a>, <a href=\"https://www.gitlab.com/\">Gitlab</a>, gcc, emacs, vim and numerous other FOSS software on a daily basis.\n\n<span style=\"line-height: 1.5em;\">We also love the idea of developing software collaboratively and openly. Last year we started <a href=\"http://sandbox.arrayfire.com/clmath-an-open-source-blas-and-fft-library-for-opencl/\">working with AMD</a> on <a href=\"https://github.com/clMathLibraries/\">CL Math Libraries</a>. Internally we have had numerous discussions about doing more openly. However it is neither simple nor straightforward to take a closed software Open Source. </span>Earlier this year we decided to take the first step and Open Source all of ArrayFire\'s tertiary projects. This includes all of ArrayFire\'s language wrappers, ArrayFire\'s examples, and source code used for our blog posts. All of our projects are hosted at <a href=\"https://github.com/arrayfire\">our github page</a>.\n\nSome of the projects we have Open Sourced so far:\n<ul>\n	<li><a href=\"https://github.com/arrayfire/arrayfire_fortran\">FORTRAN wrapper for ArrayFire</a></li>\n	<li><a href=\"https://github.com/arrayfire/arrayfire_r\">R wrapper for ArrayFire</a></li>\n	<li><a href=\"https://github.com/arrayfire/arrayfire_java\">JAVA wrapper for ArrayFire</a></li>\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\"><a href=\"https://github.com/arrayfire/arrayfire_examples\">All ArrayFire examples</a></a></li>\n	<li><a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">Using OpenGL with CUDA and ArrayFire</a></li>\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\">Deploying CUDA on the cloud</a></li>\n</ul>\nSome of our users have also created a github page to host projects developed by our community. If you are an ArrayFire user have any projects you would like to share, please go to our <a href=\"https://github.com/arrayfire-community\">ArrayFire community</a> github page and add your project!\n\nThis is but a small step from us towards the eventual goal. We are working towards even bigger things.\n\nKeep checking back!','Open Source Initiatives from ArrayFire','','inherit','open','closed','','5538-autosave-v1','','','2014-05-15 20:10:27','2014-05-15 20:10:27','',5538,'http://sandbox.arrayfire.com/5538-autosave-v1/',0,'revision','',0),(5568,17794,'2014-05-15 20:19:59','2014-05-15 20:19:59','<span style=\"line-height: 1.5em;\">At ArrayFire we love and use a lot of Free / Open Source software. We use various Linux distributions, </span><a style=\"line-height: 1.5em;\" href=\"http://jenkins-ci.org/\">Jenkins</a><span style=\"line-height: 1.5em;\">, </span><a style=\"line-height: 1.5em;\" href=\"https://www.gitlab.com/\">Gitlab</a><span style=\"line-height: 1.5em;\">, gcc, emacs, vim and numerous other <abbr title=\"Free Open Source Software\">FOSS</abbr> on a daily basis.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">We also love the idea of developing software collaboratively and openly. Last year we started <a href=\"http://sandbox.arrayfire.com/clmath-an-open-source-blas-and-fft-library-for-opencl/\">working with AMD</a> on <a href=\"https://github.com/clMathLibraries/\">CL Math Libraries</a>. Internally we have had numerous discussions about contributing to the <abbr title=\"General Purpose Graphrics Processing Unit\">GPGPU</abbr> community. However it is neither simple nor straightforward to take a closed software Open Source. </span>Earlier this year we decided to take the first step and Open Source all of ArrayFire\'s tertiary projects. This includes all of ArrayFire\'s language wrappers, ArrayFire\'s examples, and source code used for our blog posts. All of our projects are hosted at <a href=\"https://github.com/arrayfire\">our GitHub page</a>.\r\n\r\nThese are some of the projects  you will find on our GitHub page:\r\n<ul>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_fortran\">FORTRAN wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_r\">R wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_java\">JAVA wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_examples\">All ArrayFire examples</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">Using OpenGL with CUDA and ArrayFire</a></li>\r\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\">Deploying CUDA on the cloud</a></li>\r\n</ul>\r\nAdditionally some of our users have also created a GitHub page to host projects developed by our community. If you are an ArrayFire user and have any projects you would like to share, please go to our <a href=\"https://github.com/arrayfire-community\">ArrayFire community</a> page and contribute!\r\n\r\nAt ArrayFire we are working towards even bigger things in the future!','Open Source Initiatives from ArrayFire','','inherit','open','closed','','5538-revision-v1','','','2014-05-15 20:19:59','2014-05-15 20:19:59','',5538,'http://sandbox.arrayfire.com/5538-revision-v1/',0,'revision','',0),(5570,6,'2014-05-15 20:50:46','2014-05-15 20:50:46','<span style=\"line-height: 1.5em;\">At ArrayFire we like to use a lot of Free/Open Source software. We use various Linux distributions, </span><a style=\"line-height: 1.5em;\" href=\"http://jenkins-ci.org/\">Jenkins</a><span style=\"line-height: 1.5em;\">, </span><a style=\"line-height: 1.5em;\" href=\"https://www.gitlab.com/\">Gitlab</a><span style=\"line-height: 1.5em;\">, gcc, emacs, vim and numerous other <abbr title=\"Free Open Source Software\">FOSS</abbr> on a daily basis.</span>\n\n<span style=\"line-height: 1.5em;\">We also love the idea of developing software collaboratively and openly. Last year we started <a href=\"http://sandbox.arrayfire.com/clmath-an-open-source-blas-and-fft-library-for-opencl/\">working with AMD</a> on <a href=\"https://github.com/clMathLibraries/\">CL Math Libraries</a>. Internally we\'ve had numerous discussions about contributing to the <abbr title=\"General Purpose Graphrics Processing Unit\">GPGPU</abbr> community. However, it is neither simple nor straightforward to take a closed software Open Source. </span>Earlier this year, we decided to take the first step and Open Source all of the ArrayFire library\'s  tertiary projects. This includes all of our ArrayFire library\'s language wrappers, examples, and source code used for our blog posts. All of our projects are hosted at <a href=\"https://github.com/arrayfire\">our GitHub page</a>.\n\nThese are some of the projects  you will find on our GitHub page:\n<ul>\n	<li><a href=\"https://github.com/arrayfire/arrayfire_fortran\">FORTRAN wrapper for ArrayFire</a></li>\n	<li><a href=\"https://github.com/arrayfire/arrayfire_r\">R wrapper for ArrayFire</a></li>\n	<li><a href=\"https://github.com/arrayfire/arrayfire_java\">JAVA wrapper for ArrayFire</a></li>\n	<li><a href=\"https://github.com/arrayfire/arrayfire_examples\">All ArrayFire examples</a></li>\n	<li><a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">Using OpenGL with CUDA and ArrayFire</a></li>\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\">Deploying CUDA on the cloud</a></li>\n</ul>\nAdditionally, some of our users have also created a GitHub page to host projects developed by our community. If you are an ArrayFire library user and have any projects you would like to share, please go to our <a href=\"https://github.com/arrayfire-community\">ArrayFire community</a> page and contribute!\n\nAt ArrayFire we are working towards even bigger things in the future!','Open Source Initiatives from ArrayFire','','inherit','open','closed','','5538-autosave-v1','','','2014-05-15 20:50:46','2014-05-15 20:50:46','',5538,'http://sandbox.arrayfire.com/5538-autosave-v1/',0,'revision','',0),(5571,6,'2014-05-15 20:51:23','2014-05-15 20:51:23','<span style=\"line-height: 1.5em;\">At ArrayFire we like to use a lot of Free/Open Source software. We use various Linux distributions, </span><a style=\"line-height: 1.5em;\" href=\"http://jenkins-ci.org/\">Jenkins</a><span style=\"line-height: 1.5em;\">, </span><a style=\"line-height: 1.5em;\" href=\"https://www.gitlab.com/\">Gitlab</a><span style=\"line-height: 1.5em;\">, gcc, emacs, vim and numerous other <abbr title=\"Free Open Source Software\">FOSS</abbr> on a daily basis.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">We also love the idea of developing software collaboratively and openly. Last year we started <a href=\"http://sandbox.arrayfire.com/clmath-an-open-source-blas-and-fft-library-for-opencl/\">working with AMD</a> on <a href=\"https://github.com/clMathLibraries/\">CL Math Libraries</a>. Internally we\'ve had numerous discussions about contributing to the <abbr title=\"General Purpose Graphrics Processing Unit\">GPGPU</abbr> community. However, it is neither simple nor straightforward to take a closed software Open Source. </span>Earlier this year, we decided to take the first step and Open Source all of the ArrayFire library\'s  tertiary projects. This includes all of our ArrayFire library\'s language wrappers, examples, and source code used for our blog posts. All of our projects are hosted at <a href=\"https://github.com/arrayfire\">our GitHub page</a>.\r\n\r\nThese are some of the projects  you will find on our GitHub page:\r\n<ul>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_fortran\">FORTRAN wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_r\">R wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_java\">JAVA wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_examples\">All ArrayFire examples</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">Using OpenGL with CUDA and ArrayFire</a></li>\r\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\">Deploying CUDA on the cloud</a></li>\r\n</ul>\r\nAdditionally, some of our users have also created a GitHub page to host projects developed by our community. If you are an ArrayFire library user and have any projects you would like to share, please go to our <a href=\"https://github.com/arrayfire-community\">ArrayFire community</a> page and contribute!\r\n\r\nWe are working towards even bigger things in the future!','Open Source Initiatives from ArrayFire','','inherit','open','closed','','5538-revision-v1','','','2014-05-15 20:51:23','2014-05-15 20:51:23','',5538,'http://sandbox.arrayfire.com/5538-revision-v1/',0,'revision','',0),(5572,6,'2014-05-15 20:52:44','2014-05-15 20:52:44','<span style=\"line-height: 1.5em;\">At ArrayFire we like to use a lot of Free/Open Source software. We use various Linux distributions, </span><a style=\"line-height: 1.5em;\" href=\"http://jenkins-ci.org/\">Jenkins</a><span style=\"line-height: 1.5em;\">, </span><a style=\"line-height: 1.5em;\" href=\"https://www.gitlab.com/\">Gitlab</a><span style=\"line-height: 1.5em;\">, gcc, emacs, vim and numerous other <abbr title=\"Free Open Source Software\">FOSS</abbr> on a daily basis.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">We also love the idea of developing software collaboratively and openly. Last year we started <a href=\"http://sandbox.arrayfire.com/clmath-an-open-source-blas-and-fft-library-for-opencl/\">working with AMD</a> on <a href=\"https://github.com/clMathLibraries/\">CL Math Libraries</a>. Internally we\'ve had numerous discussions about contributing to the <abbr title=\"General Purpose Graphrics Processing Unit\">GPGPU</abbr> community. However, it\'s neither simple nor straightforward to take a closed software Open Source. </span>Earlier this year, we decided to take the first step and Open Source all of the ArrayFire library\'s  tertiary projects. This includes all of our ArrayFire library\'s language wrappers, examples, and source code used for our blog posts. All of our projects are hosted at <a href=\"https://github.com/arrayfire\">our GitHub page</a>.\r\n\r\nThese are some of the projects  you will find on our GitHub page:\r\n<ul>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_fortran\">FORTRAN wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_r\">R wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_java\">JAVA wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_examples\">All ArrayFire examples</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">Using OpenGL with CUDA and ArrayFire</a></li>\r\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\">Deploying CUDA on the cloud</a></li>\r\n</ul>\r\nAdditionally, some of our users have also created a GitHub page to host projects developed by our community. If you are an ArrayFire library user and have any projects you would like to share, please go to our <a href=\"https://github.com/arrayfire-community\">ArrayFire community</a> page and contribute!\r\n\r\nWe are working towards even bigger things in the future!','Open Source Initiatives from ArrayFire','','inherit','open','closed','','5538-revision-v1','','','2014-05-15 20:52:44','2014-05-15 20:52:44','',5538,'http://sandbox.arrayfire.com/5538-revision-v1/',0,'revision','',0),(5573,17728,'2014-05-15 20:56:23','2014-05-15 20:56:23','<span style=\"line-height: 1.5em;\">At ArrayFire we like to use a lot of Free/Open Source software. We use various Linux distributions, </span><a style=\"line-height: 1.5em;\" href=\"http://jenkins-ci.org/\">Jenkins</a><span style=\"line-height: 1.5em;\">, </span><a style=\"line-height: 1.5em;\" href=\"https://www.gitlab.com/\">Gitlab</a><span style=\"line-height: 1.5em;\">, gcc, emacs, vim and numerous other <abbr title=\"Free Open Source Software\">FOSS</abbr> tools on a daily basis.</span>\r\n\r\n<span style=\"line-height: 1.5em;\">We also love the idea of developing software collaboratively and openly. Last year we started <a href=\"http://sandbox.arrayfire.com/clmath-an-open-source-blas-and-fft-library-for-opencl/\">working with AMD</a> on <a href=\"https://github.com/clMathLibraries/\">CL Math Libraries</a>. Internally we\'ve had numerous discussions about contributing to the <abbr title=\"General Purpose Graphrics Processing Unit\">GPGPU</abbr> community. However, it\'s neither simple nor straightforward to take a closed software Open Source. </span>Earlier this year, we decided to take the first step and Open Source all of the ArrayFire library\'s  tertiary projects. This includes all of our ArrayFire library\'s language wrappers, examples, and source code used for our blog posts. All of our projects are hosted at <a href=\"https://github.com/arrayfire\">our GitHub page</a>.\r\n\r\nThese are some of the projects  you will find on our GitHub page:\r\n<ul>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_fortran\">FORTRAN wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_r\">R wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_java\">JAVA wrapper for ArrayFire</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_examples\">All ArrayFire examples</a></li>\r\n	<li><a href=\"https://github.com/arrayfire/arrayfire_opengl_interop\">Using OpenGL with CUDA and ArrayFire</a></li>\r\n	<li><a title=\"Deploy CUDA\" href=\"https://github.com/arrayfire/cuda_deployment_tutorial\">Deploying CUDA on the cloud</a></li>\r\n</ul>\r\nAdditionally, some of our users have also created a GitHub page to host projects developed by our community. If you are an ArrayFire library user and have any projects you would like to share, please go to our <a href=\"https://github.com/arrayfire-community\">ArrayFire community</a> page and contribute!\r\n\r\nWe are working towards even bigger things in the future!','Open Source Initiatives from ArrayFire','','inherit','open','closed','','5538-revision-v1','','','2014-05-15 20:56:23','2014-05-15 20:56:23','',5538,'http://sandbox.arrayfire.com/5538-revision-v1/',0,'revision','',0),(5574,17729,'2014-05-20 15:31:57','2014-05-20 15:31:57','Mobile devices are carving their niche into the world of computing with more processing power day by day. GPUs on mobile devices have been around for a while, but using them for accelerating computation is still quite new. Until recently, the only way to access the GPU was through OpenGL. Around december 2008, Khronos released OpenCL, a generic API for accelerating non-graphics tasks. OpenCL enables us to take advantage of acceleration hardware. Since it is an open standard, many hardware vendors provide support on their devices. With the recent release of Adreno and Mali SDKs, you can now run OpenCL code on mobile GPUs.\r\n\r\nToday\'s post is going to be about how to do image processing on camera feed on Android devices using OpenCL. To successfully complete this tutorial, you need to have basic knowledge of how to write OpenCL kernels and native code for Android.\r\n<h3 id=\"opencl\">OpenCL</h3>\r\nTo use OpenCL on your mobile device\'s GPU, you must obtain the compatible libOpenCL.so library and the corresponding OpenCL headers.\r\n\r\nI initially thought I could just use the C++ OpenCL header available from Khronos website for development, however that didn\'t work. I faced compilation errors because of incompatible OpenGL headers. There are couple of ways to get the compatible headers. You can either use the <a href=\"https://github.com/arrayfire/androidcl/tree/master/jni/include\">headers</a> provided along with the example application or extract them from Adreno/Mali SDK. For Adreno SDK, you can find the headers at <code>&lt;Adreno_SDK&gt;/Development/Inc/CL</code>. For Mali SDK, you can find the headers at <code>&lt;MALI_SDK&gt;/include/CL</code>.\r\n\r\nFor newer devices such as Samsung Galaxy Note 3 and Samsung Galaxy S5, it is very likely the library is already present on the mobile device. My test device is a Note 3 for which i found the library under <code>/system/vendor/lib</code>. You can do <code>adb pull /system/vendor/lib/libOpenCL.so ./</code> to get the file to your desktop machine. In these kind of cases, you might be able to use the library out of the box without any issues. For any other scenario, please use the directions in following sections to get the library and make it work if available.\r\n<h4 id=\"adreno-gpu\">Adreno GPU</h4>\r\nIf you do not find the library on your device, check if your device has OpenCL support on the corresponding vendor\'s website. If your GPU does have OpenCL support, you might have to update your OS in order to get the recent updates. If you don\'t find the library even after OS update, you might want to email the vendor. However, if your GPU does not have OpenCL support, there isn\'t much we can do.\r\n\r\nIf you do find the library and can\'t use for some reason. Try to update your device drivers using the ones provided by Qualcomm. You can download them from <a href=\"https://developer.qualcomm.com/mobile-development/maximize-hardware/mobile-gaming-graphics-adreno/tools-and-resources\">here</a>. Ensure that you are downloading the Adreno driver but not the Adreno SDK. Follow the instructions in the package and update the drivers on your device. This should resolve any issues you have.\r\n<h4 id=\"mali-gpu\">Mali GPU</h4>\r\nDownload the SDK from <a href=\"http://malideveloper.arm.com/develop-for-mali/sdks/mali-opencl-sdk/\">here</a>. Follow the instructions in the package and build the shared library and copy it on to your device.\r\n<h4 id=\"kernels\">Kernels</h4>\r\nI needed to do two things to achieve my target.\r\n<ul>\r\n	<li>Convert frame data provided by Android camera from NV21 format to RGBA8888 format.</li>\r\n	<li>Run laplacian operator on the RGBA8888 image data.</li>\r\n</ul>\r\nGetting a grayscale image from NV21 format is cake walk, just read the first width*height bytes and you are done. As per the format of <a href=\"http://www.fourcc.org/yuv.php#NV21\">NV21</a>, for each 2x2 sub-matrix of pixels, there will be a pair (v,u). Since 4 pixels are reading same (v,u), i decided to use shared memory to reduce reading latency. The code below is the core of this conversion kernel, that is expected to speed up the conversion if compared to a pure C code.\r\n<pre>\r\n#define BLK_SIZE 16\r\n//prefix D for decoding\r\n#define DSHRD_LEN (BLK_SIZE/2)\r\n#define DSHRD_SIZE (2*DSHRD_LEN*DSHRD_LEN)\r\n// ...\r\n// ...\r\n// kernel signature\r\n{\r\n    __local uchar uvShrd[DSHRD_SIZE];\r\n    int gx = get_global_id(0);\r\n    int gy = get_global_id(1);\r\n    int lx = get_local_id(0);\r\n    int ly = get_local_id(1);\r\n    int off = im_width*im_height;\r\n    int inIdx= gy*im_width+gx;\r\n    int uvIdx= off + (gy/2)*im_width + (gx & ~1); // took me a while to figure out this formula\r\n    int shlx = lx/2;\r\n    int shly = ly/2;\r\n    int shIdx= 2*(shlx+shly*DSHRD_LEN);\r\n    if( gx%2==0 && gy%2==0 ) {\r\n        uvShrd[shIdx+0] = in[uvIdx+0];\r\n        uvShrd[shIdx+1] = in[uvIdx+1];\r\n    }\r\n    int y = (0xFF & ((int)in[inIdx]));\r\n    int y = (0xFF & ((int)in[inIdx]));\r\n    if( y < 16 ) y=16;\r\n    barrier(CLK_LOCAL_MEM_FENCE);\r\n    //..... rest of code that does color space conversion\r\n}\r\n</pre>\r\nLaplacian kernel is pretty straightforward, read all eight neighbors pixel values using shared memory and compute the convolution result. You can find kernels source code <a href=\"https://github.com/arrayfire/androidcl/blob/master/assets/kernels.cl\">here</a>.\r\n<h4 id=\"auxilary-code\">Auxilary Code</h4>\r\nThe JNI native function declarations can be seen in the file <a href=\"https://github.com/arrayfire/androidcl/blob/master/jni/processor.h\">processor.h</a>. I have included couple of extra Android related headers which are required to read bitmap files and print debug messages from JNI routines. The C-string pointed by macro <code>app_name</code> can be used to prune the output of the command <code>adb logcat</code> to get only messages that are associated with our JNI routines. To do that, you need to pass the value of <code>app_name</code> to adb command as an option as shown below.\r\n<pre>adb logcat -s \"JNIProcessor\"</pre>\r\nThis is quite useful when you are debugging problems that are related to accuracy of results.\r\n\r\nThe full source code for JNI native functions can be seen in the file <a href=\"https://github.com/arrayfire/androidcl/blob/master/jni/processor.cpp\">processor.cpp</a>. Following are brief descriptions of the Android/JNI functions I have used in this project.\r\n<ul>\r\n	<li><code>AndroidBitmap_getInfo</code> - provides details like width, height, stride, format.</li>\r\n	<li><code>AndroidBitmap_lockPixels</code> - gives us a pointer to the memory location of image data. Once lockPixels is called, it has to be followed by a unlockPixels at some point later in the code.</li>\r\n	<li><code>GetPrimitiveArrayCritical</code> - as the name suggets, this is some kind of performance critical call. Hence, we should take care that the code amid a GetPrimitiveArrayCritical call and the corresponding ReleasePrimitiveArrayCritical call doesn\'t stall execution for extended periods of time. As per <a href=\"http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/functions.html\">Oracle\'s Java documentation</a>, a VM may temporarily disable garbage collection when the native code is holding a pointer to an array obtained via GetPrimitiveArrayCritical. So, just be careful when you use this function.</li>\r\n	<li><code>ReleasePrimitiveArrayCritical</code> - used to release the memory space requested by previous GetPrimitiveArrayCritical. call.</li>\r\n	<li><code>AndroidBitmap_unlockPixels</code> - used to release memory space used by a previous lockPixels call.</li>\r\n</ul>\r\nListed below are some of the other auxilary functions that i needed to make the code look clean.\r\n<ul>\r\n	<li><code>throwJavaException</code> - convenience function used to throw Java exceptions from JNI routines.</li>\r\n	<li><code>cb</code> - callback function provided when OpenCL kernels are built. When you actually look at this, you might wonder why did i do this part alone using C-interface of OpenCL. I just wanted to try it out, hence it happened so.</li>\r\n	<li><code>Java_com_example_LiveFeatureActivity_compileKernels</code> - as you might have noticed, this is a JNI routine i used to compile the OpenCL kernels only once during the app start up.</li>\r\n</ul>\r\n<h3 id=\"build-on-linux\">Build (on Linux)</h3>\r\nAndroid-NDK provides a very useful tool <code>ndk-build</code> to build native code for Android.\r\n<ol>\r\n	<li>Clone the git repo <code>git clone https://github.com/arrayfire/androidcl</code></li>\r\n	<li><code>cd androidcl</code></li>\r\n	<li>Ensure android-ndk installed and environment variable <code>ANDROID_NDK</code> is pointing to ndk installation root.</li>\r\n	<li>Ensure environment variable <code>PATH</code> has the path <code>$ANDROID_NDK</code> appended to it.</li>\r\n	<li>Run <code>ndk-build</code> from project root.</li>\r\n	<li>If you have <code>eclipse</code> installed, then import the project from eclipse and build it as usually.</li>\r\n	<li>If you do not have eclipse or don\'t want to use it, then I assume you might already know about apache-ant tool. Run <code>ant debug</code></li>\r\n</ol>\r\n<h4 id=\"android.mk\">Android.mk</h4>\r\nThere are couple of things that you need to do to use OpenCL on Android apart from standard JNI makefile instructions.\r\n<ul>\r\n	<li>Ensure that you set <code>LOCAL_ARM_MODE</code> to <code>arm</code>, which enables you to build for 32-bit ARM architecture instead of the default 16-bit.</li>\r\n	<li>Ensure that the variable <code>LOCAL_CPPFLAGS</code> has been set to point to OpenCL headers.</li>\r\n	<li>Add <code>libOpenCL.so</code> dependency to <code>LOCAL_LDLIBS</code> variable.</li>\r\n</ul>\r\nClick <a href=\"https://github.com/arrayfire/androidcl/blob/master/jni/Android.mk\">here</a> to see full content of Android.mk.\r\n\r\nNote: In case you want a static library, replace <code>include $(BUILD_SHARED_LIBRARY)</code> with <code>include $(BUILD_STATIC_LIBRARY)</code>.\r\n<h4 id=\"application.mk\">Application.mk</h4>\r\nThis file is not mandatory, but you may need it in cases where you want specify your requirements about the system libraries you want to use in your application. In this project i have set <code>APP_STL</code> to <code>gnustl_static</code> to declare that i want to use the static version of gnustl. I have also set the Android API target version as 14 by setting <code>APP_PLATFORM</code> to <code>android-14</code>.\r\nClick <a href=\"https://github.com/arrayfire/androidcl/blob/master/jni/Application.mk\">here</a> to see full content of Application.mk.\r\n<h3 id=\"app-installation\">App Installation</h3>\r\n<h4 id=\"ant-users\">ant-users</h4>\r\nFor installing the app in your mobile device do <code>ant debug install</code>. Should you choose to remove it after you are done playing with it, just do <code>ant debug uninstall</code>.\r\n<h4 id=\"eclipse-users\">eclipse-users</h4>\r\nRight click the project in workspace and click the menu item \"Run As -&gt; Android Application\".\r\n\r\nYou can see below the video of the app running live.\r\n\r\n[video width=\"1280\" height=\"720\" mp4=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/05/ocl_demo.mp4\"]Screen capture of the live app[/video]\r\n\r\n&nbsp;\r\n\r\nStay tuned for more exciting developments as we continue to add more examples of OpenCL on Andriod!','Getting Started with OpenCL on Android','','publish','open','closed','','getting-started-with-opencl-on-android','','','2014-05-25 23:36:42','2014-05-25 23:36:42','',0,'http://sandbox.arrayfire.com/?p=5574',0,'post','',10),(5575,17729,'2014-05-15 22:37:07','2014-05-15 22:37:07','Code\r\n====\r\nI used to use java (jython to be precise) when i used to work as WebSphere (Yes, an IBM product) administrator a really long time back. After such a long gap, i had to look into java again when i needed to do some native level programming for android app.\r\n\r\nMy final target was to do some image processing on camera feed. Out of habit (c/c++), i wanted to start with a header to declare the methods that i saw i would need later. Searching through google gave me couple of options on how to generate the required headers.\r\n\r\n* Use [javah](http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javah.html) and generate\r\n* Write them yourself\r\n\r\nI took the second route. After a bit of playing with the tedious naming convention for jni functions, i use the following macro to create my function declarations.\r\n```c\r\n#define DECLARE(returnType,fullClassName,func,...) \\\r\nJNIEXPORT returnType JNICALL Java_##fullClassName##_##func(JNIEnv *env, jclass clazz,__VA_ARGS__);\r\n```\r\n\r\nAn example declaration of function that takes [NV21](http://www.fourcc.org/yuv.php#NV21) format data as input and writes output to bitmap will be as follows:\r\n```c\r\nDECLARE(void,com_example_CameraPreview,gaussianBlur,jobject outBmp, jbyteArray inData, jint width, jint height)\r\n```\r\n\r\nI like it this way because it makes my header more readable than it will be if generated using javah. Once the headers are generated, i moved onto actual code.\r\n\r\nUnless you have multiple functions that share same number of input parameters and identical logic, it is hard to abstract the actual code using a macro. In anycase, i don\'t like macros with logic as it makes life hard to debug later. So, I had to write the full signature when implementing the function.\r\n```c\r\nJNIEXPORT void JNICALL Java_com_example_CameraPreview_gaussianBlur(\r\nJNIEnv *env,\r\njclass clazz,\r\njobject outBmp,\r\njByteArray inData,\r\njint width,\r\njint height)\r\n{\r\n// TODO: process the input and write the output\r\n}\r\n```\r\n\r\nWith appropriate inclusion of headers and putting together everything we have done so far, the header file and source file will look as below.\r\n\r\nprocessor.h\r\n-----------\r\n```c\r\n#ifndef __JNI_H__\r\n#define __JNI_H__\r\n#ifdef __cplusplus\r\n\r\n#include\r\n#include &lt;android/bitmap.h&gt; // This header will enable us to read bitmap objects\r\n#include &lt;android/log.h&gt; // This header will enable us to print messages from jni functions\r\n\r\n#define app_name \"JNIProcessor\"\r\n#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, app_name, __VA_ARGS__))\r\n#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, app_name, __VA_ARGS__))\r\n#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, app_name, __VA_ARGS__))\r\nextern \"C\" {\r\n#endif\r\n\r\n#define DECLARE(returnType,fullClassName,func,...) \\\r\nJNIEXPORT returnType JNICALL Java_##fullClassName##_##func(JNIEnv *env, jclass clazz,__VA_ARGS__);\r\n\r\nDECLARE(void,com_example_CameraPreview,gaussianBlur,jobject outBmp, jbyteArray inData, jint width, jint height)\r\n\r\n#ifdef __cplusplus\r\n}\r\n#endif\r\n\r\n#endif //__JNI_H__\r\n```\r\nI have included couple of extra android related headers which are required to read bitmap files and print debug messages from jni routines. The c-string pointed by macro `app_name` can be used to prune the output of command `adb logcat` to get only the messages that are associated with our jni routines. All you would need to do is to pass on the value of `app_name` to adb as an option as shown below.\r\n```bash\r\nadb logcat -s \"JNIProcessor\"\r\n```\r\nThis is quite useful when you are debugging problems that are related to accuracy of results.\r\n\r\nNext comes the cpp file. I have added more skeleton code that is required to get to a stage when you have access to the image data. It includes some standard andoird NDK library calls:\r\n* `AndroidBitmap_getInfo` - used to get bitmap details like width, height, stride, format.\r\n* `AndroidBitmap_lockPixels` - used to get a pointer to the memory location of image data. Once a lockPixels is called, it has to be followed by a unlockPixels at some point later in the code. Probably creates a copy of original bitmap data which the jvm needs to free up when we are done using it.\r\n* `GetPrimitiveArrayCritical` - As the name suggets, this is some kind of performance critical call. Hence, we should take care of the code that runs between a Get and Release calls runs as fast as possible and doesn\'t stall execution. As per [Oracle\'s java documenatation](http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/functions.html), a VM may temporarily disable garbage collection when the native code is holding a pointer to an array obtained via GetPrimitiveArrayCritical. So, just be careful when you use this function.\r\n* `ReleasePrimitiveArrayCritical` - used to release the memory space requested by previous GetPrimitiveArrayCritical. call.\r\n* `AndroidBitmap_unlockPixels` - used to release memory space used by a previous lockPixels call.\r\n\r\nThere are couple of other functions that are not related to JNI.\r\n* `throwJavaException` - convenience function used to throw java exceptions from within jni routines.\r\n* `blur_helper` - helper function that converts nv21 format to rgba8888 and does blur operation on the converted data.\r\n\r\nprocessor.cpp\r\n-------------\r\n```c\r\n#include \"processor.h\"\r\n\r\n#include\r\n#include\r\n#include\r\n\r\nbool throwJavaException(JNIEnv *env,std::string method_name,std::string exception_msg, int errorCode=0)\r\n{\r\nchar buf[8];\r\nsprintf(buf,\"%d\",errorCode);\r\nstd::string code(buf);\r\n\r\nstd::string msg = \"@\" + method_name + \": \" + exception_msg + \" \";\r\nif(errorCode!=0) msg += code;\r\n\r\njclass generalExp = env-&gt;FindClass(\"java/lang/Exception\");\r\nif (generalExp != 0) {\r\nenv-&gt;ThrowNew(generalExp, msg.c_str());\r\nreturn true;\r\n}\r\nreturn false;\r\n}\r\n\r\nvoid blur_helper(uint32_t* out, int osize, uint8_t* in, int isize, int w, int h)\r\n{\r\nuint32_t* tmp = new uint32_t[osize];\r\nconvertNV21toRGBA8888(tmp,in,w,h);\r\ngblur(out,tmp,w,h);\r\ndelete[] tmp;\r\n}\r\n\r\nJNIEXPORT void JNICALL Java_com_example_CameraPreview_gaussianBlur(\r\nJNIEnv *env,\r\njclass clazz,\r\njobject outBmp,\r\njByteArray inData,\r\njint width,\r\njint height)\r\n{\r\nint outsz = width*height;\r\nint insz = outsz + outsz/2;\r\nAndroidBitmapInfo bmpInfo;\r\nif (AndroidBitmap_getInfo(env, outBmp, &amp;bmpInfo) &lt; 0) {\r\nthrowJavaException(env,\"gaussianBlur\",\"Error retrieving bitmap meta data\");\r\nreturn;\r\n}\r\nif (bmpInfo.format != ANDROID_BITMAP_FORMAT_RGBA_8888) {\r\nthrowJavaException(env,\"gaussianBlur\",\"Expecting RGBA_8888 format\");\r\nreturn;\r\n}\r\nuint32_t* bmpContent;\r\nif (AndroidBitmap_lockPixels(env, outBmp,(void**)&amp;bmpContent) &lt; 0) { throwJavaException(env,\"gaussianBlur\",\"Unable to lock bitmap pixels\"); return; } jbyte* inPtr = (jbyte*)env-&gt;GetPrimitiveArrayCritical(inData, 0);\r\nif (inPtr == NULL) {\r\nthrowJavaException(env,\"gaussianBlur\",\"NV21 byte stream getPointer returned NULL\");\r\nreturn;\r\n}\r\n\r\nblur_helper(bmpContent,outsz,inPtr,insz,width,height);\r\n\r\n// This is absolutely neccessary before calling any other JNI function\r\nenv-&gt;ReleasePrimitiveArrayCritical(inData,inPtr,0);\r\nAndroidBitmap_unlockPixels(env, outBmp);\r\n}\r\n```\r\nA navie implementation of gaussian blur for function `gblur` can be done very easily using a for loop.\r\n\r\nI will cover the function `convertNV21toRGBA8888` in a future post. Will try to do two versions\r\n* pure c method\r\n* opencl kernel for Snapdragon mobile device\r\n\r\nBuild (for Linux)\r\n=================\r\nblah blah blah, i can\'t use raw code!. Lets build it. Android-ndk provides a very useful tool `ndk-build`. We need to setup some stuff to run the build command `ndk-build`.\r\n\r\n0. Do `mkdir -p ~/jni_droid_test` OR Go to root folder of your android application.\r\n1. Ensure android-ndk installed and environment variable `ANDROID_NDK` is pointing to ndk installation root.\r\n2. Ensure environment variable `PATH` has the path `$ANDROID_NDK` appened to it.\r\n3. Do `mkdir -p ~/jni_droid_test/jni`\r\n4. Do `touch Android.mk and Application.mk` and prepare the content of the files as directed below.\r\n5. Do `ndk-build` from `~/jni_droid_test`\r\n\r\nAndroid.mk\r\n----------\r\n```bash\r\nLOCAL_PATH := $(call my-dir)\r\ninclude $(CLEAR_VARS)\r\nLOCAL_MODULE := JNIProcessor\r\nLOCAL_ARM_MODE := arm\r\nLOCAL_SRC_FILES := processor.cpp\r\nLOCAL_CPPFLAGS := -fexceptions\r\nLOCAL_LDLIBS := -ljnigraphics -llog\r\ninclude $(BUILD_SHARED_LIBRARY)\r\n```\r\n`LOCAL_MODULE := JNIProcessor` sets the name of the shared library we are going to build. `LOCAL_ARM_MODE := arm` declares that library should be built for 32-bit ARM architecture instead of the 16-bit default. `LOCAL_SRC_FILES` variables should point to all the source files we want to compile, in our case processor.cpp. `LOCAL_CPPFLAGS` declares that we would be using c++ exceptions in our code. The flags `-ljnigraphics`, `--llog` are used for accessing bitmap, print functions respectively. Finally, the line `include $(BUILD_SHARED_LIBRARY)` that says we want a shared library. In case you want a static version, do the following `include $(BUILD_STATIC_LIBRARY)`\r\n\r\nApplication.mk\r\n--------------\r\n```bash\r\nAPP_OPTIM := release\r\nAPP_STL := gnustl_static\r\nAPP_PLATFORM:= android-14\r\n```\r\n`APP_STL` is used to state that the library we are going to build will require static version of GNU STL. `APP_PLATFORM` should be your target-platorm. `APP_OPTIM` declares that this is a release version of the library. Should you need a debug version, just do `APP_OPTIM := debug`.\r\n\r\nUse the shared library\r\n======================\r\nNow, all you need to do to use the function would be load the library when java class is loaded by JVM and declare the gaussianBlur function as member of the corresponding class. For example, say we have a java class shown as below\r\n```java\r\npackage com.example;\r\n\r\npublic class CameraPreview extends SurfaceView implements SurfaceHolder.Callback, Camera.PreviewCallback {\r\nstatic {\r\nSystem.loadLibrary(\"JNIProcessor\");\r\n}\r\nprivate void gaussianBlur(Bitmap out, byte[] in, int width, int height);\r\n\r\nprivate Bitmap mTexture;\r\nprivate int width, height;\r\n\r\n////TODO: constructors (setup configuration of mTexture like width and height)\r\n////TODO: Code for surfaceCreated(), surfaceChanged(), surfaceDestroyed()\r\n\r\npublic void onPreviewFrame(byte[] data, Camera camera) {\r\ngaussianBlur(mTexture,data,width,height);\r\ninvalidate();\r\n}\r\n\r\n////TODO: Code onDraw() method that can draw the processed bitmap on to canvas\r\n}\r\n```','Working with JNI for Android','','inherit','open','closed','','5574-revision-v1','','','2014-05-15 22:37:07','2014-05-15 22:37:07','',5574,'http://sandbox.arrayfire.com/5574-revision-v1/',0,'revision','',0),(5576,17729,'2014-05-15 22:41:30','2014-05-15 22:41:30','Code\r\n====\r\nI used to use java (jython to be precise) when i used to work as WebSphere (Yes, an IBM product) administrator a really long time back. After such a long gap, i had to look into java again when i needed to do some native level programming for android app.\r\n\r\nMy final target was to do some image processing on camera feed. Out of habit (c/c++), i wanted to start with a header to declare the methods that i saw i would need later. Searching through google gave me couple of options on how to generate the required headers.\r\n<ul>\r\n	<li>Use <a href=\"http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javah.html\">javah</href> and generate</li>\r\n	<li>Write them yourself</li>\r\n</ul>\r\nI took the second route. After a bit of playing with the tedious naming convention for jni functions, i use the following macro to create my function declarations.\r\n```c\r\n#define DECLARE(returnType,fullClassName,func,...) \\\r\nJNIEXPORT returnType JNICALL Java_##fullClassName##_##func(JNIEnv *env, jclass clazz,__VA_ARGS__);\r\n```\r\n\r\nAn example declaration of function that takes [NV21](http://www.fourcc.org/yuv.php#NV21) format data as input and writes output to bitmap will be as follows:\r\n```c\r\nDECLARE(void,com_example_CameraPreview,gaussianBlur,jobject outBmp, jbyteArray inData, jint width, jint height)\r\n```\r\n\r\nI like it this way because it makes my header more readable than it will be if generated using javah. Once the headers are generated, i moved onto actual code.\r\n\r\nUnless you have multiple functions that share same number of input parameters and identical logic, it is hard to abstract the actual code using a macro. In anycase, i don\'t like macros with logic as it makes life hard to debug later. So, I had to write the full signature when implementing the function.\r\n```c\r\nJNIEXPORT void JNICALL Java_com_example_CameraPreview_gaussianBlur(\r\nJNIEnv *env,\r\njclass clazz,\r\njobject outBmp,\r\njByteArray inData,\r\njint width,\r\njint height)\r\n{\r\n// TODO: process the input and write the output\r\n}\r\n```\r\n\r\nWith appropriate inclusion of headers and putting together everything we have done so far, the header file and source file will look as below.\r\n\r\nprocessor.h\r\n-----------\r\n```c\r\n#ifndef __JNI_H__\r\n#define __JNI_H__\r\n#ifdef __cplusplus\r\n\r\n#include\r\n#include &lt;android/bitmap.h&gt; // This header will enable us to read bitmap objects\r\n#include &lt;android/log.h&gt; // This header will enable us to print messages from jni functions\r\n\r\n#define app_name \"JNIProcessor\"\r\n#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, app_name, __VA_ARGS__))\r\n#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, app_name, __VA_ARGS__))\r\n#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, app_name, __VA_ARGS__))\r\nextern \"C\" {\r\n#endif\r\n\r\n#define DECLARE(returnType,fullClassName,func,...) \\\r\nJNIEXPORT returnType JNICALL Java_##fullClassName##_##func(JNIEnv *env, jclass clazz,__VA_ARGS__);\r\n\r\nDECLARE(void,com_example_CameraPreview,gaussianBlur,jobject outBmp, jbyteArray inData, jint width, jint height)\r\n\r\n#ifdef __cplusplus\r\n}\r\n#endif\r\n\r\n#endif //__JNI_H__\r\n```\r\nI have included couple of extra android related headers which are required to read bitmap files and print debug messages from jni routines. The c-string pointed by macro `app_name` can be used to prune the output of command `adb logcat` to get only the messages that are associated with our jni routines. All you would need to do is to pass on the value of `app_name` to adb as an option as shown below.\r\n```bash\r\nadb logcat -s \"JNIProcessor\"\r\n```\r\nThis is quite useful when you are debugging problems that are related to accuracy of results.\r\n\r\nNext comes the cpp file. I have added more skeleton code that is required to get to a stage when you have access to the image data. It includes some standard andoird NDK library calls:\r\n* `AndroidBitmap_getInfo` - used to get bitmap details like width, height, stride, format.\r\n* `AndroidBitmap_lockPixels` - used to get a pointer to the memory location of image data. Once a lockPixels is called, it has to be followed by a unlockPixels at some point later in the code. Probably creates a copy of original bitmap data which the jvm needs to free up when we are done using it.\r\n* `GetPrimitiveArrayCritical` - As the name suggets, this is some kind of performance critical call. Hence, we should take care of the code that runs between a Get and Release calls runs as fast as possible and doesn\'t stall execution. As per [Oracle\'s java documenatation](http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/functions.html), a VM may temporarily disable garbage collection when the native code is holding a pointer to an array obtained via GetPrimitiveArrayCritical. So, just be careful when you use this function.\r\n* `ReleasePrimitiveArrayCritical` - used to release the memory space requested by previous GetPrimitiveArrayCritical. call.\r\n* `AndroidBitmap_unlockPixels` - used to release memory space used by a previous lockPixels call.\r\n\r\nThere are couple of other functions that are not related to JNI.\r\n* `throwJavaException` - convenience function used to throw java exceptions from within jni routines.\r\n* `blur_helper` - helper function that converts nv21 format to rgba8888 and does blur operation on the converted data.\r\n\r\nprocessor.cpp\r\n-------------\r\n```c\r\n#include \"processor.h\"\r\n\r\n#include\r\n#include\r\n#include\r\n\r\nbool throwJavaException(JNIEnv *env,std::string method_name,std::string exception_msg, int errorCode=0)\r\n{\r\nchar buf[8];\r\nsprintf(buf,\"%d\",errorCode);\r\nstd::string code(buf);\r\n\r\nstd::string msg = \"@\" + method_name + \": \" + exception_msg + \" \";\r\nif(errorCode!=0) msg += code;\r\n\r\njclass generalExp = env-&gt;FindClass(\"java/lang/Exception\");\r\nif (generalExp != 0) {\r\nenv-&gt;ThrowNew(generalExp, msg.c_str());\r\nreturn true;\r\n}\r\nreturn false;\r\n}\r\n\r\nvoid blur_helper(uint32_t* out, int osize, uint8_t* in, int isize, int w, int h)\r\n{\r\nuint32_t* tmp = new uint32_t[osize];\r\nconvertNV21toRGBA8888(tmp,in,w,h);\r\ngblur(out,tmp,w,h);\r\ndelete[] tmp;\r\n}\r\n\r\nJNIEXPORT void JNICALL Java_com_example_CameraPreview_gaussianBlur(\r\nJNIEnv *env,\r\njclass clazz,\r\njobject outBmp,\r\njByteArray inData,\r\njint width,\r\njint height)\r\n{\r\nint outsz = width*height;\r\nint insz = outsz + outsz/2;\r\nAndroidBitmapInfo bmpInfo;\r\nif (AndroidBitmap_getInfo(env, outBmp, &amp;bmpInfo) &lt; 0) {\r\nthrowJavaException(env,\"gaussianBlur\",\"Error retrieving bitmap meta data\");\r\nreturn;\r\n}\r\nif (bmpInfo.format != ANDROID_BITMAP_FORMAT_RGBA_8888) {\r\nthrowJavaException(env,\"gaussianBlur\",\"Expecting RGBA_8888 format\");\r\nreturn;\r\n}\r\nuint32_t* bmpContent;\r\nif (AndroidBitmap_lockPixels(env, outBmp,(void**)&amp;bmpContent) &lt; 0) { throwJavaException(env,\"gaussianBlur\",\"Unable to lock bitmap pixels\"); return; } jbyte* inPtr = (jbyte*)env-&gt;GetPrimitiveArrayCritical(inData, 0);\r\nif (inPtr == NULL) {\r\nthrowJavaException(env,\"gaussianBlur\",\"NV21 byte stream getPointer returned NULL\");\r\nreturn;\r\n}\r\n\r\nblur_helper(bmpContent,outsz,inPtr,insz,width,height);\r\n\r\n// This is absolutely neccessary before calling any other JNI function\r\nenv-&gt;ReleasePrimitiveArrayCritical(inData,inPtr,0);\r\nAndroidBitmap_unlockPixels(env, outBmp);\r\n}\r\n```\r\nA navie implementation of gaussian blur for function `gblur` can be done very easily using a for loop.\r\n\r\nI will cover the function `convertNV21toRGBA8888` in a future post. Will try to do two versions\r\n* pure c method\r\n* opencl kernel for Snapdragon mobile device\r\n\r\nBuild (for Linux)\r\n=================\r\nblah blah blah, i can\'t use raw code!. Lets build it. Android-ndk provides a very useful tool `ndk-build`. We need to setup some stuff to run the build command `ndk-build`.\r\n\r\n0. Do `mkdir -p ~/jni_droid_test` OR Go to root folder of your android application.\r\n1. Ensure android-ndk installed and environment variable `ANDROID_NDK` is pointing to ndk installation root.\r\n2. Ensure environment variable `PATH` has the path `$ANDROID_NDK` appened to it.\r\n3. Do `mkdir -p ~/jni_droid_test/jni`\r\n4. Do `touch Android.mk and Application.mk` and prepare the content of the files as directed below.\r\n5. Do `ndk-build` from `~/jni_droid_test`\r\n\r\nAndroid.mk\r\n----------\r\n```bash\r\nLOCAL_PATH := $(call my-dir)\r\ninclude $(CLEAR_VARS)\r\nLOCAL_MODULE := JNIProcessor\r\nLOCAL_ARM_MODE := arm\r\nLOCAL_SRC_FILES := processor.cpp\r\nLOCAL_CPPFLAGS := -fexceptions\r\nLOCAL_LDLIBS := -ljnigraphics -llog\r\ninclude $(BUILD_SHARED_LIBRARY)\r\n```\r\n`LOCAL_MODULE := JNIProcessor` sets the name of the shared library we are going to build. `LOCAL_ARM_MODE := arm` declares that library should be built for 32-bit ARM architecture instead of the 16-bit default. `LOCAL_SRC_FILES` variables should point to all the source files we want to compile, in our case processor.cpp. `LOCAL_CPPFLAGS` declares that we would be using c++ exceptions in our code. The flags `-ljnigraphics`, `--llog` are used for accessing bitmap, print functions respectively. Finally, the line `include $(BUILD_SHARED_LIBRARY)` that says we want a shared library. In case you want a static version, do the following `include $(BUILD_STATIC_LIBRARY)`\r\n\r\nApplication.mk\r\n--------------\r\n```bash\r\nAPP_OPTIM := release\r\nAPP_STL := gnustl_static\r\nAPP_PLATFORM:= android-14\r\n```\r\n`APP_STL` is used to state that the library we are going to build will require static version of GNU STL. `APP_PLATFORM` should be your target-platorm. `APP_OPTIM` declares that this is a release version of the library. Should you need a debug version, just do `APP_OPTIM := debug`.\r\n\r\nUse the shared library\r\n======================\r\nNow, all you need to do to use the function would be load the library when java class is loaded by JVM and declare the gaussianBlur function as member of the corresponding class. For example, say we have a java class shown as below\r\n```java\r\npackage com.example;\r\n\r\npublic class CameraPreview extends SurfaceView implements SurfaceHolder.Callback, Camera.PreviewCallback {\r\nstatic {\r\nSystem.loadLibrary(\"JNIProcessor\");\r\n}\r\nprivate void gaussianBlur(Bitmap out, byte[] in, int width, int height);\r\n\r\nprivate Bitmap mTexture;\r\nprivate int width, height;\r\n\r\n////TODO: constructors (setup configuration of mTexture like width and height)\r\n////TODO: Code for surfaceCreated(), surfaceChanged(), surfaceDestroyed()\r\n\r\npublic void onPreviewFrame(byte[] data, Camera camera) {\r\ngaussianBlur(mTexture,data,width,height);\r\ninvalidate();\r\n}\r\n\r\n////TODO: Code onDraw() method that can draw the processed bitmap on to canvas\r\n}\r\n```','Working with JNI for Android','','inherit','open','closed','','5574-revision-v1','','','2014-05-15 22:41:30','2014-05-15 22:41:30','',5574,'http://sandbox.arrayfire.com/5574-revision-v1/',0,'revision','',0),