(9813,6,'2018-05-04 13:41:48','2018-05-04 17:41:48','Today we are announcing the release of ArrayFire version 3.6. The official binary installers can be downloaded here:\r\n\r\nhttps://sandbox.arrayfire.com/downloads\r\n\r\nWe added several new features that improve the performance and usability of the ArrayFire library. The main features are:\r\n<ul>\r\n 	<li>Support for batched matrix multiply</li>\r\n 	<li>Added the topk function</li>\r\n 	<li>Added the anisotropic diffusion filter</li>\r\n</ul>\r\nWe have also spent a significant amount of effort improving the internals of the library. The build system is significantly improved and organized.\r\n<h4>Batched Matrix Multiplication</h4>\r\nThe new batch functionality allows you to perform several matrix multiplication operations in one call of matmul. You might want to call this function if you are performing multiple smaller matrix multiplication operations. Here is an example:\r\n<pre class=\"lang:c++ decode:true\" title=\"Batched matrix multiply\">// Create a 3x3x2 matrix\r\narray a = randu(3, 3, 2);\r\narray b = randu(3, 3, 2);\r\n\r\narray c = matmul(a, b);\r\n</pre>\r\nThe example above is creating two 3 by 3 matrices as a 3x3x2 volume for a and b. The matmul function then multiplies the slice of a volume with the corresponding slice in b. With this approach you can reach higher efficiencies with smaller matrices. Here is a benchmark for batched matmul on the NVIDIA Tesla V100.\r\n\r\n[caption id=\"attachment_9793\" align=\"aligncenter\" width=\"646\"]<a href=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/chart-1.png\"><img class=\"size-full wp-image-9793\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/chart-1.png\" alt=\"Batched Matrix Multiplication Performance\" width=\"646\" height=\"430\" /></a> Batched Matrix Multiplication Performance[/caption]\r\n\r\nThe batched matrix multiplication allows you to reach the maximum performance of your GPU with smaller matrix sizes. Larger matrices do not necessarily need to be batched to fully utilize the GPU.\r\n<h4>TopK</h4>\r\nTopk is another exciting function that was added in this release. This function returns the top k maximum or minimum values in a vector or matrix along with their indices. Here is an example:\r\n<pre class=\"lang:c++ decode:true\" title=\"Topk Example\">array in = randu(10, 10); // Create a 10x10 matrix\r\n\r\narray idx, vals;\r\ntopk(vals, idx, in, 3); // Get the top 3 values of a</pre>\r\nIn this example we create a 10x8 matrix which will be passed into the topk function. This function will return two matrices of size 3x8. The first matrix is composed of the top 3 maximum values. The second matrix is made up of the index of those values in the original matrix along that particular column.\r\n<pre class=\"lang:default decode:true\">in\r\n[10 8 1 1]\r\n 0.6010 0.1583 0.6755 0.5143 0.7917 0.9092 0.5970 0.9048 \r\n 0.0278 0.3712 0.6105 0.3670 0.1654 0.8865 0.9594 0.0198 \r\n 0.9806 0.3543 0.5232 0.3336 0.8657 0.9676 0.2323 0.4436 \r\n 0.2126 0.6450 0.5567 0.0363 0.3766 0.1425 0.9623 0.6808 \r\n 0.0655 0.9675 0.7896 0.5349 0.7331 0.5137 0.8578 0.6636 \r\n 0.5497 0.3636 0.8966 0.0123 0.2522 0.6484 0.0192 0.8738 \r\n 0.2864 0.4165 0.0536 0.3988 0.9644 0.6353 0.7191 0.3954 \r\n 0.3410 0.5814 0.5775 0.9787 0.4711 0.7449 0.4035 0.5277 \r\n 0.7509 0.8962 0.2908 0.2308 0.3637 0.4391 0.4692 0.3592 \r\n 0.4105 0.3712 0.9941 0.6244 0.9643 0.6982 0.3353 0.8567 \r\n\r\nvals\r\n[3 8 1 1]\r\n 0.9806 0.9675 0.9941 0.9787 0.9644 0.9676 0.9623 0.9048 \r\n 0.7509 0.8962 0.8966 0.6244 0.9643 0.9092 0.9594 0.8738 \r\n 0.6010 0.6450 0.7896 0.5349 0.8657 0.8865 0.8578 0.8567 \r\nidx\r\n[3 8 1 1]\r\n 2 4 9 7 6 2 3 0 \r\n 8 8 5 9 9 0 1 5 \r\n 0 3 4 4 2 1 4 9 \r\n\r\n</pre>\r\nThe topk function is optimized for small sizes of k(&lt;32). You could have implemented something like this in older versions of ArrayFire using a combination of sort and indexing. Here are some benchmarks comparing the two approaches.\r\n\r\n<img src=\"data:image/png;base64,[encoded data, 41732 characters]\" />\r\n\r\nFor smaller sizes, topk is getting a 23x speedup over the sort and indexing approach. This test was performed on an NVIDIA Quadro GV100 GPU. Note that the runtimes are on a log scale.\r\n<h4>Anisotropic Smoothing Filter</h4>\r\nAnisotropic smoothing filter is an edge-preserving smoothing filter. It smooths out minor intensity variations all the while enhancing edges and removing noise. A more detailed explanation of what this filter does internally is explained in the <a href=\"http://arrayfire.org/docs/group__image__func__anisotropic__diffusion.htm\" target=\"_blank\">documentation</a>. Given below is the sample output from this filter that illustrates how edges are better preserved in comparison to normal isotropic smoothing techniques, such as gaussian blurring.\r\n\r\n[caption id=\"attachment_9803\" align=\"aligncenter\" width=\"742\"]<a href=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/anisotropic_diffusion_sample_v36_post.png\" target=\"_blank\"><img class=\"wp-image-9803 size-large\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/anisotropic_diffusion_sample_v36_post-1024x906.png\" alt=\"anisotropic_diffusion_sample_v36_post\" width=\"742\" height=\"656\" /></a> Image 1: Original Input(a), Prewitt edge filter(b), Anisotropically smoothed input(c), Gradient after gaussian blur(d), Gradient on original input (e), Gradient after diffusion(f)[/caption]\r\n\r\nNotice the edge details in images 1(b) &amp; 1(e). There are lot of extraneous details mostly that come out of noise. Even after we apply gaussian blur (more than once) on the original input, some of the required details may also go away along with noise as illustrated in the image 1(d). Anisotropic diffusion comes to the rescue in such cases. Notice the image 1(c) in comparison to 1(a). All minor/subtle variations in texture are smoothed out while preserving the edges as you can see in gradient of diffused image in 1(f). Feel free to play with the parameters and kindly notify us if there are unexpected behaviors.\r\n<h4>Other Improvements</h4>\r\nWe have also improved the performance of our JIT. We have moved the shift and select functions into JIT. We also reduced the number of mutex locks and improved the thread safety of ArrayFire.\r\n\r\nIn addition to the functions above, we have made several improvements which will increase the usability of the library. Our CMake config script now uses import targets instead of plain variables to add flags. If you are using CMake you can now compile and link your application with ArrayFire like this:\r\n<pre class=\"lang:default decode:true\" title=\"Linking with ArrayFire\">find_package(ArrayFire)\r\n\r\nadd_executable(FantasticApp main.cpp)\r\ntarget_link_library(FantasticApp PRIVATE ArrayFire::afopencl)</pre>\r\nThis will automatically add the correct compiler and linker flags when you compile your application.\r\n\r\nWe have also improved the building from source experience ArrayFire. Internally we have employed Modern CMake techniques and rewrote most of the build scripts to make it easy to maintain and read.\r\n\r\nThe period and quality of the random number generator has been improved, thanks to Ralf Stubner. He has also added several unit tests to keep track of the quality of the random number generator in the future. Adrien Vincent added a few color maps that were available in our Forge library but were missing from ArrayFire. Several other contributors helped us fix errors in our documentation and build system.\r\n\r\nWe are excited to finally release ArrayFire v3.6. We would like to thank our community for supporting us and helping us improve ArrayFire. We are looking forward to more community participation for the future releases.\r\n\r\n[custom_headline type=\"left\" level=\"h4\" looks_like=\"h4\"]Dedicated Support and Coding Services[/custom_headline]\r\n\r\nArrayFire is open source and always will be. For those who want dedicated support or custom function development, we offer a variety of <a href=\"http://sandbox.arrayfire.com/support/\">support packages</a>.\r\n\r\nArrayFire also serves many clients through consulting and <a href=\"http://sandbox.arrayfire.com/consulting/\">coding services</a>, algorithm development, porting code, and <a href=\"https://sandbox.arrayfire.com/training/\">training courses</a> for developers. Contact us at <a href=\"mailto:sales@arrayfire.com\">sales@arrayfire.com</a> or <a href=\"http://meetme.so/arrayfire\">schedule</a> a free technical consultation to learn more about our consulting and coding services.','ArrayFire v3.6 Released','','inherit','closed','closed','','9783-revision-v1','','','2018-05-04 13:41:48','2018-05-04 17:41:48','',9783,'https://sandbox.arrayfire.com/9783-revision-v1/',0,'revision','',0),(9814,6,'2018-05-04 13:44:24','2018-05-04 17:44:24','Today we are announcing the release of ArrayFire version 3.6. The official binary installers can be downloaded <a href=\"https://sandbox.arrayfire.com/download/\">here</a>.\r\n\r\nWe added several new features that improve the performance and usability of the ArrayFire library. The main features are:\r\n<ul>\r\n 	<li>Support for batched matrix multiply</li>\r\n 	<li>Added the topk function</li>\r\n 	<li>Added the anisotropic diffusion filter</li>\r\n</ul>\r\nWe have also spent a significant amount of effort improving the internals of the library. The build system is significantly improved and organized.\r\n<h4>Batched Matrix Multiplication</h4>\r\nThe new batch functionality allows you to perform several matrix multiplication operations in one call of matmul. You might want to call this function if you are performing multiple smaller matrix multiplication operations. Here is an example:\r\n<pre class=\"lang:c++ decode:true\" title=\"Batched matrix multiply\">// Create a 3x3x2 matrix\r\narray a = randu(3, 3, 2);\r\narray b = randu(3, 3, 2);\r\n\r\narray c = matmul(a, b);\r\n</pre>\r\nThe example above is creating two 3 by 3 matrices as a 3x3x2 volume for a and b. The matmul function then multiplies the slice of a volume with the corresponding slice in b. With this approach you can reach higher efficiencies with smaller matrices. Here is a benchmark for batched matmul on the NVIDIA Tesla V100.\r\n\r\n[caption id=\"attachment_9793\" align=\"aligncenter\" width=\"646\"]<a href=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/chart-1.png\"><img class=\"size-full wp-image-9793\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/chart-1.png\" alt=\"Batched Matrix Multiplication Performance\" width=\"646\" height=\"430\" /></a> Batched Matrix Multiplication Performance[/caption]\r\n\r\nThe batched matrix multiplication allows you to reach the maximum performance of your GPU with smaller matrix sizes. Larger matrices do not necessarily need to be batched to fully utilize the GPU.\r\n<h4>TopK</h4>\r\nTopk is another exciting function that was added in this release. This function returns the top k maximum or minimum values in a vector or matrix along with their indices. Here is an example:\r\n<pre class=\"lang:c++ decode:true\" title=\"Topk Example\">array in = randu(10, 10); // Create a 10x10 matrix\r\n\r\narray idx, vals;\r\ntopk(vals, idx, in, 3); // Get the top 3 values of a</pre>\r\nIn this example we create a 10x8 matrix which will be passed into the topk function. This function will return two matrices of size 3x8. The first matrix is composed of the top 3 maximum values. The second matrix is made up of the index of those values in the original matrix along that particular column.\r\n<pre class=\"lang:default decode:true\">in\r\n[10 8 1 1]\r\n 0.6010 0.1583 0.6755 0.5143 0.7917 0.9092 0.5970 0.9048 \r\n 0.0278 0.3712 0.6105 0.3670 0.1654 0.8865 0.9594 0.0198 \r\n 0.9806 0.3543 0.5232 0.3336 0.8657 0.9676 0.2323 0.4436 \r\n 0.2126 0.6450 0.5567 0.0363 0.3766 0.1425 0.9623 0.6808 \r\n 0.0655 0.9675 0.7896 0.5349 0.7331 0.5137 0.8578 0.6636 \r\n 0.5497 0.3636 0.8966 0.0123 0.2522 0.6484 0.0192 0.8738 \r\n 0.2864 0.4165 0.0536 0.3988 0.9644 0.6353 0.7191 0.3954 \r\n 0.3410 0.5814 0.5775 0.9787 0.4711 0.7449 0.4035 0.5277 \r\n 0.7509 0.8962 0.2908 0.2308 0.3637 0.4391 0.4692 0.3592 \r\n 0.4105 0.3712 0.9941 0.6244 0.9643 0.6982 0.3353 0.8567 \r\n\r\nvals\r\n[3 8 1 1]\r\n 0.9806 0.9675 0.9941 0.9787 0.9644 0.9676 0.9623 0.9048 \r\n 0.7509 0.8962 0.8966 0.6244 0.9643 0.9092 0.9594 0.8738 \r\n 0.6010 0.6450 0.7896 0.5349 0.8657 0.8865 0.8578 0.8567 \r\nidx\r\n[3 8 1 1]\r\n 2 4 9 7 6 2 3 0 \r\n 8 8 5 9 9 0 1 5 \r\n 0 3 4 4 2 1 4 9 \r\n\r\n</pre>\r\nThe topk function is optimized for small sizes of k(&lt;32). You could have implemented something like this in older versions of ArrayFire using a combination of sort and indexing. Here are some benchmarks comparing the two approaches.\r\n\r\n<img src=\"data:image/png;base64,[encoded data, 41732 characters]\" />\r\n\r\nFor smaller sizes, topk is getting a 23x speedup over the sort and indexing approach. This test was performed on an NVIDIA Quadro GV100 GPU. Note that the runtimes are on a log scale.\r\n<h4>Anisotropic Smoothing Filter</h4>\r\nAnisotropic smoothing filter is an edge-preserving smoothing filter. It smooths out minor intensity variations all the while enhancing edges and removing noise. A more detailed explanation of what this filter does internally is explained in the <a href=\"http://arrayfire.org/docs/group__image__func__anisotropic__diffusion.htm\" target=\"_blank\">documentation</a>. Given below is the sample output from this filter that illustrates how edges are better preserved in comparison to normal isotropic smoothing techniques, such as gaussian blurring.\r\n\r\n[caption id=\"attachment_9803\" align=\"aligncenter\" width=\"742\"]<a href=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/anisotropic_diffusion_sample_v36_post.png\" target=\"_blank\"><img class=\"wp-image-9803 size-large\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/anisotropic_diffusion_sample_v36_post-1024x906.png\" alt=\"anisotropic_diffusion_sample_v36_post\" width=\"742\" height=\"656\" /></a> Image 1: Original Input(a), Prewitt edge filter(b), Anisotropically smoothed input(c), Gradient after gaussian blur(d), Gradient on original input (e), Gradient after diffusion(f)[/caption]\r\n\r\nNotice the edge details in images 1(b) &amp; 1(e). There are lot of extraneous details mostly that come out of noise. Even after we apply gaussian blur (more than once) on the original input, some of the required details may also go away along with noise as illustrated in the image 1(d). Anisotropic diffusion comes to the rescue in such cases. Notice the image 1(c) in comparison to 1(a). All minor/subtle variations in texture are smoothed out while preserving the edges as you can see in gradient of diffused image in 1(f). Feel free to play with the parameters and kindly notify us if there are unexpected behaviors.\r\n<h4>Other Improvements</h4>\r\nWe have also improved the performance of our JIT. We have moved the shift and select functions into JIT. We also reduced the number of mutex locks and improved the thread safety of ArrayFire.\r\n\r\nIn addition to the functions above, we have made several improvements which will increase the usability of the library. Our CMake config script now uses import targets instead of plain variables to add flags. If you are using CMake you can now compile and link your application with ArrayFire like this:\r\n<pre class=\"lang:default decode:true\" title=\"Linking with ArrayFire\">find_package(ArrayFire)\r\n\r\nadd_executable(FantasticApp main.cpp)\r\ntarget_link_library(FantasticApp PRIVATE ArrayFire::afopencl)</pre>\r\nThis will automatically add the correct compiler and linker flags when you compile your application.\r\n\r\nWe have also improved the building from source experience ArrayFire. Internally we have employed Modern CMake techniques and rewrote most of the build scripts to make it easy to maintain and read.\r\n\r\nThe period and quality of the random number generator has been improved, thanks to Ralf Stubner. He has also added several unit tests to keep track of the quality of the random number generator in the future. Adrien Vincent added a few color maps that were available in our Forge library but were missing from ArrayFire. Several other contributors helped us fix errors in our documentation and build system.\r\n\r\nWe are excited to finally release ArrayFire v3.6. We would like to thank our community for supporting us and helping us improve ArrayFire. We are looking forward to more community participation for the future releases.\r\n\r\n[custom_headline type=\"left\" level=\"h4\" looks_like=\"h4\"]Dedicated Support and Coding Services[/custom_headline]\r\n\r\nArrayFire is open source and always will be. For those who want dedicated support or custom function development, we offer a variety of <a href=\"http://sandbox.arrayfire.com/support/\">support packages</a>.\r\n\r\nArrayFire also serves many clients through consulting and <a href=\"http://sandbox.arrayfire.com/consulting/\">coding services</a>, algorithm development, porting code, and <a href=\"https://sandbox.arrayfire.com/training/\">training courses</a> for developers. Contact us at <a href=\"mailto:sales@arrayfire.com\">sales@arrayfire.com</a> or <a href=\"http://meetme.so/arrayfire\">schedule</a> a free technical consultation to learn more about our consulting and coding services.','ArrayFire v3.6 Released','','inherit','closed','closed','','9783-revision-v1','','','2018-05-04 13:44:24','2018-05-04 17:44:24','',9783,'https://sandbox.arrayfire.com/9783-revision-v1/',0,'revision','',0),(9815,6,'2018-05-04 13:46:31','2018-05-04 17:46:31','Today we are pleased to announce the release of ArrayFire version 3.6.  ArrayFire v3.6 can be downloaded from these locations:\r\n<ul>\r\n 	<li><a href=\"http://sandbox.arrayfire.com/download/\">Binaries</a></li>\r\n 	<li><a href=\"https://github.com/arrayfire\">Source code</a></li>\r\n</ul>\r\nWe added several new features that improve the performance and usability of the ArrayFire library. The main features are:\r\n<ul>\r\n 	<li>Support for batched matrix multiply</li>\r\n 	<li>Added the topk function</li>\r\n 	<li>Added the anisotropic diffusion filter</li>\r\n</ul>\r\nWe have also spent a significant amount of effort improving the internals of the library. The build system is significantly improved and organized.\r\n<h4>Batched Matrix Multiplication</h4>\r\nThe new batch functionality allows you to perform several matrix multiplication operations in one call of matmul. You might want to call this function if you are performing multiple smaller matrix multiplication operations. Here is an example:\r\n<pre class=\"lang:c++ decode:true\" title=\"Batched matrix multiply\">// Create a 3x3x2 matrix\r\narray a = randu(3, 3, 2);\r\narray b = randu(3, 3, 2);\r\n\r\narray c = matmul(a, b);\r\n</pre>\r\nThe example above is creating two 3 by 3 matrices as a 3x3x2 volume for a and b. The matmul function then multiplies the slice of a volume with the corresponding slice in b. With this approach you can reach higher efficiencies with smaller matrices. Here is a benchmark for batched matmul on the NVIDIA Tesla V100.\r\n\r\n[caption id=\"attachment_9793\" align=\"aligncenter\" width=\"646\"]<a href=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/chart-1.png\"><img class=\"size-full wp-image-9793\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/chart-1.png\" alt=\"Batched Matrix Multiplication Performance\" width=\"646\" height=\"430\" /></a> Batched Matrix Multiplication Performance[/caption]\r\n\r\nThe batched matrix multiplication allows you to reach the maximum performance of your GPU with smaller matrix sizes. Larger matrices do not necessarily need to be batched to fully utilize the GPU.\r\n<h4>TopK</h4>\r\nTopk is another exciting function that was added in this release. This function returns the top k maximum or minimum values in a vector or matrix along with their indices. Here is an example:\r\n<pre class=\"lang:c++ decode:true\" title=\"Topk Example\">array in = randu(10, 10); // Create a 10x10 matrix\r\n\r\narray idx, vals;\r\ntopk(vals, idx, in, 3); // Get the top 3 values of a</pre>\r\nIn this example we create a 10x8 matrix which will be passed into the topk function. This function will return two matrices of size 3x8. The first matrix is composed of the top 3 maximum values. The second matrix is made up of the index of those values in the original matrix along that particular column.\r\n<pre class=\"lang:default decode:true\">in\r\n[10 8 1 1]\r\n 0.6010 0.1583 0.6755 0.5143 0.7917 0.9092 0.5970 0.9048 \r\n 0.0278 0.3712 0.6105 0.3670 0.1654 0.8865 0.9594 0.0198 \r\n 0.9806 0.3543 0.5232 0.3336 0.8657 0.9676 0.2323 0.4436 \r\n 0.2126 0.6450 0.5567 0.0363 0.3766 0.1425 0.9623 0.6808 \r\n 0.0655 0.9675 0.7896 0.5349 0.7331 0.5137 0.8578 0.6636 \r\n 0.5497 0.3636 0.8966 0.0123 0.2522 0.6484 0.0192 0.8738 \r\n 0.2864 0.4165 0.0536 0.3988 0.9644 0.6353 0.7191 0.3954 \r\n 0.3410 0.5814 0.5775 0.9787 0.4711 0.7449 0.4035 0.5277 \r\n 0.7509 0.8962 0.2908 0.2308 0.3637 0.4391 0.4692 0.3592 \r\n 0.4105 0.3712 0.9941 0.6244 0.9643 0.6982 0.3353 0.8567 \r\n\r\nvals\r\n[3 8 1 1]\r\n 0.9806 0.9675 0.9941 0.9787 0.9644 0.9676 0.9623 0.9048 \r\n 0.7509 0.8962 0.8966 0.6244 0.9643 0.9092 0.9594 0.8738 \r\n 0.6010 0.6450 0.7896 0.5349 0.8657 0.8865 0.8578 0.8567 \r\nidx\r\n[3 8 1 1]\r\n 2 4 9 7 6 2 3 0 \r\n 8 8 5 9 9 0 1 5 \r\n 0 3 4 4 2 1 4 9 \r\n\r\n</pre>\r\nThe topk function is optimized for small sizes of k(&lt;32). You could have implemented something like this in older versions of ArrayFire using a combination of sort and indexing. Here are some benchmarks comparing the two approaches.\r\n\r\n<img src=\"data:image/png;base64,[encoded data, 41732 characters]\" />\r\n\r\nFor smaller sizes, topk is getting a 23x speedup over the sort and indexing approach. This test was performed on an NVIDIA Quadro GV100 GPU. Note that the runtimes are on a log scale.\r\n<h4>Anisotropic Smoothing Filter</h4>\r\nAnisotropic smoothing filter is an edge-preserving smoothing filter. It smooths out minor intensity variations all the while enhancing edges and removing noise. A more detailed explanation of what this filter does internally is explained in the <a href=\"http://arrayfire.org/docs/group__image__func__anisotropic__diffusion.htm\" target=\"_blank\">documentation</a>. Given below is the sample output from this filter that illustrates how edges are better preserved in comparison to normal isotropic smoothing techniques, such as gaussian blurring.\r\n\r\n[caption id=\"attachment_9803\" align=\"aligncenter\" width=\"742\"]<a href=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/anisotropic_diffusion_sample_v36_post.png\" target=\"_blank\"><img class=\"wp-image-9803 size-large\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/anisotropic_diffusion_sample_v36_post-1024x906.png\" alt=\"anisotropic_diffusion_sample_v36_post\" width=\"742\" height=\"656\" /></a> Image 1: Original Input(a), Prewitt edge filter(b), Anisotropically smoothed input(c), Gradient after gaussian blur(d), Gradient on original input (e), Gradient after diffusion(f)[/caption]\r\n\r\nNotice the edge details in images 1(b) &amp; 1(e). There are lot of extraneous details mostly that come out of noise. Even after we apply gaussian blur (more than once) on the original input, some of the required details may also go away along with noise as illustrated in the image 1(d). Anisotropic diffusion comes to the rescue in such cases. Notice the image 1(c) in comparison to 1(a). All minor/subtle variations in texture are smoothed out while preserving the edges as you can see in gradient of diffused image in 1(f). Feel free to play with the parameters and kindly notify us if there are unexpected behaviors.\r\n<h4>Other Improvements</h4>\r\nWe have also improved the performance of our JIT. We have moved the shift and select functions into JIT. We also reduced the number of mutex locks and improved the thread safety of ArrayFire.\r\n\r\nIn addition to the functions above, we have made several improvements which will increase the usability of the library. Our CMake config script now uses import targets instead of plain variables to add flags. If you are using CMake you can now compile and link your application with ArrayFire like this:\r\n<pre class=\"lang:default decode:true\" title=\"Linking with ArrayFire\">find_package(ArrayFire)\r\n\r\nadd_executable(FantasticApp main.cpp)\r\ntarget_link_library(FantasticApp PRIVATE ArrayFire::afopencl)</pre>\r\nThis will automatically add the correct compiler and linker flags when you compile your application.\r\n\r\nWe have also improved the building from source experience ArrayFire. Internally we have employed Modern CMake techniques and rewrote most of the build scripts to make it easy to maintain and read.\r\n\r\nThe period and quality of the random number generator has been improved, thanks to Ralf Stubner. He has also added several unit tests to keep track of the quality of the random number generator in the future. Adrien Vincent added a few color maps that were available in our Forge library but were missing from ArrayFire. Several other contributors helped us fix errors in our documentation and build system.\r\n\r\nWe are excited to finally release ArrayFire v3.6. We would like to thank our community for supporting us and helping us improve ArrayFire. We are looking forward to more community participation for the future releases.\r\n\r\n[custom_headline type=\"left\" level=\"h4\" looks_like=\"h4\"]Dedicated Support and Coding Services[/custom_headline]\r\n\r\nArrayFire is open source and always will be. For those who want dedicated support or custom function development, we offer a variety of <a href=\"http://sandbox.arrayfire.com/support/\">support packages</a>.\r\n\r\nArrayFire also serves many clients through consulting and <a href=\"http://sandbox.arrayfire.com/consulting/\">coding services</a>, algorithm development, porting code, and <a href=\"https://sandbox.arrayfire.com/training/\">training courses</a> for developers. Contact us at <a href=\"mailto:sales@arrayfire.com\">sales@arrayfire.com</a> or <a href=\"http://meetme.so/arrayfire\">schedule</a> a free technical consultation to learn more about our consulting and coding services.','ArrayFire v3.6 Released','','inherit','closed','closed','','9783-revision-v1','','','2018-05-04 13:46:31','2018-05-04 17:46:31','',9783,'https://sandbox.arrayfire.com/9783-revision-v1/',0,'revision','',0),(9817,6,'2018-05-04 13:56:37','2018-05-04 17:56:37','Today we are pleased to announce the release of ArrayFire v3.6.  It can be downloaded from these locations:\r\n<ul>\r\n 	<li><a href=\"http://sandbox.arrayfire.com/download/\">Binaries</a></li>\r\n 	<li><a href=\"https://github.com/arrayfire\">Source code</a></li>\r\n</ul>\r\nThis latest version of ArrayFire is better than ever! We added several new features that improve the performance and usability of the ArrayFire library. The main features are:\r\n<ul>\r\n 	<li>Support for batched matrix multiply</li>\r\n 	<li>Added the topk function</li>\r\n 	<li>Added the anisotropic diffusion filter</li>\r\n</ul>\r\nWe have also spent a significant amount of effort improving the internals of the library. The build system is significantly improved and organized.\r\n<h4>Batched Matrix Multiplication</h4>\r\nThe new batch functionality allows you to perform several matrix multiplication operations in one call of matmul. You might want to call this function if you are performing multiple smaller matrix multiplication operations. Here is an example:\r\n<pre class=\"lang:c++ decode:true\" title=\"Batched matrix multiply\">// Create a 3x3x2 matrix\r\narray a = randu(3, 3, 2);\r\narray b = randu(3, 3, 2);\r\n\r\narray c = matmul(a, b);\r\n</pre>\r\nThe example above is creating two 3 by 3 matrices as a 3x3x2 volume for a and b. The matmul function then multiplies the slice of a volume with the corresponding slice in b. With this approach you can reach higher efficiencies with smaller matrices. Here is a benchmark for batched matmul on the NVIDIA Tesla V100.\r\n\r\n[caption id=\"attachment_9793\" align=\"aligncenter\" width=\"646\"]<a href=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/chart-1.png\"><img class=\"size-full wp-image-9793\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/chart-1.png\" alt=\"Batched Matrix Multiplication Performance\" width=\"646\" height=\"430\" /></a> Batched Matrix Multiplication Performance[/caption]\r\n\r\nThe batched matrix multiplication allows you to reach the maximum performance of your GPU with smaller matrix sizes. Larger matrices do not necessarily need to be batched to fully utilize the GPU.\r\n<h4>TopK</h4>\r\nTopk is another exciting function that was added in this release. This function returns the top k maximum or minimum values in a vector or matrix along with their indices. Here is an example:\r\n<pre class=\"lang:c++ decode:true\" title=\"Topk Example\">array in = randu(10, 10); // Create a 10x10 matrix\r\n\r\narray idx, vals;\r\ntopk(vals, idx, in, 3); // Get the top 3 values of a</pre>\r\nIn this example we create a 10x8 matrix which will be passed into the topk function. This function will return two matrices of size 3x8. The first matrix is composed of the top 3 maximum values. The second matrix is made up of the index of those values in the original matrix along that particular column.\r\n<pre class=\"lang:default decode:true\">in\r\n[10 8 1 1]\r\n 0.6010 0.1583 0.6755 0.5143 0.7917 0.9092 0.5970 0.9048 \r\n 0.0278 0.3712 0.6105 0.3670 0.1654 0.8865 0.9594 0.0198 \r\n 0.9806 0.3543 0.5232 0.3336 0.8657 0.9676 0.2323 0.4436 \r\n 0.2126 0.6450 0.5567 0.0363 0.3766 0.1425 0.9623 0.6808 \r\n 0.0655 0.9675 0.7896 0.5349 0.7331 0.5137 0.8578 0.6636 \r\n 0.5497 0.3636 0.8966 0.0123 0.2522 0.6484 0.0192 0.8738 \r\n 0.2864 0.4165 0.0536 0.3988 0.9644 0.6353 0.7191 0.3954 \r\n 0.3410 0.5814 0.5775 0.9787 0.4711 0.7449 0.4035 0.5277 \r\n 0.7509 0.8962 0.2908 0.2308 0.3637 0.4391 0.4692 0.3592 \r\n 0.4105 0.3712 0.9941 0.6244 0.9643 0.6982 0.3353 0.8567 \r\n\r\nvals\r\n[3 8 1 1]\r\n 0.9806 0.9675 0.9941 0.9787 0.9644 0.9676 0.9623 0.9048 \r\n 0.7509 0.8962 0.8966 0.6244 0.9643 0.9092 0.9594 0.8738 \r\n 0.6010 0.6450 0.7896 0.5349 0.8657 0.8865 0.8578 0.8567 \r\nidx\r\n[3 8 1 1]\r\n 2 4 9 7 6 2 3 0 \r\n 8 8 5 9 9 0 1 5 \r\n 0 3 4 4 2 1 4 9 \r\n\r\n</pre>\r\nThe topk function is optimized for small sizes of k(&lt;32). You could have implemented something like this in older versions of ArrayFire using a combination of sort and indexing. Here are some benchmarks comparing the two approaches.\r\n\r\n<img src=\"data:image/png;base64,[encoded data, 41732 characters]\" />\r\n\r\nFor smaller sizes, topk is getting a 23x speedup over the sort and indexing approach. This test was performed on an NVIDIA Quadro GV100 GPU. Note that the runtimes are on a log scale.\r\n<h4>Anisotropic Smoothing Filter</h4>\r\nAnisotropic smoothing filter is an edge-preserving smoothing filter. It smooths out minor intensity variations all the while enhancing edges and removing noise. A more detailed explanation of what this filter does internally is explained in the <a href=\"http://arrayfire.org/docs/group__image__func__anisotropic__diffusion.htm\" target=\"_blank\">documentation</a>. Given below is the sample output from this filter that illustrates how edges are better preserved in comparison to normal isotropic smoothing techniques, such as gaussian blurring.\r\n\r\n[caption id=\"attachment_9803\" align=\"aligncenter\" width=\"742\"]<a href=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/anisotropic_diffusion_sample_v36_post.png\" target=\"_blank\"><img class=\"wp-image-9803 size-large\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/anisotropic_diffusion_sample_v36_post-1024x906.png\" alt=\"anisotropic_diffusion_sample_v36_post\" width=\"742\" height=\"656\" /></a> Image 1: Original Input(a), Prewitt edge filter(b), Anisotropically smoothed input(c), Gradient after gaussian blur(d), Gradient on original input (e), Gradient after diffusion(f)[/caption]\r\n\r\nNotice the edge details in images 1(b) &amp; 1(e). There are lot of extraneous details mostly that come out of noise. Even after we apply gaussian blur (more than once) on the original input, some of the required details may also go away along with noise as illustrated in the image 1(d). Anisotropic diffusion comes to the rescue in such cases. Notice the image 1(c) in comparison to 1(a). All minor/subtle variations in texture are smoothed out while preserving the edges as you can see in gradient of diffused image in 1(f). Feel free to play with the parameters and kindly notify us if there are unexpected behaviors.\r\n<h4>Other Improvements</h4>\r\nWe have also improved the performance of our JIT. We have moved the shift and select functions into JIT. We also reduced the number of mutex locks and improved the thread safety of ArrayFire.\r\n\r\nIn addition to the functions above, we have made several improvements which will increase the usability of the library. Our CMake config script now uses import targets instead of plain variables to add flags. If you are using CMake you can now compile and link your application with ArrayFire like this:\r\n<pre class=\"lang:default decode:true\" title=\"Linking with ArrayFire\">find_package(ArrayFire)\r\n\r\nadd_executable(FantasticApp main.cpp)\r\ntarget_link_library(FantasticApp PRIVATE ArrayFire::afopencl)</pre>\r\nThis will automatically add the correct compiler and linker flags when you compile your application.\r\n\r\nWe have also improved the building from source experience ArrayFire. Internally we have employed Modern CMake techniques and rewrote most of the build scripts to make it easy to maintain and read.\r\n\r\nThe period and quality of the random number generator has been improved, thanks to Ralf Stubner. He has also added several unit tests to keep track of the quality of the random number generator in the future. Adrien Vincent added a few color maps that were available in our Forge library but were missing from ArrayFire. Several other contributors helped us fix errors in our documentation and build system.\r\n\r\nWe are excited to finally release ArrayFire v3.6. We would like to thank our community for supporting us and helping us improve ArrayFire. We are looking forward to more community participation for the future releases.\r\n\r\n[custom_headline type=\"left\" level=\"h4\" looks_like=\"h4\"]Dedicated Support and Coding Services[/custom_headline]\r\n\r\nArrayFire is open source and always will be. For those who want dedicated support or custom function development, we offer a variety of <a href=\"http://sandbox.arrayfire.com/support/\">support packages</a>.\r\n\r\nArrayFire also serves many clients through consulting and <a href=\"http://sandbox.arrayfire.com/consulting/\">coding services</a>, algorithm development, porting code, and <a href=\"https://sandbox.arrayfire.com/training/\">training courses</a> for developers. Contact us at <a href=\"mailto:sales@arrayfire.com\">sales@arrayfire.com</a> or <a href=\"http://meetme.so/arrayfire\">schedule</a> a free technical consultation to learn more about our consulting and coding services.','ArrayFire v3.6 Release','','inherit','closed','closed','','9783-revision-v1','','','2018-05-04 13:56:37','2018-05-04 17:56:37','',9783,'https://sandbox.arrayfire.com/9783-revision-v1/',0,'revision','',0),(9818,17794,'2018-05-04 18:01:58','2018-05-04 22:01:58','Today we are pleased to announce the release of ArrayFire v3.6.  It can be downloaded from these locations:\r\n<ul>\r\n 	<li><a href=\"http://sandbox.arrayfire.com/download/\">Official installers</a></li>\r\n 	<li><a href=\"https://github.com/arrayfire\">GitHub repository</a></li>\r\n</ul>\r\nThis latest version of ArrayFire is better than ever! We added several new features that improve the performance and usability of the ArrayFire library. The main features are:\r\n<ul>\r\n 	<li>Support for batched matrix multiply</li>\r\n 	<li>Added the topk function</li>\r\n 	<li>Added the anisotropic diffusion filter</li>\r\n</ul>\r\nWe have also spent a significant amount of effort improving the internals of the library. The build system is significantly improved and organized.\r\n<h4>Batched Matrix Multiplication</h4>\r\nThe new batch matmul allows you to perform several matrix multiplication operations in one call of matmul. You might want to call this function if you are performing multiple smaller matrix multiplication operations. Here is an example:\r\n<pre class=\"lang:c++ decode:true\" title=\"Batched matrix multiply\">// Create a 3x3x2 matrix\r\narray a = randu(3, 3, 2);\r\narray b = randu(3, 3, 2);\r\n\r\narray c = matmul(a, b);\r\n</pre>\r\nThe example above is creating two 3 by 3 matrices as a 3x3x2 volume for a and b. The matmul function then multiplies the slice of a volume with the corresponding slice in b. With this approach you can reach higher efficiencies with smaller matrices. Here is a benchmark for batched matmul on the NVIDIA Tesla V100.\r\n\r\n[caption id=\"attachment_9793\" align=\"aligncenter\" width=\"646\"]<a href=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/chart-1.png\"><img class=\"size-full wp-image-9793\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/chart-1.png\" alt=\"Batched Matrix Multiplication Performance\" width=\"646\" height=\"430\" /></a> Batched Matrix Multiplication Performance[/caption]\r\n\r\nThe batched matrix multiplication allows you to reach the maximum performance of your GPU with smaller matrix sizes. Larger matrices do not necessarily need to be batched to fully utilize the GPU.\r\n<h4>TopK</h4>\r\nTopk is another exciting function that was added in this release. This function returns the top k maximum or minimum values in a vector or matrix along with their indices. Here is an example:\r\n<pre class=\"lang:c++ decode:true\" title=\"Topk Example\">array in = randu(10, 10); // Create a 10x10 matrix\r\n\r\narray idx, vals;\r\ntopk(vals, idx, in, 3); // Get the top 3 values of a</pre>\r\nIn this example we create a 10x8 matrix which will be passed into the topk function. This function will return two matrices of size 3x8. The first matrix is composed of the top 3 maximum values. The second matrix is made up of the index of those values in the original matrix along that particular column.\r\n<pre class=\"lang:default decode:true\">in\r\n[10 8 1 1]\r\n 0.6010 0.1583 0.6755 0.5143 0.7917 0.9092 0.5970 0.9048 \r\n 0.0278 0.3712 0.6105 0.3670 0.1654 0.8865 0.9594 0.0198 \r\n 0.9806 0.3543 0.5232 0.3336 0.8657 0.9676 0.2323 0.4436 \r\n 0.2126 0.6450 0.5567 0.0363 0.3766 0.1425 0.9623 0.6808 \r\n 0.0655 0.9675 0.7896 0.5349 0.7331 0.5137 0.8578 0.6636 \r\n 0.5497 0.3636 0.8966 0.0123 0.2522 0.6484 0.0192 0.8738 \r\n 0.2864 0.4165 0.0536 0.3988 0.9644 0.6353 0.7191 0.3954 \r\n 0.3410 0.5814 0.5775 0.9787 0.4711 0.7449 0.4035 0.5277 \r\n 0.7509 0.8962 0.2908 0.2308 0.3637 0.4391 0.4692 0.3592 \r\n 0.4105 0.3712 0.9941 0.6244 0.9643 0.6982 0.3353 0.8567 \r\n\r\nvals\r\n[3 8 1 1]\r\n 0.9806 0.9675 0.9941 0.9787 0.9644 0.9676 0.9623 0.9048 \r\n 0.7509 0.8962 0.8966 0.6244 0.9643 0.9092 0.9594 0.8738 \r\n 0.6010 0.6450 0.7896 0.5349 0.8657 0.8865 0.8578 0.8567 \r\nidx\r\n[3 8 1 1]\r\n 2 4 9 7 6 2 3 0 \r\n 8 8 5 9 9 0 1 5 \r\n 0 3 4 4 2 1 4 9 \r\n\r\n</pre>\r\nThe topk function is optimized for small sizes of k(&lt;32). You could have implemented something like this in older versions of ArrayFire using a combination of sort and indexing. Here are some benchmarks comparing the two approaches.\r\n\r\n<img src=\"data:image/png;base64,[encoded data, 41732 characters]\" />\r\n\r\nFor smaller sizes, topk is getting a 23x speedup over the sort and indexing approach. This test was performed on an NVIDIA Quadro GV100 GPU. Note that the run-times are on a log scale.\r\n<h4>Anisotropic Smoothing Filter</h4>\r\nAnisotropic smoothing filter is an edge-preserving smoothing filter. It smooths out minor intensity variations all the while enhancing edges and removing noise. A more detailed explanation of what this filter does internally is explained in the <a href=\"http://arrayfire.org/docs/group__image__func__anisotropic__diffusion.htm\" target=\"_blank\">documentation</a>. Given below is the sample output from this filter that illustrates how edges are better preserved in comparison to normal isotropic smoothing techniques, such as Gaussian blurring.\r\n\r\n[caption id=\"attachment_9803\" align=\"aligncenter\" width=\"742\"]<a href=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/anisotropic_diffusion_sample_v36_post.png\" target=\"_blank\"><img class=\"wp-image-9803 size-large\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/anisotropic_diffusion_sample_v36_post-1024x906.png\" alt=\"anisotropic_diffusion_sample_v36_post\" width=\"742\" height=\"656\" /></a> Image 1: Original Input(a), Prewitt edge filter(b), Anisotropically smoothed input(c), Gradient after gaussian blur(d), Gradient on original input (e), Gradient after diffusion(f)[/caption]\r\n\r\nNotice the edge details in images 1(b) &amp; 1(e). There are lot of extraneous details mostly that come out of noise. Even after we apply Gaussian blur (more than once) on the original input, some of the required details may also go away along with noise as illustrated in the image 1(d). anisotropic diffusion comes to the rescue in such cases. Notice the image 1(c) in comparison to 1(a). All minor/subtle variations in texture are smoothed out while preserving the edges as you can see in gradient of diffused image in 1(f). Feel free to play with the parameters and kindly notify us if there are unexpected behaviors.\r\n<h4>Other Improvements</h4>\r\nWe have also improved the performance of our JIT. We have moved the shift and select functions into JIT. We also reduced the number of mutex locks and improved the thread safety of ArrayFire.\r\n\r\nIn addition to the functions above, we have made several improvements which will increase the usability of the library. Our CMake config script now uses import targets instead of plain variables to add flags. If you are using CMake you can now compile and link your application with ArrayFire like this:\r\n<pre class=\"lang:default decode:true\" title=\"Linking with ArrayFire\">find_package(ArrayFire)\r\n\r\nadd_executable(FantasticApp main.cpp)\r\ntarget_link_library(FantasticApp PRIVATE ArrayFire::afopencl)</pre>\r\nThis will automatically add the correct compiler and linker flags when you compile your application.\r\n\r\nWe have also improved the building from source experience ArrayFire. Internally we have employed Modern CMake techniques and rewrote most of the build scripts to make it easy to maintain and read.\r\n\r\nThe period and quality of the random number generator has been improved, thanks to Ralf Stubner. He has also added several unit tests to keep track of the quality of the random number generator in the future. Adrien Vincent added a few color maps that were available in our Forge library but were missing from ArrayFire. Several other contributors helped us fix errors in our documentation and build system.\r\n\r\nWe are excited to finally release ArrayFire v3.6. We would like to thank our community for supporting us and helping us improve ArrayFire. We are looking forward to more community participation for the future releases.\r\n<h4>Dedicated Support and Coding Services</h4>\r\nArrayFire is open source and always will be. For those who want dedicated support or custom function development, we offer a variety of <a href=\"http://sandbox.arrayfire.com/support/\">support packages</a>.\r\n\r\nArrayFire also serves many clients through consulting and <a href=\"http://sandbox.arrayfire.com/consulting/\">coding services</a>, algorithm development, porting code, and <a href=\"https://sandbox.arrayfire.com/training/\">training courses</a> for developers. Contact us at <a href=\"mailto:sales@arrayfire.com\">sales@arrayfire.com</a> or <a href=\"http://meetme.so/arrayfire\">schedule</a> a free technical consultation to learn more about our consulting and coding services.','ArrayFire v3.6 Release','','inherit','closed','closed','','9783-revision-v1','','','2018-05-04 18:01:58','2018-05-04 22:01:58','',9783,'https://sandbox.arrayfire.com/9783-revision-v1/',0,'revision','',0),(9821,18673,'2018-05-04 18:51:19','2018-05-04 22:51:19','Today we are pleased to announce the release of ArrayFire v3.6.  It can be downloaded from these locations:\r\n<ul>\r\n 	<li><a href=\"http://sandbox.arrayfire.com/download/\">Official installers</a></li>\r\n 	<li><a href=\"https://github.com/arrayfire\">GitHub repository</a></li>\r\n</ul>\r\nThis latest version of ArrayFire is better than ever! We added several new features that improve the performance and usability of the ArrayFire library. The main features are:\r\n<ul>\r\n 	<li>Support for batched matrix multiply</li>\r\n 	<li>Added the topk function</li>\r\n 	<li>Added the anisotropic diffusion filter</li>\r\n</ul>\r\nWe have also spent a significant amount of effort improving the internals of the library. The build system is significantly improved and organized.\r\n<h4>Batched Matrix Multiplication</h4>\r\nThe new batch matmul allows you to perform several matrix multiplication operations in one call of matmul. You might want to call this function if you are performing multiple smaller matrix multiplication operations. Here is an example:\r\n<pre class=\"lang:c++ decode:true\" title=\"Batched matrix multiply\">// Create a 3x3x2 matrix\r\narray a = randu(3, 3, 2);\r\narray b = randu(3, 3, 2);\r\n\r\narray c = matmul(a, b);\r\n</pre>\r\nThe example above is creating two 3 by 3 matrices as a 3x3x2 volume for a and b. The matmul function then multiplies the slice of a volume with the corresponding slice in b. With this approach you can reach higher efficiencies with smaller matrices. Here is a benchmark for batched matmul on the NVIDIA Tesla V100.\r\n\r\n[caption id=\"attachment_9793\" align=\"aligncenter\" width=\"646\"]<a href=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/chart-1.png\"><img class=\"size-full wp-image-9793\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/chart-1.png\" alt=\"Batched Matrix Multiplication Performance\" width=\"646\" height=\"430\" /></a> Batched Matrix Multiplication Performance[/caption]\r\n\r\nThe batched matrix multiplication allows you to reach the maximum performance of your GPU with smaller matrix sizes. Larger matrices do not necessarily need to be batched to fully utilize the GPU.\r\n<h4>TopK</h4>\r\nTopk is another exciting function that was added in this release. This function returns the top k maximum or minimum values in a vector or matrix along with their indices. Here is an example:\r\n<pre class=\"lang:c++ decode:true\" title=\"Topk Example\">array in = randu(10, 8); // Create a 10x8 matrix\r\n\r\narray idx, vals;\r\ntopk(vals, idx, in, 3); // Get the top 3 values of a</pre>\r\nIn this example we create a 10x8 matrix which will be passed into the topk function. This function will return two matrices of size 3x8. The first matrix is composed of the top 3 maximum values. The second matrix is made up of the index of those values in the original matrix along that particular column.\r\n<pre class=\"lang:default decode:true\">in\r\n[10 8 1 1]\r\n 0.6010 0.1583 0.6755 0.5143 0.7917 0.9092 0.5970 0.9048 \r\n 0.0278 0.3712 0.6105 0.3670 0.1654 0.8865 0.9594 0.0198 \r\n 0.9806 0.3543 0.5232 0.3336 0.8657 0.9676 0.2323 0.4436 \r\n 0.2126 0.6450 0.5567 0.0363 0.3766 0.1425 0.9623 0.6808 \r\n 0.0655 0.9675 0.7896 0.5349 0.7331 0.5137 0.8578 0.6636 \r\n 0.5497 0.3636 0.8966 0.0123 0.2522 0.6484 0.0192 0.8738 \r\n 0.2864 0.4165 0.0536 0.3988 0.9644 0.6353 0.7191 0.3954 \r\n 0.3410 0.5814 0.5775 0.9787 0.4711 0.7449 0.4035 0.5277 \r\n 0.7509 0.8962 0.2908 0.2308 0.3637 0.4391 0.4692 0.3592 \r\n 0.4105 0.3712 0.9941 0.6244 0.9643 0.6982 0.3353 0.8567 \r\n\r\nvals\r\n[3 8 1 1]\r\n 0.9806 0.9675 0.9941 0.9787 0.9644 0.9676 0.9623 0.9048 \r\n 0.7509 0.8962 0.8966 0.6244 0.9643 0.9092 0.9594 0.8738 \r\n 0.6010 0.6450 0.7896 0.5349 0.8657 0.8865 0.8578 0.8567 \r\nidx\r\n[3 8 1 1]\r\n 2 4 9 7 6 2 3 0 \r\n 8 8 5 9 9 0 1 5 \r\n 0 3 4 4 2 1 4 9 \r\n\r\n</pre>\r\nThe topk function is optimized for small sizes of k(&lt;32). You could have implemented something like this in older versions of ArrayFire using a combination of sort and indexing. Here are some benchmarks comparing the two approaches.\r\n\r\n<img src=\"data:image/png;base64,[encoded data, 41732 characters]\" />\r\n\r\nFor smaller sizes, topk is getting a 23x speedup over the sort and indexing approach. This test was performed on an NVIDIA Quadro GV100 GPU. Note that the run-times are on a log scale.\r\n<h4>Anisotropic Smoothing Filter</h4>\r\nAnisotropic smoothing filter is an edge-preserving smoothing filter. It smooths out minor intensity variations all the while enhancing edges and removing noise. A more detailed explanation of what this filter does internally is explained in the <a href=\"http://arrayfire.org/docs/group__image__func__anisotropic__diffusion.htm\" target=\"_blank\">documentation</a>. Given below is the sample output from this filter that illustrates how edges are better preserved in comparison to normal isotropic smoothing techniques, such as Gaussian blurring.\r\n\r\n[caption id=\"attachment_9803\" align=\"aligncenter\" width=\"742\"]<a href=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/anisotropic_diffusion_sample_v36_post.png\" target=\"_blank\"><img class=\"wp-image-9803 size-large\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/anisotropic_diffusion_sample_v36_post-1024x906.png\" alt=\"anisotropic_diffusion_sample_v36_post\" width=\"742\" height=\"656\" /></a> Image 1: Original Input(a), Prewitt edge filter(b), Anisotropically smoothed input(c), Gradient after gaussian blur(d), Gradient on original input (e), Gradient after diffusion(f)[/caption]\r\n\r\nNotice the edge details in images 1(b) &amp; 1(e). There are lot of extraneous details mostly that come out of noise. Even after we apply Gaussian blur (more than once) on the original input, some of the required details may also go away along with noise as illustrated in the image 1(d). anisotropic diffusion comes to the rescue in such cases. Notice the image 1(c) in comparison to 1(a). All minor/subtle variations in texture are smoothed out while preserving the edges as you can see in gradient of diffused image in 1(f). Feel free to play with the parameters and kindly notify us if there are unexpected behaviors.\r\n<h4>Other Improvements</h4>\r\nWe have also improved the performance of our JIT. We have moved the shift and select functions into JIT. We also reduced the number of mutex locks and improved the thread safety of ArrayFire.\r\n\r\nIn addition to the functions above, we have made several improvements which will increase the usability of the library. Our CMake config script now uses import targets instead of plain variables to add flags. If you are using CMake you can now compile and link your application with ArrayFire like this:\r\n<pre class=\"lang:default decode:true\" title=\"Linking with ArrayFire\">find_package(ArrayFire)\r\n\r\nadd_executable(FantasticApp main.cpp)\r\ntarget_link_library(FantasticApp PRIVATE ArrayFire::afopencl)</pre>\r\nThis will automatically add the correct compiler and linker flags when you compile your application.\r\n\r\nWe have also improved the building from source experience ArrayFire. Internally we have employed Modern CMake techniques and rewrote most of the build scripts to make it easy to maintain and read.\r\n\r\nThe period and quality of the random number generator has been improved, thanks to Ralf Stubner. He has also added several unit tests to keep track of the quality of the random number generator in the future. Adrien Vincent added a few color maps that were available in our Forge library but were missing from ArrayFire. Several other contributors helped us fix errors in our documentation and build system.\r\n\r\nWe are excited to finally release ArrayFire v3.6. We would like to thank our community for supporting us and helping us improve ArrayFire. We are looking forward to more community participation for the future releases!\r\n<h4>Dedicated Support and Coding Services</h4>\r\nArrayFire is open source and always will be. For those who want dedicated support or custom function development, we offer a variety of <a href=\"http://sandbox.arrayfire.com/support/\">support packages</a>.\r\n\r\nArrayFire also serves many clients through consulting and <a href=\"http://sandbox.arrayfire.com/consulting/\">coding services</a>, algorithm development, porting code, and <a href=\"https://sandbox.arrayfire.com/training/\">training courses</a> for developers. Contact us at <a href=\"mailto:sales@arrayfire.com\">sales@arrayfire.com</a> or <a href=\"http://meetme.so/arrayfire\">schedule</a> a free technical consultation to learn more about our consulting and coding services.','ArrayFire v3.6 Release','','inherit','closed','closed','','9783-revision-v1','','','2018-05-04 18:51:19','2018-05-04 22:51:19','',9783,'https://sandbox.arrayfire.com/9783-revision-v1/',0,'revision','',0),(9822,1,'2018-05-10 22:04:51','2018-05-11 02:04:51','','Order &ndash; May 10, 2018 @ 10:04 PM','This is a  buffer in order to profile AF memory and speed of our software.','wc-completed','open','closed','order_5af4fa418589b','order-may-11-2018-0204-am','','','2018-05-10 22:04:55','2018-05-11 02:04:55','',0,'https://sandbox.arrayfire.com/?post_type=shop_order&#038;p=9822',0,'shop_order','',3),(9824,1,'2018-05-30 19:31:12','2018-05-30 23:31:12','','Order &ndash; May 30, 2018 @ 07:31 PM','Any fix or clean workaround for \r\nhttps://github.com/arrayfire/arrayfire/issues/2157','wc-completed','open','closed','order_5b0f343e5fe70','order-may-30-2018-1131-pm','','','2018-05-30 19:31:16','2018-05-30 23:31:16','',0,'https://sandbox.arrayfire.com/?post_type=shop_order&#038;p=9824',0,'shop_order','',3),(9825,1,'2018-06-13 14:35:23','2018-06-13 18:35:23','','Order &ndash; June 13, 2018 @ 02:35 PM','','wc-completed','open','closed','order_5b2163866fe63','order-jun-13-2018-0633-pm','','','2018-06-13 14:35:26','2018-06-13 18:35:26','',0,'https://sandbox.arrayfire.com/?post_type=shop_order&#038;p=9825',0,'shop_order','',4),(9826,1,'2018-06-18 13:37:08','2018-06-18 17:37:08','','Order &ndash; June 18, 2018 @ 01:37 PM','AF 3.6.1 rc1 without any gl nor freeimage hard dependancy.. Remaining possible memory leak to be debugged.','wc-completed','open','closed','order_5b27edc2a7095','order-jun-18-2018-0537-pm','','','2018-06-18 13:37:12','2018-06-18 17:37:12','',0,'https://sandbox.arrayfire.com/?post_type=shop_order&#038;p=9826',0,'shop_order','',3),(9830,17794,'2018-06-26 15:26:33','2018-06-26 19:26:33','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"10px\"][column type=\"two-fifths\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\"]If you want faster code, you\'ve come to the right place.[/custom_headline][gap size=\"3%\"][button  type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/download\" size=\"x-large\" block=\"true\"]Download ArrayFire[/button]\r\n\r\n[gap size=\"5%\"]\r\n\r\n[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/consulting/\" size=\"x-large\" ]Schedule a consultation[/button][gap size=\"2%\"]\r\n\r\n[/column][column type=\"three-fifths\" last=\"true\"][gap size=\"7%\"]\r\n<div id=\"wistia_rj2bar3xxp\" class=\"wistia_embed\" style=\"width: 640px; height: 388px;\"></div>\r\n<script src=\"//fast.wistia.com/assets/external/E-v1.js\" charset=\"ISO-8859-1\"></script><script>// <![CDATA[\r\nwistiaEmbed = Wistia.embed(\"rj2bar3xxp\");\r\n// ]]></script>\r\n[/column]\r\n<div id=\"arrayfire\"></div>\r\n[/content_band]\r\n\r\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" class=\"center-text\"]Services[/custom_headline]\r\n\r\nArrayFire specializes in developing accelerated, scalable computing solutions on modern computational platforms for our clients. As an industry leader in high performance computing for nearly 10 years, ArrayFire continues to drive innovation in all areas of accelerated computing, ranging from apps deployed on low-powered and mobile platforms to scientific simulations on high-end supercomputers.\r\n\r\n[/content_band]\r\n\r\n[content_band bg_color=\"#ffffff\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"10px\"]\r\n\r\n[column type=\"one-third\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/car-e1412967813807.png\" class=\"mbn\"] Software Design[/custom_headline]\r\n\r\n[line style=\"border-top: solid #999999;\"]ArrayFire has worked with hundreds of companies and entrepreneurs to develop custom, high performance software solutions for their unique problems. We use the latest software development methods, profiling tools, and deployment methods to deliver scalable solutions for your present and future business goals.\r\n\r\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"https://www.sandbox.arrayfire.com/consulting#software-design\" padding_top=\"40px\" padding_bottom=\"40px\"]Read more...[/button]\r\n[/column]\r\n\r\n[column type=\"one-third\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/09/mini-motorcycle-01-e1412969290876.png\" class=\"mbn\"] System Assessment[/custom_headline][line style=\"border-top: solid #999999;\"]ArrayFire performs holistic application audits that establish the current and theoretical maximum performance your application can achieve. Our methods evaluate everything from the hardware up so you can determine bottlenecks and get the maximum return on investment for future development work.\r\n\r\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"https://www.sandbox.arrayfire.com/consulting#system-evaluation\" padding_top=\"40px\" padding_bottom=\"40px\"]Read More...[/button]\r\n\r\n[/column]\r\n\r\n[column type=\"one-third\" last=\"true\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/09/mini-plane-01-e1412969527633.png\" class=\"mbn\"] Training [/custom_headline][line style=\"border-top: solid #999999;\"]ArrayFire trains your engineers on the latest techniques in parallel computing including CUDA or OpenCL for CPUs, GPUs, FPGAs, and other accelerators. We offer two- and four-day training sessions that are fully customizable so your team learns skills that they need to accelerate your software.\r\n\r\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"https://www.sandbox.arrayfire.com/training\" padding_top=\"40px\" padding_bottom=\"40px\"]Read More...[/button]\r\n\r\n[/column]\r\n\r\n[/content_band]\r\n\r\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" class=\"center-text\"]ArrayFire Library[/custom_headline]\r\n\r\nThe ArrayFire accelerated computing library is a free, general-purpose, open-source library that simplifies the process of developing software that targets parallel and massively-parallel architectures including CPUs, GPUs, and other hardware acceleration devices. ArrayFire is used on devices from low-powered mobile phones to high-powered GPU-enabled supercomputers including CPUs from all major vendors (Intel, AMD, Arm), GPUs from the dominant manufacturers (NVIDIA, AMD, and Qualcomm), as well as a variety of other accelerator devices on Windows, Mac, and Linux.\r\n\r\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"https://sandbox.arrayfire.com/download\" padding_top=\"40px\" padding_bottom=\"40px\"]Download ArrayFire[/button]\r\n\r\n[/content_band]\r\n\r\n[content_band bg_color=\"#ffffff\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" class=\"center-text\"]Domain Specialization[/custom_headline]\r\n\r\nOur engineers are experienced in a wide variety of technical areas of scientific computing including HPC, distributed computing, hardware accelerators (multi-core CPUs, GPUs, FPGAs), and visualization. Our wide skill set enables us to solve your problem in unique ways. Most of our clients hire us because of our experience in one of the following key areas:\r\n\r\n[column type=\"one-fourth\"]\r\n[custom_headline type=\"left\" level=\"h5\" class=\"center-text\"]Computer Vision[/custom_headline]\r\n<a href=\"http://sandbox.arrayfire.com/case-studies/#computer-vision\">\r\n<img class=\"aligncenter size-full wp-image-9139\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/photo-computer-vision.jpg\" alt=\"photo-computer-vision\" width=\"341\" height=\"256\" /></a>\r\n[/column]\r\n\r\n[column type=\"one-fourth\"]\r\n[custom_headline type=\"left\" level=\"h5\" class=\"center-text\"]Defense[/custom_headline]\r\n<a href=\"http://sandbox.arrayfire.com/case-studies/#defense\">\r\n<img class=\"aligncenter size-full wp-image-9138\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/shadow-of-the-war-1536222.jpg\" alt=\"ship-at-sea\" width=\"384\" height=\"256\" /></a>\r\n[/column]\r\n\r\n[column type=\"one-fourth\"]\r\n[custom_headline type=\"left\" level=\"h5\" class=\"center-text\"]Finance[/custom_headline]\r\n\r\n<a href=\"http://sandbox.arrayfire.com/case-studies/#finance\">\r\n<img class=\"aligncenter size-full wp-image-9137\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/photo-computer-finance.jpg\" alt=\"photo-computer-finance\" width=\"384\" height=\"256\" /></a>\r\n\r\n[/column]\r\n\r\n[column type=\"one-fourth\"]\r\n[custom_headline type=\"left\" level=\"h5\" class=\"center-text\"]Machine Learning[/custom_headline]\r\n<a href=\"http://sandbox.arrayfire.com/case-studies/#machine-learning\">\r\n<img class=\"aligncenter size-full wp-image-9140\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/photo-ai.jpg\" alt=\"photo-ai\" width=\"334\" height=\"256\" /></a>\r\n<!-- Image credit: https://commons.wikimedia.org/wiki/File:Artificial-intelligence-elon-musk-hawking.jpg -->\r\n[/column]\r\n\r\n[/content_band]','Home','','inherit','closed','closed','','245-revision-v1','','','2018-06-26 15:26:33','2018-06-26 19:26:33','',245,'https://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(9831,6,'2018-06-26 15:37:06','2018-06-26 19:37:06','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"][column type=\"one-half\" ][custom_headline type=\"left\" level=\"h2\" ]Faster code[/custom_headline]\n\nArrayFire allows your code to run its fastest. It beats efforts to manually write CUDA or OpenCL kernels. It beats compiler optimizations. It beats other libraries. ArrayFire is the simply best way to accelerate your code.\n\nWant proof? Check out our benchmarks. All benchmarks were performed on a NVIDIA Tesla C2050 with an Intel i7-950 processor (updates coming soon). The benchmarks compare ArrayFire with several popular CPU-based acceleration libraries, including <a href=\"https://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"https://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"https://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"https://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.\n\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"https://sandbox.arrayfire.com/download\" title=\"Download now!\"]Download ArrayFire[/button]\n\n&nbsp;\n\n[/column]\n\n[column type=\"one-half\"  last=\"true\" fade=\"true\" fade_animation=\"in-from-left\" ][gap size=\"10%\"][tab_nav type=\"four-up\"][tab_nav_item title=\"Base\" active=\"true\"][tab_nav_item title=\"Linear Algebra\" active=\"\"][tab_nav_item title=\"Convolution\" active=\"\"][tab_nav_item title=\"Utility\" active=\"\"][/tab_nav][tabs][tab active=\"true\"][accordion id=\"my-accordion\"] [accordion_item title=\"Matrix Multiply\" parent_id=\"my-accordion\"]<img class=\"aligncenter wp-image-351 size-full\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_multiply-e1409845945961.png\" alt=\"Matrix Multiply\" width=\"482\" height=\"344\" />[/accordion_item] [accordion_item title=\"Matrix Transpose\" parent_id=\"my-accordion\"]<img class=\"aligncenter wp-image-352 size-full\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_transpose-e1409846117548.png\" alt=\"Matrix Transpose\" width=\"482\" height=\"344\" />[/accordion_item] [accordion_item title=\"FFT\" parent_id=\"my-accordion\"]<img class=\"aligncenter wp-image-349 size-full\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/fft-e1409846374468.png\" alt=\"FFT\" width=\"491\" height=\"350\" />[/accordion_item][/accordion][/tab][tab][accordion id=\"my-accordion\"] [accordion_item title=\"LU\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-350\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/lu-e1409846254351.png\" alt=\"LU\" width=\"491\" height=\"350\" />[/accordion_item] [accordion_item title=\"SVD\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-357\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/svd-e1409846164788.png\" alt=\"SVD\" width=\"491\" height=\"350\" />[/accordion_item] [accordion_item title=\"Solve: Ax=b\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-354\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/solve-e1409846072990.png\" alt=\"Solve\" width=\"491\" height=\"350\" />[/accordion_item][/accordion][/tab][tab][accordion id=\"my-accordion\"] [accordion_item title=\"Separable Convolution\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-348\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/convs-e1409846211948.png\" alt=\"Separable Convolution\" width=\"491\" height=\"350\" />[/accordion_item] [accordion_item title=\"CONV\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-347\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/conv-e1409846333930.png\" alt=\"Conv\" width=\"491\" height=\"350\" />[/accordion_item][/accordion][/tab][tab][accordion id=\"my-accordion\"] [accordion_item title=\"Sum\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-356\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/sum-e1409846033653.png\" alt=\"sum\" width=\"491\" height=\"350\" />[/accordion_item] [accordion_item title=\"Sort\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-355\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/sort-e1409845987155.png\" alt=\"sort\" width=\"491\" height=\"350\" />[/accordion_item] [accordion_item title=\"Cumulative Sum\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-353\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/scan-e1409845901355.png\" alt=\"scan\" width=\"491\" height=\"350\" />[/accordion_item][/accordion][/tab][/tabs][/column][/content_band]\n\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"]\n\n[column type=\"one-half\"][gap size=\"10%\"]<img class=\"aligncenter wp-image-4801 size-full\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou-e1409844224608.png\" alt=\"comingatyou\" width=\"433\" height=\"302\" />\n\n[gap size=\"13%\"][/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h2\"]Hardware neutral[/custom_headline]\n\nArrayFire supports CUDA-capable NVIDIA GPUs, OpenCL devices, and a C-programming backend. The OpenCL devices include AMD GPUs/APUs and Intel Xeon Phi co-processors. It also supports mobile OpenCL devices from ARM, Qualcomm, and others. With ArrayFire, you can easily switch between CUDA or OpenCL without changing your code.\n\nArrayFire is a high-performance software library designed for maximum productivity and speed without the hassle of writing difficult low-level device code. Each of <a href=\"https://www.sandbox.arrayfire.com/docs/modules.htm\">ArrayFire\'s functions</a> has been hand-tuned by our CUDA and OpenCL experts. [gap size=\"5%\"]\n\n[/column]\n\n[/content_band]\n\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"]\n\n[column type=\"one-half\"][custom_headline type=\"left\" level=\"h2\"]Open Source[/custom_headline]\n\nArrayFire is open source—it’s all there and it’s all free. We\'re big fans of freedom, collaboration, and perpetual motion. Adapt ArrayFire to meet your needs, watch it blaze, and tell us all about it!\n\nBe sure to check out all of the ArrayFire functions (and a lot more!) in our <a href=\"https://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don’t forget to visit our <a href=\"https://groups.google.com/forum/#!forum/arrayfire-users\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and best practices. [gap size=\"11%\"]\n\n[/column]\n\n[column type=\"one-fourth\"][gap size=\"40%\"][counter num_start=\"0\" num_end=\"1538\" num_speed=\"5000\"  num_color=\"#f08027\" text_below=\"stars\" text_color=\"#212c43\"]\n\n[counter num_start=\"0\" num_end=\"238\" num_speed=\"5000\"  num_color=\"#f08027\"  text_below=\"forks\" text_color=\"#212c43\"][/column][column type=\"one-fourth\" last=\"true\"][gap size=\"40%\"]\n\n[counter num_start=\"0\" num_end=\"240\" num_speed=\"5000\"  num_color=\"#f08027\"  text_below=\"functions\" text_color=\"#212c43\"]\n\n[counter num_start=\"0\" num_end=\"4591\" num_speed=\"5000\"  num_color=\"#f08027\"  text_below=\"commits\" text_color=\"#212c43\"]\n\n[/column][/content_band]','Why ArrayFire?','','inherit','closed','closed','','7054-autosave-v1','','','2018-06-26 15:37:06','2018-06-26 19:37:06','',7054,'https://sandbox.arrayfire.com/7054-autosave-v1/',0,'revision','',0),(9832,6,'2018-06-26 15:37:33','2018-06-26 19:37:33','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"][column type=\"one-half\" ][custom_headline type=\"left\" level=\"h2\" ]Faster code[/custom_headline]\r\n\r\nArrayFire allows your code to run its fastest. It beats efforts to manually write CUDA or OpenCL kernels. It beats compiler optimizations. It beats other libraries. ArrayFire is the simply best way to accelerate your code.\r\n\r\nWant proof? Check out our benchmarks. All benchmarks were performed on a NVIDIA Tesla C2050 with an Intel i7-950 processor (updates coming soon). The benchmarks compare ArrayFire with several popular CPU-based acceleration libraries, including <a href=\"https://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"https://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"https://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"https://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.\r\n\r\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"https://sandbox.arrayfire.com/download\" title=\"Download now!\"]Download ArrayFire[/button]\r\n\r\n&nbsp;\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\"  last=\"true\" fade=\"true\" fade_animation=\"in-from-left\" ][gap size=\"10%\"][tab_nav type=\"four-up\"][tab_nav_item title=\"Base\" active=\"true\"][tab_nav_item title=\"Linear Algebra\" active=\"\"][tab_nav_item title=\"Convolution\" active=\"\"][tab_nav_item title=\"Utility\" active=\"\"][/tab_nav][tabs][tab active=\"true\"][accordion id=\"my-accordion\"] [accordion_item title=\"Matrix Multiply\" parent_id=\"my-accordion\"]<img class=\"aligncenter wp-image-351 size-full\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_multiply-e1409845945961.png\" alt=\"Matrix Multiply\" width=\"482\" height=\"344\" />[/accordion_item] [accordion_item title=\"Matrix Transpose\" parent_id=\"my-accordion\"]<img class=\"aligncenter wp-image-352 size-full\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/matrix_transpose-e1409846117548.png\" alt=\"Matrix Transpose\" width=\"482\" height=\"344\" />[/accordion_item] [accordion_item title=\"FFT\" parent_id=\"my-accordion\"]<img class=\"aligncenter wp-image-349 size-full\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/fft-e1409846374468.png\" alt=\"FFT\" width=\"491\" height=\"350\" />[/accordion_item][/accordion][/tab][tab][accordion id=\"my-accordion\"] [accordion_item title=\"LU\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-350\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/lu-e1409846254351.png\" alt=\"LU\" width=\"491\" height=\"350\" />[/accordion_item] [accordion_item title=\"SVD\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-357\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/svd-e1409846164788.png\" alt=\"SVD\" width=\"491\" height=\"350\" />[/accordion_item] [accordion_item title=\"Solve: Ax=b\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-354\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/solve-e1409846072990.png\" alt=\"Solve\" width=\"491\" height=\"350\" />[/accordion_item][/accordion][/tab][tab][accordion id=\"my-accordion\"] [accordion_item title=\"Separable Convolution\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-348\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/convs-e1409846211948.png\" alt=\"Separable Convolution\" width=\"491\" height=\"350\" />[/accordion_item] [accordion_item title=\"CONV\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-347\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/conv-e1409846333930.png\" alt=\"Conv\" width=\"491\" height=\"350\" />[/accordion_item][/accordion][/tab][tab][accordion id=\"my-accordion\"] [accordion_item title=\"Sum\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-356\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/sum-e1409846033653.png\" alt=\"sum\" width=\"491\" height=\"350\" />[/accordion_item] [accordion_item title=\"Sort\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-355\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/sort-e1409845987155.png\" alt=\"sort\" width=\"491\" height=\"350\" />[/accordion_item] [accordion_item title=\"Cumulative Sum\" parent_id=\"my-accordion\"]<img class=\"aligncenter size-full wp-image-353\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/scan-e1409845901355.png\" alt=\"scan\" width=\"491\" height=\"350\" />[/accordion_item][/accordion][/tab][/tabs][/column][/content_band]\r\n\r\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"]\r\n\r\n[column type=\"one-half\"][gap size=\"10%\"]<img class=\"aligncenter wp-image-4801 size-full\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou-e1409844224608.png\" alt=\"comingatyou\" width=\"433\" height=\"302\" />\r\n\r\n[gap size=\"13%\"][/column][column type=\"one-half\" last=\"true\"][custom_headline type=\"left\" level=\"h2\"]Hardware neutral[/custom_headline]\r\n\r\nArrayFire supports CUDA-capable NVIDIA GPUs, OpenCL devices, and a C-programming backend. The OpenCL devices include AMD GPUs/APUs and Intel Xeon Phi co-processors. It also supports mobile OpenCL devices from ARM, Qualcomm, and others. With ArrayFire, you can easily switch between CUDA or OpenCL without changing your code.\r\n\r\nArrayFire is a high-performance software library designed for maximum productivity and speed without the hassle of writing difficult low-level device code. Each of <a href=\"https://www.sandbox.arrayfire.com/docs/modules.htm\">ArrayFire\'s functions</a> has been hand-tuned by our CUDA and OpenCL experts. [gap size=\"5%\"]\r\n\r\n[/column]\r\n\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"]\r\n\r\n[column type=\"one-half\"][custom_headline type=\"left\" level=\"h2\"]Open Source[/custom_headline]\r\n\r\nArrayFire is open source—it’s all there and it’s all free. We\'re big fans of freedom, collaboration, and perpetual motion. Adapt ArrayFire to meet your needs, watch it blaze, and tell us all about it!\r\n\r\nBe sure to check out all of the ArrayFire functions (and a lot more!) in our <a href=\"https://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don’t forget to visit our <a href=\"https://groups.google.com/forum/#!forum/arrayfire-users\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and best practices. [gap size=\"11%\"]\r\n\r\n[/column]\r\n\r\n[column type=\"one-fourth\"][gap size=\"40%\"][counter num_start=\"0\" num_end=\"1538\" num_speed=\"5000\"  num_color=\"#f08027\" text_below=\"stars\" text_color=\"#212c43\"]\r\n\r\n[counter num_start=\"0\" num_end=\"238\" num_speed=\"5000\"  num_color=\"#f08027\"  text_below=\"forks\" text_color=\"#212c43\"][/column][column type=\"one-fourth\" last=\"true\"][gap size=\"40%\"]\r\n\r\n[counter num_start=\"0\" num_end=\"240\" num_speed=\"5000\"  num_color=\"#f08027\"  text_below=\"functions\" text_color=\"#212c43\"]\r\n\r\n[counter num_start=\"0\" num_end=\"4591\" num_speed=\"5000\"  num_color=\"#f08027\"  text_below=\"commits\" text_color=\"#212c43\"]\r\n\r\n[/column][/content_band]','Why ArrayFire?','','inherit','closed','closed','','7054-revision-v1','','','2018-06-26 15:37:33','2018-06-26 19:37:33','',7054,'https://sandbox.arrayfire.com/7054-revision-v1/',0,'revision','',0),(9833,6,'2018-06-26 15:40:24','2018-06-26 19:40:24','Learn how ArrayFire has worked in real code, including applications in academia, finance, government, life sciences, manufacturing, media, and oil & gas. With ArrayFire, you get the best in accelerated computing, ensuring real success in your business and research objectives. Below we show some of our favorite projects we\'ve worked on in the past including:\n\n<ul>\n<li><a href=\"#computer-vision\">Computer Vision</a></li>\n<li><a href=\"#defense\">Defense</a></li>\n<li><a href=\"#finance\">Finance</a></li>\n<li><a href=\"#biomedical\">Biomedical Applications</a></li>\n</ul>\n\n\n<a name=\"computer-vision\"></a>\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"][custom_headline type=\"left\" level=\"h2\" ]Computer Vision[/custom_headline][gap size=\"4%\"]\n\n[column type=\"one-half\"][promo image=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/10/glasses-logo-promo-01.png\" alt=\"Glasses.com\"]The Glasses.com app relies on computer vision to recognize the features of a user’s face. The application then generates an accurate, high-fidelity, three-dimensional model of that face, and virtually places selected frames on the image.\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-study-glasses-com-app-with-3dfit-technology/\" size=\"regular\" ]Read the case study[/button][/promo][/column]</p>\n[/content_band]</p>\n\n<a name=\"defense\"></a>\n[content_band bg_color=\"#ffffff\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"][custom_headline type=\"left\" level=\"h2\" ]Defense[/custom_headline][gap size=\"4%\"]\n\n[column type=\"one-half\" last=\"true\"][promo image=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/10/reveal-logo-promo-01.png\" alt=\"Reveal Imaging\"]Reveal Imaging, an SAIC company, uses ArrayFire in developing threat-detection products for transportation systems—such as cargo and baggage screening in airports—and in securing facilities and public events.\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-study-reveal-imaging/\" size=\"regular\" ]Read the case study[/button][/promo][/column][/content_band]</p>\n\n<a name=\"finance\"></a>\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"][custom_headline type=\"left\" level=\"h2\" ]Financial Services[/custom_headline][gap size=\"4%\"]\n\n[column type=\"one-half\"][promo image=\"https://sandbox.arrayfire.com/wp-content/uploads/2015/04/philadelphia-skyline.png\" alt=\"Fortune 300 Financial Services Company\"]\nArrayFire evaluated the performance of a hedge platform implemented in CUDA. Our final deliverable consisted of a 100 page report discussing the code base, performance and optimization, fault tolerance, scalability, compatibility with emerging trends, and  disaster recovery options. Our suggestions resulted in a 20% decrease in production runtimes.\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-study-fortune-300-financial-company\" size=\"regular\" ]Read this case study[/button][/promo][/column]</p>\n\n[column type=\"one-half\"][promo image=\"https://sandbox.arrayfire.com/wp-content/uploads/2016/08/pT5oEjE8c.jpg\" alt=\"Fortune 200 Insurance Company\"]\nArrayFire was hired to conduct a comprehensive audit of two hedging platforms. Our final deliverable was a 160 page technical report, a middle-management report, and five executive summaries detailing our findings. ArrayFire located key bottleknecks that, once corrected, decreased the total nightly runtime by 39% without any major code or system modifications.\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-study-fortune-200-insurance-company\" size=\"regular\" ]Read this case study[/button][/promo][/column]</p>\n[/content_band]\n\n<a name=\"biomedical\"></a>\n[content_band bg_color=\"#ffffff\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"][custom_headline type=\"left\" level=\"h2\" ]Biomedical Services[/custom_headline][gap size=\"4%\"]\n\n[column type=\"one-half\"][promo image=\"https://sandbox.arrayfire.com/wp-content/uploads/2016/08/watermark-sleepmed-logo.png\" alt=\"SleepMed\"]\nSleepMed is the nation leader in diagnosing and treating sleep disorders in the United States. SleepMed contracted with ArrayFire to develop a detailed test suite and refactor their code to permit easier addition of new hardware. Through aggressive testing and modularization, ArrayFire reduced their code length by nearly 40% while providing a comprehensive set of tests for each module.\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-study-sleepmed/\" size=\"regular\" ]Read this case study[/button][/promo][/column]</p>\n\n[/content_band]\n\n','Case Studies','','inherit','closed','closed','','9071-autosave-v1','','','2018-06-26 15:40:24','2018-06-26 19:40:24','',9071,'https://sandbox.arrayfire.com/9071-autosave-v1/',0,'revision','',0),(9834,6,'2018-06-26 15:40:32','2018-06-26 19:40:32','Learn how ArrayFire has worked in real code, including applications in academia, finance, government, life sciences, manufacturing, media, and oil & gas. With ArrayFire, you get the best in accelerated computing, ensuring real success in your business and research objectives. Below we show some of our favorite projects we\'ve worked on in the past including:\r\n\r\n<ul>\r\n<li><a href=\"#computer-vision\">Computer Vision</a></li>\r\n<li><a href=\"#defense\">Defense</a></li>\r\n<li><a href=\"#finance\">Finance</a></li>\r\n<li><a href=\"#biomedical\">Biomedical Applications</a></li>\r\n</ul>\r\n\r\n\r\n<a name=\"computer-vision\"></a>\r\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"][custom_headline type=\"left\" level=\"h2\" ]Computer Vision[/custom_headline][gap size=\"4%\"]\r\n\r\n[column type=\"one-half\"][promo image=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/10/glasses-logo-promo-01.png\" alt=\"Glasses.com\"]The Glasses.com app relies on computer vision to recognize the features of a user’s face. The application then generates an accurate, high-fidelity, three-dimensional model of that face, and virtually places selected frames on the image.\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-study-glasses-com-app-with-3dfit-technology/\" size=\"regular\" ]Read the case study[/button][/promo][/column]</p>\r\n[/content_band]</p>\r\n\r\n<a name=\"defense\"></a>\r\n[content_band bg_color=\"#ffffff\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"][custom_headline type=\"left\" level=\"h2\" ]Defense[/custom_headline][gap size=\"4%\"]\r\n\r\n[column type=\"one-half\" last=\"true\"][promo image=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/10/reveal-logo-promo-01.png\" alt=\"Reveal Imaging\"]Reveal Imaging, an SAIC company, uses ArrayFire in developing threat-detection products for transportation systems—such as cargo and baggage screening in airports—and in securing facilities and public events.\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-study-reveal-imaging/\" size=\"regular\" ]Read the case study[/button][/promo][/column][/content_band]</p>\r\n\r\n<a name=\"finance\"></a>\r\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"][custom_headline type=\"left\" level=\"h2\" ]Financial Services[/custom_headline][gap size=\"4%\"]\r\n\r\n[column type=\"one-half\"][promo image=\"https://sandbox.arrayfire.com/wp-content/uploads/2015/04/philadelphia-skyline.png\" alt=\"Fortune 300 Financial Services Company\"]\r\nArrayFire evaluated the performance of a hedge platform implemented in CUDA. Our final deliverable consisted of a 100 page report discussing the code base, performance and optimization, fault tolerance, scalability, compatibility with emerging trends, and  disaster recovery options. Our suggestions resulted in a 20% decrease in production runtimes.\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-study-fortune-300-financial-company\" size=\"regular\" ]Read this case study[/button][/promo][/column]</p>\r\n\r\n[column type=\"one-half\"][promo image=\"https://sandbox.arrayfire.com/wp-content/uploads/2016/08/pT5oEjE8c.jpg\" alt=\"Fortune 200 Insurance Company\"]\r\nArrayFire was hired to conduct a comprehensive audit of two hedging platforms. Our final deliverable was a 160 page technical report, a middle-management report, and five executive summaries detailing our findings. ArrayFire located key bottleknecks that, once corrected, decreased the total nightly runtime by 39% without any major code or system modifications.\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-study-fortune-200-insurance-company\" size=\"regular\" ]Read this case study[/button][/promo][/column]</p>\r\n[/content_band]\r\n\r\n<a name=\"biomedical\"></a>\r\n[content_band bg_color=\"#ffffff\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"][custom_headline type=\"left\" level=\"h2\" ]Biomedical Services[/custom_headline][gap size=\"4%\"]\r\n\r\n[column type=\"one-half\"][promo image=\"https://sandbox.arrayfire.com/wp-content/uploads/2016/08/watermark-sleepmed-logo.png\" alt=\"SleepMed\"]\r\nSleepMed is the nation leader in diagnosing and treating sleep disorders in the United States. SleepMed contracted with ArrayFire to develop a detailed test suite and refactor their code to permit easier addition of new hardware. Through aggressive testing and modularization, ArrayFire reduced their code length by nearly 40% while providing a comprehensive set of tests for each module.\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-study-sleepmed/\" size=\"regular\" ]Read this case study[/button][/promo][/column]</p>\r\n\r\n[/content_band]\r\n\r\n','Case Studies','','inherit','closed','closed','','9071-revision-v1','','','2018-06-26 15:40:32','2018-06-26 19:40:32','',9071,'https://sandbox.arrayfire.com/9071-revision-v1/',0,'revision','',0),(9835,6,'2018-06-26 15:42:34','2018-06-26 19:42:34','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"][column type=\"three-fifths\"][custom_headline type=\"left\" level=\"h2\"]Call the ArrayFire team[/custom_headline]\n\nHire us to accelerate your code, train your pros, or even write new code for your organization!\n\nWe’ve already helped thousands of organizations speed up their code. We’ve accelerated algorithms, sped up data analysis, and solved challenging problems of all types in the past, and we’re confident that we can accelerate your code, too.\n\nStart by setting up a free consultation to discuss your project with an ArrayFire expert today!\n\n[gap size=\"5%\"]\n\n[button  type=\"flat\" shape=\"rounded\" href=\"https://meetme.so/arrayfire\" size=\"normal\" ]Schedule a consultation[/button]\n\n[button  type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-studies\" size=\"normal\" ]Read Case Studies[/button]\n\n[/column]\n\n\n[column type=\"two-fifths\" last=\"true\" class=\"center-text\"][gap size=\"15%\"]<img class=\"aligncenter wp-image-462\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal.png\" alt=\"Bat signal\" width=\"700\" height=\"437\" />[/column][gap size=\"2%\"][/content_band]\n\n<!-- Starter Package Band -->\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"]\n\n[column type=\"one-half\"] [custom_headline type=\"left\" level=\"h2\"]Starter Package ($799) [/custom_headline] Hire us for a single day. We\'ll match you with one engineer dedicated for a full day, supported by senior and test engineers throughout the day. Here\'s how it works:\n\n[icon_list] [icon_list_item type=\"angle-double-right\"]We conduct an initial phone call.[/icon_list_item] [icon_list_item type=\"angle-double-right\"]You send us your code or algorithm. [/icon_list_item] [icon_list_item type=\"angle-double-right\"]We analyze your code for potential GPU benefit.[/icon_list_item][icon_list_item type=\"angle-double-right\"]We accelerate as much of your code as is possible within the one-day effort, applying our extensive GPU software libraries.[/icon_list_item][icon_list_item type=\"angle-double-right\"]We produce a final report for you, along with your optimized code.[/icon_list_item] [/icon_list] The final report outlines the best approach to follow for full GPU-acceleration of your code.\n\n[button type=\"flat\"  shape=\"rounded\" size=\"regular\" href=\"https://sandbox.arrayfire.com/product-category/starter-package/\" title=\"Starter Package\"]Get the Starter Package[/button]\n\n&nbsp;\n\n[/column][column type=\"one-half\" last=\"true\" ][gap size=\"15%\"]<img class=\"aligncenter wp-image-4962\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/02/Benchmark-guy-torso-opposite.png\" alt=\"Benchmark guy, torso opposite\" width=\"450\" height=\"397\" />[/column]\n<div></div>\n[/content_band]\n\n<!-- Software Design Horizontal Band -->\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"0px\" margin_top=\"0px\" padding_bottom=\"40px\" ]\n\n<!-- Link from home page -->\n<a name=\"software-design\"></a>\n\n[custom_headline type=\"left\" level=\"h2\" class=\"center-text\"]Software Design[/custom_headline]\n\nYour hardware can do anything, given the right code. Getting that code right can be tricky when your team is swamped in work or when you\'re new to parallel programming. Bring us in—our team is capable of writing custom code that\'s as unique as your work and tailored to your task. Here\'s what we bring to the table:\n\n[column type=\"one-half\"]\n\n[icon_list] [icon_list_item type=\"angle-double-right\"]Excellence in GPU code[/icon_list_item] [icon_list_item type=\"angle-double-right\"]Well-written, efficient C, C++, Fortran, Java, or .NET [/icon_list_item] [icon_list_item type=\"angle-double-right\"]Application porting and integration[/icon_list_item][icon_list_item type=\"angle-double-right\"]Tuning software to peak hardware performance[/icon_list_item][icon_list_item type=\"angle-double-right\"]Scalability of algorithms to handle enterprise-level programs[/icon_list_item] [/icon_list]\n\nRead more about our capabilities in our <a href=\"/case-studies\">case studies</a> or check out one of our more involved projects to the right.\n\n[button  type=\"flat\" shape=\"rounded\" href=\"https://meetme.so/arrayfire\" size=\"regular\" ]Schedule a consultation[/button]\n[/column]\n\n[column type=\"one-half\"]\n[promo image=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/10/glasses-logo-promo-01.png\" alt=\"Glasses.com\"]The Glasses.com app relies on computer vision functionality and three-dimentional head modeling code implemented and accelerated by ArrayFire. This code generates accurate, high-fidelity images that let a user virtually try on thousands of pairs of glasses without leaving the comfort of their own home.\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-study-glasses-com-app-with-3dfit-technology\" size=\"regular\" ]Read the case study[/button]</p>\n[/promo]\n\n[/column]\n\n [/content_band]\n\n<!-- System Evaluation Horizontal Band -->\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"]\n\n<!-- Link from home page -->\n<a name=\"system-evaluation\"></a>\n\n[custom_headline type=\"left\" level=\"h2\" class=\"center-text\"]System Evaluation[/custom_headline]\n\nGetting the maximum performance out of your system is tricky to say the least. The interplay between network communication, disk operations, and processing can be tricky to understand and even more difficult to profile correctly. Our team excels at benchmarking and we know how to find the bottleknecks in your application quickly. Hire us to evaluate sections of your code or the entire system. We do it all! Here is what we bring to the table:\n\n[column type=\"one-half\"  last=\"true\" ]\n\n[icon_list]\n[icon_list_item type=\"angle-double-right\"]System architecture and design expertise\n[/icon_list_item]\n\n[icon_list_item type=\"angle-double-right\"]In-depth knowledge and a plethora of field experience optimizing applications and processes for CPUs, GPUs, and FPGAs.[/icon_list_item]\n\n[icon_list_item type=\"angle-double-right\"]Awareness of the latest industry trends and tools[/icon_list_item]\n\n[icon_list_item type=\"angle-double-right\"]Hands on experience auditing on large, complicated systems.[/icon_list_item]\n\n[/icon_list][button  type=\"flat\" shape=\"rounded\" href=\"https://meetme.so/arrayfire\" size=\"regular\" ]Schedule a consultation[/button][/column]\n\n[column type=\"one-half\"]\n\n[promo image=\"https://sandbox.arrayfire.com/wp-content/uploads/2016/08/pT5oEjE8c-1024x240.jpg\" alt=\"San Fransisco Skyline\"]A Fortune 200 Insurance Company contacted ArrayFire to conduct an audit of their system in nine key areas. Two of these were scalability and optimization techniques. Through our comprehensive review ArrayFire located key bottleknecks that, once corrected, decreased total nightly runtime by 39% without any major code or system modifications.\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-study-fortune-200-insurance-company\" size=\"regular\" ]Read the case study[/button]</p>\n[/promo]\n\n[/column]\n\n[/content_band]','Consulting','','inherit','closed','closed','','6634-autosave-v1','','','2018-06-26 15:42:34','2018-06-26 19:42:34','',6634,'https://sandbox.arrayfire.com/6634-autosave-v1/',0,'revision','',0),(9836,6,'2018-06-26 15:42:58','2018-06-26 19:42:58','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"][column type=\"three-fifths\"][custom_headline type=\"left\" level=\"h2\"]Call the ArrayFire team[/custom_headline]\r\n\r\nHire us to accelerate your code, train your pros, or even write new code for your organization!\r\n\r\nWe’ve already helped thousands of organizations speed up their code. We’ve accelerated algorithms, sped up data analysis, and solved challenging problems of all types in the past, and we’re confident that we can accelerate your code, too.\r\n\r\nStart by setting up a free consultation to discuss your project with an ArrayFire expert today!\r\n\r\n[gap size=\"5%\"]\r\n\r\n[button  type=\"flat\" shape=\"rounded\" href=\"https://meetme.so/arrayfire\" size=\"normal\" ]Schedule a consultation[/button]\r\n\r\n[button  type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-studies\" size=\"normal\" ]Read Case Studies[/button]\r\n\r\n[/column]\r\n\r\n\r\n[column type=\"two-fifths\" last=\"true\" class=\"center-text\"][gap size=\"15%\"]<img class=\"aligncenter wp-image-462\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal.png\" alt=\"Bat signal\" width=\"700\" height=\"437\" />[/column][gap size=\"2%\"][/content_band]\r\n\r\n<!-- Starter Package Band -->\r\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"]\r\n\r\n[column type=\"one-half\"] [custom_headline type=\"left\" level=\"h2\"]Starter Package ($799) [/custom_headline] Hire us for a single day. We\'ll match you with one engineer dedicated for a full day, supported by senior and test engineers throughout the day. Here\'s how it works:\r\n\r\n[icon_list] [icon_list_item type=\"angle-double-right\"]We conduct an initial phone call.[/icon_list_item] [icon_list_item type=\"angle-double-right\"]You send us your code or algorithm. [/icon_list_item] [icon_list_item type=\"angle-double-right\"]We analyze your code for potential GPU benefit.[/icon_list_item][icon_list_item type=\"angle-double-right\"]We accelerate as much of your code as is possible within the one-day effort, applying our extensive GPU software libraries.[/icon_list_item][icon_list_item type=\"angle-double-right\"]We produce a final report for you, along with your optimized code.[/icon_list_item] [/icon_list] The final report outlines the best approach to follow for full GPU-acceleration of your code.\r\n\r\n[button type=\"flat\"  shape=\"rounded\" size=\"regular\" href=\"https://sandbox.arrayfire.com/product-category/starter-package/\" title=\"Starter Package\"]Get the Starter Package[/button]\r\n\r\n&nbsp;\r\n\r\n[/column][column type=\"one-half\" last=\"true\" ][gap size=\"15%\"]<img class=\"aligncenter wp-image-4962\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/02/Benchmark-guy-torso-opposite.png\" alt=\"Benchmark guy, torso opposite\" width=\"450\" height=\"397\" />[/column]\r\n<div></div>\r\n[/content_band]\r\n\r\n<!-- Software Design Horizontal Band -->\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"0px\" margin_top=\"0px\" padding_bottom=\"40px\" ]\r\n\r\n<!-- Link from home page -->\r\n<a name=\"software-design\"></a>\r\n\r\n[custom_headline type=\"left\" level=\"h2\" class=\"center-text\"]Software Design[/custom_headline]\r\n\r\nYour hardware can do anything, given the right code. Getting that code right can be tricky when your team is swamped in work or when you\'re new to parallel programming. Bring us in—our team is capable of writing custom code that\'s as unique as your work and tailored to your task. Here\'s what we bring to the table:\r\n\r\n[column type=\"one-half\"]\r\n\r\n[icon_list] [icon_list_item type=\"angle-double-right\"]Excellence in GPU code[/icon_list_item] [icon_list_item type=\"angle-double-right\"]Well-written, efficient C, C++, Fortran, Java, or .NET [/icon_list_item] [icon_list_item type=\"angle-double-right\"]Application porting and integration[/icon_list_item][icon_list_item type=\"angle-double-right\"]Tuning software to peak hardware performance[/icon_list_item][icon_list_item type=\"angle-double-right\"]Scalability of algorithms to handle enterprise-level programs[/icon_list_item] [/icon_list]\r\n\r\nRead more about our capabilities in our <a href=\"/case-studies\">case studies</a> or check out one of our more involved projects to the right.\r\n\r\n[button  type=\"flat\" shape=\"rounded\" href=\"https://meetme.so/arrayfire\" size=\"regular\" ]Schedule a consultation[/button]\r\n[/column]\r\n\r\n[column type=\"one-half\"]\r\n[promo image=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/10/glasses-logo-promo-01.png\" alt=\"Glasses.com\"]The Glasses.com app relies on computer vision functionality and three-dimentional head modeling code implemented and accelerated by ArrayFire. This code generates accurate, high-fidelity images that let a user virtually try on thousands of pairs of glasses without leaving the comfort of their own home.\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-study-glasses-com-app-with-3dfit-technology\" size=\"regular\" ]Read the case study[/button]</p>\r\n[/promo]\r\n\r\n[/column]\r\n\r\n [/content_band]\r\n\r\n<!-- System Evaluation Horizontal Band -->\r\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"]\r\n\r\n<!-- Link from home page -->\r\n<a name=\"system-evaluation\"></a>\r\n\r\n[custom_headline type=\"left\" level=\"h2\" class=\"center-text\"]System Evaluation[/custom_headline]\r\n\r\nGetting the maximum performance out of your system is tricky to say the least. The interplay between network communication, disk operations, and processing can be tricky to understand and even more difficult to profile correctly. Our team excels at benchmarking and we know how to find the bottleknecks in your application quickly. Hire us to evaluate sections of your code or the entire system. We do it all! Here is what we bring to the table:\r\n\r\n[column type=\"one-half\"  last=\"true\" ]\r\n\r\n[icon_list]\r\n[icon_list_item type=\"angle-double-right\"]System architecture and design expertise\r\n[/icon_list_item]\r\n\r\n[icon_list_item type=\"angle-double-right\"]In-depth knowledge and a plethora of field experience optimizing applications and processes for CPUs, GPUs, and FPGAs.[/icon_list_item]\r\n\r\n[icon_list_item type=\"angle-double-right\"]Awareness of the latest industry trends and tools[/icon_list_item]\r\n\r\n[icon_list_item type=\"angle-double-right\"]Hands on experience auditing on large, complicated systems.[/icon_list_item]\r\n\r\n[/icon_list][button  type=\"flat\" shape=\"rounded\" href=\"https://meetme.so/arrayfire\" size=\"regular\" ]Schedule a consultation[/button][/column]\r\n\r\n[column type=\"one-half\"]\r\n\r\n[promo image=\"https://sandbox.arrayfire.com/wp-content/uploads/2016/08/pT5oEjE8c-1024x240.jpg\" alt=\"San Fransisco Skyline\"]A Fortune 200 Insurance Company contacted ArrayFire to conduct an audit of their system in nine key areas. Two of these were scalability and optimization techniques. Through our comprehensive review ArrayFire located key bottleknecks that, once corrected, decreased total nightly runtime by 39% without any major code or system modifications.\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/case-study-fortune-200-insurance-company\" size=\"regular\" ]Read the case study[/button]</p>\r\n[/promo]\r\n\r\n[/column]\r\n\r\n[/content_band]','Consulting','','inherit','closed','closed','','6634-revision-v1','','','2018-06-26 15:42:58','2018-06-26 19:42:58','',6634,'https://sandbox.arrayfire.com/6634-revision-v1/',0,'revision','',0),(9837,6,'2018-06-26 15:43:58','2018-06-26 19:43:58','<div>\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"top\" padding_top=\"40px\" padding_bottom=\"40px\"]\r\n[column type=\"one-half\"][custom_headline type=\"left\" level=\"h3\"  ]Mobile GPU Computing[/custom_headline]\r\n\r\nMobile GPUs offer accelerated performance. If you would like to use ArrayFire in a mobile application or if you would like to hire our mobile acceleration services, email us at <a href=\"mailto:sales@arrayfire.com\" target=\"_blank\">sales@arrayfire.com</a> and include a description of your application.\r\n\r\nOur clients have achieved between 5X to 30X speed boosts for convolutions and other compute functions on mobile devices. It enables:[icon_list][icon_list_item type=\"angle-double-right\"]Real-time video processing[/icon_list_item][icon_list_item type=\"angle-double-right\"]Better augmented reality [/icon_list_item][icon_list_item type=\"angle-double-right\"]Better computational photograph[/icon_list_item][icon_list_item type=\"angle-double-right\"]Faster data processing[/icon_list_item][/icon_list]\r\n\r\nAll mobile devices have a GPU which can deliver greater compute throughput than the CPU. Why not use the GPU to make your app faster?[/column][column type=\"one-half\" fade=\"true\" last=\"true\" fade_animation=\"in-from-right\" class=\"center-text\"][gap size=\"10%\"][image src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/02/mobile_Exported1-e1395437261846.png\"][/column]\r\n<div></div>\r\n[/content_band]\r\n\r\n</div>','Mobile','','inherit','closed','closed','','6631-revision-v1','','','2018-06-26 15:43:58','2018-06-26 19:43:58','',6631,'https://sandbox.arrayfire.com/6631-revision-v1/',0,'revision','',0),(9838,6,'2018-06-26 15:46:20','2018-06-26 19:46:20','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" ]\r\n\r\n[column type=\"one-half\"][custom_headline type=\"left\" level=\"h2\" ]Train your team[/custom_headline] Attendees will receive the latest industry knowledge and techniques for GPU computing in CUDA and OpenCL.\r\n\r\nArrayFire offers up to four days of specialized GPU training in CUDA and OpenCL programming. We provide customized on-site training courses where we can travel to your location and provide a CUDA or OpenCL training course tailored to meet your application-specific needs. We also offer individual trainings at our Atlanta office.\r\n\r\nWe recommend that attendees have a working knowledge of C/C++ in order to gain the most from the training courses.\r\n\r\n[button type=\"flat\" shape=\"rounded\"  size=\"regular\" href=\"mailto:sales@arrayfire.com?Subject=Training%20Inquiry\"]Contact us about a training[/button]\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" class=\"center-text\"][gap size=\"15%\"][image src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/02/Professor-AF_Exported-e1395436350363.png\" ][/column]\r\n\r\n[/content_band][content_band bg_color=\"#F2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" ]\r\n\r\n[column type=\"one-half\"][gap size=\"10%\"]<img class=\"aligncenter wp-image-4806\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/gears1-e1395437543311.png\" alt=\"gears\" width=\"427\" height=\"400\" />\r\n\r\n[/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h2\"]Included in the course[/custom_headline]\r\n\r\nYou provide the minds, and we\'ll take care of the rest. Each training comes with the following:\r\n\r\n[icon_list] [icon_list_item type=\"angle-double-right\"]Instruction by an excellent and interesting expert[/icon_list_item] [icon_list_item type=\"angle-double-right\"]Hands-on exercises[/icon_list_item][icon_list_item type=\"angle-double-right\"]Use of a laptop with CUDA and OpenCL capable GPUs and CPUs [/icon_list_item] [icon_list_item type=\"angle-double-right\"]Choice of Linux or Windows operating system[/icon_list_item][icon_list_item type=\"angle-double-right\"]Printed manual of lecture material[/icon_list_item][icon_list_item type=\"angle-double-right\"]Electronic copy of programming exercises[/icon_list_item][/icon_list]\r\n\r\n[button type=\"flat\" shape=\"rounded\"  size=\"regular\" href=\"mailto:sales@arrayfire.com?Subject=Training%20Inquiry\"]Go ahead, contact us about a training[/button]\r\n\r\n[/column][/content_band]\r\n\r\n[content_band bg_image=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/11/Epipheo-background1.png\" parallax=\"true\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" ]\r\n\r\n[blockquote cite=\"<span style=\"color: #ffffff;\">Brian Rapp</span>\" type=\"center\"]<span style=\"color: #ffffff;\">One can\'t ask for better individualized instruction than the environment I was fortunate enough to encounter.</span> <span style=\"color: #ffffff;\">The instructor was able to completely focus on my particular needs and concerns.</span>\r\n\r\n<span style=\"color: #ffffff;\">—Brian Rapp,  U.S. Army Research Lab</span>[/blockquote]\r\n\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" ]\r\n\r\n[custom_headline type=\"left\" level=\"h2\"]Training Syllabus[/custom_headline] [column type=\"one-half\"] [custom_headline type=\"left\" level=\"h5\"  accent=\"false\"]Day 1, Introduction[/custom_headline] Lectures:\r\nGPU Computing Overview\r\nThe Programming Model\r\nBasic Dataset Mapping Techniques\r\nLibraries, ArrayFire\r\nProfiling Tools\r\n\r\nPractice:\r\nA Simple Kernel\r\nEquivalent ArrayFire Example\r\nUsing Libraries\r\nMonte Carlo Pi Estimation\r\nTiming and ArrayFire\r\nDebugging Code\r\n\r\n[custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Day 3, Multi-GPU[/custom_headline] Lectures (customizable):\r\nMulti-GPU Use Cases\r\nMulti-GPUs: Contexts\r\nExisting Libraries\r\nScaling Across Multiple GPUs\r\n\r\nPractice:\r\nOut of Core Problems: Matrix Multiply\r\nTask Level Parallelism: Optimization\r\nArrayFire Multi-GPU[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"] [custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Day 2, Optimization[/custom_headline] Lectures:\r\nArchitecture: Grids, Blocks, and Threads\r\nMemory Model: Global, Shared, and Constant Memory\r\nAdvanced Mapping Techniques\r\nStreams: Asynchronos Launches and Concurrent Execution\r\nArrayFire: Lazy Evaluation and Code Vectorization\r\n\r\nPractice:\r\nMatrix Transpose\r\nOptimization Using Shared Memory\r\nMedian Filter\r\nOptimization Using Constant Memory\r\nStream Example\r\nArrayFire Example: Nearest Neighbor Algorithm\r\n\r\n[custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Day 4, Algorithm Problems[/custom_headline]\r\n\r\nLectures and Practice (customizable):\r\nReductions\r\nScan Algorithms\r\nSort\r\nConvolution\r\nCustomer-Specific Problem\r\n\r\n[button type=\"flat\" shape=\"rounded\"  size=\"regular\" href=\"mailto:sales@arrayfire.com?Subject=Training%20Inquiry\"]Okay, <em>now </em>contact us about a training[/button][/column][/content_band]','Training','','inherit','closed','closed','','6640-revision-v1','','','2018-06-26 15:46:20','2018-06-26 19:46:20','',6640,'https://sandbox.arrayfire.com/6640-revision-v1/',0,'revision','',0),(9839,6,'2018-06-26 15:47:09','2018-06-26 19:47:09','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" ]\r\n\r\n[column type=\"one-half\"][custom_headline type=\"left\" level=\"h2\" ]CUDA &amp; OpenCL Training[/custom_headline]\r\n\r\nArrayFire offers up to four days of specialized GPU training in CUDA and OpenCL programming. Attendees will receive the latest industry knowledge and techniques for GPU computing in CUDA and OpenCL.\r\n\r\nWe provide customized on-site training courses. We can travel to your location and provide a CUDA or OpenCL training course tailored to meet your application-specific needs. We also offer trainings at our Atlanta office.\r\n\r\nWe recommend that attendees have a working knowledge of C/C++ in order to gain the most from the training courses.\r\n\r\n[button type=\"flat\" shape=\"rounded\"  size=\"regular\" href=\"mailto:sales@arrayfire.com?Subject=Training%20Inquiry\"]Contact us about a training[/button]\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" class=\"center-text\"][gap size=\"15%\"][image src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/02/Professor-AF_Exported-e1395436350363.png\" ][/column]\r\n\r\n[/content_band][content_band bg_color=\"#F2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" ]\r\n\r\n[column type=\"one-half\"][gap size=\"10%\"]<img class=\"aligncenter wp-image-4806\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/gears1-e1395437543311.png\" alt=\"gears\" width=\"427\" height=\"400\" />\r\n\r\n[/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h2\"]Included in the course[/custom_headline]\r\n\r\nYou provide the minds, and we\'ll take care of the rest. Each training comes with the following:\r\n\r\n[icon_list] [icon_list_item type=\"angle-double-right\"]Instruction by an excellent and interesting expert[/icon_list_item] [icon_list_item type=\"angle-double-right\"]Hands-on exercises[/icon_list_item][icon_list_item type=\"angle-double-right\"]Use of a laptop with CUDA and OpenCL capable GPUs and CPUs [/icon_list_item] [icon_list_item type=\"angle-double-right\"]Choice of Linux or Windows operating system[/icon_list_item][icon_list_item type=\"angle-double-right\"]Printed manual of lecture material[/icon_list_item][icon_list_item type=\"angle-double-right\"]Electronic copy of programming exercises[/icon_list_item][/icon_list]\r\n\r\n[button type=\"flat\" shape=\"rounded\"  size=\"regular\" href=\"mailto:sales@arrayfire.com?Subject=Training%20Inquiry\"]Go ahead, contact us about a training[/button]\r\n\r\n[/column][/content_band]\r\n\r\n[content_band bg_image=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/Epipheo-background1.png\" parallax=\"true\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" ]\r\n\r\n[blockquote cite=\"<span style=\"color: #ffffff;\">Brian Rapp</span>\" type=\"center\"]<span style=\"color: #ffffff;\">One can\'t ask for better individualized instruction than the environment I was fortunate enough to encounter.</span> <span style=\"color: #ffffff;\">The instructor was able to completely focus on my particular needs and concerns.</span>\r\n\r\n<span style=\"color: #ffffff;\">—Brian Rapp,  U.S. Army Research Lab</span>[/blockquote]\r\n\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" ]\r\n\r\n[custom_headline type=\"left\" level=\"h2\"]Training Syllabus[/custom_headline] [column type=\"one-half\"] [custom_headline type=\"left\" level=\"h5\"  accent=\"false\"]Day 1, Introduction[/custom_headline] Lectures:\r\nGPU Computing Overview\r\nThe Programming Model\r\nBasic Dataset Mapping Techniques\r\nLibraries, ArrayFire\r\nProfiling Tools\r\n\r\nPractice:\r\nA Simple Kernel\r\nEquivalent ArrayFire Example\r\nUsing Libraries\r\nMonte Carlo Pi Estimation\r\nTiming and ArrayFire\r\nDebugging Code\r\n\r\n[custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Day 3, Multi-GPU[/custom_headline] Lectures (customizable):\r\nMulti-GPU Use Cases\r\nMulti-GPUs: Contexts\r\nExisting Libraries\r\nScaling Across Multiple GPUs\r\n\r\nPractice:\r\nOut of Core Problems: Matrix Multiply\r\nTask Level Parallelism: Optimization\r\nArrayFire Multi-GPU[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"] [custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Day 2, Optimization[/custom_headline] Lectures:\r\nArchitecture: Grids, Blocks, and Threads\r\nMemory Model: Global, Shared, and Constant Memory\r\nAdvanced Mapping Techniques\r\nStreams: Asynchronos Launches and Concurrent Execution\r\nArrayFire: Lazy Evaluation and Code Vectorization\r\n\r\nPractice:\r\nMatrix Transpose\r\nOptimization Using Shared Memory\r\nMedian Filter\r\nOptimization Using Constant Memory\r\nStream Example\r\nArrayFire Example: Nearest Neighbor Algorithm\r\n\r\n[custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Day 4, Algorithm Problems[/custom_headline]\r\n\r\nLectures and Practice (customizable):\r\nReductions\r\nScan Algorithms\r\nSort\r\nConvolution\r\nCustomer-Specific Problem\r\n\r\n[button type=\"flat\" shape=\"rounded\"  size=\"regular\" href=\"mailto:sales@arrayfire.com?Subject=Training%20Inquiry\"]Okay, <em>now </em>contact us about a training[/button][/column][/content_band]','CUDA/OpenCL Training','','inherit','closed','closed','','9492-revision-v1','','','2018-06-26 15:47:09','2018-06-26 19:47:09','',9492,'https://sandbox.arrayfire.com/9492-revision-v1/',0,'revision','',0),(9840,6,'2018-06-26 15:47:56','2018-06-26 19:47:56','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" ]\r\n\r\n[column type=\"one-half\"][custom_headline type=\"left\" level=\"h2\" ]CUDA &amp; OpenCL Training[/custom_headline]\r\n\r\nArrayFire offers up to four days of specialized GPU training in CUDA and OpenCL programming. Attendees will receive the latest industry knowledge and techniques for GPU computing in CUDA and OpenCL.\r\n\r\nWe provide customized on-site training courses. We can travel to your location and provide a CUDA or OpenCL training course tailored to meet your application-specific needs. We also offer trainings at our Atlanta office.\r\n\r\nWe recommend that attendees have a working knowledge of C/C++ in order to gain the most from the training courses.\r\n\r\n[button type=\"flat\" shape=\"rounded\"  size=\"regular\" href=\"mailto:sales@arrayfire.com?Subject=Training%20Inquiry\"]Contact us about a training[/button]\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" class=\"center-text\"][gap size=\"15%\"][image src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/02/Professor-AF_Exported-e1395436350363.png\" ][/column]\r\n\r\n[/content_band][content_band bg_color=\"#F2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" ]\r\n\r\n[column type=\"one-half\"][gap size=\"10%\"]<img class=\"aligncenter wp-image-4806\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/gears1-e1395437543311.png\" alt=\"gears\" width=\"427\" height=\"400\" />\r\n\r\n[/column][column type=\"one-half\" last=\"true\"]\r\n\r\n[custom_headline type=\"left\" level=\"h2\"]Included in the course[/custom_headline]\r\n\r\nYou provide the minds, and we\'ll take care of the rest. Each training comes with the following:\r\n\r\n[icon_list] [icon_list_item type=\"angle-double-right\"]Instruction by an excellent and interesting expert[/icon_list_item] [icon_list_item type=\"angle-double-right\"]Hands-on exercises[/icon_list_item][icon_list_item type=\"angle-double-right\"]Use of a laptop with CUDA and OpenCL capable GPUs and CPUs [/icon_list_item] [icon_list_item type=\"angle-double-right\"]Choice of Linux or Windows operating system[/icon_list_item][icon_list_item type=\"angle-double-right\"]Printed manual of lecture material[/icon_list_item][icon_list_item type=\"angle-double-right\"]Electronic copy of programming exercises[/icon_list_item][/icon_list]\r\n\r\n[button type=\"flat\" shape=\"rounded\"  size=\"regular\" href=\"mailto:sales@arrayfire.com?Subject=Training%20Inquiry\"]Go ahead, contact us about a training[/button]\r\n\r\n[/column][/content_band]\r\n\r\n[content_band bg_image=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/11/Epipheo-background1.png\" parallax=\"true\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" ]\r\n\r\n[blockquote cite=\"<span style=\"color: #ffffff;\">Brian Rapp</span>\" type=\"center\"]<span style=\"color: #ffffff;\">One can\'t ask for better individualized instruction than the environment I was fortunate enough to encounter.</span> <span style=\"color: #ffffff;\">The instructor was able to completely focus on my particular needs and concerns.</span>\r\n\r\n<span style=\"color: #ffffff;\">—Brian Rapp,  U.S. Army Research Lab</span>[/blockquote]\r\n\r\n[/content_band]\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" ]\r\n\r\n[custom_headline type=\"left\" level=\"h2\"]Training Syllabus[/custom_headline] [column type=\"one-half\"] [custom_headline type=\"left\" level=\"h5\"  accent=\"false\"]Day 1, Introduction[/custom_headline] Lectures:\r\nGPU Computing Overview\r\nThe Programming Model\r\nBasic Dataset Mapping Techniques\r\nLibraries, ArrayFire\r\nProfiling Tools\r\n\r\nPractice:\r\nA Simple Kernel\r\nEquivalent ArrayFire Example\r\nUsing Libraries\r\nMonte Carlo Pi Estimation\r\nTiming and ArrayFire\r\nDebugging Code\r\n\r\n[custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Day 3, Multi-GPU[/custom_headline] Lectures (customizable):\r\nMulti-GPU Use Cases\r\nMulti-GPUs: Contexts\r\nExisting Libraries\r\nScaling Across Multiple GPUs\r\n\r\nPractice:\r\nOut of Core Problems: Matrix Multiply\r\nTask Level Parallelism: Optimization\r\nArrayFire Multi-GPU[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"] [custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Day 2, Optimization[/custom_headline] Lectures:\r\nArchitecture: Grids, Blocks, and Threads\r\nMemory Model: Global, Shared, and Constant Memory\r\nAdvanced Mapping Techniques\r\nStreams: Asynchronos Launches and Concurrent Execution\r\nArrayFire: Lazy Evaluation and Code Vectorization\r\n\r\nPractice:\r\nMatrix Transpose\r\nOptimization Using Shared Memory\r\nMedian Filter\r\nOptimization Using Constant Memory\r\nStream Example\r\nArrayFire Example: Nearest Neighbor Algorithm\r\n\r\n[custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Day 4, Algorithm Problems[/custom_headline]\r\n\r\nLectures and Practice (customizable):\r\nReductions\r\nScan Algorithms\r\nSort\r\nConvolution\r\nCustomer-Specific Problem\r\n\r\n[button type=\"flat\" shape=\"rounded\"  size=\"regular\" href=\"mailto:sales@arrayfire.com?Subject=Training%20Inquiry\"]Okay, <em>now </em>contact us about a training[/button][/column][/content_band]','CUDA/OpenCL Training','','inherit','closed','closed','','9492-revision-v1','','','2018-06-26 15:47:56','2018-06-26 19:47:56','',9492,'https://sandbox.arrayfire.com/9492-revision-v1/',0,'revision','',0),(9841,6,'2018-06-26 15:48:39','2018-06-26 19:48:39','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" ]\r\n\r\n[column type=\"one-half\"][custom_headline type=\"left\" level=\"h2\" ]Xilinx SDAccel Training[/custom_headline]\r\n\r\nArrayFire is the exclusive Xilinx SDAccel™ Authorized Training Partner (ATP) for North America. Our SDAccel training courses help enable design teams to leverage Xilinx FPGAs for OpenCL application acceleration.\r\n\r\n<img src=\"https://sandbox.arrayfire.com/wp-content/uploads/2015/05/xilinx_alliance-1024x332.png\" alt=\"xilinx_alliance\" />[custom_headline type=\"left\" level=\"h5\"]Course Name[/custom_headline]Developing and Optimizing Applications Using the OpenCL Framework for FPGAs\r\n\r\n[button type=\"flat\" shape=\"rounded\"  size=\"regular\" href=\"mailto:sales@arrayfire.com?Subject=Training%20Inquiry\"]Contact us to register for training[/button]\r\n\r\n[custom_headline type=\"left\" level=\"h5\"]Course Description[/custom_headline]\r\n\r\nLearn how to develop new applications written in OpenCL, C/C++, and RTL in the SDAccel development environment for use on Xilinx FPGAs. Porting existing applications is also covered.\r\n\r\nTraining lectures and labs for this course will enable attendees to gain necessary skills to: identify parallel computing applications suitable for accelerating on FPGAs, understand how the FPGA architecture lends itself to parallel computing, write OpenCL programs for FPGAs, and utilize the SDAccel Development Environment.\r\n\r\nThis course also demonstrates how to debug and profile OpenCL code using the SDAccel development environment. In addition, you will also learn how to maximize performance and efficiently utilize FPGA resources.\r\n\r\n<strong>Course Duration</strong> – 2 days\r\n\r\n<strong>Price and Scheduling</strong> – Contact ArrayFire for quote and scheduling (Xilinx training credits accepted)\r\n\r\n<strong>Who Should Attend? </strong>– Software and hardware developers who want to develop OpenCL, C/C++, and RTL applications in the SDAccel development environment\r\n\r\n<strong>Prerequisites </strong>–<strong> </strong>Basic knowledge of C/C++\r\n\r\n<strong>Software Tools </strong>–<strong> </strong>SDAccel development environment and common build tools\r\n\r\n<strong>Hardware </strong>–<strong> </strong>Architecture: 7 series, UltraScale, UltraScale+\r\n\r\n&nbsp;\r\n\r\n[button type=\"flat\" shape=\"rounded\"  size=\"regular\" href=\"mailto:sales@arrayfire.com?Subject=Training%20Inquiry\"]Contact us to register for training[/button]\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\" fade=\"true\" fade_animation=\"in-from-right\" class=\"center-text\"][gap size=\"15%\"][image src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/02/Professor-AF_Exported-e1395436350363.png\" ][/column]<span style=\"color: #ffffff;\">n\'t ask for better individualized instruction than the environment I was fortunate enough to encounter.</span> <span style=\"color: #ffffff;\">The instructor was able to completely focus on </span>[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" ]\r\n\r\n[custom_headline type=\"left\" level=\"h2\"]Course Outline[/custom_headline] [column type=\"one-half\"] [custom_headline type=\"left\" level=\"h5\"  accent=\"false\"]Day 1[/custom_headline]\r\n<ul>\r\n 	<li>Introduction to OpenCL</li>\r\n 	<li>Comparison of CPU, GPU, and FPGA Architectures</li>\r\n 	<li>OpenCL Support for Xilinx FPGAs</li>\r\n 	<li>FPGA Hardware Details</li>\r\n 	<li>Introduction to the OpenCL API</li>\r\n 	<li><strong>Lab 1: </strong>Creating an OpenCL Program from Scratch</li>\r\n 	<li>OpenCL Execution Model</li>\r\n 	<li><strong>Lab 2: </strong>Vector Addition</li>\r\n 	<li>Memory Hierarchy</li>\r\n 	<li>Profiling and Debugging</li>\r\n 	<li><strong>Lab 3</strong>: Pi by Monte Carlo Processes</li>\r\n 	<li>Optimization</li>\r\n 	<li><strong>Lab 4</strong>: Maximizing Performance</li>\r\n 	<li><strong>Lab 5</strong>: Optimizing Kernels</li>\r\n</ul>\r\n[custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Day 2[/custom_headline]\r\n<ul>\r\n 	<li>Using the SDAccel Development Environment: Coding, Compiling, Emulating, Profiling, and Debugging</li>\r\n 	<li><strong>Lab 6</strong>: Profiling and Debugging Using the SDAccel Development Environment GUI</li>\r\n 	<li>Using Existing C/C++ Code as Kernels in OpenCL</li>\r\n 	<li><strong>Lab 7</strong>: Optimizing C/C++ Code for OpenCL</li>\r\n 	<li>RTL IP as Kernels in OpenCL</li>\r\n 	<li><strong>Lab 8</strong>: Using an RTL Kernel</li>\r\n</ul>\r\n[column type=\"one-half\" last=\"true\"] [custom_headline type=\"left\" level=\"h5\" accent=\"false\"]Lab Descriptions[/custom_headline]\r\n<ul>\r\n 	<li><strong>Lab 1: </strong>Creating an OpenCL Program from Scratch – Provides an overview of OpenCL API, memory transfers, and kernel enqueuer operations.</li>\r\n 	<li><strong>Lab 2: </strong>Vector Addition – Learn how to execute parallel kernels.</li>\r\n 	<li><strong>Lab 3</strong>: Pi by Monte Carlo Processes – Implement the Pi by Monte Carlo processes.</li>\r\n 	<li><strong>Lab 4</strong>: Maximizing Performance – Use vector data types and increase bandwidth.</li>\r\n 	<li><strong>Lab 5</strong>: Optimizing Kernels – Use Loop Unrolling and Loop Pipelining.</li>\r\n 	<li><strong>Lab 6</strong>: Profiling and Debugging Using the SDAccel Development Environment GUI – Learn how to use interactive programming tools to improve performance and squash bugs.</li>\r\n 	<li><strong>Lab 7</strong>: Optimizing C/C++ Code for OpenCL – Convert existing C/C++ code into a kernel that can be used by OpenCL</li>\r\n 	<li><strong>Lab 8</strong>: Using an RTL Kernel – Learn how to use existing, highly optimized IP in a new OpenCL application.</li>\r\n</ul>\r\n&nbsp;\r\n\r\n[button type=\"flat\" shape=\"rounded\"  size=\"regular\" href=\"mailto:sales@arrayfire.com?Subject=Training%20Inquiry\"]Okay, <em>now register</em>[/button][/column][/content_band]','Xilinx SDAccel Training','','inherit','closed','closed','','9494-revision-v1','','','2018-06-26 15:48:39','2018-06-26 19:48:39','',9494,'https://sandbox.arrayfire.com/9494-revision-v1/',0,'revision','',0),(9842,6,'2018-06-26 15:51:39','2018-06-26 19:51:39','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"]\r\n[custom_headline type=\"left\" level=\"h2\"]\r\nArrayFire Installers\r\n[/custom_headline]\r\n[custom_headline type=\"left\" level=\"h5\"]\r\nEach download contains both CUDA and OpenCL files.\r\n[/custom_headline]\r\n[gap size=\"4%\"]\r\n\r\n[column type=\"one-fourth\"][button  block=\"true\" onclick=\"&lt;!-- Google Code for ArrayFire Download (Windows) Conversion Page\r\nIn your html page, add the snippet and call\r\ngoog_report_conversion when someone clicks on the\r\nchosen link or button. --&gt;\r\n&lt;script type=\"text/javascript\"&gt;\r\n/* &lt;!&amp;#91;CDATA&amp;#91; */\r\ngoog_snippet_vars = function() {\r\nvar w = window;\r\nw.google_conversion_id = 1021026651;\r\nw.google_conversion_label = \"18VJCJjPql4Q28Lu5gM\";\r\nw.google_remarketing_only = false;\r\n}\r\n// DO NOT CHANGE THE CODE BELOW.\r\ngoog_report_conversion = function(url) {\r\ngoog_snippet_vars();\r\nwindow.google_conversion_format = \"3\";\r\nwindow.google_is_call = true;\r\nvar opt = new Object();\r\nopt.onload_callback = function() {\r\nif (typeof(url) != \'undefined\') {\r\nwindow.location = url;\r\n}\r\n}\r\nvar conv_handler = window&amp;#91;\'google_trackConversion\'&amp;#93;;\r\nif (typeof(conv_handler) == \'function\') {\r\nconv_handler(opt);\r\n}\r\n}\r\n/* &amp;#93;&amp;#93;&gt; */\r\n&lt;/script&gt;\r\n&lt;script type=\"text/javascript\"\r\nsrc=\"//www.googleadservices.com/pagead/conversion_async.js\"&gt;\r\n&lt;/script&gt;\" class=\"center-text\" type=\"flat\" shape=\"rounded\" href=\"https://go.pardot.com/l/37882/2015-03-19/lvvyk\" size=\"regular\" ]Windows, v3.6.0\r\n(64-bit)[/button][/column][column type=\"one-fourth\"][button block=\"true\" type=\"flat\" shape=\"rounded\" href=\"https://go.pardot.com/l/37882/2015-03-19/lw515\" size=\"regular\" ]Linux, v3.6.0\r\n(64-bit)[/button][/column][column type=\"one-fourth\"][button block=\"true\" type=\"flat\" shape=\"rounded\" href=\"https://go.pardot.com/l/37882/2015-03-19/ltx4p\" size=\"regular\" ]Mac OSX, v3.6.0\r\n(64-bit)[/button][/column][column type=\"one-fourth\"][button block=\"true\" type=\"flat\" shape=\"rounded\" href=\"https://go.pardot.com/l/37882/2017-09-19/5dgdc4\" size=\"regular\" ]Tegra X1 v3.5.1\r\n(64-bit)[/button][/column][gap size=\"9%\"]\r\n\r\nCheck out our GitHub repository to <a href=\"https://github.com/arrayfire/arrayfire\">build from the source</a>.\r\n\r\nLooking for an older installer? <a href=\"https://sandbox.arrayfire.com/installer_archive\">Try here</a>.[/content_band]\r\n<p style=\"text-align: left;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" bg_color=\"#f1f1f1\"][column type=\"one-half\"][gap size=\"8%\"]<img class=\"aligncenter wp-image-5156\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/02/mobile_Exported1-e1395437261846.png\" alt=\"mobile_Exported\" width=\"233\" height=\"311\" />[/column][column type=\"one-half\" last=\"true\"]\r\n[custom_headline type=\"left\" level=\"h2\"]\r\nGreat. What now?\r\n[/custom_headline]</p>\r\n<p style=\"text-align: left;\">[gap size=\"5%\"]</p>\r\n<p style=\"text-align: left;\">Welcome to ArrayFire! You\'ve got an awesome library there—learn more about its features and functions on <a href=\"https://www.sandbox.arrayfire.com/docs/index.htm\">our documentation</a>.</p>\r\n<p style=\"text-align: left;\">In addition to our <a href=\"https://groups.google.com/forum/#!forum/arrayfire-users\">ArrayFire user group</a> and <a href=\"https://sandbox.arrayfire.com/blog/\">our blog</a>, we offer a plethora of <a href=\"https://sandbox.arrayfire.com/support/\">support options</a> to fit your needs.</p>\r\n<p style=\"text-align: left;\">Got a job that needs closer attention? Hire us! Our engineers are acceleration wizards. Check out our <a href=\"https://sandbox.arrayfire.com/consulting/\">consulting offerings</a>, or set up a free <a href=\"https://meetme.so/arrayfire\">technical consultation</a> with us today![/column]</p>\r\n<p style=\"text-align: left;\">[/content_band]</p>\r\n<p style=\"text-align: center;\"></p>','Download','','inherit','closed','closed','','5931-revision-v1','','','2018-06-26 15:51:39','2018-06-26 19:51:39','',5931,'https://sandbox.arrayfire.com/5931-revision-v1/',0,'revision','',0),(9843,6,'2018-06-26 16:01:44','2018-06-26 20:01:44','Today we are pleased to announce the release of ArrayFire v3.6.  It can be downloaded from these locations:\r\n<ul>\r\n 	<li><a href=\"https://sandbox.arrayfire.com/download/\">Official installers</a></li>\r\n 	<li><a href=\"https://github.com/arrayfire\">GitHub repository</a></li>\r\n</ul>\r\nThis latest version of ArrayFire is better than ever! We added several new features that improve the performance and usability of the ArrayFire library. The main features are:\r\n<ul>\r\n 	<li>Support for batched matrix multiply</li>\r\n 	<li>Added the topk function</li>\r\n 	<li>Added the anisotropic diffusion filter</li>\r\n</ul>\r\nWe have also spent a significant amount of effort improving the internals of the library. The build system is significantly improved and organized.\r\n<h4>Batched Matrix Multiplication</h4>\r\nThe new batch matmul allows you to perform several matrix multiplication operations in one call of matmul. You might want to call this function if you are performing multiple smaller matrix multiplication operations. Here is an example:\r\n<pre class=\"lang:c++ decode:true\" title=\"Batched matrix multiply\">// Create a 3x3x2 matrix\r\narray a = randu(3, 3, 2);\r\narray b = randu(3, 3, 2);\r\n\r\narray c = matmul(a, b);\r\n</pre>\r\nThe example above is creating two 3 by 3 matrices as a 3x3x2 volume for a and b. The matmul function then multiplies the slice of a volume with the corresponding slice in b. With this approach you can reach higher efficiencies with smaller matrices. Here is a benchmark for batched matmul on the NVIDIA Tesla V100.\r\n\r\n[caption id=\"attachment_9793\" align=\"aligncenter\" width=\"646\"]<a href=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/chart-1.png\"><img class=\"size-full wp-image-9793\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/chart-1.png\" alt=\"Batched Matrix Multiplication Performance\" width=\"646\" height=\"430\" /></a> Batched Matrix Multiplication Performance[/caption]\r\n\r\nThe batched matrix multiplication allows you to reach the maximum performance of your GPU with smaller matrix sizes. Larger matrices do not necessarily need to be batched to fully utilize the GPU.\r\n<h4>TopK</h4>\r\nTopk is another exciting function that was added in this release. This function returns the top k maximum or minimum values in a vector or matrix along with their indices. Here is an example:\r\n<pre class=\"lang:c++ decode:true\" title=\"Topk Example\">array in = randu(10, 8); // Create a 10x8 matrix\r\n\r\narray idx, vals;\r\ntopk(vals, idx, in, 3); // Get the top 3 values of a</pre>\r\nIn this example we create a 10x8 matrix which will be passed into the topk function. This function will return two matrices of size 3x8. The first matrix is composed of the top 3 maximum values. The second matrix is made up of the index of those values in the original matrix along that particular column.\r\n<pre class=\"lang:default decode:true\">in\r\n[10 8 1 1]\r\n 0.6010 0.1583 0.6755 0.5143 0.7917 0.9092 0.5970 0.9048 \r\n 0.0278 0.3712 0.6105 0.3670 0.1654 0.8865 0.9594 0.0198 \r\n 0.9806 0.3543 0.5232 0.3336 0.8657 0.9676 0.2323 0.4436 \r\n 0.2126 0.6450 0.5567 0.0363 0.3766 0.1425 0.9623 0.6808 \r\n 0.0655 0.9675 0.7896 0.5349 0.7331 0.5137 0.8578 0.6636 \r\n 0.5497 0.3636 0.8966 0.0123 0.2522 0.6484 0.0192 0.8738 \r\n 0.2864 0.4165 0.0536 0.3988 0.9644 0.6353 0.7191 0.3954 \r\n 0.3410 0.5814 0.5775 0.9787 0.4711 0.7449 0.4035 0.5277 \r\n 0.7509 0.8962 0.2908 0.2308 0.3637 0.4391 0.4692 0.3592 \r\n 0.4105 0.3712 0.9941 0.6244 0.9643 0.6982 0.3353 0.8567 \r\n\r\nvals\r\n[3 8 1 1]\r\n 0.9806 0.9675 0.9941 0.9787 0.9644 0.9676 0.9623 0.9048 \r\n 0.7509 0.8962 0.8966 0.6244 0.9643 0.9092 0.9594 0.8738 \r\n 0.6010 0.6450 0.7896 0.5349 0.8657 0.8865 0.8578 0.8567 \r\nidx\r\n[3 8 1 1]\r\n 2 4 9 7 6 2 3 0 \r\n 8 8 5 9 9 0 1 5 \r\n 0 3 4 4 2 1 4 9 \r\n\r\n</pre>\r\nThe topk function is optimized for small sizes of k(&lt;32). You could have implemented something like this in older versions of ArrayFire using a combination of sort and indexing. Here are some benchmarks comparing the two approaches.\r\n\r\n<img src=\"data:image/png;base64,[encoded data, 41732 characters]\" />\r\n\r\nFor smaller sizes, topk is getting a 23x speedup over the sort and indexing approach. This test was performed on an NVIDIA Quadro GV100 GPU. Note that the run-times are on a log scale.\r\n<h4>Anisotropic Smoothing Filter</h4>\r\nAnisotropic smoothing filter is an edge-preserving smoothing filter. It smooths out minor intensity variations all the while enhancing edges and removing noise. A more detailed explanation of what this filter does internally is explained in the <a href=\"https://arrayfire.org/docs/group__image__func__anisotropic__diffusion.htm\" target=\"_blank\">documentation</a>. Given below is the sample output from this filter that illustrates how edges are better preserved in comparison to normal isotropic smoothing techniques, such as Gaussian blurring.\r\n\r\n[caption id=\"attachment_9803\" align=\"aligncenter\" width=\"742\"]<a href=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/anisotropic_diffusion_sample_v36_post.png\" target=\"_blank\"><img class=\"wp-image-9803 size-large\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2018/05/anisotropic_diffusion_sample_v36_post-1024x906.png\" alt=\"anisotropic_diffusion_sample_v36_post\" width=\"742\" height=\"656\" /></a> Image 1: Original Input(a), Prewitt edge filter(b), Anisotropically smoothed input(c), Gradient after gaussian blur(d), Gradient on original input (e), Gradient after diffusion(f)[/caption]\r\n\r\nNotice the edge details in images 1(b) &amp; 1(e). There are lot of extraneous details mostly that come out of noise. Even after we apply Gaussian blur (more than once) on the original input, some of the required details may also go away along with noise as illustrated in the image 1(d). anisotropic diffusion comes to the rescue in such cases. Notice the image 1(c) in comparison to 1(a). All minor/subtle variations in texture are smoothed out while preserving the edges as you can see in gradient of diffused image in 1(f). Feel free to play with the parameters and kindly notify us if there are unexpected behaviors.\r\n<h4>Other Improvements</h4>\r\nWe have also improved the performance of our JIT. We have moved the shift and select functions into JIT. We also reduced the number of mutex locks and improved the thread safety of ArrayFire.\r\n\r\nIn addition to the functions above, we have made several improvements which will increase the usability of the library. Our CMake config script now uses import targets instead of plain variables to add flags. If you are using CMake you can now compile and link your application with ArrayFire like this:\r\n<pre class=\"lang:default decode:true\" title=\"Linking with ArrayFire\">find_package(ArrayFire)\r\n\r\nadd_executable(FantasticApp main.cpp)\r\ntarget_link_library(FantasticApp PRIVATE ArrayFire::afopencl)</pre>\r\nThis will automatically add the correct compiler and linker flags when you compile your application.\r\n\r\nWe have also improved the building from source experience ArrayFire. Internally we have employed Modern CMake techniques and rewrote most of the build scripts to make it easy to maintain and read.\r\n\r\nThe period and quality of the random number generator has been improved, thanks to Ralf Stubner. He has also added several unit tests to keep track of the quality of the random number generator in the future. Adrien Vincent added a few color maps that were available in our Forge library but were missing from ArrayFire. Several other contributors helped us fix errors in our documentation and build system.\r\n\r\nWe are excited to finally release ArrayFire v3.6. We would like to thank our community for supporting us and helping us improve ArrayFire. We are looking forward to more community participation for the future releases!\r\n<h4>Dedicated Support and Coding Services</h4>\r\nArrayFire is open source and always will be. For those who want dedicated support or custom function development, we offer a variety of <a href=\"https://sandbox.arrayfire.com/support/\">support packages</a>.\r\n\r\nArrayFire also serves many clients through consulting and <a href=\"https://sandbox.arrayfire.com/consulting/\">coding services</a>, algorithm development, porting code, and <a href=\"https://sandbox.arrayfire.com/training/\">training courses</a> for developers. Contact us at <a href=\"mailto:sales@arrayfire.com\">sales@arrayfire.com</a> or <a href=\"https://meetme.so/arrayfire\">schedule</a> a free technical consultation to learn more about our consulting and coding services.','ArrayFire v3.6 Release','','inherit','closed','closed','','9783-revision-v1','','','2018-06-26 16:01:44','2018-06-26 20:01:44','',9783,'https://sandbox.arrayfire.com/9783-revision-v1/',0,'revision','',0),(9844,6,'2018-06-26 16:18:16','2018-06-26 20:18:16','<h1>Checkout</h1>\r\n\r\n{{mj-checkout-form}}','Mijireh Secure Checkout','','inherit','closed','closed','','41-autosave-v1','','','2018-06-26 16:18:16','2018-06-26 20:18:16','',41,'https://sandbox.arrayfire.com/41-autosave-v1/',0,'revision','',0),(9845,17794,'2018-06-26 16:27:37','2018-06-26 20:27:37',' ','','','publish','closed','closed','','9845','','','2018-08-22 21:35:30','2018-08-23 01:35:30','',0,'https://sandbox.arrayfire.com/?p=9845',2,'nav_menu_item','',0),(9846,1,'2018-06-27 19:21:56','2018-06-27 23:21:56','','Order &ndash; June 27, 2018 @ 07:21 PM','Object: Profiling and optimization of SDL soft. for the GPU backend \r\nRefs :\r\n- Layer normalization :\r\nhttps://arxiv.org/pdf/1607.06450.pdf, Section 3 and equation 3\r\n- Transformer networks :\r\nhttps://arxiv.org/abs/1706.03762','wc-completed','open','closed','order_5b341c124e04b','order-jun-27-2018-1121-pm','','','2018-06-27 19:22:01','2018-06-27 23:22:01','',0,'https://sandbox.arrayfire.com/?post_type=shop_order&#038;p=9846',0,'shop_order','',3),(9848,18672,'2018-07-06 00:14:54','2018-07-06 04:14:54','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"]\r\n[custom_headline type=\"left\" level=\"h2\"]\r\nArrayFire Installers\r\n[/custom_headline]\r\n[custom_headline type=\"left\" level=\"h5\"]\r\nEach download contains both CUDA and OpenCL files.\r\n[/custom_headline]\r\n[gap size=\"4%\"]\r\n\r\n[column type=\"one-fourth\"][button  block=\"true\" onclick=\"&lt;!-- Google Code for ArrayFire Download (Windows) Conversion Page\r\nIn your html page, add the snippet and call\r\ngoog_report_conversion when someone clicks on the\r\nchosen link or button. --&gt;\r\n&lt;script type=\"text/javascript\"&gt;\r\n/* &lt;!&amp;#91;CDATA&amp;#91; */\r\ngoog_snippet_vars = function() {\r\nvar w = window;\r\nw.google_conversion_id = 1021026651;\r\nw.google_conversion_label = \"18VJCJjPql4Q28Lu5gM\";\r\nw.google_remarketing_only = false;\r\n}\r\n// DO NOT CHANGE THE CODE BELOW.\r\ngoog_report_conversion = function(url) {\r\ngoog_snippet_vars();\r\nwindow.google_conversion_format = \"3\";\r\nwindow.google_is_call = true;\r\nvar opt = new Object();\r\nopt.onload_callback = function() {\r\nif (typeof(url) != \'undefined\') {\r\nwindow.location = url;\r\n}\r\n}\r\nvar conv_handler = window&amp;#91;\'google_trackConversion\'&amp;#93;;\r\nif (typeof(conv_handler) == \'function\') {\r\nconv_handler(opt);\r\n}\r\n}\r\n/* &amp;#93;&amp;#93;&gt; */\r\n&lt;/script&gt;\r\n&lt;script type=\"text/javascript\"\r\nsrc=\"//www.googleadservices.com/pagead/conversion_async.js\"&gt;\r\n&lt;/script&gt;\" class=\"center-text\" type=\"flat\" shape=\"rounded\" href=\"https://go.pardot.com/l/37882/2015-03-19/lvvyk\" size=\"regular\" ]Windows, v3.6.1\r\n(64-bit)[/button][/column][column type=\"one-fourth\"][button block=\"true\" type=\"flat\" shape=\"rounded\" href=\"https://go.pardot.com/l/37882/2015-03-19/lw515\" size=\"regular\" ]Linux, v3.6.1\r\n(64-bit)[/button][/column][column type=\"one-fourth\"][button block=\"true\" type=\"flat\" shape=\"rounded\" href=\"https://go.pardot.com/l/37882/2015-03-19/ltx4p\" size=\"regular\" ]Mac OSX, v3.6.1\r\n(64-bit)[/button][/column][column type=\"one-fourth\"][button block=\"true\" type=\"flat\" shape=\"rounded\" href=\"https://go.pardot.com/l/37882/2017-09-19/5dgdc4\" size=\"regular\" ]Tegra X1 v3.5.1\r\n(64-bit)[/button][/column][gap size=\"9%\"]\r\n\r\nCheck out our GitHub repository to <a href=\"https://github.com/arrayfire/arrayfire\">build from the source</a>.\r\n\r\nLooking for an older installer? <a href=\"https://sandbox.arrayfire.com/installer_archive\">Try here</a>.[/content_band]\r\n<p style=\"text-align: left;\">[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" bg_color=\"#f1f1f1\"][column type=\"one-half\"][gap size=\"8%\"]<img class=\"aligncenter wp-image-5156\" src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/02/mobile_Exported1-e1395437261846.png\" alt=\"mobile_Exported\" width=\"233\" height=\"311\" />[/column][column type=\"one-half\" last=\"true\"]\r\n[custom_headline type=\"left\" level=\"h2\"]\r\nGreat. What now?\r\n[/custom_headline]</p>\r\n<p style=\"text-align: left;\">[gap size=\"5%\"]</p>\r\n<p style=\"text-align: left;\">Welcome to ArrayFire! You\'ve got an awesome library there—learn more about its features and functions on <a href=\"https://www.sandbox.arrayfire.com/docs/index.htm\">our documentation</a>.</p>\r\n<p style=\"text-align: left;\">In addition to our <a href=\"https://groups.google.com/forum/#!forum/arrayfire-users\">ArrayFire user group</a> and <a href=\"https://sandbox.arrayfire.com/blog/\">our blog</a>, we offer a plethora of <a href=\"https://sandbox.arrayfire.com/support/\">support options</a> to fit your needs.</p>\r\n<p style=\"text-align: left;\">Got a job that needs closer attention? Hire us! Our engineers are acceleration wizards. Check out our <a href=\"https://sandbox.arrayfire.com/consulting/\">consulting offerings</a>, or set up a free <a href=\"https://meetme.so/arrayfire\">technical consultation</a> with us today![/column]</p>\r\n<p style=\"text-align: left;\">[/content_band]</p>\r\n<p style=\"text-align: center;\"></p>','Download','','inherit','closed','closed','','5931-revision-v1','','','2018-07-06 00:14:54','2018-07-06 04:14:54','',5931,'https://sandbox.arrayfire.com/5931-revision-v1/',0,'revision','',0),(9856,1,'2018-08-07 18:10:00','2018-08-07 22:10:00','','Order &ndash; August 7, 2018 @ 06:10 PM','af meanvar implementation + profiling session','wc-completed','open','closed','order_5b6a18b81aafa','order-aug-07-2018-1010-pm','','','2018-08-07 18:10:07','2018-08-07 22:10:07','',0,'https://sandbox.arrayfire.com/?post_type=shop_order&#038;p=9856',0,'shop_order','',3),(9858,6,'2018-08-08 17:33:21','2018-08-08 21:33:21','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"10px\"][column type=\"two-fifths\"]\n\n[custom_headline type=\"left\" level=\"h3\"]If you want faster code, you\'ve come to the right place.[/custom_headline][gap size=\"3%\"][button  type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/download\" size=\"x-large\" block=\"true\"]Download ArrayFire[/button]\n\n[gap size=\"5%\"]\n\n[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/consulting/\" size=\"x-large\" ]Schedule a consultation[/button][gap size=\"2%\"]\n\n[/column][column type=\"three-fifths\" last=\"true\"][gap size=\"7%\"]\n<div id=\"wistia_rj2bar3xxp\" class=\"wistia_embed\" style=\"width: 640px; height: 388px;\"></div>\n<script src=\"//fast.wistia.com/assets/external/E-v1.js\" charset=\"ISO-8859-1\"></script><script>// <![CDATA[\nwistiaEmbed = Wistia.embed(\"rj2bar3xxp\");\n// ]]></script>\n[/column]\n<div id=\"arrayfire\"></div>\n[/content_band]\n\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"]\n\n[custom_headline type=\"left\" level=\"h3\" class=\"center-text\"]Accelerating Innovation[/custom_headline]\n\nArrayFire specializes in developing accelerated, scalable computing solutions on modern computational platforms for our clients. As an industry leader in high performance computing for nearly 10 years, ArrayFire continues to drive innovation in all areas of accelerated computing, ranging from apps deployed on low-powered and mobile platforms to scientific simulations on high-end supercomputers.\n\n[/content_band]\n\n[content_band bg_color=\"#ffffff\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"10px\"]\n\n[column type=\"one-third\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/car-e1412967813807.png\" class=\"mbn\"] Software Design[/custom_headline]\n\n[line style=\"border-top: solid #999999;\"]ArrayFire has worked with hundreds of companies and entrepreneurs to develop custom, high performance software solutions for their unique problems. We use the latest software development methods, profiling tools, and deployment methods to deliver scalable solutions for your present and future business goals.\n\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"https://www.sandbox.arrayfire.com/consulting#software-design\" padding_top=\"40px\" padding_bottom=\"40px\"]Read more...[/button]\n[/column]\n\n[column type=\"one-third\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/09/mini-motorcycle-01-e1412969290876.png\" class=\"mbn\"] System Assessment[/custom_headline][line style=\"border-top: solid #999999;\"]ArrayFire performs holistic application audits that establish the current and theoretical maximum performance your application can achieve. Our methods evaluate everything from the hardware up so you can determine bottlenecks and get the maximum return on investment for future development work.\n\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"https://www.sandbox.arrayfire.com/consulting#system-evaluation\" padding_top=\"40px\" padding_bottom=\"40px\"]Read More...[/button]\n\n[/column]\n\n[column type=\"one-third\" last=\"true\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/09/mini-plane-01-e1412969527633.png\" class=\"mbn\"] Training [/custom_headline][line style=\"border-top: solid #999999;\"]ArrayFire trains your engineers on the latest techniques in parallel computing including CUDA or OpenCL for CPUs, GPUs, FPGAs, and other accelerators. We offer two- and four-day training sessions that are fully customizable so your team learns skills that they need to accelerate your software.\n\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"https://www.sandbox.arrayfire.com/training\" padding_top=\"40px\" padding_bottom=\"40px\"]Read More...[/button]\n\n[/column]\n\n[/content_band]\n\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"]\n\n[custom_headline type=\"left\" level=\"h3\" class=\"center-text\"]ArrayFire Library[/custom_headline]\n\nThe ArrayFire accelerated computing library is a free, general-purpose, open-source library that simplifies the process of developing software that targets parallel and massively-parallel architectures including CPUs, GPUs, and other hardware acceleration devices. ArrayFire is used on devices from low-powered mobile phones to high-powered GPU-enabled supercomputers including CPUs from all major vendors (Intel, AMD, Arm), GPUs from the dominant manufacturers (NVIDIA, AMD, and Qualcomm), as well as a variety of other accelerator devices on Windows, Mac, and Linux.\n\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"https://sandbox.arrayfire.com/download\" padding_top=\"40px\" padding_bottom=\"40px\"]Download ArrayFire[/button]\n\n[/content_band]\n\n[content_band bg_color=\"#ffffff\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"]\n\n[custom_headline type=\"left\" level=\"h3\" class=\"center-text\"]Domain Specialization[/custom_headline]\n\nOur engineers are experienced in a wide variety of technical areas of scientific computing including HPC, distributed computing, hardware accelerators (multi-core CPUs, GPUs, FPGAs), and visualization. Our wide skill set enables us to solve your problem in unique ways. Most of our clients hire us because of our experience in one of the following key areas:\n\n[column type=\"one-fourth\"]\n[custom_headline type=\"left\" level=\"h5\" class=\"center-text\"]Computer Vision[/custom_headline]\n<a href=\"http://sandbox.arrayfire.com/case-studies/#computer-vision\">\n<img class=\"aligncenter size-full wp-image-9139\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/photo-computer-vision.jpg\" alt=\"photo-computer-vision\" width=\"341\" height=\"256\" /></a>\n[/column]\n\n[column type=\"one-fourth\"]\n[custom_headline type=\"left\" level=\"h5\" class=\"center-text\"]Defense[/custom_headline]\n<a href=\"http://sandbox.arrayfire.com/case-studies/#defense\">\n<img class=\"aligncenter size-full wp-image-9138\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/shadow-of-the-war-1536222.jpg\" alt=\"ship-at-sea\" width=\"384\" height=\"256\" /></a>\n[/column]\n\n[column type=\"one-fourth\"]\n[custom_headline type=\"left\" level=\"h5\" class=\"center-text\"]Finance[/custom_headline]\n\n<a href=\"http://sandbox.arrayfire.com/case-studies/#finance\">\n<img class=\"aligncenter size-full wp-image-9137\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/photo-computer-finance.jpg\" alt=\"photo-computer-finance\" width=\"384\" height=\"256\" /></a>\n\n[/column]\n\n[column type=\"one-fourth\"]\n[custom_headline type=\"left\" level=\"h5\" class=\"center-text\"]Machine Learning[/custom_headline]\n<a href=\"http://sandbox.arrayfire.com/case-studies/#machine-learning\">\n<img class=\"aligncenter size-full wp-image-9140\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/photo-ai.jpg\" alt=\"photo-ai\" width=\"334\" height=\"256\" /></a>\n<!-- Image credit: https://commons.wikimedia.org/wiki/File:Artificial-intelligence-elon-musk-hawking.jpg -->\n[/column]\n\n[/content_band]','Home','','inherit','closed','closed','','245-revision-v1','','','2018-08-08 17:33:21','2018-08-08 21:33:21','',245,'https://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(9859,6,'2018-08-08 18:04:32','2018-08-08 22:04:32','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"10px\"][column type=\"two-fifths\"]\n\n[custom_headline type=\"left\" level=\"h3\"]If you want faster code, you\'ve come to the right place.[/custom_headline][gap size=\"3%\"][button  type=\"flat\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/download\" size=\"x-large\" block=\"true\"]Download ArrayFire[/button]\n\n[gap size=\"5%\"]\n\n[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"https://sandbox.arrayfire.com/consulting/\" size=\"x-large\" ]Schedule a consultation[/button][gap size=\"2%\"]\n\n[/column][column type=\"three-fifths\" last=\"true\"][gap size=\"7%\"]\n<div id=\"wistia_rj2bar3xxp\" class=\"wistia_embed\" style=\"width: 640px; height: 388px;\"></div>\n<script src=\"//fast.wistia.com/assets/external/E-v1.js\" charset=\"ISO-8859-1\"></script><script>// <![CDATA[\nwistiaEmbed = Wistia.embed(\"rj2bar3xxp\");\n// ]]></script>\n[/column]\n<div id=\"arrayfire\"></div>\n[/content_band]\n\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"]\n\n[custom_headline type=\"left\" level=\"h3\" class=\"center-text\"]Accelerating Innovation[/custom_headline]\n<p style=\"text-align: left;\">ArrayFire is a software development and consulting company with a passion for helping organizations develop high-performance computing solutions on modern computational platforms. Our core areas of expertise drive innovation in all areas of technical computing. We have extensive experience in CUDA and OpenCL programming, code acceleration and optimization, and software design. We also have specialized domain expertise in machine learning and computer vision. Our customers range from startups to Fortune 500 companies in a variety of industries, including defense, finance, and media, and include government and academic research institutions.</p>\n[/content_band]\n\n[content_band bg_color=\"#ffffff\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"10px\"]\n\n[column type=\"one-third\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/01/car-e1412967813807.png\" class=\"mbn\"] Software Design[/custom_headline]\n\n[line style=\"border-top: solid #999999;\"]ArrayFire has worked with hundreds of companies and entrepreneurs to develop custom, high performance software solutions for their unique problems. We use the latest software development methods, profiling tools, and deployment methods to deliver scalable solutions for your present and future business goals.\n\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"https://www.sandbox.arrayfire.com/consulting#software-design\" padding_top=\"40px\" padding_bottom=\"40px\"]Read more...[/button]\n[/column]\n\n[column type=\"one-third\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/09/mini-motorcycle-01-e1412969290876.png\" class=\"mbn\"] System Assessment[/custom_headline][line style=\"border-top: solid #999999;\"]ArrayFire performs holistic application audits that establish the current and theoretical maximum performance your application can achieve. Our methods evaluate everything from the hardware up so you can determine bottlenecks and get the maximum return on investment for future development work.\n\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"https://www.sandbox.arrayfire.com/consulting#system-evaluation\" padding_top=\"40px\" padding_bottom=\"40px\"]Read More...[/button]\n\n[/column]\n\n[column type=\"one-third\" last=\"true\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"https://sandbox.arrayfire.com/wp-content/uploads/2014/09/mini-plane-01-e1412969527633.png\" class=\"mbn\"] Training [/custom_headline][line style=\"border-top: solid #999999;\"]ArrayFire trains your engineers on the latest techniques in parallel computing including CUDA or OpenCL for CPUs, GPUs, FPGAs, and other accelerators. We offer two- and four-day training sessions that are fully customizable so your team learns skills that they need to accelerate your software.\n\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"https://www.sandbox.arrayfire.com/training\" padding_top=\"40px\" padding_bottom=\"40px\"]Read More...[/button]\n\n[/column]\n\n[/content_band]\n\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"]\n\n[custom_headline type=\"left\" level=\"h3\" class=\"center-text\"]ArrayFire Library[/custom_headline]\n\nThe ArrayFire accelerated computing library is a free, general-purpose, open-source library that simplifies the process of developing software that targets parallel and massively-parallel architectures including CPUs, GPUs, and other hardware acceleration devices. ArrayFire is used on devices from low-powered mobile phones to high-powered GPU-enabled supercomputers including CPUs from all major vendors (Intel, AMD, Arm), GPUs from the dominant manufacturers (NVIDIA, AMD, and Qualcomm), as well as a variety of other accelerator devices on Windows, Mac, and Linux.\n\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"https://sandbox.arrayfire.com/download\" padding_top=\"40px\" padding_bottom=\"40px\"]Download ArrayFire[/button]\n\n[/content_band]\n\n[content_band bg_color=\"#ffffff\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\"]\n\n[custom_headline type=\"left\" level=\"h3\" class=\"center-text\"]Domain Specialization[/custom_headline]\n\nOur engineers are experienced in a wide variety of technical areas of scientific computing including HPC, distributed computing, hardware accelerators (multi-core CPUs, GPUs, FPGAs), and visualization. Our wide skill set enables us to solve your problem in unique ways. Most of our clients hire us because of our experience in one of the following key areas:\n\n[column type=\"one-fourth\"]\n[custom_headline type=\"left\" level=\"h5\" class=\"center-text\"]Computer Vision[/custom_headline]\n<a href=\"http://sandbox.arrayfire.com/case-studies/#computer-vision\">\n<img class=\"aligncenter size-full wp-image-9139\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/photo-computer-vision.jpg\" alt=\"photo-computer-vision\" width=\"341\" height=\"256\" /></a>\n[/column]\n\n[column type=\"one-fourth\"]\n[custom_headline type=\"left\" level=\"h5\" class=\"center-text\"]Defense[/custom_headline]\n<a href=\"http://sandbox.arrayfire.com/case-studies/#defense\">\n<img class=\"aligncenter size-full wp-image-9138\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/shadow-of-the-war-1536222.jpg\" alt=\"ship-at-sea\" width=\"384\" height=\"256\" /></a>\n[/column]\n\n[column type=\"one-fourth\"]\n[custom_headline type=\"left\" level=\"h5\" class=\"center-text\"]Finance[/custom_headline]\n\n<a href=\"http://sandbox.arrayfire.com/case-studies/#finance\">\n<img class=\"aligncenter size-full wp-image-9137\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/photo-computer-finance.jpg\" alt=\"photo-computer-finance\" width=\"384\" height=\"256\" /></a>\n\n[/column]\n\n[column type=\"one-fourth\"]\n[custom_headline type=\"left\" level=\"h5\" class=\"center-text\"]Machine Learning[/custom_headline]\n<a href=\"http://sandbox.arrayfire.com/case-studies/#machine-learning\">\n<img class=\"aligncenter size-full wp-image-9140\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/photo-ai.jpg\" alt=\"photo-ai\" width=\"334\" height=\"256\" /></a>\n<!-- Image credit: https://commons.wikimedia.org/wiki/File:Artificial-intelligence-elon-musk-hawking.jpg -->\n[/column]\n\n[/content_band]','Home','','inherit','closed','closed','','245-revision-v1','','','2018-08-08 18:04:32','2018-08-08 22:04:32','',245,'https://sandbox.arrayfire.com/245-revision-v1/',0,'revision','',0),(9860,6,'2018-08-13 16:17:59','0000-00-00 00:00:00','[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 a software development and consulting company with a passion for helping organizations develop high-performance computing solutions on modern computational platforms. Our core areas of expertise drive innovation in all areas of technical computing. We have extensive experience in CUDA and OpenCL programming, code acceleration and optimization, and software design. We also have specialized expertise in machine learning and computer vision. Our customers range from startups to Fortune 500 companies in a variety of industries, including defense, finance, and media, and include government and academic research institutions.[/column][column type=\"one-half\" last=\"true\" fade=\"true\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame.png\"] [/column]\n<div id=\"contact\"></div>\n[line][column type=\"one-third\"][custom_headline type=\"center\" level=\"h5\" accent=\"false\"]Email[/custom_headline]\n<p style=\"text-align: center;\">Sales: sales@arrayfire.com\nSupport: support@arrayfire.com\nCareers: jobs@arrayfire.com[/column]</p>\n[column type=\"one-third\"][custom_headline type=\"center\" level=\"h5\" accent=\"false\"]Phone[/custom_headline]\n<p style=\"text-align: center;\">Sales: +1 (800) 570-1941 x 1\nTechnical Support: +1 (800) 570-1941 x 2 [/column]</p>\n[column type=\"one-third\" last=\"true\"][custom_headline type=\"center\" level=\"h5\" accent=\"false\"]Headquarters[/custom_headline]\n<p style=\"text-align: center;\">90 Peachtree Pl NE\nAtlanta, GA 30309[/column] [/content_band]</p>\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"full\"][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]\n\n[line][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]\n\n<strong>Responsibilities:</strong> Develop in C/C++, Fortran, CUDA, and OpenCL. Respond to forum posts and customer support tickets.\n\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]\n\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]\n\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.\n\n<strong>Qualifications:</strong> Undergraduate or graduate work in CS or related field. Strong programming skills in C/C++. Excellent communication skills.[/promo][/column]\n\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]\n\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.\n\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]\n\n[/content_band]','About Us','','draft','closed','closed','','company','','','2018-08-13 16:17:59','2018-08-13 20:17:59','',0,'https://sandbox.arrayfire.com/?page_id=9860',0,'page','',0),(9861,6,'2018-08-09 21:47:17','2018-08-10 01:47:17','[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.\n\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]\n<div id=\"contact\"></div>\n[line][column type=\"one-third\"][custom_headline type=\"center\" level=\"h5\" accent=\"false\"]Email[/custom_headline]\n<p style=\"text-align: center;\">Sales: sales@arrayfire.com\nSupport: support@arrayfire.com\nCareers: jobs@arrayfire.com[/column]</p>\n[column type=\"one-third\"][custom_headline type=\"center\" level=\"h5\" accent=\"false\"]Phone[/custom_headline]\n<p style=\"text-align: center;\">Sales: +1 (800) 570-1941 x 1\nTechnical Support: +1 (800) 570-1941 x 2 [/column]</p>\n[column type=\"one-third\" last=\"true\"][custom_headline type=\"center\" level=\"h5\" accent=\"false\"]Headquarters[/custom_headline]\n<p style=\"text-align: center;\">90 Peachtree Pl NE\nAtlanta, GA 30309[/column] [/content_band]</p>\n[content_band bg_color=\"#f2f2f2\" inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\" ][column type=\"full\"][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]\n\n[line][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]\n\n<strong>Responsibilities:</strong> Develop in C/C++, Fortran, CUDA, and OpenCL. Respond to forum posts and customer support tickets.\n\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]\n\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]\n\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.\n\n<strong>Qualifications:</strong> Undergraduate or graduate work in CS or related field. Strong programming skills in C/C++. Excellent communication skills.[/promo][/column]\n\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]\n\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.\n\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]\n\n[/content_band]','About','','inherit','closed','closed','','9860-revision-v1','','','2018-08-09 21:47:17','2018-08-10 01:47:17','',9860,'https://sandbox.arrayfire.com/9860-revision-v1/',0,'revision','',0),(9866,17794,'2018-08-22 18:58:44','0000-00-00 00:00:00',' ','','','draft','closed','closed','','','','','2018-08-22 18:58:44','0000-00-00 00:00:00','',0,'https://sandbox.arrayfire.com/?p=9866',1,'nav_menu_item','',0);
