(7218,7,'2014-11-07 20:22:18','2014-11-07 20:22:18','[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 for customers that have 3 or more attendees from their organization. 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=\"http://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=\"http://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\"]C\'mon, 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> [highlight type=\"light\"]The instructor was able to completely focus on my particular needs and concerns.[/highlight]\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:\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:\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, NOW contact us about a training[/button][/column][/content_band]','Training, OPSC','','inherit','open','open','','6640-revision-v1','','','2014-11-07 20:22:18','2014-11-07 20:22:18','',6640,'http://sandbox.arrayfire.com/6640-revision-v1/',0,'revision','',0),(7219,7,'2014-11-07 20:22:30','2014-11-07 20:22:30','[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 for customers that have 3 or more attendees from their organization. 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=\"http://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=\"http://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\"]C\'mon, 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> [highlight type=\"light\"]The instructor was able to completely focus on my particular needs and concerns.[/highlight]\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:\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:\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, OPSC','','inherit','open','open','','6640-revision-v1','','','2014-11-07 20:22:30','2014-11-07 20:22:30','',6640,'http://sandbox.arrayfire.com/6640-revision-v1/',0,'revision','',0),(7220,7,'2014-11-07 20:23:17','2014-11-07 20:23:17','[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 for customers that have 3 or more attendees from their organization. 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=\"http://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=\"http://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> [highlight type=\"light\"]The instructor was able to completely focus on my particular needs and concerns.[/highlight]\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:\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:\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, OPSC','','inherit','open','open','','6640-revision-v1','','','2014-11-07 20:23:17','2014-11-07 20:23:17','',6640,'http://sandbox.arrayfire.com/6640-revision-v1/',0,'revision','',0),(7221,7,'2014-11-07 20:31:32','2014-11-07 20:31:32','[content_band inner_container=\"true\" no_margin=\"true\" border=\"top\" padding_top=\"40px\" padding_bottom=\"40px\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone can use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you!\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"check\"]2 hours of support[/icon_list_item][icon_list_item type=\"check\"]48-hour response time[/icon_list_item][icon_list_item type=\"times\" style=\"color:red\"]Phone support[/icon_list_item][icon_list_item type=\"times\" style=\"color:red\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy now![/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"check\"]5 hours of support[/icon_list_item][icon_list_item type=\"check\"]24-hour response time[/icon_list_item][icon_list_item type=\"check\"]Phone support[/icon_list_item][icon_list_item type=\"times\" style=\"color:red\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy now![/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"check\"]10 hours of support[/icon_list_item][icon_list_item type=\"check\"]2-hour response time[/icon_list_item][icon_list_item type=\"check\" ]Phone support[/icon_list_item][icon_list_item type=\"check\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy now![/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"check\"]Phone support[/icon_list_item][icon_list_item type=\"check\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy now![/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:31:32','2014-11-07 20:31:32','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7222,7,'2014-11-07 20:32:38','2014-11-07 20:32:38','[content_band inner_container=\"true\" no_margin=\"true\" border=\"top\" padding_top=\"40px\" padding_bottom=\"40px\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone can use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you!\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"check\"]2 hours of support[/icon_list_item][icon_list_item type=\"check\"]48-hour response time[/icon_list_item][icon_list_item type=\"times\" style=\"color:red\"]Phone support[/icon_list_item][icon_list_item type=\"times\" style=\"color:red\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Get it[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"check\"]5 hours of support[/icon_list_item][icon_list_item type=\"check\"]24-hour response time[/icon_list_item][icon_list_item type=\"check\"]Phone support[/icon_list_item][icon_list_item type=\"times\" style=\"color:red\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Get it[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"check\"]10 hours of support[/icon_list_item][icon_list_item type=\"check\"]2-hour response time[/icon_list_item][icon_list_item type=\"check\" ]Phone support[/icon_list_item][icon_list_item type=\"check\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Get it[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"check\"]Phone support[/icon_list_item][icon_list_item type=\"check\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Get it[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:32:38','2014-11-07 20:32:38','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7223,7,'2014-11-07 20:36:49','2014-11-07 20:36:49','[content_band inner_container=\"true\" no_margin=\"true\" border=\"top\" padding_top=\"40px\" padding_bottom=\"40px\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone can use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you!\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" style=\"color:red\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" style=\"color:red\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Get it[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" style=\"color:red\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Get it[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Get it[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Get it[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:36:49','2014-11-07 20:36:49','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7224,7,'2014-11-07 20:37:50','2014-11-07 20:37:50','[content_band inner_container=\"true\" no_margin=\"true\" border=\"top\" padding_top=\"40px\" padding_bottom=\"40px\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone can use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you!\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Purchse[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Purchase[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Purchase[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Purchase[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:37:50','2014-11-07 20:37:50','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7225,7,'2014-11-07 20:39:04','2014-11-07 20:39:04','[content_band inner_container=\"true\" no_margin=\"true\" border=\"top\" padding_top=\"40px\" padding_bottom=\"40px\"]\r\n\r\n[custom_headline type=\"left\" level=\"h3\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone can use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you!\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:39:04','2014-11-07 20:39:04','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7226,7,'2014-11-07 20:41:51','2014-11-07 20:41:51','[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\" ]Choose your own support[/custom_headline]\r\n\r\n[column type=\"one-half\"]Everyone can use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you![/column][column type=\"one-half\" last=\"true\"]<img class=\"aligncenter wp-image-5018\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/hq-vehicles-972x1024.png\" alt=\"hq vehicles\" width=\"380\" height=\"400\" />[/column][/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[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:41:51','2014-11-07 20:41:51','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7227,7,'2014-11-07 20:43:08','2014-11-07 20:43:08','[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\" ]Choose your own support[/custom_headline]\r\n\r\n[column type=\"one-half\"]Everyone can use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you![/column][column type=\"one-half\" last=\"true\"]<img class=\"aligncenter wp-image-5018\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/hq-vehicles-972x1024.png\" alt=\"hq vehicles\" width=\"380\" height=\"400\" />[/column][/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[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:43:08','2014-11-07 20:43:08','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7228,7,'2014-11-07 20:45:25','2014-11-07 20:45:25','[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\" ]Choose your own support[/custom_headline]\r\n\r\n[column type=\"one-half\"]Everyone can use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you![/column][column type=\"one-half\" last=\"true\"]<img class=\"aligncenter size-large wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"742\" height=\"557\" />[/column][/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[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:45:25','2014-11-07 20:45:25','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7229,7,'2014-11-07 20:47:13','2014-11-07 20:47:13','[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\" ]Choose your own support[/custom_headline]\r\n\r\n[column type=\"one-half\"]Everyone can use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you![/column][column type=\"one-half\" last=\"true\"]<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"599\" height=\"450\" />[/column][/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[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:47:13','2014-11-07 20:47:13','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7230,7,'2014-11-07 20:47:32','2014-11-07 20:47:32','[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\" ]Choose your own support[/custom_headline]\r\n\r\n[column type=\"one-half\"]Everyone can use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you![/column][column type=\"one-half\" last=\"true\"]<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:47:32','2014-11-07 20:47:32','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7231,7,'2014-11-07 20:48:53','2014-11-07 20:48:53','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone can use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you![/column][column type=\"one-half\" last=\"true\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:48:53','2014-11-07 20:48:53','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7232,7,'2014-11-07 20:49:20','2014-11-07 20:49: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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone can use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you![/column][column type=\"one-half\" last=\"true\"][gap size=\"15%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:49:20','2014-11-07 20:49:20','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7233,7,'2014-11-07 20:49:27','2014-11-07 20:49:27','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone can use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you![/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:49:27','2014-11-07 20:49:27','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7234,7,'2014-11-07 20:53:12','2014-11-07 20:53:12','[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\" ]Choose your own support[/custom_headline]\r\n\r\nForums are great and all, but everyone can use a master\'s hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you![/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:53:12','2014-11-07 20:53:12','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7235,7,'2014-11-07 20:53:46','2014-11-07 20:53:46','[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\" ]Choose your own support[/custom_headline]\r\n\r\nForums are great and all, but everyone can use an expert\'s hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you![/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:53:46','2014-11-07 20:53:46','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7236,7,'2014-11-07 20:56:19','2014-11-07 20:56:19','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone could use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you!\r\n\r\nOur ArrayFire developers are the best in the business. Don\'t lose precious time and money fumbling for answers—get some support.[/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:56:19','2014-11-07 20:56:19','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7237,7,'2014-11-07 20:59:13','2014-11-07 20:59:13','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone could use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you!\r\n\r\nOur ArrayFire developers are the best in the business. With a support package, you can tap into their extensive knowledge base directly, no waiting for forums and no sketchy responses from Joe Schmo. Don\'t lose precious time and money fumbling for answers—get some support.[/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 20:59:13','2014-11-07 20:59:13','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7238,7,'2014-11-07 21:00:00','2014-11-07 21:00:00','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone could use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire Team is here for you!\r\n\r\nOur ArrayFire developers are the best in the business. With a support package, you can tap into their extensive knowledge base directly—no more waiting for forums, and no sketchy responses from Joe Schmo. Don\'t lose precious time and money fumbling for answers. Get some support.[/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 21:00:00','2014-11-07 21:00:00','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7239,7,'2014-11-07 21:00:40','2014-11-07 21:00:40','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone could use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire team is here for you.\r\n\r\nOur ArrayFire developers are the best in the business. With a support package, you can tap into their extensive knowledge base directly—no more waiting for forums, and no sketchy responses from Joe Schmo. Don\'t lose precious time and money fumbling for answers. Get some support.[/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 21:00:40','2014-11-07 21:00:40','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7240,7,'2014-11-07 21:01:34','2014-11-07 21:01:34','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone could use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire team is here for you.\r\n\r\nOur ArrayFire developers are the best in the business. With a support package, you can tap into their extensive knowledge base directly—no more waiting for forums, and no sketchy responses from Joe Schmo. Don\'t lose precious time and money fumbling for answers. Get some support.[/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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\"][gap size=\"10%]\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 21:01:34','2014-11-07 21:01:34','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7241,7,'2014-11-07 21:01:47','2014-11-07 21:01:47','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone could use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire team is here for you.\r\n\r\nOur ArrayFire developers are the best in the business. With a support package, you can tap into their extensive knowledge base directly—no more waiting for forums, and no sketchy responses from Joe Schmo. Don\'t lose precious time and money fumbling for answers. Get some support.[/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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\"][gap size=\"10%\"]\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 21:01:47','2014-11-07 21:01:47','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7242,7,'2014-11-07 21:02:03','2014-11-07 21:02:03','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone could use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire team is here for you.\r\n\r\nOur ArrayFire developers are the best in the business. With a support package, you can tap into their extensive knowledge base directly—no more waiting for forums, and no sketchy responses from Joe Schmo. Don\'t lose precious time and money fumbling for answers. Get some support.[/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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\"][gap size=\"5%\"]\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 21:02:03','2014-11-07 21:02:03','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7243,7,'2014-11-07 21:02:51','2014-11-07 21:02:51','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone could use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire team is here for you.\r\n\r\nOur ArrayFire developers are the best in the business. With a support package, you can tap into their extensive knowledge base directly—no more waiting for forums, and no sketchy responses from Joe Schmo. Don\'t lose precious time and money fumbling for answers. Get some support.[/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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\"][gap size=\"4%\"]\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Buy Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Buy Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Buy Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 21:02:51','2014-11-07 21:02:51','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7244,7,'2014-11-07 21:04:06','2014-11-07 21:04:06','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone could use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire team is here for you.\r\n\r\nOur ArrayFire developers are the best in the business. With a support package, you can tap into their extensive knowledge base directly—no more waiting for forums, and no sketchy responses from Joe Schmo. Don\'t lose precious time and money fumbling for answers. Get some support.[/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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\"][gap size=\"4%\"]\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Go Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Go Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Go Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][icon_list_item]—[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Go Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 21:04:06','2014-11-07 21:04:06','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7245,7,'2014-11-07 21:05:18','2014-11-07 21:05:18','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone could use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire team is here for you.\r\n\r\nOur ArrayFire developers are the best in the business. With a support package, you can tap into their extensive knowledge base directly—no more waiting for forums, and no sketchy responses from Joe Schmo. Don\'t lose precious time and money fumbling for answers. Get some support.[/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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\"][gap size=\"4%\"]\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Go Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Go Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Go Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Go Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-07 21:05:18','2014-11-07 21:05:18','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7279,17795,'2014-11-08 21:31:43','2014-11-08 21:31:43','You may already know that the Intel MPSS (Manycore Platform Software Stack) is only officially supported for RedHat and SUSE Linux distros. Using an enterprise distro might be very interesting if your company is running a large server environment or short on specialized people and you rely on the distro official support for more complicated tasks.\r\n\r\nNot all companies use enterprise Linux distributions and Ubuntu has a large share of the Linux distro market (if not the largest). Since I needed to setup a machine running Ubuntu 14.04 and MPSS 3.4 and could not find any documentation running the newest versions of Ubuntu/Linux Kernel/MPSS, I will try to document here how to get the Intel Xeon Phi running on Kernel 3.13.0 (which is not officially supported by the MPSS to the date of this post). The kernel module was only tested on Ubuntu 14.04, but it should compile and run without any problems in any system running Kernel 3.13.0 (not tested with newer versions).\r\n\r\n<h3>Building and Installing Kernel Modules</h3>\r\n\r\nTo start, you will need to download the MPSS 3.4 kernel module sources, it can be download from <a href=\"https://software.intel.com/en-us/articles/intel-manycore-platform-software-stack-mpss\">Intel\'s website</a> but only as part of the complete set of sources for MPSS platform. Since we do not need all sources and to make it easier, you can just clone the MPSS 3.4 module sources from my <a href=\"https://github.com/pentschev/mpss-modules\">GitHub repository</a>, it is ready to be built for Linux Kernel 3.13.0.\r\n\r\nAfter downloading the module source, one can build it by simply running <code>make</code>, but do not forget to first install build-essential (includes tools such as GCC and Make, required to compile the module) and also the kernel headers that is contained within package kernel-headers-generic on Ubuntu, these packages can be installed with the command <code>sudo apt-get install build-essential linux-headers-generic</code>. To install (as root), just execute <code>make install</code>. The correct kernel module for MPSS is now installed on your system, but it might be necessary to update the list of modules available manually by running <code>sudo depmod</code>.\r\n\r\nBefore loading the now installed module, let\'s ensure that the <code>mic_host</code> module is not loaded by trying to unload it with the commando <code>sudo rmmod mic_host</code>. To avoid it from loading during boot, make sure to blacklist it by creating the file <code>/etc/modprobe.d/blacklist-mic-host.conf</code> and adding <code>blacklist mic_host</code> in the first line. Now the MIC module can be safely loaded running <code>modprobe mic</code>, or you can simply reboot the system that it will be automatically loaded by the kernel.\r\n\r\n<h3>Converting and Installing RPM Packages</h3>\r\n\r\nWith the kernel module already installed and loaded, it is time to install the remaining MPSS tools. As with the MPSS kernel module, there is no native support for Ubuntu which uses DEB packaging system, but only for RedHat and SUSE (both use RPM packaging system). The simplest way to install MPSS tools is probably to convert the RPM packages to DEB packages.\r\n\r\nLet\'s first download the Linux MPSS 3.4 binaries from <a href=\"https://software.intel.com/en-us/articles/intel-manycore-platform-software-stack-mpss\">Intel\'s website</a> and uncompressing the files by executing the following command:\r\n\r\n<pre>\r\ntar xf mpss-3.4-linux.tar\r\n</pre>\r\n\r\nAfter uncompressing the file, there will be a new directory called <code>mpss-3.4</code>, with about 50 RPM packages. To convert them to DEB packages, we will need another tool called alien, contained in the Ubuntu package with same name: <code>sudo apt-get install alien</code>.\r\n\r\nInside the <code>mpss-3.4</code> directory, you need to start the conversion of packages, executing the command <code>alien --scripts *.rpm</code>. This process may take a few minutes to complete.\r\n\r\nAfter the conversion is completed, we simply install all DEB packages but this time not with <code>apt-get</code>, since it only installs packages that are available in the repositories defined for Ubuntu. To install the DEB packages we use the command <code>dpkg -i *.deb</code>, which may take one or two more minutes.\r\n\r\nAt this point, we have everything we need to get the Intel Xeon Phi co-processor up and running, but to compile code that runs on the Phi co-processor, it is necessary to have <a href=\"https://software.intel.com/en-us/intel-parallel-studio-xe\">Intel Parallel Studio XE</a> installed.','Getting Started with the Intel Xeon Phi on Ubuntu 14.04/Linux Kernel 3.13.0 - Part 1','','inherit','open','open','','6944-revision-v1','','','2014-11-08 21:31:43','2014-11-08 21:31:43','',6944,'http://sandbox.arrayfire.com/6944-revision-v1/',0,'revision','',0),(7280,17795,'2014-11-08 23:36:10','2014-11-08 23:36:10','You may already know that the Intel MPSS (Manycore Platform Software Stack) is only officially supported for RedHat and SUSE Linux distros. Using an enterprise distro might be very interesting if your company is running a large server environment or short on specialized people and you rely on the distro official support for more complicated tasks.\r\n\r\nNot all companies use enterprise Linux distributions and Ubuntu has a large share of the Linux distro market (if not the largest). Since I needed to setup a machine running Ubuntu 14.04 and MPSS 3.4 and could not find any documentation running the newest versions of Ubuntu/Linux Kernel/MPSS, I will try to document here how to get the Intel Xeon Phi running on Kernel 3.13.0 (which is not officially supported by the MPSS to the date of this post). The kernel module was only tested on Ubuntu 14.04, but it should compile and run without any problems in any system running Kernel 3.13.0 (not tested with newer versions).\r\n\r\n<h3>Building and Installing Kernel Modules</h3>\r\n\r\nTo start, you will need to download the MPSS 3.4 kernel module sources, it can be download from <a href=\"https://software.intel.com/en-us/articles/intel-manycore-platform-software-stack-mpss\">Intel\'s website</a> but only as part of the complete set of sources for MPSS platform. Since we do not need all sources and to make it easier, you can just clone the MPSS 3.4 module sources from my <a href=\"https://github.com/pentschev/mpss-modules\">GitHub repository</a>, it is ready to be built for Linux Kernel 3.13.0.\r\n\r\nAfter downloading the module source, one can build it by simply running <code>make</code>, but do not forget to first install build-essential (includes tools such as GCC and Make, required to compile the module) and also the kernel headers that is contained within package kernel-headers-generic on Ubuntu, these packages can be installed with the command <code>sudo apt-get install build-essential linux-headers-generic</code>. To install (as root), just execute <code>make install</code>. The correct kernel module for MPSS is now installed on your system, but it might be necessary to update the list of modules available manually by running <code>sudo depmod</code>.\r\n\r\nBefore loading the now installed module, let\'s ensure that the <code>mic_host</code> module is not loaded by trying to unload it with the commando <code>sudo rmmod mic_host</code>. To avoid it from loading during boot, make sure to blacklist it by creating the file <code>/etc/modprobe.d/blacklist-mic-host.conf</code> and adding <code>blacklist mic_host</code> in the first line. Now the MIC module can be safely loaded running <code>modprobe mic</code>, or you can simply reboot the system that it will be automatically loaded by the kernel.\r\n\r\n<h3>Converting and Installing RPM Packages</h3>\r\n\r\nWith the kernel module already installed and loaded, it is time to install the remaining MPSS tools. As with the MPSS kernel module, there is no native support for Ubuntu which uses DEB packaging system, but only for RedHat and SUSE (both use RPM packaging system). The simplest way to install MPSS tools is probably to convert the RPM packages to DEB packages.\r\n\r\nLet\'s first download the Linux MPSS 3.4 binaries from <a href=\"https://software.intel.com/en-us/articles/intel-manycore-platform-software-stack-mpss\">Intel\'s website</a> and uncompressing the files by executing the following command:\r\n\r\n<pre>\r\ntar xf mpss-3.4-linux.tar\r\n</pre>\r\n\r\nAfter uncompressing the file, there will be a new directory called <code>mpss-3.4</code>, with about 50 RPM packages. To convert them to DEB packages, we will need another tool called alien, contained in the Ubuntu package with same name: <code>sudo apt-get install alien</code>.\r\n\r\nInside the <code>mpss-3.4</code> directory, you need to start the conversion of packages, executing the command <code>alien --scripts *.rpm</code>. This process may take a few minutes to complete.\r\n\r\nAfter the conversion is completed, we simply install all DEB packages but this time not with <code>apt-get</code>, since it only installs packages that are available in the repositories defined for Ubuntu. To install the DEB packages we use the command <code>dpkg -i *.deb</code>, which may take one or two more minutes.\r\n\r\nWithin the MPSS tools, some libraries are also installed in the system. Because Ubuntu is switching to a different method of organizing libraries within the filesystem, it will not find MPSS libraries directly, as a workaround to this behavior we will create a new file <code>/etc/ld.so.conf.d/zz_x86_64-compat.conf</code> and write <code>/usr/lib64</code> in there so that the system will recognize the directory <code>/usr/lib64</code> as a standard search directory for libraries. When the file is created, we will update the library cache by running <code>ldconfig</code>.\r\n\r\n<h3>Configuring the Coprocessor</h3>\r\n\r\n\r\n\r\n<h3>Compiling </h3>\r\n\r\nAt this point, we have everything we need to get the Intel Xeon Phi co-processor up and running, but to compile code that runs on the Phi co-processor, it is necessary to have <a href=\"https://software.intel.com/en-us/intel-parallel-studio-xe\">Intel Parallel Studio XE</a> installed.','Getting Started with the Intel Xeon Phi on Ubuntu 14.04/Linux Kernel 3.13.0 - Part 1','','inherit','open','open','','6944-revision-v1','','','2014-11-08 23:36:10','2014-11-08 23:36:10','',6944,'http://sandbox.arrayfire.com/6944-revision-v1/',0,'revision','',0),(7281,17728,'2014-11-10 16:21:00','2014-11-10 16:21:00','<p>We have previously talked about upcoming <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">computer</a> <a href=\"http://sandbox.arrayfire.com/computer-vision-in-arrayfire-part-2/\">vision</a> algorithms in the next version of ArrayFire. Today we are going to discuss some of the bigger changes and additions to ArrayFire.</p>\r\n<h3 id=\"new-cpu-backend\">New CPU backend</h3>\r\n<p>In addition to CUDA and OpenCL backends, you can now run ArrayFire natively on any CPU. This is another step we\'ve taken in our efforts to make ArrayFire truly portable. The biggest benefits the new CPU backend include:</p>\r\n<ul>\r\n<li><p><strong>Hardware and Software neutrality</strong>: You can now build and ship applications without worrying about the hardware and drivers preset on end users\' machines. You can also port your applications easily to embedded and mobile platforms where CUDA and OpenCL may not be available.</p></li>\r\n<li><p><strong>Heterogeneous Computing</strong>: It is now easier to get higher utilization on your compute server / cluster. The ability to run the same code across CPUs, GPUs, and accelerators reduces development time.</p></li>\r\n</ul>\r\n<h3 id=\"improvements-to-the-c-api\">Improvements to the C API</h3>\r\n<p>A cleaner and simpler C API allows you to build wrappers for higher level languages in an easier manner. Some of the highlights of the upcoming C API include:</p>\r\n<ul>\r\n<li>An <code>af_array</code> handle that stores the metadata such as array dimensions and data type</li>\r\n<li><strong>J</strong>ust <strong>I</strong>n <strong>T</strong>ime compilation support</li>\r\n<li>Arithmetic, numerical, trigonometric, and other mathematical functions</li>\r\n<li>Statistics functions and set operations</li>\r\n</ul>\r\n\r\n<pre>\r\naf_array A, B, C;\r\n\r\n// Create af_array from host data\r\nfloat *h_A = {0, 1, 2, 3, 4, 5};\r\ndim_type a_dims[] = {2, 3};\r\naf_create_array(&A, h_A, 2, a_dims);\r\n\r\n// Create a random array on the device\r\ndim_type b_dims[] = {3, 3};\r\naf_randu(&B, 2, b_dims, f32);\r\n\r\n// Perform matrix multiplication\r\naf_matmul(&C, A, B, AF_NO_TRANSPOSE, AF_NO_TRANSPOSE);\r\n</pre>\r\n\r\n<h3 id=\"more-coming\">More coming</h3>\r\n<p>This is just a teaser to bigger and better things coming from us in the near future. If you have any questions please contact us!</p>\r\n<ul>\r\n<li>technical@arrayfire.com: Technical questions about ArrayFire.</li>\r\n<li>sales@arrayfire.com: Questions about sales and licensing of ArrayFire</li>\r\n</ul>','New Features in ArrayFire','','publish','open','open','','new-features-arrayfire','','http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\nhttp://sandbox.arrayfire.com/computer-vision-in-arrayfire-part-2/','2014-11-12 18:04:21','2014-11-12 18:04:21','',0,'http://sandbox.arrayfire.com/?p=7281',0,'post','',2),(7282,17728,'2014-11-10 14:37:36','2014-11-10 14:37:36','<p>We have previously talked about up coming <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">computer</a> <a href=\"http://sandbox.arrayfire.com/computer-vision-in-arrayfire-part-2/\">vision</a> algorithms in the next version of ArrayFire. Today we are going to discuss to discuss some of the bigger changes and additions to the next version.</p>\r\n<h3 id=\"new-cpu-backend\">New CPU backend</h3>\r\n<p>In addition to CUDA and OpenCL backends, you can now run ArrayFire natively on any CPU. This is another step by us towards making ArrayFire truly portable. The biggest benefits the new CPU backend include:</p>\r\n<ul>\r\n<li><p>Hardware and Software neutrality: You can now build and ship applications without worrying about the hardware and drivers preset on end users machines. You can also port your applications easily to embedded and mobile platforms where CUDA and OpenCL may not be available.</p></li>\r\n<li><p>Heterogeneous Computing: It is now easier to get higher utilization on your compute server / cluster. The ability to run the same code across CPUs, GPUs and accelerators reduces development time.</p></li>\r\n</ul>\r\n<h3 id=\"improvements-to-the-c-api\">Improvements to the C API</h3>\r\n<p>A cleaner and simpler C API allows us to build wrappers for higher level languages in an easier manner. Some of the highlights of the upcoming C API include:</p>\r\n<ul>\r\n<li>The <code>af_array</code> handle that stores the metadata such as array dimensions and data type.</li>\r\n<li>The <em>J</em>ust <em>I</em>n <em>T</em>ime compilation support is now available in C</li>\r\n<li>All numerical functions are available</li>\r\n<li>Statistics and Set operations from the C++ frontend are now available in C</li>\r\n</ul>\r\n<p>Here is a small code snippet demonstrating the new C API</p>\r\n<pre class=\"sourceCode C\"><code class=\"sourceCode c\">af_array A, B, C;\r\n\r\n<span class=\"dt\">float</span> *h_A = {<span class=\"dv\">0</span>, <span class=\"dv\">1</span>, <span class=\"dv\">2</span>, <span class=\"dv\">3</span>, <span class=\"dv\">4</span>, <span class=\"dv\">5</span>};\r\ndim_type a_dims[] = {<span class=\"dv\">2</span>, <span class=\"dv\">3</span>};\r\naf_create_array(&amp;A, h_A, <span class=\"dv\">2</span>, a_dims);\r\n\r\ndim_type b_dims[] = {<span class=\"dv\">3</span>, <span class=\"dv\">3</span>};\r\naf_randu(&amp;B, <span class=\"dv\">2</span>, b_dims, f32);\r\n\r\naf_matmul(&amp;C, A, B, AF_NO_TRANSPOSE, AF_NO_TRANSPOSE);</code></pre>\r\n<h3 id=\"more-coming\">More coming</h3>\r\n<p>This just a teaser to bigger and better things coming from us in the near future. If you have any questions please contact us!</p>\r\n<ul>\r\n<li>technical@arrayfire.com: Technical questions about ArrayFire.</li>\r\n<li>sales@arrayfire.com: Questions about sales and licensing ArrayFire</li>\r\n</ul>','Preview of ArrayFire 3.0','','inherit','open','open','','7281-revision-v1','','','2014-11-10 14:37:36','2014-11-10 14:37:36','',7281,'http://sandbox.arrayfire.com/7281-revision-v1/',0,'revision','',0),(7283,17728,'2014-11-10 14:38:37','2014-11-10 14:38:37','<p>We have previously talked about up coming <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">computer</a> <a href=\"http://sandbox.arrayfire.com/computer-vision-in-arrayfire-part-2/\">vision</a> algorithms in the next version of ArrayFire. Today we are going to discuss to discuss some of the bigger changes and additions to the next version.</p>\r\n<h3 id=\"new-cpu-backend\">New CPU backend</h3>\r\n<p>In addition to CUDA and OpenCL backends, you can now run ArrayFire natively on any CPU. This is another step by us towards making ArrayFire truly portable. The biggest benefits the new CPU backend include:</p>\r\n<ul>\r\n<li><p>Hardware and Software neutrality: You can now build and ship applications without worrying about the hardware and drivers preset on end users machines. You can also port your applications easily to embedded and mobile platforms where CUDA and OpenCL may not be available.</p></li>\r\n<li><p>Heterogeneous Computing: It is now easier to get higher utilization on your compute server / cluster. The ability to run the same code across CPUs, GPUs and accelerators reduces development time.</p></li>\r\n</ul>\r\n<h3 id=\"improvements-to-the-c-api\">Improvements to the C API</h3>\r\n<p>A cleaner and simpler C API allows us to build wrappers for higher level languages in an easier manner. Some of the highlights of the upcoming C API include:</p>\r\n<ul>\r\n<li>The <code>af_array</code> handle that stores the metadata such as array dimensions and data type.</li>\r\n<li>The <em>J</em>ust <em>I</em>n <em>T</em>ime compilation support is now available in C</li>\r\n<li>All numerical functions are available</li>\r\n<li>Statistics and Set operations from the C++ frontend are now available in C</li>\r\n</ul>\r\n<p>Here is a small code snippet demonstrating the new C API</p>\r\n\r\n<pre>\r\naf_array A, B, C;\r\n\r\nfloat *h_A = {0, 1, 2, 3, 4, 5};\r\ndim_type a_dims[] = {2, 3};\r\naf_create_array(&A, h_A, 2, a_dims);\r\n\r\ndim_type b_dims[] = {3, 3};\r\naf_randu(&B, 2, b_dims, f32);\r\n\r\naf_matmul(&C, A, B, AF_NO_TRANSPOSE, AF_NO_TRANSPOSE);\r\n</pre>\r\n\r\n<h3 id=\"more-coming\">More coming</h3>\r\n<p>This just a teaser to bigger and better things coming from us in the near future. If you have any questions please contact us!</p>\r\n<ul>\r\n<li>technical@arrayfire.com: Technical questions about ArrayFire.</li>\r\n<li>sales@arrayfire.com: Questions about sales and licensing ArrayFire</li>\r\n</ul>','Preview of ArrayFire 3.0','','inherit','open','open','','7281-revision-v1','','','2014-11-10 14:38:37','2014-11-10 14:38:37','',7281,'http://sandbox.arrayfire.com/7281-revision-v1/',0,'revision','',0),(7284,17728,'2014-11-10 14:39:29','2014-11-10 14:39:29','<p>We have previously talked about up coming <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">computer</a> <a href=\"http://sandbox.arrayfire.com/computer-vision-in-arrayfire-part-2/\">vision</a> algorithms in the next version of ArrayFire. Today we are going to discuss to discuss some of the bigger changes and additions to the next version.</p>\r\n<h3 id=\"new-cpu-backend\">New CPU backend</h3>\r\n<p>In addition to CUDA and OpenCL backends, you can now run ArrayFire natively on any CPU. This is another step by us towards making ArrayFire truly portable. The biggest benefits the new CPU backend include:</p>\r\n<ul>\r\n<li><p><b>Hardware and Software neutrality</b>: You can now build and ship applications without worrying about the hardware and drivers preset on end users machines. You can also port your applications easily to embedded and mobile platforms where CUDA and OpenCL may not be available.</p></li>\r\n<li><p><b>Easier Heterogeneous Computing</b>: It is now easier to get higher utilization on your compute server / cluster. The ability to run the same code across CPUs, GPUs and accelerators reduces development time.</p></li>\r\n</ul>\r\n<h3 id=\"improvements-to-the-c-api\">Improvements to the C API</h3>\r\n<p>A cleaner and simpler C API allows us to build wrappers for higher level languages in an easier manner. Some of the highlights of the upcoming C API include:</p>\r\n<ul>\r\n<li>The <code>af_array</code> handle that stores the metadata such as array dimensions and data type.</li>\r\n<li>The <em>J</em>ust <em>I</em>n <em>T</em>ime compilation support is now available in C</li>\r\n<li>All numerical functions are available</li>\r\n<li>Statistics and Set operations from the C++ frontend are now available in C</li>\r\n</ul>\r\n<p>Here is a small code snippet demonstrating the new C API</p>\r\n\r\n<pre>\r\naf_array A, B, C;\r\n\r\nfloat *h_A = {0, 1, 2, 3, 4, 5};\r\ndim_type a_dims[] = {2, 3};\r\naf_create_array(&A, h_A, 2, a_dims);\r\n\r\ndim_type b_dims[] = {3, 3};\r\naf_randu(&B, 2, b_dims, f32);\r\n\r\naf_matmul(&C, A, B, AF_NO_TRANSPOSE, AF_NO_TRANSPOSE);\r\n</pre>\r\n\r\n<h3 id=\"more-coming\">More coming</h3>\r\n<p>This just a teaser to bigger and better things coming from us in the near future. If you have any questions please contact us!</p>\r\n<ul>\r\n<li>technical@arrayfire.com: Technical questions about ArrayFire.</li>\r\n<li>sales@arrayfire.com: Questions about sales and licensing ArrayFire</li>\r\n</ul>','Preview of ArrayFire 3.0','','inherit','open','open','','7281-revision-v1','','','2014-11-10 14:39:29','2014-11-10 14:39:29','',7281,'http://sandbox.arrayfire.com/7281-revision-v1/',0,'revision','',0),(7285,17728,'2014-11-10 14:41:15','2014-11-10 14:41:15','<p>We have previously talked about up coming <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">computer</a> <a href=\"http://sandbox.arrayfire.com/computer-vision-in-arrayfire-part-2/\">vision</a> algorithms in the next version of ArrayFire. Today we are going to discuss to discuss some of the bigger changes and additions to the next version.</p>\r\n<h3 id=\"new-cpu-backend\">New CPU backend</h3>\r\n<p>In addition to CUDA and OpenCL backends, you can now run ArrayFire natively on any CPU. This is another step by us towards making ArrayFire truly portable. The biggest benefits the new CPU backend include:</p>\r\n<ul>\r\n<li><p><b>Hardware and Software neutrality</b>: You can now build and ship applications without worrying about the hardware and drivers preset on end users machines. You can also port your applications easily to embedded and mobile platforms where CUDA and OpenCL may not be available.</p></li>\r\n<li><p><b>Easier Heterogeneous Computing</b>: It is now easier to get higher utilization on your compute server / cluster. The ability to run the same code across CPUs, GPUs and accelerators reduces development time.</p></li>\r\n</ul>\r\n<h3 id=\"improvements-to-the-c-api\">Improvements to the C API</h3>\r\n<p>A cleaner and simpler C API allows us to build wrappers for higher level languages in an easier manner. Some of the highlights of the upcoming C API include:</p>\r\n<ul>\r\n<li>The <code>af_array</code> handle that stores the metadata such as array dimensions and data type.</li>\r\n<li>The <b>J</b>ust <b>I</b>n <b>T</b>ime compilation support is now available in C</li>\r\n<li>All numerical functions are available</li>\r\n<li>Statistics and Set operations from the C++ frontend are now available in C</li>\r\n</ul>\r\n<p>Here is a small code snippet demonstrating the new C API</p>\r\n\r\n<pre>\r\naf_array A, B, C;\r\n\r\nfloat *h_A = {0, 1, 2, 3, 4, 5};\r\ndim_type a_dims[] = {2, 3};\r\naf_create_array(&A, h_A, 2, a_dims);\r\n\r\ndim_type b_dims[] = {3, 3};\r\naf_randu(&B, 2, b_dims, f32);\r\n\r\naf_matmul(&C, A, B, AF_NO_TRANSPOSE, AF_NO_TRANSPOSE);\r\n</pre>\r\n\r\n<h3 id=\"more-coming\">More coming</h3>\r\n<p>This just a teaser to bigger and better things coming from us in the near future. If you have any questions please contact us!</p>\r\n<ul>\r\n<li>technical@arrayfire.com: Technical questions about ArrayFire.</li>\r\n<li>sales@arrayfire.com: Questions about sales and licensing ArrayFire</li>\r\n</ul>','Preview of ArrayFire 3.0','','inherit','open','open','','7281-revision-v1','','','2014-11-10 14:41:15','2014-11-10 14:41:15','',7281,'http://sandbox.arrayfire.com/7281-revision-v1/',0,'revision','',0),(7286,17728,'2014-11-10 14:41:51','2014-11-10 14:41:51','<p>We have previously talked about up coming <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">computer</a> <a href=\"http://sandbox.arrayfire.com/computer-vision-in-arrayfire-part-2/\">vision</a> algorithms in the next version of ArrayFire. Today we are going to discuss to discuss some of the bigger changes and additions to the next version.</p>\r\n<h3 id=\"new-cpu-backend\">New CPU backend</h3>\r\n<p>In addition to CUDA and OpenCL backends, you can now run ArrayFire natively on any CPU. This is another step by us towards making ArrayFire truly portable. The biggest benefits the new CPU backend include:</p>\r\n<ul>\r\n<li><p><b>Hardware and Software neutrality</b>: You can now build and ship applications without worrying about the hardware and drivers preset on end users machines. You can also port your applications easily to embedded and mobile platforms where CUDA and OpenCL may not be available.</p></li>\r\n<li><p><b>Easier Heterogeneous Computing</b>: It is now easier to get higher utilization on your compute server / cluster. The ability to run the same code across CPUs, GPUs and accelerators reduces development time.</p></li>\r\n</ul>\r\n<h3 id=\"improvements-to-the-c-api\">Improvements to the C API</h3>\r\n<p>A cleaner and simpler C API allows us to build wrappers for higher level languages in an easier manner. Some of the highlights of the upcoming C API include:</p>\r\n<ul>\r\n<li>The <code>af_array</code> handle that stores the metadata such as array dimensions and data type.</li>\r\n<li>The <b>J</b>ust <b>I</b>n <b>T</b>ime compilation support is now available in C</li>\r\n<li>All numerical functions are available</li>\r\n<li>Statistics and Set operations from the C++ frontend are now available in C</li>\r\n</ul>\r\n<p>Here is a small code snippet demonstrating the new C API</p>\r\n\r\n<pre>\r\naf_array A, B, C;\r\n\r\nfloat *h_A = {0, 1, 2, 3, 4, 5};\r\ndim_type a_dims[] = {2, 3};\r\naf_create_array(&A, h_A, 2, a_dims);\r\n\r\ndim_type b_dims[] = {3, 3};\r\naf_randu(&B, 2, b_dims, f32);\r\n\r\naf_matmul(&C, A, B, AF_NO_TRANSPOSE, AF_NO_TRANSPOSE);\r\n</pre>\r\n\r\n<h3 id=\"more-coming\">More coming</h3>\r\n<p>This just a teaser to bigger and better things coming from us in the near future. If you have any questions please contact us!</p>\r\n<ul>\r\n<li>technical@arrayfire.com: Technical questions about ArrayFire.</li>\r\n<li>sales@arrayfire.com: Questions about sales and licensing of ArrayFire</li>\r\n</ul>','Preview of ArrayFire 3.0','','inherit','open','open','','7281-revision-v1','','','2014-11-10 14:41:51','2014-11-10 14:41:51','',7281,'http://sandbox.arrayfire.com/7281-revision-v1/',0,'revision','',0),(7287,17728,'2014-11-10 14:43:42','2014-11-10 14:43:42','<p>We have previously talked about up coming <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">computer</a> <a href=\"http://sandbox.arrayfire.com/computer-vision-in-arrayfire-part-2/\">vision</a> algorithms in the next version of ArrayFire. Today we are going to discuss to discuss some of the bigger changes and additions to the next version.</p>\r\n<h3 id=\"new-cpu-backend\">New CPU backend</h3>\r\n<p>In addition to CUDA and OpenCL backends, you can now run ArrayFire natively on any CPU. This is another step by us towards making ArrayFire truly portable. The biggest benefits the new CPU backend include:</p>\r\n<ul>\r\n<li><p><b>Hardware and Software neutrality</b>: You can now build and ship applications without worrying about the hardware and drivers preset on end users machines. You can also port your applications easily to embedded and mobile platforms where CUDA and OpenCL may not be available.</p></li>\r\n<li><p><b>Easier Heterogeneous Computing</b>: It is now easier to get higher utilization on your compute server / cluster. The ability to run the same code across CPUs, GPUs and accelerators reduces development time.</p></li>\r\n</ul>\r\n<h3 id=\"improvements-to-the-c-api\">Improvements to the C API</h3>\r\n<p>A cleaner and simpler C API allows us to build wrappers for higher level languages in an easier manner. Some of the highlights of the upcoming C API include:</p>\r\n<ul>\r\n<li>The <code>af_array</code> handle that stores the metadata such as array dimensions and data type.</li>\r\n<li>The <b>J</b>ust <b>I</b>n <b>T</b>ime compilation support is now available in C</li>\r\n<li>All numerical functions are available</li>\r\n<li>Statistics and Set operations from the C++ frontend are now available in C</li>\r\n</ul>\r\n<p>Here is a small code snippet demonstrating the new C API</p>\r\n\r\n<pre>\r\naf_array A, B, C;\r\n\r\n// Create af_array from host data\r\nfloat *h_A = {0, 1, 2, 3, 4, 5};\r\ndim_type a_dims[] = {2, 3};\r\naf_create_array(&A, h_A, 2, a_dims);\r\n\r\n// Create a random array on the device\r\ndim_type b_dims[] = {3, 3};\r\naf_randu(&B, 2, b_dims, f32);\r\n\r\n// Perform matrix multiplication\r\naf_matmul(&C, A, B, AF_NO_TRANSPOSE, AF_NO_TRANSPOSE);\r\n</pre>\r\n\r\n<h3 id=\"more-coming\">More coming</h3>\r\n<p>This just a teaser to bigger and better things coming from us in the near future. If you have any questions please contact us!</p>\r\n<ul>\r\n<li>technical@arrayfire.com: Technical questions about ArrayFire.</li>\r\n<li>sales@arrayfire.com: Questions about sales and licensing of ArrayFire</li>\r\n</ul>','Preview of ArrayFire 3.0','','inherit','open','open','','7281-revision-v1','','','2014-11-10 14:43:42','2014-11-10 14:43:42','',7281,'http://sandbox.arrayfire.com/7281-revision-v1/',0,'revision','',0),(7290,7,'2014-11-10 15:28:00','2014-11-10 15:28:00','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone could use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire team is here for you.\r\n\r\nOur ArrayFire developers are the best in the business. With a support package, you can tap into their extensive knowledge base directly—no more waiting for forums, and no sketchy responses from Joe Schmo. Don\'t lose precious time and money fumbling for answers. Get some support.\r\n\r\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"http://meetme.so/arrayfire\"]Schedule a support consultation[/button][/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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\"][gap size=\"4%\"]\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"100\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Go Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"200\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Go Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"300\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Go Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"125\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Go Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-10 15:28:00','2014-11-10 15:28:00','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7292,17728,'2014-11-10 15:47:27','2014-11-10 15:47:27','<p>We have previously talked about upcoming <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">computer</a> <a href=\"http://sandbox.arrayfire.com/computer-vision-in-arrayfire-part-2/\">vision</a> algorithms in the next version of ArrayFire. Today we are going to discuss some of the bigger changes and additions to the next version.</p>\r\n<h3 id=\"new-cpu-backend\">New CPU backend</h3>\r\n<p>In addition to CUDA and OpenCL backends, you can now run ArrayFire natively on any CPU. This is another step by us towards making ArrayFire truly portable. The biggest benefits the new CPU backend include:</p>\r\n<ul>\r\n<li><p><b>Hardware and Software neutrality</b>: You can now build and ship applications without worrying about the hardware and drivers preset on end users\' machines. You can also port your applications easily to embedded and mobile platforms where CUDA and OpenCL may not be available.</p></li>\r\n<li><p><b>Easier Heterogeneous Computing</b>: It is now easier to get higher utilization on your compute server / cluster. The ability to run the same code across CPUs, GPUs, and accelerators reduces development time.</p></li>\r\n</ul>\r\n<h3 id=\"improvements-to-the-c-api\">Improvements to the C API</h3>\r\n<p>A cleaner and simpler C API allows us to build wrappers for higher level languages in an easier manner. Some of the highlights of the upcoming C API include:</p>\r\n<ul>\r\n<li>The <code>af_array</code> handle that stores the metadata such as array dimensions and data type.</li>\r\n<li>The <b>J</b>ust <b>I</b>n <b>T</b>ime compilation support is now available in C</li>\r\n<li>All numerical functions are available</li>\r\n<li>Statistics and Set operations from the C++ frontend are now available in C</li>\r\n</ul>\r\n<p>Here is a small code snippet demonstrating the new C API</p>\r\n\r\n<pre>\r\naf_array A, B, C;\r\n\r\n// Create af_array from host data\r\nfloat *h_A = {0, 1, 2, 3, 4, 5};\r\ndim_type a_dims[] = {2, 3};\r\naf_create_array(&A, h_A, 2, a_dims);\r\n\r\n// Create a random array on the device\r\ndim_type b_dims[] = {3, 3};\r\naf_randu(&B, 2, b_dims, f32);\r\n\r\n// Perform matrix multiplication\r\naf_matmul(&C, A, B, AF_NO_TRANSPOSE, AF_NO_TRANSPOSE);\r\n</pre>\r\n\r\n<h3 id=\"more-coming\">More coming</h3>\r\n<p>This just a teaser to bigger and better things coming from us in the near future. If you have any questions please contact us!</p>\r\n<ul>\r\n<li>technical@arrayfire.com: Technical questions about ArrayFire.</li>\r\n<li>sales@arrayfire.com: Questions about sales and licensing of ArrayFire</li>\r\n</ul>','Preview of ArrayFire 3.0','','inherit','open','open','','7281-revision-v1','','','2014-11-10 15:47:27','2014-11-10 15:47:27','',7281,'http://sandbox.arrayfire.com/7281-revision-v1/',0,'revision','',0),(7293,17728,'2014-11-10 15:49:41','2014-11-10 15:49:41','<p>We have previously talked about upcoming <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">computer</a> <a href=\"http://sandbox.arrayfire.com/computer-vision-in-arrayfire-part-2/\">vision</a> algorithms in the next version of ArrayFire. Today we are going to discuss some of the bigger changes and additions to the next version.</p>\r\n<h3 id=\"new-cpu-backend\">New CPU backend</h3>\r\n<p>In addition to CUDA and OpenCL backends, you can now run ArrayFire natively on any CPU. This is another step we\'ve taken in our efforts to make ArrayFire truly portable. The biggest benefits the new CPU backend include:</p>\r\n<ul>\r\n<li><p><b>Hardware and Software neutrality</b>: You can now build and ship applications without worrying about the hardware and drivers preset on end users\' machines. You can also port your applications easily to embedded and mobile platforms where CUDA and OpenCL may not be available.</p></li>\r\n<li><p><b>Easier Heterogeneous Computing</b>: It is now easier to get higher utilization on your compute server / cluster. The ability to run the same code across CPUs, GPUs, and accelerators reduces development time.</p></li>\r\n</ul>\r\n<h3 id=\"improvements-to-the-c-api\">Improvements to the C API</h3>\r\n<p>A cleaner and simpler C API allows us to build wrappers for higher level languages in an easier manner. Some of the highlights of the upcoming C API include:</p>\r\n<ul>\r\n<li>The <code>af_array</code> handle that stores the metadata such as array dimensions and data type.</li>\r\n<li>The <b>J</b>ust <b>I</b>n <b>T</b>ime compilation support is now available in C</li>\r\n<li>All numerical functions are available</li>\r\n<li>Statistics and Set operations from the C++ frontend are now available in C</li>\r\n</ul>\r\n<p>Here is a small code snippet demonstrating the new C API</p>\r\n\r\n<pre>\r\naf_array A, B, C;\r\n\r\n// Create af_array from host data\r\nfloat *h_A = {0, 1, 2, 3, 4, 5};\r\ndim_type a_dims[] = {2, 3};\r\naf_create_array(&A, h_A, 2, a_dims);\r\n\r\n// Create a random array on the device\r\ndim_type b_dims[] = {3, 3};\r\naf_randu(&B, 2, b_dims, f32);\r\n\r\n// Perform matrix multiplication\r\naf_matmul(&C, A, B, AF_NO_TRANSPOSE, AF_NO_TRANSPOSE);\r\n</pre>\r\n\r\n<h3 id=\"more-coming\">More coming</h3>\r\n<p>This just a teaser to bigger and better things coming from us in the near future. If you have any questions please contact us!</p>\r\n<ul>\r\n<li>technical@arrayfire.com: Technical questions about ArrayFire.</li>\r\n<li>sales@arrayfire.com: Questions about sales and licensing of ArrayFire</li>\r\n</ul>','Preview of ArrayFire 3.0','','inherit','open','open','','7281-revision-v1','','','2014-11-10 15:49:41','2014-11-10 15:49:41','',7281,'http://sandbox.arrayfire.com/7281-revision-v1/',0,'revision','',0),(7294,17796,'2014-12-04 20:28:22','2014-12-04 20:28:22','In this blog I will finalize the work that we completed on triangle counting in graphs on the GPU using CUDA. The two previous blogs can be found: <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-1/\" title=\"Part 1\" target=\"_blank\"> Part 1</a> and <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-2/\" title=\"Part 2\" target=\"_blank\"> Part 2</a>. The first part introduces the significance of the problem and the second part explains the algorithms that we used in our solution. \r\n\r\nThis work was presented in finer detail in the <a href=\"http://cass-mt.pnnl.gov/irregularworkshop.aspx\" title=\"IA^3\" target=\"_blank\">Workshop on Irregular Applications: Architectures and Algorithms</a> which took place as part of <a href=\"http://sc14.supercomputing.org/\" title=\"SC\'14\" target=\"_blank\">Supercomputing 2014</a>. The full report can be found <a href=\"http://dl.acm.org/citation.cfm?id=2688284\" title=\"here\">here</a>.\r\n\r\nIn previous blogs, we discussed that the performance of the triangle counting is dependent on the algorithm and the CUDA kernel. Our implementation gives the data scientist control over several important parameters:\r\n<ul>\r\n<li>Number of threads blocks - the number of threads blocks that will be created impacts the number of vertices of each thread block is responsible for. Each thread block receives an equal number of vertices that it will be responsible for the triangle counting via the adjacency list intersection approach. A small number of thread blocks can cause workload imbalance due to the fact that many real-world networks follow a power law distribution. It is possible to allocate a single thread-block to each vertex due to the large number of available thread-blocks - this however can also increase overhead. As such it is necessary to find a good balance to over-allocating and under-allocating - we used 16000 thread blocks.</li>\r\n<li>Number of concurrent intersections (in a thread block) - while it is feasible to allocate an entire thread block for a single intersection, this will typically bring about poor performance due to under utilization. Perhaps the single most important requirement for utilizing a thread-block is to ensure that the size of the thread-block is greater than the size of a warp. For adjacency list intersection this can cause an under-utilization of the warp (and the thread-block) due to the sparsity found in social networks where many vertices only have a handful of adjacent vertices. As such an entire warp in not necessary for the intersection. The other extreme is to allocate a single thread for every intersection for a specific vertex. Once again, this can lead to under-utilization as there are not enough threads to utilize the entire thread-block. Typically it is also preferable to allocate large thread-blocks that are greater in size than a single warp.</li>\r\n<li>Number of threads per intersection - the number of threads allocated for an intersection also plays an important role in achieving a high-degree of system utilization. As mentioned earlier there are two extremes: one thread per intersection and an entire thread-block per intersection (with a minimum of a warp size block). We do not recommend allocating more than a single-warp for a given intersection as this requires additional synchronization which can cause overhead. For sparse networks, where the average adjacency is not larger than a warp size, it is simply not efficient. However, as networks become denser and, therefore, the work of the intersection becomes greater, it might become necessary to allocate more than a single warp for the intersection. \r\n\r\n  </li>\r\n</ul>\r\n\r\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/prefAttachment3.png\"><img src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/prefAttachment3.png\" alt=\"prefAttachment\" width=\"569\" height=\"258\" class=\"alignnone size-full wp-image-7305\" /></a>\r\n\r\n\r\nIn the above figure we show execution time of the triangle counting algorithm for the \"preferential attachment\" network from the <a href=\"http://www.cc.gatech.edu/dimacs10/downloads.shtml\" title=\"DIMACS 10\" target=\"_blank\">DIMACS 10 Graph Challenge</a>. The abscissa represents the different configurations. The ordinate represents time - as such lower is better. Each configuration is represented by a triplet x-y-z, where x is the block size, y is the number of threads used for each intersection and z is the number of concurrent intersections in each block. In our full report there are additional performance figures for other networks.\r\n\r\nUsing smaller block sizes such as 32 or 64 threads requires each SM to execute several intersections (aka multiple blocks) for different vertices concurrently in order to achieve full system utilization. Smaller block-sizes incurred scheduling over-head. On the other extreme, large block configurations (such as $256$ threads) also showed slower performance due to low utilization. We found the best performance to be in the range of 92, 128, or 192 threads per block.\r\n\r\nIn our implementation, the number of threads used for a single intersection was limited to 32 threads, which is the warp size - this was done to avoid synchronization across multiple warps. The configurations that are presented use either 1, 2, 4, 8, 16 or 32 threads per intersection which in turn allows 32, 16, 8, 4, 2 or 1 concurrent intersections (respectively). \r\n\r\nWe noticed that the best performance is typically obtained when allocating 8 threads per intersection. These intermediate size configurations allow for good memory locality, good balancing between the work partition stage and the intersection stage. The two extreme configurations (one intersection per thread and one intersection per warp) do not offer the best performance. In fact the difference between the best performing configuration and the worst performing configuration is in the range of 3X-7X. Thus, fine-tuning and the control parameters are important.\r\n\r\n','Triangle Counting in Graphs on the GPU (Part 3)','','publish','open','open','','triangle-counting-in-graphs-on-the-gpu-part-3','','http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-1/\nhttp://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-2/','2014-12-08 15:20:22','2014-12-08 15:20:22','',0,'http://sandbox.arrayfire.com/?p=7294',0,'post','',1),(7295,17796,'2014-11-10 15:54:17','2014-11-10 15:54:17','','prefAttachment','','inherit','open','open','','prefattachment','','','2014-11-10 15:54:17','2014-11-10 15:54:17','',7294,'http://sandbox.arrayfire.com/wp-content/uploads/2014/11/prefAttachment.png',0,'attachment','image/png',0),(7296,17796,'2014-11-10 15:54:29','2014-11-10 15:54:29','','prefAttachment','','inherit','open','open','','prefattachment-2','','','2014-11-10 15:54:29','2014-11-10 15:54:29','',7294,'http://sandbox.arrayfire.com/wp-content/uploads/2014/11/prefAttachment1.png',0,'attachment','image/png',0),(7297,17796,'2014-11-10 15:54:40','2014-11-10 15:54:40','','caida','','inherit','open','open','','caida','','','2014-11-10 15:54:40','2014-11-10 15:54:40','',7294,'http://sandbox.arrayfire.com/wp-content/uploads/2014/11/caida.png',0,'attachment','image/png',0),(7298,17796,'2014-11-10 15:54:57','2014-11-10 15:54:57','','cage15','','inherit','open','open','','cage15','','','2014-11-10 15:54:57','2014-11-10 15:54:57','',7294,'http://sandbox.arrayfire.com/wp-content/uploads/2014/11/cage15.png',0,'attachment','image/png',0),(7299,17796,'2014-11-10 15:55:30','2014-11-10 15:55:30','','cage15','','inherit','open','open','','cage15-2','','','2014-11-10 15:55:30','2014-11-10 15:55:30','',7294,'http://sandbox.arrayfire.com/wp-content/uploads/2014/11/cage151.png',0,'attachment','image/png',0),(7300,17796,'2014-11-10 15:55:30','2014-11-10 15:55:30','','caida','','inherit','open','open','','caida-2','','','2014-11-10 15:55:30','2014-11-10 15:55:30','',7294,'http://sandbox.arrayfire.com/wp-content/uploads/2014/11/caida1.png',0,'attachment','image/png',0),(7301,17796,'2014-11-10 15:55:31','2014-11-10 15:55:31','','prefAttachment','','inherit','open','open','','prefattachment-3','','','2014-11-10 15:55:31','2014-11-10 15:55:31','',7294,'http://sandbox.arrayfire.com/wp-content/uploads/2014/11/prefAttachment2.png',0,'attachment','image/png',0),(7302,17796,'2014-11-10 15:55:31','2014-11-10 15:55:31','','smallworld','','inherit','open','open','','smallworld','','','2014-11-10 15:55:31','2014-11-10 15:55:31','',7294,'http://sandbox.arrayfire.com/wp-content/uploads/2014/11/smallworld.png',0,'attachment','image/png',0),(7303,17796,'2014-11-10 15:55:36','2014-11-10 15:55:36','','cage15','','inherit','open','open','','cage15-3','','','2014-11-10 15:55:36','2014-11-10 15:55:36','',7294,'http://sandbox.arrayfire.com/wp-content/uploads/2014/11/cage15.jpg',0,'attachment','image/jpeg',0),(7304,17728,'2014-11-10 15:57:43','2014-11-10 15:57:43','<p>We have previously talked about upcoming <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">computer</a> <a href=\"http://sandbox.arrayfire.com/computer-vision-in-arrayfire-part-2/\">vision</a> algorithms in the next version of ArrayFire. Today we are going to discuss some of the bigger changes and additions to the next version.</p>\r\n<h3 id=\"new-cpu-backend\">New CPU backend</h3>\r\n<p>In addition to CUDA and OpenCL backends, you can now run ArrayFire natively on any CPU. This is another step by us towards making ArrayFire truly portable. The biggest benefits the new CPU backend include:</p>\r\n<ul>\r\n<li><p><strong>Hardware and Software neutrality</strong>: You can now build and ship applications without worrying about the hardware and drivers preset on end users\' machines. You can also port your applications easily to embedded and mobile platforms where CUDA and OpenCL may not be available.</p></li>\r\n<li><p><strong>Heterogeneous Computing</strong>: It is now easier to get higher utilization on your compute server / cluster. The ability to run the same code across CPUs, GPUs, and accelerators reduces development time.</p></li>\r\n</ul>\r\n<h3 id=\"improvements-to-the-c-api\">Improvements to the C API</h3>\r\n<p>A cleaner and simpler C API allows you to build wrappers for higher level languages in an easier manner. Some of the highlights of the upcoming C API include:</p>\r\n<ul>\r\n<li>An <code>af_array</code> handle that stores the metadata such as array dimensions and data type</li>\r\n<li><strong>J</strong>ust <strong>I</strong>n <strong>T</strong>ime compilation support</li>\r\n<li>Arithmetic, numerical, trigonometric, and other mathematical functions</li>\r\n<li>Statistics functions and set operatioA</li>\r\n</ul>\r\n\r\n<pre>\r\naf_array A, B, C;\r\n\r\n// Create af_array from host data\r\nfloat *h_A = {0, 1, 2, 3, 4, 5};\r\ndim_type a_dims[] = {2, 3};\r\naf_create_array(&A, h_A, 2, a_dims);\r\n\r\n// Create a random array on the device\r\ndim_type b_dims[] = {3, 3};\r\naf_randu(&B, 2, b_dims, f32);\r\n\r\n// Perform matrix multiplication\r\naf_matmul(&C, A, B, AF_NO_TRANSPOSE, AF_NO_TRANSPOSE);\r\n</pre>\r\n\r\n<h3 id=\"more-coming\">More coming</h3>\r\n<p>This just a teaser to bigger and better things coming from us in the near future. If you have any questions please contact us!</p>\r\n<ul>\r\n<li>technical@arrayfire.com: Technical questions about ArrayFire.</li>\r\n<li>sales@arrayfire.com: Questions about sales and licensing of ArrayFire</li>\r\n</ul>','New Features Coming To ArrayFire','','inherit','open','open','','7281-revision-v1','','','2014-11-10 15:57:43','2014-11-10 15:57:43','',7281,'http://sandbox.arrayfire.com/7281-revision-v1/',0,'revision','',0),(7305,17796,'2014-11-10 16:02:20','2014-11-10 16:02:20','','prefAttachment','','inherit','open','open','','prefattachment-4','','','2014-11-10 16:02:20','2014-11-10 16:02:20','',7294,'http://sandbox.arrayfire.com/wp-content/uploads/2014/11/prefAttachment3.png',0,'attachment','image/png',0),(7306,17796,'2014-11-10 16:02:52','2014-11-10 16:02:52','','cpugpu','','inherit','open','open','','cpugpu','','','2014-11-10 16:02:52','2014-11-10 16:02:52','',7294,'http://sandbox.arrayfire.com/wp-content/uploads/2014/11/cpugpu.png',0,'attachment','image/png',0),(7307,17728,'2014-11-10 16:03:23','2014-11-10 16:03:23','<p>We have previously talked about upcoming <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">computer</a> <a href=\"http://sandbox.arrayfire.com/computer-vision-in-arrayfire-part-2/\">vision</a> algorithms in the next version of ArrayFire. Today we are going to discuss some of the bigger changes and additions to the next version.</p>\r\n<h3 id=\"new-cpu-backend\">New CPU backend</h3>\r\n<p>In addition to CUDA and OpenCL backends, you can now run ArrayFire natively on any CPU. This is another step by us towards making ArrayFire truly portable. The biggest benefits the new CPU backend include:</p>\r\n<ul>\r\n<li><p><strong>Hardware and Software neutrality</strong>: You can now build and ship applications without worrying about the hardware and drivers preset on end users\' machines. You can also port your applications easily to embedded and mobile platforms where CUDA and OpenCL may not be available.</p></li>\r\n<li><p><strong>Heterogeneous Computing</strong>: It is now easier to get higher utilization on your compute server / cluster. The ability to run the same code across CPUs, GPUs, and accelerators reduces development time.</p></li>\r\n</ul>\r\n<h3 id=\"improvements-to-the-c-api\">Improvements to the C API</h3>\r\n<p>A cleaner and simpler C API allows you to build wrappers for higher level languages in an easier manner. Some of the highlights of the upcoming C API include:</p>\r\n<ul>\r\n<li>An <code>af_array</code> handle that stores the metadata such as array dimensions and data type</li>\r\n<li><strong>J</strong>ust <strong>I</strong>n <strong>T</strong>ime compilation support</li>\r\n<li>Arithmetic, numerical, trigonometric, and other mathematical functions</li>\r\n<li>Statistics functions and set operatios</li>\r\n</ul>\r\n\r\n<pre>\r\naf_array A, B, C;\r\n\r\n// Create af_array from host data\r\nfloat *h_A = {0, 1, 2, 3, 4, 5};\r\ndim_type a_dims[] = {2, 3};\r\naf_create_array(&A, h_A, 2, a_dims);\r\n\r\n// Create a random array on the device\r\ndim_type b_dims[] = {3, 3};\r\naf_randu(&B, 2, b_dims, f32);\r\n\r\n// Perform matrix multiplication\r\naf_matmul(&C, A, B, AF_NO_TRANSPOSE, AF_NO_TRANSPOSE);\r\n</pre>\r\n\r\n<h3 id=\"more-coming\">More coming</h3>\r\n<p>This just a teaser to bigger and better things coming from us in the near future. If you have any questions please contact us!</p>\r\n<ul>\r\n<li>technical@arrayfire.com: Technical questions about ArrayFire.</li>\r\n<li>sales@arrayfire.com: Questions about sales and licensing of ArrayFire</li>\r\n</ul>','New Features Coming To ArrayFire','','inherit','open','open','','7281-revision-v1','','','2014-11-10 16:03:23','2014-11-10 16:03:23','',7281,'http://sandbox.arrayfire.com/7281-revision-v1/',0,'revision','',0),(7308,17728,'2014-11-10 16:07:14','2014-11-10 16:07:14','<p>We have previously talked about upcoming <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">computer</a> <a href=\"http://sandbox.arrayfire.com/computer-vision-in-arrayfire-part-2/\">vision</a> algorithms in the next version of ArrayFire. Today we are going to discuss some of the bigger changes and additions to the next version.</p>\r\n<h3 id=\"new-cpu-backend\">New CPU backend</h3>\r\n<p>In addition to CUDA and OpenCL backends, you can now run ArrayFire natively on any CPU. This is another step we\'ve taken in our efforts to make ArrayFire truly portable. The biggest benefits the new CPU backend include:</p>\r\n<ul>\r\n<li><p><strong>Hardware and Software neutrality</strong>: You can now build and ship applications without worrying about the hardware and drivers preset on end users\' machines. You can also port your applications easily to embedded and mobile platforms where CUDA and OpenCL may not be available.</p></li>\r\n<li><p><strong>Heterogeneous Computing</strong>: It is now easier to get higher utilization on your compute server / cluster. The ability to run the same code across CPUs, GPUs, and accelerators reduces development time.</p></li>\r\n</ul>\r\n<h3 id=\"improvements-to-the-c-api\">Improvements to the C API</h3>\r\n<p>A cleaner and simpler C API allows you to build wrappers for higher level languages in an easier manner. Some of the highlights of the upcoming C API include:</p>\r\n<ul>\r\n<li>An <code>af_array</code> handle that stores the metadata such as array dimensions and data type</li>\r\n<li><strong>J</strong>ust <strong>I</strong>n <strong>T</strong>ime compilation support</li>\r\n<li>Arithmetic, numerical, trigonometric, and other mathematical functions</li>\r\n<li>Statistics functions and set operatios</li>\r\n</ul>\r\n\r\n<pre>\r\naf_array A, B, C;\r\n\r\n// Create af_array from host data\r\nfloat *h_A = {0, 1, 2, 3, 4, 5};\r\ndim_type a_dims[] = {2, 3};\r\naf_create_array(&A, h_A, 2, a_dims);\r\n\r\n// Create a random array on the device\r\ndim_type b_dims[] = {3, 3};\r\naf_randu(&B, 2, b_dims, f32);\r\n\r\n// Perform matrix multiplication\r\naf_matmul(&C, A, B, AF_NO_TRANSPOSE, AF_NO_TRANSPOSE);\r\n</pre>\r\n\r\n<h3 id=\"more-coming\">More coming</h3>\r\n<p>This is just a teaser to bigger and better things coming from us in the near future. If you have any questions please contact us!</p>\r\n<ul>\r\n<li>technical@arrayfire.com: Technical questions about ArrayFire.</li>\r\n<li>sales@arrayfire.com: Questions about sales and licensing of ArrayFire</li>\r\n</ul>','New Features Coming To ArrayFire','','inherit','open','open','','7281-revision-v1','','','2014-11-10 16:07:14','2014-11-10 16:07:14','',7281,'http://sandbox.arrayfire.com/7281-revision-v1/',0,'revision','',0),(7309,17796,'2014-11-10 16:13:11','2014-11-10 16:13:11','In this blog I will finalize the work that we completed on triangle counting in graphs on the GPU using CUDA. The two previous blogs can be found: <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-1/\" title=\"Part 1\" target=\"_blank\"> Part 1</a> and <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-2/\" title=\"Part 2\" target=\"_blank\"> Part 2</a>. The first part introduces the significance of the problem and the second part explains the algorithms that we used in our solution. \r\n\r\nNext week we will present this work in finer detail in the <a href=\"http://cass-mt.pnnl.gov/irregularworkshop.aspx\" title=\"IA^3\" target=\"_blank\">Workshop on Irregular Applications: Architectures and Algorithms</a> which will take place as part of <a href=\"http://sc14.supercomputing.org/\" title=\"SC\'14\" target=\"_blank\">Supercomputing 2014</a>.\r\n\r\nPreviously, we discussed that the performance of the triangle counting is dependent on the algorithm and the CUDA kernel. Our implementation gives the data scientist control over several important parameters:\r\n\r\n<li>text</li>\r\n<li>text</li>\r\n<li>text</li>\r\n</ul>\r\n \r\n\r\n\r\n\r\n\r\n\r\n','Triangle Counting in Graphs on the GPU (Part 3)','','inherit','open','open','','7294-revision-v1','','','2014-11-10 16:13:11','2014-11-10 16:13:11','',7294,'http://sandbox.arrayfire.com/7294-revision-v1/',0,'revision','',0),(7310,17728,'2014-11-10 16:13:45','2014-11-10 16:13:45','<p>We have previously talked about upcoming <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">computer</a> <a href=\"http://sandbox.arrayfire.com/computer-vision-in-arrayfire-part-2/\">vision</a> algorithms in the next version of ArrayFire. Today we are going to discuss some of the bigger changes and additions to the next version.</p>\r\n<h3 id=\"new-cpu-backend\">New CPU backend</h3>\r\n<p>In addition to CUDA and OpenCL backends, you can now run ArrayFire natively on any CPU. This is another step we\'ve taken in our efforts to make ArrayFire truly portable. The biggest benefits the new CPU backend include:</p>\r\n<ul>\r\n<li><p><strong>Hardware and Software neutrality</strong>: You can now build and ship applications without worrying about the hardware and drivers preset on end users\' machines. You can also port your applications easily to embedded and mobile platforms where CUDA and OpenCL may not be available.</p></li>\r\n<li><p><strong>Heterogeneous Computing</strong>: It is now easier to get higher utilization on your compute server / cluster. The ability to run the same code across CPUs, GPUs, and accelerators reduces development time.</p></li>\r\n</ul>\r\n<h3 id=\"improvements-to-the-c-api\">Improvements to the C API</h3>\r\n<p>A cleaner and simpler C API allows you to build wrappers for higher level languages in an easier manner. Some of the highlights of the upcoming C API include:</p>\r\n<ul>\r\n<li>An <code>af_array</code> handle that stores the metadata such as array dimensions and data type</li>\r\n<li><strong>J</strong>ust <strong>I</strong>n <strong>T</strong>ime compilation support</li>\r\n<li>Arithmetic, numerical, trigonometric, and other mathematical functions</li>\r\n<li>Statistics functions and set operations</li>\r\n</ul>\r\n\r\n<pre>\r\naf_array A, B, C;\r\n\r\n// Create af_array from host data\r\nfloat *h_A = {0, 1, 2, 3, 4, 5};\r\ndim_type a_dims[] = {2, 3};\r\naf_create_array(&A, h_A, 2, a_dims);\r\n\r\n// Create a random array on the device\r\ndim_type b_dims[] = {3, 3};\r\naf_randu(&B, 2, b_dims, f32);\r\n\r\n// Perform matrix multiplication\r\naf_matmul(&C, A, B, AF_NO_TRANSPOSE, AF_NO_TRANSPOSE);\r\n</pre>\r\n\r\n<h3 id=\"more-coming\">More coming</h3>\r\n<p>This is just a teaser to bigger and better things coming from us in the near future. If you have any questions please contact us!</p>\r\n<ul>\r\n<li>technical@arrayfire.com: Technical questions about ArrayFire.</li>\r\n<li>sales@arrayfire.com: Questions about sales and licensing of ArrayFire</li>\r\n</ul>','New Features Coming To ArrayFire','','inherit','open','open','','7281-revision-v1','','','2014-11-10 16:13:45','2014-11-10 16:13:45','',7281,'http://sandbox.arrayfire.com/7281-revision-v1/',0,'revision','',0),(7311,17796,'2014-11-10 16:16:22','2014-11-10 16:16:22','In this blog I will finalize the work that we completed on triangle counting in graphs on the GPU using CUDA. The two previous blogs can be found: <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-1/\" title=\"Part 1\" target=\"_blank\"> Part 1</a> and <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-2/\" title=\"Part 2\" target=\"_blank\"> Part 2</a>. The first part introduces the significance of the problem and the second part explains the algorithms that we used in our solution. \r\n\r\nNext week we will present this work in finer detail in the <a href=\"http://cass-mt.pnnl.gov/irregularworkshop.aspx\" title=\"IA^3\" target=\"_blank\">Workshop on Irregular Applications: Architectures and Algorithms</a> which will take place as part of <a href=\"http://sc14.supercomputing.org/\" title=\"SC\'14\" target=\"_blank\">Supercomputing 2014</a>.\r\n\r\nPreviously, we discussed that the performance of the triangle counting is dependent on the algorithm and the CUDA kernel. Our implementation gives the data scientist control over several important parameters:\r\n<ul>\r\n<li>Number of threads blocks - </li>\r\n<li>Number of concurrent intersections (in a thread block)</li>\r\n<li>Number of threads per intersection</li>\r\n</ul>\r\n\r\n\r\n\r\n\r\n\r\n\r\n','Triangle Counting in Graphs on the GPU (Part 3)','','inherit','open','open','','7294-revision-v1','','','2014-11-10 16:16:22','2014-11-10 16:16:22','',7294,'http://sandbox.arrayfire.com/7294-revision-v1/',0,'revision','',0),(7312,17796,'2014-11-10 16:34:10','2014-11-10 16:34:10','In this blog I will finalize the work that we completed on triangle counting in graphs on the GPU using CUDA. The two previous blogs can be found: <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-1/\" title=\"Part 1\" target=\"_blank\"> Part 1</a> and <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-2/\" title=\"Part 2\" target=\"_blank\"> Part 2</a>. The first part introduces the significance of the problem and the second part explains the algorithms that we used in our solution. \r\n\r\nNext week we will present this work in finer detail in the <a href=\"http://cass-mt.pnnl.gov/irregularworkshop.aspx\" title=\"IA^3\" target=\"_blank\">Workshop on Irregular Applications: Architectures and Algorithms</a> which will take place as part of <a href=\"http://sc14.supercomputing.org/\" title=\"SC\'14\" target=\"_blank\">Supercomputing 2014</a>.\r\n\r\nPreviously, we discussed that the performance of the triangle counting is dependent on the algorithm and the CUDA kernel. Our implementation gives the data scientist control over several important parameters:\r\n<ul>\r\n<li>Number of threads blocks - the number of threads blocks that will be created impacts the number of vertices of each thread block is responsible for. Each thread block receives an equal number of vertices that it will be responsible for the triangle counting via the adjacency list intersection approach.A small number of thread blocks can cause workload imbalance due to the fact that many real-world networks follow a power law distribution. It is possible to allocate a single thread-block to each vertex due to the large number of available thread-blocks - this however can also increase overhead. As such it is necessary to find a good balance over-allocating and under-allocating - we used 16000 thread blocks.</li>\r\n<li>Number of concurrent intersections (in a thread block) - while it is feasible to allocate an entire thread block for a single intersection, this will typically bring about poor performance due to under utilization. Perhaps the single most important requirement for utilizing a thread-block is to ensure that the size of the thread-block is greater than the size of a warp. For adjacency list intersection this can cause an under utilization of the warp (and the thread-block) due to the sparsity found in social networks where many vertices only have a handful of adjacent vertices. As such an entire warp in not necessary for the intersection. The other extreme to allocating an entire warp to a single intersection, is to allocate a single thread for every intersection for a specific vertex. Once again, this can lead to under-utilization as there are not enough threads to utilize the entire. </li>\r\n<li>Number of threads per intersection</li>\r\n</ul>\r\n\r\n\r\n\r\n\r\n','Triangle Counting in Graphs on the GPU (Part 3)','','inherit','open','open','','7294-revision-v1','','','2014-11-10 16:34:10','2014-11-10 16:34:10','',7294,'http://sandbox.arrayfire.com/7294-revision-v1/',0,'revision','',0),(7313,17796,'2014-11-10 17:14:29','2014-11-10 17:14:29','','prefAttachment','','inherit','open','open','','prefattachment-5','','','2014-11-10 17:14:29','2014-11-10 17:14:29','',7294,'http://sandbox.arrayfire.com/wp-content/uploads/2014/11/prefAttachment4.png',0,'attachment','image/png',0),(7314,17796,'2014-11-10 17:27:59','2014-11-10 17:27:59','In this blog I will finalize the work that we completed on triangle counting in graphs on the GPU using CUDA. The two previous blogs can be found: <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-1/\" title=\"Part 1\" target=\"_blank\"> Part 1</a> and <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-2/\" title=\"Part 2\" target=\"_blank\"> Part 2</a>. The first part introduces the significance of the problem and the second part explains the algorithms that we used in our solution. \r\n\r\nNext week we will present this work in finer detail in the <a href=\"http://cass-mt.pnnl.gov/irregularworkshop.aspx\" title=\"IA^3\" target=\"_blank\">Workshop on Irregular Applications: Architectures and Algorithms</a> which will take place as part of <a href=\"http://sc14.supercomputing.org/\" title=\"SC\'14\" target=\"_blank\">Supercomputing 2014</a>.\r\n\r\nPreviously, we discussed that the performance of the triangle counting is dependent on the algorithm and the CUDA kernel. Our implementation gives the data scientist control over several important parameters:\r\n<ul>\r\n<li>Number of threads blocks - the number of threads blocks that will be created impacts the number of vertices of each thread block is responsible for. Each thread block receives an equal number of vertices that it will be responsible for the triangle counting via the adjacency list intersection approach.A small number of thread blocks can cause workload imbalance due to the fact that many real-world networks follow a power law distribution. It is possible to allocate a single thread-block to each vertex due to the large number of available thread-blocks - this however can also increase overhead. As such it is necessary to find a good balance over-allocating and under-allocating - we used 16000 thread blocks.</li>\r\n<li>Number of concurrent intersections (in a thread block) - while it is feasible to allocate an entire thread block for a single intersection, this will typically bring about poor performance due to under utilization. Perhaps the single most important requirement for utilizing a thread-block is to ensure that the size of the thread-block is greater than the size of a warp. For adjacency list intersection this can cause an under utilization of the warp (and the thread-block) due to the sparsity found in social networks where many vertices only have a handful of adjacent vertices. As such an entire warp in not necessary for the intersection. The other extreme is to allocate is to allocate a single thread for every intersection for a specific vertex. Once again, this can lead to under-utilization as there are not enough threads to utilize the entire. Typically it is also preferable to allocate large thread-blocks that are greater in size than a single warp.  </li>\r\n<li>Number of threads per intersection - the number of threads allocated for an intersection also plays an important role in achieving a high-degree of system utilization. As mentioned earlier there are two extremes: one thread per intersection and an entire thread-block per intersection (with a minimum of a warp size block). We do not recommend allocating more than a single-warp for a given intersection as this requires additional synchronization which can cause overhead. For sparse networks where the average adjacency is not larger that a warp size it is simply not efficient. However, as networks become denser and, therefore, the work of the intersection becomes greater, it might become necessary to allocate more than a single warp for the intersection. \r\n\r\n  </li>\r\n</ul>\r\n\r\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/prefAttachment3.png\"><img src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/prefAttachment3-300x136.png\" alt=\"prefAttachment\" width=\"300\" height=\"136\" class=\"alignnone size-medium wp-image-7305\" /></a> \r\n\r\n\r\n\r\n','Triangle Counting in Graphs on the GPU (Part 3)','','inherit','open','open','','7294-revision-v1','','','2014-11-10 17:27:59','2014-11-10 17:27:59','',7294,'http://sandbox.arrayfire.com/7294-revision-v1/',0,'revision','',0),(7315,17796,'2014-11-10 17:35:04','2014-11-10 17:35:04','In this blog I will finalize the work that we completed on triangle counting in graphs on the GPU using CUDA. The two previous blogs can be found: <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-1/\" title=\"Part 1\" target=\"_blank\"> Part 1</a> and <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-2/\" title=\"Part 2\" target=\"_blank\"> Part 2</a>. The first part introduces the significance of the problem and the second part explains the algorithms that we used in our solution. \r\n\r\nNext week we will present this work in finer detail in the <a href=\"http://cass-mt.pnnl.gov/irregularworkshop.aspx\" title=\"IA^3\" target=\"_blank\">Workshop on Irregular Applications: Architectures and Algorithms</a> which will take place as part of <a href=\"http://sc14.supercomputing.org/\" title=\"SC\'14\" target=\"_blank\">Supercomputing 2014</a>.\r\n\r\nPreviously, we discussed that the performance of the triangle counting is dependent on the algorithm and the CUDA kernel. Our implementation gives the data scientist control over several important parameters:\r\n<ul>\r\n<li>Number of threads blocks - the number of threads blocks that will be created impacts the number of vertices of each thread block is responsible for. Each thread block receives an equal number of vertices that it will be responsible for the triangle counting via the adjacency list intersection approach.A small number of thread blocks can cause workload imbalance due to the fact that many real-world networks follow a power law distribution. It is possible to allocate a single thread-block to each vertex due to the large number of available thread-blocks - this however can also increase overhead. As such it is necessary to find a good balance over-allocating and under-allocating - we used 16000 thread blocks.</li>\r\n<li>Number of concurrent intersections (in a thread block) - while it is feasible to allocate an entire thread block for a single intersection, this will typically bring about poor performance due to under utilization. Perhaps the single most important requirement for utilizing a thread-block is to ensure that the size of the thread-block is greater than the size of a warp. For adjacency list intersection this can cause an under utilization of the warp (and the thread-block) due to the sparsity found in social networks where many vertices only have a handful of adjacent vertices. As such an entire warp in not necessary for the intersection. The other extreme is to allocate is to allocate a single thread for every intersection for a specific vertex. Once again, this can lead to under-utilization as there are not enough threads to utilize the entire. Typically it is also preferable to allocate large thread-blocks that are greater in size than a single warp.  </li>\r\n<li>Number of threads per intersection - the number of threads allocated for an intersection also plays an important role in achieving a high-degree of system utilization. As mentioned earlier there are two extremes: one thread per intersection and an entire thread-block per intersection (with a minimum of a warp size block). We do not recommend allocating more than a single-warp for a given intersection as this requires additional synchronization which can cause overhead. For sparse networks where the average adjacency is not larger that a warp size it is simply not efficient. However, as networks become denser and, therefore, the work of the intersection becomes greater, it might become necessary to allocate more than a single warp for the intersection. \r\n\r\n  </li>\r\n</ul>\r\n\r\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/prefAttachment3.png\"><img src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/prefAttachment3.png\" alt=\"prefAttachment\" width=\"569\" height=\"258\" class=\"alignnone size-full wp-image-7305\" /></a>\r\n\r\n\r\nIn the above figure we show execution time of the triangle counting algorithm for the \"preferential attachement\"','Triangle Counting in Graphs on the GPU (Part 3)','','inherit','open','open','','7294-revision-v1','','','2014-11-10 17:35:04','2014-11-10 17:35:04','',7294,'http://sandbox.arrayfire.com/7294-revision-v1/',0,'revision','',0),(7316,17796,'2014-11-10 18:34:14','2014-11-10 18:34:14','In this blog I will finalize the work that we completed on triangle counting in graphs on the GPU using CUDA. The two previous blogs can be found: <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-1/\" title=\"Part 1\" target=\"_blank\"> Part 1</a> and <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-2/\" title=\"Part 2\" target=\"_blank\"> Part 2</a>. The first part introduces the significance of the problem and the second part explains the algorithms that we used in our solution. \r\n\r\nNext week we will present this work in finer detail in the <a href=\"http://cass-mt.pnnl.gov/irregularworkshop.aspx\" title=\"IA^3\" target=\"_blank\">Workshop on Irregular Applications: Architectures and Algorithms</a> which will take place as part of <a href=\"http://sc14.supercomputing.org/\" title=\"SC\'14\" target=\"_blank\">Supercomputing 2014</a>.\r\n\r\nPreviously, we discussed that the performance of the triangle counting is dependent on the algorithm and the CUDA kernel. Our implementation gives the data scientist control over several important parameters:\r\n<ul>\r\n<li>Number of threads blocks - the number of threads blocks that will be created impacts the number of vertices of each thread block is responsible for. Each thread block receives an equal number of vertices that it will be responsible for the triangle counting via the adjacency list intersection approach.A small number of thread blocks can cause workload imbalance due to the fact that many real-world networks follow a power law distribution. It is possible to allocate a single thread-block to each vertex due to the large number of available thread-blocks - this however can also increase overhead. As such it is necessary to find a good balance over-allocating and under-allocating - we used 16000 thread blocks.</li>\r\n<li>Number of concurrent intersections (in a thread block) - while it is feasible to allocate an entire thread block for a single intersection, this will typically bring about poor performance due to under utilization. Perhaps the single most important requirement for utilizing a thread-block is to ensure that the size of the thread-block is greater than the size of a warp. For adjacency list intersection this can cause an under utilization of the warp (and the thread-block) due to the sparsity found in social networks where many vertices only have a handful of adjacent vertices. As such an entire warp in not necessary for the intersection. The other extreme is to allocate is to allocate a single thread for every intersection for a specific vertex. Once again, this can lead to under-utilization as there are not enough threads to utilize the entire. Typically it is also preferable to allocate large thread-blocks that are greater in size than a single warp.  </li>\r\n<li>Number of threads per intersection - the number of threads allocated for an intersection also plays an important role in achieving a high-degree of system utilization. As mentioned earlier there are two extremes: one thread per intersection and an entire thread-block per intersection (with a minimum of a warp size block). We do not recommend allocating more than a single-warp for a given intersection as this requires additional synchronization which can cause overhead. For sparse networks where the average adjacency is not larger that a warp size it is simply not efficient. However, as networks become denser and, therefore, the work of the intersection becomes greater, it might become necessary to allocate more than a single warp for the intersection. \r\n\r\n  </li>\r\n</ul>\r\n\r\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/prefAttachment3.png\"><img src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/prefAttachment3.png\" alt=\"prefAttachment\" width=\"569\" height=\"258\" class=\"alignnone size-full wp-image-7305\" /></a>\r\n\r\n\r\nIn the above figure we show execution time of the triangle counting algorithm for the \"preferential attachment\" network from the <a href=\"http://www.cc.gatech.edu/dimacs10/downloads.shtml\" title=\"DIMACS 10\" target=\"_blank\">DIMACS 10 Graph Challenge</a>. The abscissa represents the different configurations. The ordinate represents time - as such lower is better. Each configuration is represented by a triplet x-y-z, where x is the block size, y is the the \r\nnumber of threads used for each intersection and z is the number of concurrent intersections in each block. In our full report there are additional performance figures for other networks.\r\n\r\nUsing smaller block sizes such as 32 or 64 threads requires each SM to execute several intersections (aka multiple blocks) for different vertices concurrently in order to achieve full system utilization. Smaller block-sizes incurred scheduling over-head. On the other extreme, large block configurations (such as $256$ threads) also showed slower performance due to low utilization. We found the best performance to be in the range of 92, 128, or 192 threads per block.\r\n\r\nIn our implementation, the number of threads used for a single intersection was limited to 32 threads, which is the warp size - this was done to avoid synchronization across multiple warps. The configurations that are presented use either 1,2,4,8,16, or 32 threads per intersection which in turn allows 32,16,8,4,2, or 1 concurrent intersections  (respectively). \r\n\r\nWe noticed that the best performance is typically obtained when allocating 8 threads per intersection. These intermediate size configurations allow for good memory locality, good balancing between the work partition stage and the intersection stage. The two extreme configurations (one intersection per thread and one intersection per warp) do not offer the best performance. In fact the difference between the best performing configuration and the worst performing configuration is in the range of 3X-7X. Thus, fine-tuning is important.\r\n\r\n','Triangle Counting in Graphs on the GPU (Part 3)','','inherit','open','open','','7294-revision-v1','','','2014-11-10 18:34:14','2014-11-10 18:34:14','',7294,'http://sandbox.arrayfire.com/7294-revision-v1/',0,'revision','',0),(7317,17796,'2014-11-10 18:40:06','2014-11-10 18:40:06','In this blog I will finalize the work that we completed on triangle counting in graphs on the GPU using CUDA. The two previous blogs can be found: <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-1/\" title=\"Part 1\" target=\"_blank\"> Part 1</a> and <a href=\"http://sandbox.arrayfire.com/triangle-counting-in-graphs-on-the-gpu-part-2/\" title=\"Part 2\" target=\"_blank\"> Part 2</a>. The first part introduces the significance of the problem and the second part explains the algorithms that we used in our solution. \r\n\r\nNext week we will present this work in finer detail in the <a href=\"http://cass-mt.pnnl.gov/irregularworkshop.aspx\" title=\"IA^3\" target=\"_blank\">Workshop on Irregular Applications: Architectures and Algorithms</a> which will take place as part of <a href=\"http://sc14.supercomputing.org/\" title=\"SC\'14\" target=\"_blank\">Supercomputing 2014</a>.\r\n\r\nPreviously, we discussed that the performance of the triangle counting is dependent on the algorithm and the CUDA kernel. Our implementation gives the data scientist control over several important parameters:\r\n<ul>\r\n<li>Number of threads blocks - the number of threads blocks that will be created impacts the number of vertices of each thread block is responsible for. Each thread block receives an equal number of vertices that it will be responsible for the triangle counting via the adjacency list intersection approach.A small number of thread blocks can cause workload imbalance due to the fact that many real-world networks follow a power law distribution. It is possible to allocate a single thread-block to each vertex due to the large number of available thread-blocks - this however can also increase overhead. As such it is necessary to find a good balance over-allocating and under-allocating - we used 16000 thread blocks.</li>\r\n<li>Number of concurrent intersections (in a thread block) - while it is feasible to allocate an entire thread block for a single intersection, this will typically bring about poor performance due to under utilization. Perhaps the single most important requirement for utilizing a thread-block is to ensure that the size of the thread-block is greater than the size of a warp. For adjacency list intersection this can cause an under utilization of the warp (and the thread-block) due to the sparsity found in social networks where many vertices only have a handful of adjacent vertices. As such an entire warp in not necessary for the intersection. The other extreme is to allocate is to allocate a single thread for every intersection for a specific vertex. Once again, this can lead to under-utilization as there are not enough threads to utilize the entire. Typically it is also preferable to allocate large thread-blocks that are greater in size than a single warp.  </li>\r\n<li>Number of threads per intersection - the number of threads allocated for an intersection also plays an important role in achieving a high-degree of system utilization. As mentioned earlier there are two extremes: one thread per intersection and an entire thread-block per intersection (with a minimum of a warp size block). We do not recommend allocating more than a single-warp for a given intersection as this requires additional synchronization which can cause overhead. For sparse networks where the average adjacency is not larger that a warp size it is simply not efficient. However, as networks become denser and, therefore, the work of the intersection becomes greater, it might become necessary to allocate more than a single warp for the intersection. \r\n\r\n  </li>\r\n</ul>\r\n\r\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/prefAttachment3.png\"><img src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/prefAttachment3.png\" alt=\"prefAttachment\" width=\"569\" height=\"258\" class=\"alignnone size-full wp-image-7305\" /></a>\r\n\r\n\r\nIn the above figure we show execution time of the triangle counting algorithm for the \"preferential attachment\" network from the <a href=\"http://www.cc.gatech.edu/dimacs10/downloads.shtml\" title=\"DIMACS 10\" target=\"_blank\">DIMACS 10 Graph Challenge</a>. The abscissa represents the different configurations. The ordinate represents time - as such lower is better. Each configuration is represented by a triplet x-y-z, where x is the block size, y is the the \r\nnumber of threads used for each intersection and z is the number of concurrent intersections in each block. In our full report there are additional performance figures for other networks.\r\n\r\nUsing smaller block sizes such as 32 or 64 threads requires each SM to execute several intersections (aka multiple blocks) for different vertices concurrently in order to achieve full system utilization. Smaller block-sizes incurred scheduling over-head. On the other extreme, large block configurations (such as $256$ threads) also showed slower performance due to low utilization. We found the best performance to be in the range of 92, 128, or 192 threads per block.\r\n\r\nIn our implementation, the number of threads used for a single intersection was limited to 32 threads, which is the warp size - this was done to avoid synchronization across multiple warps. The configurations that are presented use either 1,2,4,8,16, or 32 threads per intersection which in turn allows 32,16,8,4,2, or 1 concurrent intersections  (respectively). \r\n\r\nWe noticed that the best performance is typically obtained when allocating 8 threads per intersection. These intermediate size configurations allow for good memory locality, good balancing between the work partition stage and the intersection stage. The two extreme configurations (one intersection per thread and one intersection per warp) do not offer the best performance. In fact the difference between the best performing configuration and the worst performing configuration is in the range of 3X-7X. Thus, fine-tuning and the control parameters are important.\r\n\r\n','Triangle Counting in Graphs on the GPU (Part 3)','','inherit','open','open','','7294-revision-v1','','','2014-11-10 18:40:06','2014-11-10 18:40:06','',7294,'http://sandbox.arrayfire.com/7294-revision-v1/',0,'revision','',0),(7318,7,'2014-11-10 19:29:14','2014-11-10 19:29:14','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][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=\"15%\"][button  type=\"flat\" shape=\"rounded\" href=\"http://sandbox.arrayfire.com/download\" size=\"x-large\" block=\"true\"]Download ArrayFire[/button]\r\n\r\n[gap size=\"10%\"]\r\n\r\n[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"http://www.meetme.so/arrayfire\" size=\"x-large\" ]Schedule a consultation[/button]\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=\"40px\" padding_bottom=\"40px\"]\r\n\r\n[column type=\"one-third\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/car-e1412967813807.png\" class=\"mbn\"] FASTER CODE[/custom_headline][line style=\"border-top: solid #455565;\"]ArrayFire is a blazing fast software library for GPU computing. Its easy-to-use API and array-based function set make GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.[/column]\r\n\r\n[column type=\"one-third\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/mini-motorcycle-01-e1412969290876.png\" class=\"mbn\"] HARDWARE NEUTRAL[/custom_headline][line]ArrayFire supports both CUDA-capable NVIDIA GPUs and most OpenCL devices, including AMD GPUs/APUs and Intel Xeon Phi co-processors. It also supports mobile OpenCL devices from ARM, Qualcomm, and others. We want your code to run as fast as possible, regardless of the hardware.[/column]\r\n\r\n[column type=\"one-third\" last=\"true\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/mini-plane-01-e1412969527633.png\" class=\"mbn\"] OPEN SOURCE[/custom_headline][line]ArrayFire is open source—it\'s all there and it\'s all free. Be sure to check out all of the ArrayFire functions (and a lot more!) in our well-composed documentation. And don\'t forget to visit our forums to connect with the ArrayFire community and pick up acceleration tips and innovative best practices.[/column][gap size=\"3%\"][/content_band]\r\n<div>\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][gap size=5%]\r\n\r\n[column type=\"one-fourth\" class=\"center-text\"]<img class=\"aligncenter wp-image-5395 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/04/1800contactlogo.png\" alt=\"1800contactlogo\" width=\"236\" height=\"40\" />[/column] [column type=\"one-fourth\" class=\"center-text\"]\r\n\r\n<img class=\"aligncenter size-full wp-image-6942\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/Exxon-logo_0.gif\" alt=\"Exxon-logo_0\" width=\"525\" height=\"284\" />[/column] [column type=\"one-fourth\" class=\"center-text\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/Logo_2013_Google.png\"]\r\n\r\n&nbsp;\r\n\r\n[/column][column type=\"one-fourth\" class=\"center-text\" last=\"true\"]\r\n\r\n<img class=\"aligncenter size-full wp-image-6837\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/LM-logo-700.jpg\" alt=\"LM-logo-700\" width=\"704\" height=\"200\" />[/column][column type=\"one-fourth\" class=\"center-text\"]<img class=\"aligncenter size-large wp-image-5390\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/04/Koch-Industries-1024x217.jpg\" alt=\"Koch-Industries\" width=\"742\" height=\"157\" />\r\n\r\n[/column][column type=\"one-fourth\" class=\"center-text\"]<img class=\"aligncenter size-full wp-image-6838\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/Cisco_logo_2006.png\" alt=\"Cisco_logo_2006\" width=\"307\" height=\"180\" />\r\n\r\n[/column][column type=\"one-fourth\" class=\"center-text\"]<img class=\"aligncenter size-full wp-image-5396\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/04/LFG-B-HORZ_202_K-e1396448935778.jpg\" alt=\"LFG-B-HORZ_202_K\" width=\"239\" height=\"75\" />[/column][column type=\"one-fourth\" class=\"center-text\" last=\"true\"]<img class=\"aligncenter size-full wp-image-6941\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/US-CDC-Logo.png\" alt=\"US-CDC-Logo\" width=\"450\" height=\"272\" />[/column]\r\n<h3 style=\"text-align: center;\">Join the ArrayFire community</h3>\r\n<p style=\"text-align: center;\">[button  type=\"flat\" shape=\"rounded\" href=\"http://sandbox.arrayfire.com/download\" size=\"normal\" ]                    Get started                    [/button]</p>\r\n[/content_band]\r\n\r\n</div>','Home OPSC','','inherit','open','open','','6613-revision-v1','','','2014-11-10 19:29:14','2014-11-10 19:29:14','',6613,'http://sandbox.arrayfire.com/6613-revision-v1/',0,'revision','',0),(7319,7,'2014-11-10 19:56:16','2014-11-10 19:56:16','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][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=\"15%\"][button  type=\"flat\" shape=\"rounded\" href=\"http://sandbox.arrayfire.com/download\" size=\"x-large\" block=\"true\"]Download ArrayFire[/button]\r\n\r\n[gap size=\"10%\"]\r\n\r\n[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"http://www.meetme.so/arrayfire\" size=\"x-large\" ]Schedule a consultation[/button]\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=\"40px\" padding_bottom=\"40px\"]\r\n\r\n[column type=\"one-third\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/car-e1412967813807.png\" class=\"mbn\"] FASTER CODE[/custom_headline][line style=\"border-top: solid #999999;\"]ArrayFire is a blazing fast software library for GPU computing. Its easy-to-use API and array-based function set make GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" size=\"regular\"]See an example[/button][/column]</p>\r\n[column type=\"one-third\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/mini-motorcycle-01-e1412969290876.png\" class=\"mbn\"] HARDWARE NEUTRAL[/custom_headline][line style=\"border-top: solid #999999;\"]ArrayFire supports both CUDA-capable NVIDIA GPUs and most OpenCL devices, including AMD GPUs/APUs and Intel Xeon Phi co-processors. It also supports mobile OpenCL devices from ARM, Qualcomm, and others. We want your code to run as fast as possible, regardless of the hardware.\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" size=\"regular\"]Download ArrayFire[/button][/column]</p>\r\n[column type=\"one-third\" last=\"true\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/mini-plane-01-e1412969527633.png\" class=\"mbn\"] OPEN SOURCE[/custom_headline][line style=\"border-top: solid #999999;\"]ArrayFire is open source—it\'s all there and it\'s all free. Be sure to check out all of the ArrayFire functions (and a lot more!) in our excellent <a href=\"http://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don\'t forget to visit our <a href=\"http://sandbox.arrayfire.com/forums/\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and innovative best practices.\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" size=\"regular\"]View the documentation[/button][/column][gap size=\"3%\"][/content_band]</p>\r\n\r\n<div>\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][gap size=5%]\r\n\r\n[column type=\"one-fourth\" class=\"center-text\"]<img class=\"aligncenter wp-image-5395 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/04/1800contactlogo.png\" alt=\"1800contactlogo\" width=\"236\" height=\"40\" />[/column] [column type=\"one-fourth\" class=\"center-text\"]\r\n\r\n<img class=\"aligncenter size-full wp-image-6942\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/Exxon-logo_0.gif\" alt=\"Exxon-logo_0\" width=\"525\" height=\"284\" />[/column] [column type=\"one-fourth\" class=\"center-text\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/Logo_2013_Google.png\"]\r\n\r\n&nbsp;\r\n\r\n[/column][column type=\"one-fourth\" class=\"center-text\" last=\"true\"]\r\n\r\n<img class=\"aligncenter size-full wp-image-6837\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/LM-logo-700.jpg\" alt=\"LM-logo-700\" width=\"704\" height=\"200\" />[/column][column type=\"one-fourth\" class=\"center-text\"]<img class=\"aligncenter size-large wp-image-5390\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/04/Koch-Industries-1024x217.jpg\" alt=\"Koch-Industries\" width=\"742\" height=\"157\" />\r\n\r\n[/column][column type=\"one-fourth\" class=\"center-text\"]<img class=\"aligncenter size-full wp-image-6838\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/Cisco_logo_2006.png\" alt=\"Cisco_logo_2006\" width=\"307\" height=\"180\" />\r\n\r\n[/column][column type=\"one-fourth\" class=\"center-text\"]<img class=\"aligncenter size-full wp-image-5396\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/04/LFG-B-HORZ_202_K-e1396448935778.jpg\" alt=\"LFG-B-HORZ_202_K\" width=\"239\" height=\"75\" />[/column][column type=\"one-fourth\" class=\"center-text\" last=\"true\"]<img class=\"aligncenter size-full wp-image-6941\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/US-CDC-Logo.png\" alt=\"US-CDC-Logo\" width=\"450\" height=\"272\" />[/column]\r\n<h3 style=\"text-align: center;\">Join the ArrayFire community</h3>\r\n<p style=\"text-align: center;\">[button  type=\"flat\" shape=\"rounded\" href=\"http://sandbox.arrayfire.com/download\" size=\"normal\" ]                    Get started                    [/button]</p>\r\n[/content_band]\r\n\r\n</div>','Home OPSC','','inherit','open','open','','6613-revision-v1','','','2014-11-10 19:56:16','2014-11-10 19:56:16','',6613,'http://sandbox.arrayfire.com/6613-revision-v1/',0,'revision','',0),(7320,7,'2014-11-10 20:19:53','2014-11-10 20:19:53','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][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=\"15%\"][button  type=\"flat\" shape=\"rounded\" href=\"http://sandbox.arrayfire.com/download\" size=\"x-large\" block=\"true\"]Download ArrayFire[/button]\r\n\r\n[gap size=\"10%\"]\r\n\r\n[button  type=\"flat\" block=\"true\" shape=\"rounded\" href=\"http://www.meetme.so/arrayfire\" size=\"x-large\" ]Schedule a consultation[/button]\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=\"40px\" padding_bottom=\"40px\"]\r\n\r\n[column type=\"one-third\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/car-e1412967813807.png\" class=\"mbn\"] Faster Code[/custom_headline][line style=\"border-top: solid #999999;\"]ArrayFire is a blazing fast software library for GPU computing. Its easy-to-use API and array-based function set make GPU programming simple. A few lines of code in ArrayFire can replace dozens of lines of raw GPU code, saving you valuable time and lowering development costs.\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"http://www.sandbox.arrayfire.com/docs/examples.htm\"]See some examples[/button][/column]</p>\r\n[column type=\"one-third\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/mini-motorcycle-01-e1412969290876.png\" class=\"mbn\"] Hardware Neutral[/custom_headline][line style=\"border-top: solid #999999;\"]ArrayFire supports both CUDA-capable NVIDIA GPUs and most OpenCL devices, including AMD GPUs/APUs and Intel Xeon Phi co-processors. It also supports mobile OpenCL devices from ARM, Qualcomm, and others. We want your code to run as fast as possible, regardless of the hardware.\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"http://www.sandbox.arrayfire.com/download\"]Download ArrayFire[/button][/column]</p>\r\n[column type=\"one-third\" last=\"true\" ][custom_headline type=\"left\" level=\"h3\" class=\"center-text\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/mini-plane-01-e1412969527633.png\" class=\"mbn\"] Open Source[/custom_headline][line style=\"border-top: solid #999999;\"]ArrayFire is open source—it\'s all there and it\'s all free. Be sure to check out all of the ArrayFire functions (and a lot more!) in our excellent <a href=\"http://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don\'t forget to visit our <a href=\"http://sandbox.arrayfire.com/forums/\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and innovative best practices.\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"http://www.sandbox.arrayfire.com/docs/index.htm\"]View the documentation[/button][/column][gap size=\"3%\"][/content_band]</p>\r\n\r\n<div>\r\n\r\n[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][gap size=5%]\r\n\r\n[column type=\"one-fourth\" class=\"center-text\"]<img class=\"aligncenter wp-image-5395 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/04/1800contactlogo.png\" alt=\"1800contactlogo\" width=\"236\" height=\"40\" />[/column] [column type=\"one-fourth\" class=\"center-text\"]\r\n\r\n<img class=\"aligncenter size-full wp-image-6942\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/Exxon-logo_0.gif\" alt=\"Exxon-logo_0\" width=\"525\" height=\"284\" />[/column] [column type=\"one-fourth\" class=\"center-text\"][image src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/Logo_2013_Google.png\"]\r\n\r\n&nbsp;\r\n\r\n[/column][column type=\"one-fourth\" class=\"center-text\" last=\"true\"]\r\n\r\n<img class=\"aligncenter size-full wp-image-6837\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/LM-logo-700.jpg\" alt=\"LM-logo-700\" width=\"704\" height=\"200\" />[/column][column type=\"one-fourth\" class=\"center-text\"]<img class=\"aligncenter size-large wp-image-5390\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/04/Koch-Industries-1024x217.jpg\" alt=\"Koch-Industries\" width=\"742\" height=\"157\" />\r\n\r\n[/column][column type=\"one-fourth\" class=\"center-text\"]<img class=\"aligncenter size-full wp-image-6838\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/Cisco_logo_2006.png\" alt=\"Cisco_logo_2006\" width=\"307\" height=\"180\" />\r\n\r\n[/column][column type=\"one-fourth\" class=\"center-text\"]<img class=\"aligncenter size-full wp-image-5396\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/04/LFG-B-HORZ_202_K-e1396448935778.jpg\" alt=\"LFG-B-HORZ_202_K\" width=\"239\" height=\"75\" />[/column][column type=\"one-fourth\" class=\"center-text\" last=\"true\"]<img class=\"aligncenter size-full wp-image-6941\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/09/US-CDC-Logo.png\" alt=\"US-CDC-Logo\" width=\"450\" height=\"272\" />[/column]\r\n<h3 style=\"text-align: center;\">Join the ArrayFire community</h3>\r\n<p style=\"text-align: center;\">[button  type=\"flat\" shape=\"rounded\" href=\"http://sandbox.arrayfire.com/download\" size=\"normal\" ]                    Get started                    [/button]</p>\r\n[/content_band]\r\n\r\n</div>','Home OPSC','','inherit','open','open','','6613-revision-v1','','','2014-11-10 20:19:53','2014-11-10 20:19:53','',6613,'http://sandbox.arrayfire.com/6613-revision-v1/',0,'revision','',0),(7321,7,'2014-11-10 22:10:06','2014-11-10 22:10:06','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone could use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire team is here for you.\r\n\r\nOur ArrayFire developers are the best in the business. With a support package, you can tap into their extensive knowledge base directly—no more waiting for forums, and no sketchy responses from Joe Schmo. Don\'t lose precious time and money fumbling for answers. Get some support.\r\n\r\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"http://meetme.so/arrayfire\"]Schedule a support consultation[/button][/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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\"][gap size=\"4%\"]\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"500\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Go Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Featured\" title=\"Blaze\" currency=\"$\" price=\"750\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Go Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"900\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Go Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"200\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Go Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-10 22:10:06','2014-11-10 22:10:06','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7322,17795,'2014-11-11 00:51:44','2014-11-11 00:51:44','You may already know that the Intel MPSS (Manycore Platform Software Stack) is only officially supported for RedHat and SUSE Linux distros. Using an enterprise distro might be very interesting if your company is running a large server environment or short on specialized people and you rely on the distro official support for more complicated tasks.\r\n\r\nNot all companies use enterprise Linux distributions and Ubuntu has a large share of the Linux distro market (if not the largest). Since I needed to setup a machine running Ubuntu 14.04 and MPSS 3.4 and could not find any documentation running the newest versions of Ubuntu/Linux Kernel/MPSS, I will try to document here how to get the Intel Xeon Phi running on Kernel 3.13.0 (which is not officially supported by the MPSS to the date of this post). The kernel module was only tested on Ubuntu 14.04, but it should compile and run without any problems in any system running Kernel 3.13.0 (not tested with newer versions).\r\n\r\n<h3>Building and Installing Kernel Modules</h3>\r\n\r\nTo start, you will need to download the MPSS 3.4 kernel module sources, it can be download from <a href=\"https://software.intel.com/en-us/articles/intel-manycore-platform-software-stack-mpss\">Intel\'s website</a> but only as part of the complete set of sources for MPSS platform. Since we do not need all sources and to make it easier, you can just clone the MPSS 3.4 module sources from my <a href=\"https://github.com/pentschev/mpss-modules\">GitHub repository</a>, it is ready to be built for Linux Kernel 3.13.0.\r\n\r\nAfter downloading the module source, one can build it by simply running <code>make</code>, but do not forget to first install build-essential (includes tools such as GCC and Make, required to compile the module) and also the kernel headers that is contained within package kernel-headers-generic on Ubuntu, these packages can be installed with the command <code>sudo apt-get install build-essential linux-headers-generic</code>. To install (as root), just execute <code>make install</code>. The correct kernel module for MPSS is now installed on your system, but it might be necessary to update the list of modules available manually by running <code>sudo depmod</code>.\r\n\r\nBefore loading the now installed module, let\'s ensure that the <code>mic_host</code> module is not loaded by trying to unload it with the commando <code>sudo rmmod mic_host</code>. To avoid it from loading during boot, make sure to blacklist it by creating the file <code>/etc/modprobe.d/blacklist-mic-host.conf</code> and adding <code>blacklist mic_host</code> in the first line. Now the MIC module can be safely loaded running <code>modprobe mic</code>, or you can simply reboot the system that it will be automatically loaded by the kernel.\r\n\r\n<h3>Converting and Installing RPM Packages</h3>\r\n\r\nWith the kernel module already installed and loaded, it is time to install the remaining MPSS tools. As with the MPSS kernel module, there is no native support for Ubuntu which uses DEB packaging system, but only for RedHat and SUSE (both use RPM packaging system). The simplest way to install MPSS tools is probably to convert the RPM packages to DEB packages.\r\n\r\nLet\'s first download the Linux MPSS 3.4 binaries from <a href=\"https://software.intel.com/en-us/articles/intel-manycore-platform-software-stack-mpss\">Intel\'s website</a> and uncompressing the files by executing the following command:\r\n\r\n<pre>\r\ntar xf mpss-3.4-linux.tar\r\n</pre>\r\n\r\nAfter uncompressing the file, there will be a new directory called <code>mpss-3.4</code>, with about 50 RPM packages. To convert them to DEB packages, we will need another tool called alien, contained in the Ubuntu package with same name: <code>sudo apt-get install alien</code>.\r\n\r\nInside the <code>mpss-3.4</code> directory, you need to start the conversion of packages, executing the command <code>alien --scripts *.rpm</code>. This process may take a few minutes to complete.\r\n\r\nAfter the conversion is completed, we simply install all DEB packages but this time not with <code>apt-get</code>, since it only installs packages that are available in the repositories defined for Ubuntu. To install the DEB packages we use the command <code>dpkg -i *.deb</code>, which may take one or two more minutes.\r\n\r\nWithin the MPSS tools, some libraries are also installed in the system. Because Ubuntu is switching to a different method of organizing libraries within the filesystem, it will not find MPSS libraries directly, as a workaround to this behavior we will create a new file <code>/etc/ld.so.conf.d/zz_x86_64-compat.conf</code> and write <code>/usr/lib64</code> in there so that the system will recognize the directory <code>/usr/lib64</code> as a standard search directory for libraries. When the file is created, we will update the library cache by running <code>ldconfig</code>.\r\n\r\n<h3>Configuring the Coprocessor</h3>\r\n\r\nThe coprocessor configuration described in this section is almost the same as the one in the MPSS Users Guide from <a href=\"https://software.intel.com/en-us/articles/intel-manycore-platform-software-stack-mpss\">Intel\'s website</a>. There are a few differences, such as the <code>nfs</code> service which is called <code>nfs-kernel-server</code> in Ubuntu and the change from <code>/srv</code> to <code>/var</code> that is not entirely necessary but I used it to comply with long-term server files storage location in most modern distros.\r\n\r\nFirst of all, not that everything in this section will be run as root user or using <code>sudo</code>, it is up to you which one you prefer, but you need root permissions for all the following steps. Since the communication is done via root user, first an SSH key is created for root user with <code>ssh-keygen</code> command, and you can leave it without a password if desired.\r\n\r\nThe MIC should have a configuration tree, this configuration can be initialized to defaults with the command <code>micctrl --initdefaults</code>.\r\n\r\nEven though Intel does not officially support Ubuntu, for some reason they have a script to initialize the MPSS service for Ubuntu, and this file is originally installed in <code>/etc/mpss/mpss.ubuntu</code>, but we will copy it to <code>/etc/init.d/mpss</code>, together with the other service initialization scripts in Ubuntu. It is also necessary to enable the service start during boot and stop during reboot/shutdown, which can be done by executing <code>update-rc.d mpss defaults 99 10</code>.\r\n\r\nInstead of rebooting the system many times during the configuration process, we will simply start/stop services whenever necessary. At this point it is necessary to start the MPSS service with command <code>service mpss start</code>.\r\n\r\nWe will now start the NFS configuration, which is the easiest way to share files between the host system and the coprocessor. On Ubuntu, the NFS service can be installed by running <code>apt-get install nfs-kernel-server</code>.\r\n\r\nNext, the directory <code>/micNfs</code> must be created by running <code>mkdir /micNfs</code>. It should be then configured for NFS export by adding the line <code>/micNfs 172.31.1.1(rw,no_root_squash)</code> to the file <code>/etc/exports</code>. Later the coprocessor machine should be allowed to mount this filesystem, and this can be done by adding the line <code>ALL:172.31.1.1</code> to file <code>/etc/hosts.allow</code>. Note that we are assuming that the configuration is being done for the first Intel Xeon Phi on the system (IP: 172.31.1.1), if you have more than one Phi installed, you may have to change this IP address.\r\n\r\nNow the filesystem can be exported by running <code>exportfs -a</code>. After that, the NFS filesystem should be added to MPSS configuration, which is simply done with the <code>micctrl</code> tool, more specifically <code>micctrl --addnfs=172.31.1.254:/micNfs --dir=/micNfs</code>.\r\n\r\nNow the MPSS service must be stopped to finish the remaining configuration: <code>service mpss stop</code>. A user for MIC called <code>micuser</code> with user ID <code>400</code> is then created along with a group of same name by running <code>useradd -U -m -u 400 micuser</code>. The group ID of <code>micuser</code> is then changed to <code>400</code> as well with <code>groupmod -g 400 micuser</code>.\r\n\r\nA directory to hold files for <code>micuser</code> must be created (<code>mkdir -p /var/michome/micuser</code>) and given the correct permissions (<code>chown micuser /var/michome/micuser</code>).\r\n\r\nThe parent directory for <code>micuser</code> NFS home should also be exported by adding the line <code>/var/michome 172.31.0.0/16(rw)</code> to the file <code>/etc/exports</code>. The directory shall now be exported (<code>exportfs -a</code>) and the NFS service restarted <code>service nfs-kernel-server restart</code>.\r\n\r\nThe MPSS should be configure to mount the <code>/home</code> directory on the Phi\'s OS from host\'s <code>/var/michome</code> by running <code>micctrl --addnfs=/var/michome --dir=/home</code>. Finally, the MPSS service is restarted (<code>service mpss restart</code>) and NFS filesystems mounted (<code>mount -a</code>).\r\n\r\n<h3>OpenCL</h3>\r\n\r\nTo run OpenCL applications on the Phi, there are two more toolsets required. The first set contains the OpenCL Drivers and Runtime and may be obtained <a href=\"https://software.intel.com/en-us/articles/opencl-drivers\">here</a>, this is necessary to actually execute To compile OpenCL applications for Intel, you will require also the <a href=\"https://software.intel.com/en-us/intel-parallel-studio-xe\">Intel Parallel Studio XE</a>. It is possible to compile OpenCL applications simply with G++, but OpenCL headers are only available as part of the Intel Parallel Studio XE. If you have OpenCL header files from another vendor they <em>might</em> work as well, but if you want to profile your code, it is strongly advised to get the Intel Parallel Studio XE (note that it requires the purchase of a license, with a 30-day trial also available).\r\n\r\nBefore install the OpenCL Drivers and Runtime on Ubuntu, you will need the <code>lsb-core</code> package, obtainable via the package manager (<code>apt-get install lsb-core</code>).\r\n\r\nSince the installation process for both toolsets is straightforward and no specific steps are required on Ubuntu, a walkthrough the installation will not be covered here, instead refer to Intel\'s official documentation.\r\n\r\nThe only thing you will have to change or add after the installation of both toolset is the ICD (Installable Client Driver) file for OpenCL. Simply create a new file <code>/etc/OpenCL/vendors/intel64.icd</code> or modify the existing one to contain only one line <code>/opt/intel/opencl-1.2-4.5.0.8/lib64/libintelocl.so</code> (note that you may have to change <code>opencl-1.2-4.5.0.8</code> in case you obtained a different version of OpenCL Drivers and Runtime).','Getting Started with the Intel Xeon Phi on Ubuntu 14.04/Linux Kernel 3.13.0 - Part 1','','inherit','open','open','','6944-revision-v1','','','2014-11-11 00:51:44','2014-11-11 00:51:44','',6944,'http://sandbox.arrayfire.com/6944-revision-v1/',0,'revision','',0),(7325,7,'2014-11-11 14:38:01','2014-11-11 14:38:01','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone could use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire team is here for you.\r\n\r\nOur ArrayFire developers are the best in the business. With a support package, you can tap into their extensive knowledge base directly—no more waiting for forums, and no sketchy responses from Joe Schmo. Don\'t lose precious time and money fumbling for answers. Get some support.\r\n\r\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"http://meetme.so/arrayfire\"]Schedule a support consultation[/button][/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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\"][gap size=\"4%\"]\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"500\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Go Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Most Popular\" title=\"Blaze\" currency=\"$\" price=\"750\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Go Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"900\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Go Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"200\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Go Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-11 14:38:01','2014-11-11 14:38:01','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7326,7,'2014-11-11 15:04:00','2014-11-11 15:04:00','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone could use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire team is here for you.\r\n\r\nOur ArrayFire developers are the best in the business. With a support package, you can tap into their extensive knowledge base directly—no more waiting for forums, and no sketchy responses from Joe Schmo. Don\'t lose precious time and money fumbling for answers. Get some support.\r\n\r\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"http://meetme.so/arrayfire\"]Schedule a support consultation[/button][/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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\"][gap size=\"4%\"]\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"500\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Go Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Most Popular\" title=\"Blaze\" currency=\"$\" price=\"750\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Go Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"900\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Go Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"200\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Go Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n\r\n[column type=\"one-half\"][custom_headline type=\"left\" level=\"h2\" ]Questions?[/custom_headline]\r\n\r\nWhat do you mean by \"dedicated engineer\"?\r\n\r\nBy \"dedicated engineer\" we  mean that you will be matched with a specific engineer when you sign up. That engineer will be your point man for the length of your purchase period. No carousel of strangers, unfamiliar with your work—just answers from your trusty ArrayFire engineer.\r\n\r\nIf I buy a support package, am I limited to those hours?\r\n\r\nNo. The indicated hours of support are included in your support package, but should you require more, you may purchase additional support at our hourly rate.\r\n\r\nWhat is advantage to having a support package rather than the hourly?\r\n\r\nHour-by-hour, our support packages are more economical. Additionally, support package owners have priority status. Issues submitted by those having support packages will be placed at the top of the queue.\r\n\r\nI\'m new to GPU computing, and I\'m not sure what I need. What do you suggest?\r\n\r\n&nbsp;\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-11 15:04:00','2014-11-11 15:04:00','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7327,7,'2014-11-11 15:11:06','2014-11-11 15:11:06','[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\" ]Choose your own support[/custom_headline]\r\n\r\nEveryone could use a hand now and then. Choose from among three ArrayFire support packages, or simply go hour-by-hour . Whatever your level of need, the ArrayFire team is here for you.\r\n\r\nOur ArrayFire developers are the best in the business. With a support package, you can tap into their extensive knowledge base directly—no more waiting for forums, and no sketchy responses from Joe Schmo. Don\'t lose precious time and money fumbling for answers. Get some support.\r\n\r\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"http://meetme.so/arrayfire\"]Schedule a support consultation[/button][/column][column type=\"one-half\" last=\"true\"][gap size=\"10%\"]\r\n\r\n<img class=\"aligncenter wp-image-4822\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/dj-Flame-1024x769.png\" alt=\"dj Flame\" width=\"466\" height=\"350\" />[/column][/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\"][gap size=\"4%\"]\r\n\r\n[column type=\"three-fourths\"][pricing_table columns=\"3\"] [pricing_table_column title=\"Smolder\" currency=\"$\" price=\"500\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]2 hours of support[/icon_list_item][icon_list_item type=\"star\"]48-hour response time[/icon_list_item][icon_list_item type=\"times-circle\" ]Phone support[/icon_list_item][icon_list_item type=\"times-circle\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\"  title=\"Example\"]Go Smolder[/button] [/pricing_table_column] [pricing_table_column  featured=\"true\" featured_sub=\"Most Popular\" title=\"Blaze\" currency=\"$\" price=\"750\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]5 hours of support[/icon_list_item][icon_list_item type=\"star\"]24-hour response time[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\" ]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\"  size=\"x-large\" href=\"#example\" title=\"Example\"]Go Blaze[/button][/pricing_table_column] [pricing_table_column title=\"Inferno\" currency=\"$\" price=\"900\" interval=\"Per Month\"][icon_list][icon_list_item type=\"star\"]10 hours of support[/icon_list_item][icon_list_item type=\"star\"]2-hour response time[/icon_list_item][icon_list_item type=\"star\" ]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Go Inferno[/button][/pricing_table_column][/pricing_table][/column][column type=\"one-fourth\" last=\"true\"][pricing_table columns=\"1\"][pricing_table_column  title=\"Hourly\" currency=\"$\" price=\"200\" interval=\"Per Hour\"][icon_list][icon_list_item]—[/icon_list_item][icon_list_item]—[/icon_list_item][icon_list_item type=\"star\"]Phone support[/icon_list_item][icon_list_item type=\"star\"]Dedicated engineer[/icon_list_item][/icon_list][button shape=\"rounded\" href=\"#example\" title=\"Example\"]Go Hourly[/button][/pricing_table_column] [/pricing_table][/column]\r\n\r\n[column type=\"one-half\"][custom_headline type=\"left\" level=\"h2\" ]Questions?[/custom_headline]\r\n\r\nWhat is advantage to having a support package rather than the hourly support?\r\n\r\nHour-to-hour, our support packages are more economical. Additionally, support package owners have priority status. Issues submitted by those having support packages will be placed at the top of the support queue.\r\n\r\nWhat do you mean by \"dedicated engineer\"?\r\n\r\nBy \"dedicated engineer\" we  mean that you will be matched with a specific engineer when you sign up. That engineer will be your point man for the length of your purchase period. No carousel of strangers, unfamiliar with your work—just answers from your trusty ArrayFire engineer.\r\n\r\nIf I buy a support package, am I limited to those hours?\r\n\r\nNo. The indicated hours of support are included in your support package, but should you require more, you may purchase additional support at our hourly rate.\r\n\r\nI\'m new to GPU computing, and I\'m not sure what I need. What do you suggest?\r\n\r\nAwesome. Welcome to the world of parallel processing! We recommend you look into our Starter Package. This is a great option for those exploring GPU computing as well as those looking for a general audit of their code.\r\n<p class=\"x-code\">[/content_band]</p>','Support, OPSC','','inherit','open','open','','6648-revision-v1','','','2014-11-11 15:11:06','2014-11-11 15:11:06','',6648,'http://sandbox.arrayfire.com/6648-revision-v1/',0,'revision','',0),(7328,7,'2014-11-11 19:12:55','2014-11-11 19:12:55','','2011_0409_NVIDIA_CUDA','','inherit','open','open','','2011_0409_nvidia_cuda','','','2014-11-11 19:12:55','2014-11-11 19:12:55','',7054,'http://sandbox.arrayfire.com/wp-content/uploads/2014/11/2011_0409_NVIDIA_CUDA.png',0,'attachment','image/png',0),(7329,7,'2014-11-11 19:13:00','2014-11-11 19:13:00','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\" ][custom_headline type=\"left\" level=\"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=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.\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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"3%\"]\r\n<img class=\"wp-image-7069 alignleft\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/logo-nvidia2-300x222.png\" alt=\"logo-nvidia\" width=\"250\" height=\"186\" /><img class=\"alignleft wp-image-7065\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/opencl.png\" alt=\"opencl\" width=\"233\" height=\"186\" />\r\n<p style=\"text-align: center;\">[counter num_start=\"0\" num_end=\"240\" num_speed=\"1500\" num_color=\"#272727\" text_below=\"Functions\"]</p>\r\n[/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 and most OpenCL devices, including 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=\"http://www.sandbox.arrayfire.com/docs/modules.htm\">ArrayFire\'s functions</a> has been hand-tuned by our CUDA and OpenCL experts.\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=\"http://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don’t forget to visit our <a href=\"http://sandbox.arrayfire.com/forums\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and best practices.\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"][gap size=\"3%\"]\r\n\r\n<img class=\"aligncenter wp-image-4801 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou-e1409844224608.png\" alt=\"comingatyou\" width=\"433\" height=\"302\" />\r\n\r\n&nbsp;\r\n\r\n[/column][/content_band]','Why ArrayFire?','','inherit','open','open','','7054-revision-v1','','','2014-11-11 19:13:00','2014-11-11 19:13:00','',7054,'http://sandbox.arrayfire.com/7054-revision-v1/',0,'revision','',0),(7330,7,'2014-11-11 19:14:04','2014-11-11 19:14:04','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\" ][custom_headline type=\"left\" level=\"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=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.\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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"3%\"]\r\n<img class=\"size-full wp-image-7328 alignleft\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/2011_0409_NVIDIA_CUDA.png\" alt=\"2011_0409_NVIDIA_CUDA\" width=\"229\" height=\"131\" /><img class=\"alignleft wp-image-7065\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/opencl.png\" alt=\"opencl\" width=\"233\" height=\"186\" />\r\n<p style=\"text-align: center;\">[counter num_start=\"0\" num_end=\"240\" num_speed=\"1500\" num_color=\"#272727\" text_below=\"Functions\"]</p>\r\n[/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 and most OpenCL devices, including 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=\"http://www.sandbox.arrayfire.com/docs/modules.htm\">ArrayFire\'s functions</a> has been hand-tuned by our CUDA and OpenCL experts.\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=\"http://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don’t forget to visit our <a href=\"http://sandbox.arrayfire.com/forums\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and best practices.\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"][gap size=\"3%\"]\r\n\r\n<img class=\"aligncenter wp-image-4801 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou-e1409844224608.png\" alt=\"comingatyou\" width=\"433\" height=\"302\" />\r\n\r\n&nbsp;\r\n\r\n[/column][/content_band]','Why ArrayFire?','','inherit','open','open','','7054-revision-v1','','','2014-11-11 19:14:04','2014-11-11 19:14:04','',7054,'http://sandbox.arrayfire.com/7054-revision-v1/',0,'revision','',0),(7331,7,'2014-11-11 19:15:15','2014-11-11 19:15:15','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\" ][custom_headline type=\"left\" level=\"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=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.\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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"3%\"]\r\n<img class=\"alignleft size-full wp-image-7328\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/2011_0409_NVIDIA_CUDA.png\" alt=\"2011_0409_NVIDIA_CUDA\" width=\"229\" height=\"131\" />\r\n<img class=\"alignleft wp-image-7065\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/opencl.png\" alt=\"opencl\" width=\"233\" height=\"186\" />\r\n<p style=\"text-align: center;\">[counter num_start=\"0\" num_end=\"240\" num_speed=\"1500\" num_color=\"#272727\" text_below=\"Functions\"]</p>\r\n[/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 and most OpenCL devices, including 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=\"http://www.sandbox.arrayfire.com/docs/modules.htm\">ArrayFire\'s functions</a> has been hand-tuned by our CUDA and OpenCL experts.\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=\"http://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don’t forget to visit our <a href=\"http://sandbox.arrayfire.com/forums\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and best practices.\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"][gap size=\"3%\"]\r\n\r\n<img class=\"aligncenter wp-image-4801 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou-e1409844224608.png\" alt=\"comingatyou\" width=\"433\" height=\"302\" />\r\n\r\n&nbsp;\r\n\r\n[/column][/content_band]','Why ArrayFire?','','inherit','open','open','','7054-revision-v1','','','2014-11-11 19:15:15','2014-11-11 19:15:15','',7054,'http://sandbox.arrayfire.com/7054-revision-v1/',0,'revision','',0),(7332,7,'2014-11-11 19:15:28','2014-11-11 19:15:28','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\" ][custom_headline type=\"left\" level=\"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=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.\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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"3%\"]\r\n<img class=\"alignleft size-full wp-image-7328\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/2011_0409_NVIDIA_CUDA.png\" alt=\"2011_0409_NVIDIA_CUDA\" width=\"229\" height=\"131\" />\r\n<img class=\"alignleft wp-image-7065\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/opencl.png\" alt=\"opencl\" width=\"233\" height=\"186\" />\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\">[counter num_start=\"0\" num_end=\"240\" num_speed=\"1500\" num_color=\"#272727\" text_below=\"Functions\"]</p>\r\n[/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 and most OpenCL devices, including 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=\"http://www.sandbox.arrayfire.com/docs/modules.htm\">ArrayFire\'s functions</a> has been hand-tuned by our CUDA and OpenCL experts.\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=\"http://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don’t forget to visit our <a href=\"http://sandbox.arrayfire.com/forums\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and best practices.\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"][gap size=\"3%\"]\r\n\r\n<img class=\"aligncenter wp-image-4801 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou-e1409844224608.png\" alt=\"comingatyou\" width=\"433\" height=\"302\" />\r\n\r\n&nbsp;\r\n\r\n[/column][/content_band]','Why ArrayFire?','','inherit','open','open','','7054-revision-v1','','','2014-11-11 19:15:28','2014-11-11 19:15:28','',7054,'http://sandbox.arrayfire.com/7054-revision-v1/',0,'revision','',0),(7333,7,'2014-11-11 19:15:45','2014-11-11 19:15:45','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\" ][custom_headline type=\"left\" level=\"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=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.\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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"3%\"]\r\n<img class=\"alignleft size-full wp-image-7328\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/2011_0409_NVIDIA_CUDA.png\" alt=\"2011_0409_NVIDIA_CUDA\" width=\"229\" height=\"131\" />\r\n<img class=\"alignleft wp-image-7065\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/opencl.png\" alt=\"opencl\" width=\"233\" height=\"186\" />\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\">[counter num_start=\"0\" num_end=\"240\" num_speed=\"1500\" num_color=\"#272727\" text_below=\"Functions\"]</p>\r\n[/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 and most OpenCL devices, including 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=\"http://www.sandbox.arrayfire.com/docs/modules.htm\">ArrayFire\'s functions</a> has been hand-tuned by our CUDA and OpenCL experts.\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=\"http://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don’t forget to visit our <a href=\"http://sandbox.arrayfire.com/forums\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and best practices.\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"][gap size=\"3%\"]\r\n\r\n<img class=\"aligncenter wp-image-4801 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou-e1409844224608.png\" alt=\"comingatyou\" width=\"433\" height=\"302\" />\r\n\r\n&nbsp;\r\n\r\n[/column][/content_band]','Why ArrayFire?','','inherit','open','open','','7054-revision-v1','','','2014-11-11 19:15:45','2014-11-11 19:15:45','',7054,'http://sandbox.arrayfire.com/7054-revision-v1/',0,'revision','',0),(7334,7,'2014-11-11 19:16:03','2014-11-11 19:16:03','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\" ][custom_headline type=\"left\" level=\"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=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.\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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"3%\"]\r\n<img class=\"alignleft size-full wp-image-7328\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/2011_0409_NVIDIA_CUDA.png\" alt=\"2011_0409_NVIDIA_CUDA\" width=\"229\" height=\"131\" /><img class=\"alignleft wp-image-7065\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/opencl.png\" alt=\"opencl\" width=\"233\" height=\"186\" />\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\">[counter num_start=\"0\" num_end=\"240\" num_speed=\"1500\" num_color=\"#272727\" text_below=\"Functions\"]</p>\r\n[/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 and most OpenCL devices, including 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=\"http://www.sandbox.arrayfire.com/docs/modules.htm\">ArrayFire\'s functions</a> has been hand-tuned by our CUDA and OpenCL experts.\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=\"http://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don’t forget to visit our <a href=\"http://sandbox.arrayfire.com/forums\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and best practices.\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"][gap size=\"3%\"]\r\n\r\n<img class=\"aligncenter wp-image-4801 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou-e1409844224608.png\" alt=\"comingatyou\" width=\"433\" height=\"302\" />\r\n\r\n&nbsp;\r\n\r\n[/column][/content_band]','Why ArrayFire?','','inherit','open','open','','7054-revision-v1','','','2014-11-11 19:16:03','2014-11-11 19:16:03','',7054,'http://sandbox.arrayfire.com/7054-revision-v1/',0,'revision','',0),(7335,7,'2014-11-11 19:16:31','2014-11-11 19:16:31','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\" ][custom_headline type=\"left\" level=\"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=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.\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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"3%\"]\r\n<img class=\"alignleft size-full wp-image-7328\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/2011_0409_NVIDIA_CUDA.png\" alt=\"2011_0409_NVIDIA_CUDA\" width=\"229\" height=\"131\" /><img class=\"alignleft wp-image-7065\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/opencl.png\" alt=\"opencl\" width=\"164\" height=\"131\" />\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\">[counter num_start=\"0\" num_end=\"240\" num_speed=\"1500\" num_color=\"#272727\" text_below=\"Functions\"]</p>\r\n[/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 and most OpenCL devices, including 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=\"http://www.sandbox.arrayfire.com/docs/modules.htm\">ArrayFire\'s functions</a> has been hand-tuned by our CUDA and OpenCL experts.\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=\"http://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don’t forget to visit our <a href=\"http://sandbox.arrayfire.com/forums\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and best practices.\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"][gap size=\"3%\"]\r\n\r\n<img class=\"aligncenter wp-image-4801 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou-e1409844224608.png\" alt=\"comingatyou\" width=\"433\" height=\"302\" />\r\n\r\n&nbsp;\r\n\r\n[/column][/content_band]','Why ArrayFire?','','inherit','open','open','','7054-revision-v1','','','2014-11-11 19:16:31','2014-11-11 19:16:31','',7054,'http://sandbox.arrayfire.com/7054-revision-v1/',0,'revision','',0),(7336,7,'2014-11-11 19:16:57','2014-11-11 19:16:57','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\" ][custom_headline type=\"left\" level=\"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=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.\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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"3%\"]\r\n<img class=\"alignleft size-full wp-image-7328\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/2011_0409_NVIDIA_CUDA.png\" alt=\"2011_0409_NVIDIA_CUDA\" width=\"229\" height=\"131\" /><img class=\"alignleft wp-image-7065\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/opencl.png\" alt=\"opencl\" width=\"164\" height=\"131\" />\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: center;\"></p>\r\n<p style=\"text-align: left;\">[counter num_start=\"0\" num_end=\"240\" num_speed=\"1500\" num_color=\"#272727\" text_below=\"Functions\"]</p>\r\n[/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 and most OpenCL devices, including 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=\"http://www.sandbox.arrayfire.com/docs/modules.htm\">ArrayFire\'s functions</a> has been hand-tuned by our CUDA and OpenCL experts.\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=\"http://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don’t forget to visit our <a href=\"http://sandbox.arrayfire.com/forums\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and best practices.\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"][gap size=\"3%\"]\r\n\r\n<img class=\"aligncenter wp-image-4801 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou-e1409844224608.png\" alt=\"comingatyou\" width=\"433\" height=\"302\" />\r\n\r\n&nbsp;\r\n\r\n[/column][/content_band]','Why ArrayFire?','','inherit','open','open','','7054-revision-v1','','','2014-11-11 19:16:57','2014-11-11 19:16:57','',7054,'http://sandbox.arrayfire.com/7054-revision-v1/',0,'revision','',0),(7337,7,'2014-11-11 19:17:28','2014-11-11 19:17:28','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\" ][custom_headline type=\"left\" level=\"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=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.\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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"3%\"]\r\n<img class=\"alignleft size-full wp-image-7328\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/2011_0409_NVIDIA_CUDA.png\" alt=\"2011_0409_NVIDIA_CUDA\" width=\"229\" height=\"131\" /><img class=\"alignleft wp-image-7065\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/opencl.png\" alt=\"opencl\" width=\"164\" height=\"131\" />[counter num_start=\"0\" num_end=\"240\" num_speed=\"1500\" num_color=\"#272727\" text_below=\"Functions\"]\r\n\r\n[/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 and most OpenCL devices, including 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=\"http://www.sandbox.arrayfire.com/docs/modules.htm\">ArrayFire\'s functions</a> has been hand-tuned by our CUDA and OpenCL experts.\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=\"http://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don’t forget to visit our <a href=\"http://sandbox.arrayfire.com/forums\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and best practices.\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"][gap size=\"3%\"]\r\n\r\n<img class=\"aligncenter wp-image-4801 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou-e1409844224608.png\" alt=\"comingatyou\" width=\"433\" height=\"302\" />\r\n\r\n&nbsp;\r\n\r\n[/column][/content_band]','Why ArrayFire?','','inherit','open','open','','7054-revision-v1','','','2014-11-11 19:17:28','2014-11-11 19:17:28','',7054,'http://sandbox.arrayfire.com/7054-revision-v1/',0,'revision','',0),(7338,7,'2014-11-11 19:17:48','2014-11-11 19:17:48','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\" ][custom_headline type=\"left\" level=\"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=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.\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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"3%\"]\r\n<img class=\"alignleft size-full wp-image-7328\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/2011_0409_NVIDIA_CUDA.png\" alt=\"2011_0409_NVIDIA_CUDA\" width=\"229\" height=\"131\" /><img class=\"alignleft wp-image-7065\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/opencl.png\" alt=\"opencl\" width=\"164\" height=\"131\" />\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n[counter num_start=\"0\" num_end=\"240\" num_speed=\"1500\" num_color=\"#272727\" text_below=\"Functions\"]\r\n\r\n[/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 and most OpenCL devices, including 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=\"http://www.sandbox.arrayfire.com/docs/modules.htm\">ArrayFire\'s functions</a> has been hand-tuned by our CUDA and OpenCL experts.\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=\"http://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don’t forget to visit our <a href=\"http://sandbox.arrayfire.com/forums\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and best practices.\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"][gap size=\"3%\"]\r\n\r\n<img class=\"aligncenter wp-image-4801 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou-e1409844224608.png\" alt=\"comingatyou\" width=\"433\" height=\"302\" />\r\n\r\n&nbsp;\r\n\r\n[/column][/content_band]','Why ArrayFire?','','inherit','open','open','','7054-revision-v1','','','2014-11-11 19:17:48','2014-11-11 19:17:48','',7054,'http://sandbox.arrayfire.com/7054-revision-v1/',0,'revision','',0),(7339,7,'2014-11-11 19:18:12','2014-11-11 19:18:12','[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-half\" ][custom_headline type=\"left\" level=\"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=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.\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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"3%\"]\r\n<img class=\"alignleft size-full wp-image-7328\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/2011_0409_NVIDIA_CUDA.png\" alt=\"2011_0409_NVIDIA_CUDA\" width=\"229\" height=\"131\" /><img class=\"alignleft wp-image-7065\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/11/opencl.png\" alt=\"opencl\" width=\"181\" height=\"145\" />\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n[counter num_start=\"0\" num_end=\"240\" num_speed=\"1500\" num_color=\"#272727\" text_below=\"Functions\"]\r\n\r\n[/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 and most OpenCL devices, including 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=\"http://www.sandbox.arrayfire.com/docs/modules.htm\">ArrayFire\'s functions</a> has been hand-tuned by our CUDA and OpenCL experts.\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=\"http://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don’t forget to visit our <a href=\"http://sandbox.arrayfire.com/forums\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and best practices.\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"][gap size=\"3%\"]\r\n\r\n<img class=\"aligncenter wp-image-4801 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/comingatyou-e1409844224608.png\" alt=\"comingatyou\" width=\"433\" height=\"302\" />\r\n\r\n&nbsp;\r\n\r\n[/column][/content_band]','Why ArrayFire?','','inherit','open','open','','7054-revision-v1','','','2014-11-11 19:18:12','2014-11-11 19:18:12','',7054,'http://sandbox.arrayfire.com/7054-revision-v1/',0,'revision','',0);

INSERT INTO `wp_posts` VALUES (7641,7,'2014-12-15 20:30:16','2014-12-15 20:30:16','Over the weekend we celebrated the month-iversary of ArrayFire going open source. A month later, we\'re <em>still</em> pumped about this move, and the response from the parallel computing community has been tremendous. We thought we\'d share some of our favorite ArrayFire buzz from the last month.\r\n\r\nOn the day of the release, we watched as the ArrayFire open source release steadily climbed up Hacker News, eventually landing the number three spot! Admittedly, it\'s hard to compete with a comet landing.\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">We are living one of the coolest moments ever in the history of <a href=\"https://twitter.com/arrayfire\">@arrayfire</a>! We just open sourced &amp; are at #3 on HN, <a href=\"http://t.co/NxwoO2sQqL\">pic.twitter.com/NxwoO2sQqL</a>\r\n\r\n— John Melonakos (@melonakos) <a href=\"https://twitter.com/melonakos/status/532651267466985473\">November 12, 2014</a></blockquote>\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>  With eager eyes we followed the rise of our GitHub repository\'s star count to an incredible 860 stars.   <img class=\"aligncenter size-full wp-image-7629\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/Github-stars.png\" alt=\"Github stars\" width=\"1016\" height=\"218\" />  We received shout-outs from several major blogs including <a href=\"http://www.phoronix.com/scan.php?page=news_item&amp;px=MTg0Njk\">Phoronix</a>, <a href=\"http://insidehpc.com/2014/08/arrayfire-gpu-software-library-moving-open-source/\">insideHPC</a>, and <a href=\"http://www.hpcwire.com/off-the-wire/arrayfire-gpu-accelerator-software-library-goes-open-source/\">HPCWire.</a> In the <a href=\"http://developer.amd.com/community/blog/2014/11/21/arrayfire-now-open-source/\">AMD Developer Blog</a>, Brent Hollingsworth wrote  \r\n\r\n<blockquote>On the AMD side, we have been very impressed with the project. CLMath technical lead Kent Knox was excited when he took an early look. “I geeked out on their automation. It is pretty awesome – the flexibility they provide. They have a public Jenkins infrastructure for automated build &amp; test, which is impressive!”</blockquote>\r\n\r\nTwitter caught fire, as well, as the news spread throughout the world:   \r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">ArrayFire is now open source! I have to test this baby with my galaxy kinematic modelling software... <a href=\"https://twitter.com/hashtag/arrayfire?src=hash\">#arrayfire</a> — Bekos (@Bek0s) <a href=\"https://twitter.com/Bek0s/status/538636038483107840\">November 29, 2014</a></blockquote>\r\n\r\n&nbsp;\r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Arrayfire！が！Opensourceになった！(しかもBSDライセンス）乗るしかないこのビックウェーブに！ <a href=\"http://t.co/6HVr85zYWN\">http://t.co/6HVr85zYWN</a> — Masaki Saito (@rezoolab) <a href=\"https://twitter.com/rezoolab/status/532928538014257153\">November 13, 2014</a></blockquote>\r\n\r\n(Translation: ArrayFire is open source! No choice but to ride this big wave!)<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\"><a href=\"https://twitter.com/walkingrandomly\">@walkingrandomly</a> Ooh, Fortran wrapper: <a href=\"https://t.co/GgEaq79liq\">https://t.co/GgEaq79liq</a> — arclight (@arclight) <a href=\"https://twitter.com/arclight/status/532804582745726976\">November 13, 2014</a></blockquote>\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script><script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">&nbsp;\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Happy to see ArrayFire CUDA lib <a href=\"https://t.co/DCuBpBusth\">https://t.co/DCuBpBusth</a> going open source. I had some fun with it for a comp.arch class project. — btbytes (@btbytes) <a href=\"https://twitter.com/btbytes/status/532649263184883712\">November 12, 2014</a></blockquote>\r\n</blockquote>\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>','ArrayFire Open Source Buzz','','inherit','open','open','','7570-revision-v1','','','2014-12-15 20:30:16','2014-12-15 20:30:16','',7570,'http://sandbox.arrayfire.com/7570-revision-v1/',0,'revision','',0),(7642,7,'2014-12-15 20:31:08','2014-12-15 20:31:08','Over the weekend we celebrated the month-iversary of ArrayFire going open source. A month later, we\'re <em>still</em> pumped about this move, and the response from the parallel computing community has been tremendous. We thought we\'d share some of our favorite ArrayFire buzz from the last month.\r\n\r\nOn the day of the release, we watched as the ArrayFire open source release steadily climbed up Hacker News, eventually landing the number three spot! Admittedly, it\'s hard to compete with a comet landing.\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">We are living one of the coolest moments ever in the history of <a href=\"https://twitter.com/arrayfire\">@arrayfire</a>! We just open sourced &amp; are at #3 on HN, <a href=\"http://t.co/NxwoO2sQqL\">pic.twitter.com/NxwoO2sQqL</a>\r\n\r\n— John Melonakos (@melonakos) <a href=\"https://twitter.com/melonakos/status/532651267466985473\">November 12, 2014</a></blockquote>\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>  With eager eyes we followed the rise of our GitHub repository\'s star count to an incredible 860 stars.   <img class=\"aligncenter size-full wp-image-7629\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/Github-stars.png\" alt=\"Github stars\" width=\"1016\" height=\"218\" />  We received shout-outs from several major blogs including <a href=\"http://www.phoronix.com/scan.php?page=news_item&amp;px=MTg0Njk\">Phoronix</a>, <a href=\"http://insidehpc.com/2014/08/arrayfire-gpu-software-library-moving-open-source/\">insideHPC</a>, and <a href=\"http://www.hpcwire.com/off-the-wire/arrayfire-gpu-accelerator-software-library-goes-open-source/\">HPCWire.</a> In the <a href=\"http://developer.amd.com/community/blog/2014/11/21/arrayfire-now-open-source/\">AMD Developer Blog</a>, Brent Hollingsworth wrote  \r\n\r\n<blockquote>On the AMD side, we have been very impressed with the project. CLMath technical lead Kent Knox was excited when he took an early look. “I geeked out on their automation. It is pretty awesome – the flexibility they provide. They have a public Jenkins infrastructure for automated build &amp; test, which is impressive!”</blockquote>\r\n\r\nTwitter caught fire, as well, as the news spread throughout the world:   \r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">ArrayFire is now open source! I have to test this baby with my galaxy kinematic modelling software... <a href=\"https://twitter.com/hashtag/arrayfire?src=hash\">#arrayfire</a> — Bekos (@Bek0s) <a href=\"https://twitter.com/Bek0s/status/538636038483107840\">November 29, 2014</a></blockquote>\r\n\r\n&nbsp;\r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Arrayfire！が！Opensourceになった！(しかもBSDライセンス）乗るしかないこのビックウェーブに！ <a href=\"http://t.co/6HVr85zYWN\">http://t.co/6HVr85zYWN</a> — Masaki Saito (@rezoolab) <a href=\"https://twitter.com/rezoolab/status/532928538014257153\">November 13, 2014</a></blockquote>\r\n\r\n(Translation: ArrayFire is open source! No choice but to ride this big wave!)\r\n\r\n&nbsp;\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\"><a href=\"https://twitter.com/walkingrandomly\">@walkingrandomly</a> Ooh, Fortran wrapper: <a href=\"https://t.co/GgEaq79liq\">https://t.co/GgEaq79liq</a> — arclight (@arclight) <a href=\"https://twitter.com/arclight/status/532804582745726976\">November 13, 2014</a></blockquote>\r\n&nbsp;\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script><script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">&nbsp;\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Happy to see ArrayFire CUDA lib <a href=\"https://t.co/DCuBpBusth\">https://t.co/DCuBpBusth</a> going open source. I had some fun with it for a comp.arch class project. — btbytes (@btbytes) <a href=\"https://twitter.com/btbytes/status/532649263184883712\">November 12, 2014</a></blockquote>\r\n</blockquote>\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>','ArrayFire Open Source Buzz','','inherit','open','open','','7570-revision-v1','','','2014-12-15 20:31:08','2014-12-15 20:31:08','',7570,'http://sandbox.arrayfire.com/7570-revision-v1/',0,'revision','',0),(7643,7,'2014-12-15 20:31:59','2014-12-15 20:31:59','Over the weekend we celebrated the month-iversary of ArrayFire going open source. A month later, we\'re <em>still</em> pumped about this move, and the response from the parallel computing community has been tremendous. We thought we\'d share some of our favorite ArrayFire buzz from the last month.\r\n\r\nOn the day of the release, we watched as the ArrayFire open source release steadily climbed up Hacker News, eventually landing the number three spot! Admittedly, it\'s hard to compete with a comet landing.\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">We are living one of the coolest moments ever in the history of <a href=\"https://twitter.com/arrayfire\">@arrayfire</a>! We just open sourced &amp; are at #3 on HN, <a href=\"http://t.co/NxwoO2sQqL\">pic.twitter.com/NxwoO2sQqL</a>\r\n\r\n— John Melonakos (@melonakos) <a href=\"https://twitter.com/melonakos/status/532651267466985473\">November 12, 2014</a></blockquote>\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>  With eager eyes we followed the rise of our GitHub repository\'s star count to an incredible 860 stars.   <img class=\"aligncenter size-full wp-image-7629\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/Github-stars.png\" alt=\"Github stars\" width=\"1016\" height=\"218\" />  We received shout-outs from several major blogs including <a href=\"http://www.phoronix.com/scan.php?page=news_item&amp;px=MTg0Njk\">Phoronix</a>, <a href=\"http://insidehpc.com/2014/08/arrayfire-gpu-software-library-moving-open-source/\">insideHPC</a>, and <a href=\"http://www.hpcwire.com/off-the-wire/arrayfire-gpu-accelerator-software-library-goes-open-source/\">HPCWire.</a> In the <a href=\"http://developer.amd.com/community/blog/2014/11/21/arrayfire-now-open-source/\">AMD Developer Blog</a>, Brent Hollingsworth wrote  \r\n\r\n<blockquote>On the AMD side, we have been very impressed with the project. CLMath technical lead Kent Knox was excited when he took an early look. “I geeked out on their automation. It is pretty awesome – the flexibility they provide. They have a public Jenkins infrastructure for automated build &amp; test, which is impressive!”</blockquote>\r\n\r\nTwitter caught fire, as well, as the news spread throughout the world:\r\n\r\n&nbsp;\r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">ArrayFire is now open source! I have to test this baby with my galaxy kinematic modelling software... <a href=\"https://twitter.com/hashtag/arrayfire?src=hash\">#arrayfire</a> — Bekos (@Bek0s) <a href=\"https://twitter.com/Bek0s/status/538636038483107840\">November 29, 2014</a></blockquote>\r\n\r\n&nbsp;\r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Arrayfire！が！Opensourceになった！(しかもBSDライセンス）乗るしかないこのビックウェーブに！ <a href=\"http://t.co/6HVr85zYWN\">http://t.co/6HVr85zYWN</a> — Masaki Saito (@rezoolab) <a href=\"https://twitter.com/rezoolab/status/532928538014257153\">November 13, 2014</a></blockquote>\r\n\r\n(Translation: ArrayFire is open source! No choice but to ride this big wave!)\r\n\r\n&nbsp;\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\"><a href=\"https://twitter.com/walkingrandomly\">@walkingrandomly</a> Ooh, Fortran wrapper: <a href=\"https://t.co/GgEaq79liq\">https://t.co/GgEaq79liq</a> — arclight (@arclight) <a href=\"https://twitter.com/arclight/status/532804582745726976\">November 13, 2014</a></blockquote>\r\n&nbsp;\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script><script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">&nbsp;\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Happy to see ArrayFire CUDA lib <a href=\"https://t.co/DCuBpBusth\">https://t.co/DCuBpBusth</a> going open source. I had some fun with it for a comp.arch class project. — btbytes (@btbytes) <a href=\"https://twitter.com/btbytes/status/532649263184883712\">November 12, 2014</a></blockquote>\r\n</blockquote>\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>','ArrayFire Open Source Buzz','','inherit','open','open','','7570-revision-v1','','','2014-12-15 20:31:59','2014-12-15 20:31:59','',7570,'http://sandbox.arrayfire.com/7570-revision-v1/',0,'revision','',0),(7644,7,'2014-12-15 20:33:33','2014-12-15 20:33:33','Over the weekend we celebrated the month-iversary of ArrayFire going open source. A month later, we\'re <em>still</em> pumped about this move, and the response from the parallel computing community has been tremendous. We thought we\'d share some of our favorite ArrayFire buzz from the last month.\r\n\r\nOn the day of the release, we watched as the ArrayFire open source release steadily climbed up Hacker News, eventually landing the number three spot! Admittedly, it\'s hard to compete with a comet landing.\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">We are living one of the coolest moments ever in the history of <a href=\"https://twitter.com/arrayfire\">@arrayfire</a>! We just open sourced &amp; are at #3 on HN, <a href=\"http://t.co/NxwoO2sQqL\">pic.twitter.com/NxwoO2sQqL</a>\r\n\r\n— John Melonakos (@melonakos) <a href=\"https://twitter.com/melonakos/status/532651267466985473\">November 12, 2014</a></blockquote>\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n\r\n&nbsp;\r\n\r\nWith eager eyes we followed the rise of our GitHub repository\'s star count to an incredible 860 stars.\r\n\r\n  <img class=\"aligncenter size-full wp-image-7629\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/Github-stars.png\" alt=\"Github stars\" width=\"1016\" height=\"218\" /> \r\n\r\nWe received shout-outs from several major blogs including <a href=\"http://www.phoronix.com/scan.php?page=news_item&amp;px=MTg0Njk\">Phoronix</a>, <a href=\"http://insidehpc.com/2014/08/arrayfire-gpu-software-library-moving-open-source/\">insideHPC</a>, and <a href=\"http://www.hpcwire.com/off-the-wire/arrayfire-gpu-accelerator-software-library-goes-open-source/\">HPCWire.</a> In the <a href=\"http://developer.amd.com/community/blog/2014/11/21/arrayfire-now-open-source/\">AMD Developer Blog</a>, Brent Hollingsworth wrote  \r\n\r\n<blockquote>On the AMD side, we have been very impressed with the project. CLMath technical lead Kent Knox was excited when he took an early look. “I geeked out on their automation. It is pretty awesome – the flexibility they provide. They have a public Jenkins infrastructure for automated build &amp; test, which is impressive!”</blockquote>\r\n\r\nTwitter caught fire, as well, as the news spread throughout the world:\r\n\r\n&nbsp;\r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">ArrayFire is now open source! I have to test this baby with my galaxy kinematic modelling software... <a href=\"https://twitter.com/hashtag/arrayfire?src=hash\">#arrayfire</a> — Bekos (@Bek0s) <a href=\"https://twitter.com/Bek0s/status/538636038483107840\">November 29, 2014</a></blockquote>\r\n\r\n&nbsp;\r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Arrayfire！が！Opensourceになった！(しかもBSDライセンス）乗るしかないこのビックウェーブに！ <a href=\"http://t.co/6HVr85zYWN\">http://t.co/6HVr85zYWN</a> — Masaki Saito (@rezoolab) <a href=\"https://twitter.com/rezoolab/status/532928538014257153\">November 13, 2014</a></blockquote>\r\n\r\n(Translation: ArrayFire is open source! No choice but to ride this big wave!)\r\n\r\n&nbsp;\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\"><a href=\"https://twitter.com/walkingrandomly\">@walkingrandomly</a> Ooh, Fortran wrapper: <a href=\"https://t.co/GgEaq79liq\">https://t.co/GgEaq79liq</a> — arclight (@arclight) <a href=\"https://twitter.com/arclight/status/532804582745726976\">November 13, 2014</a></blockquote>\r\n&nbsp;\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script><script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">&nbsp;\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Happy to see ArrayFire CUDA lib <a href=\"https://t.co/DCuBpBusth\">https://t.co/DCuBpBusth</a> going open source. I had some fun with it for a comp.arch class project. — btbytes (@btbytes) <a href=\"https://twitter.com/btbytes/status/532649263184883712\">November 12, 2014</a></blockquote>\r\n</blockquote>\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>','ArrayFire Open Source Buzz','','inherit','open','open','','7570-revision-v1','','','2014-12-15 20:33:33','2014-12-15 20:33:33','',7570,'http://sandbox.arrayfire.com/7570-revision-v1/',0,'revision','',0),(7645,7,'2014-12-15 20:40:42','2014-12-15 20:40:42','Over the weekend we celebrated the month-iversary of ArrayFire going open source. A month later, we\'re <em>still</em> pumped about this move, and the response from the parallel computing community has been tremendous. We thought we\'d share some of our favorite ArrayFire buzz from the last month.\r\n\r\nOn the day of the release, we watched as the ArrayFire open source release steadily climbed up Hacker News, eventually landing the number three spot! Admittedly, it\'s hard to compete with a comet landing.\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">We are living one of the coolest moments ever in the history of <a href=\"https://twitter.com/arrayfire\">@arrayfire</a>! We just open sourced &amp; are at #3 on HN, <a href=\"http://t.co/NxwoO2sQqL\">pic.twitter.com/NxwoO2sQqL</a>\r\n\r\n— John Melonakos (@melonakos) <a href=\"https://twitter.com/melonakos/status/532651267466985473\">November 12, 2014</a></blockquote>\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n\r\n&nbsp;\r\n\r\nWith eager eyes we followed the rise of our GitHub repository\'s star count to an incredible 860 stars.\r\n\r\n  <img class=\"aligncenter size-full wp-image-7629\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/Github-stars.png\" alt=\"Github stars\" width=\"1016\" height=\"218\" /> \r\n\r\nWe received shout-outs from several major blogs including <a href=\"http://www.phoronix.com/scan.php?page=news_item&amp;px=MTg0Njk\">Phoronix</a>, <a href=\"http://insidehpc.com/2014/08/arrayfire-gpu-software-library-moving-open-source/\">insideHPC</a>, and <a href=\"http://www.hpcwire.com/off-the-wire/arrayfire-gpu-accelerator-software-library-goes-open-source/\">HPCWire.</a> In the <a href=\"http://developer.amd.com/community/blog/2014/11/21/arrayfire-now-open-source/\">AMD Developer Blog</a>, Brent Hollingsworth wrote  \r\n\r\n<blockquote>On the AMD side, we have been very impressed with the project. CLMath technical lead Kent Knox was excited when he took an early look. “I geeked out on their automation. It is pretty awesome – the flexibility they provide. They have a public Jenkins infrastructure for automated build &amp; test, which is impressive!”</blockquote>\r\n\r\nThe parallel community tweeted as news of the release spread across the globe:\r\n\r\n&nbsp;\r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">ArrayFire is now open source! I have to test this baby with my galaxy kinematic modelling software... <a href=\"https://twitter.com/hashtag/arrayfire?src=hash\">#arrayfire</a> — Bekos (@Bek0s) <a href=\"https://twitter.com/Bek0s/status/538636038483107840\">November 29, 2014</a></blockquote>\r\n\r\n&nbsp;\r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Arrayfire！が！Opensourceになった！(しかもBSDライセンス）乗るしかないこのビックウェーブに！ <a href=\"http://t.co/6HVr85zYWN\">http://t.co/6HVr85zYWN</a> — Masaki Saito (@rezoolab) <a href=\"https://twitter.com/rezoolab/status/532928538014257153\">November 13, 2014</a></blockquote>\r\n\r\n(Translation: ArrayFire is open source! No choice but to ride this big wave!)\r\n\r\n&nbsp;\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\"><a href=\"https://twitter.com/walkingrandomly\">@walkingrandomly</a> Ooh, Fortran wrapper: <a href=\"https://t.co/GgEaq79liq\">https://t.co/GgEaq79liq</a> — arclight (@arclight) <a href=\"https://twitter.com/arclight/status/532804582745726976\">November 13, 2014</a></blockquote>\r\n&nbsp;\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script><script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">&nbsp;\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Happy to see ArrayFire CUDA lib <a href=\"https://t.co/DCuBpBusth\">https://t.co/DCuBpBusth</a> going open source. I had some fun with it for a comp.arch class project. — btbytes (@btbytes) <a href=\"https://twitter.com/btbytes/status/532649263184883712\">November 12, 2014</a></blockquote>\r\n</blockquote>\r\nThanks for joining us on the ride!\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>','ArrayFire Open Source Buzz','','inherit','open','open','','7570-revision-v1','','','2014-12-15 20:40:42','2014-12-15 20:40:42','',7570,'http://sandbox.arrayfire.com/7570-revision-v1/',0,'revision','',0),(7646,7,'2014-12-15 20:42:59','2014-12-15 20:42:59','Over the weekend we celebrated the month-iversary of ArrayFire going open source. A month later, we\'re <em>still</em> pumped about this move, and the response from the parallel computing community has been tremendous. We thought we\'d share some of our favorite ArrayFire buzz from the last month.\r\n\r\nOn the day of the release, we watched as the ArrayFire open source release steadily climbed up Hacker News, eventually landing the number three spot! Admittedly, it\'s hard to compete with a comet landing.\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">We are living one of the coolest moments ever in the history of <a href=\"https://twitter.com/arrayfire\">@arrayfire</a>! We just open sourced &amp; are at #3 on HN, <a href=\"http://t.co/NxwoO2sQqL\">pic.twitter.com/NxwoO2sQqL</a>\r\n\r\n— John Melonakos (@melonakos) <a href=\"https://twitter.com/melonakos/status/532651267466985473\">November 12, 2014</a></blockquote>\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n\r\n&nbsp;\r\n\r\nWith eager eyes we followed the rise of our GitHub repository\'s star count to an incredible 860 stars.\r\n\r\n  <img class=\"aligncenter size-full wp-image-7629\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/Github-stars.png\" alt=\"Github stars\" width=\"1016\" height=\"218\" /> \r\n\r\nWe received shout-outs from several major blogs including <a href=\"http://www.phoronix.com/scan.php?page=news_item&amp;px=MTg0Njk\">Phoronix</a>, <a href=\"http://insidehpc.com/2014/08/arrayfire-gpu-software-library-moving-open-source/\">insideHPC</a>, and <a href=\"http://www.hpcwire.com/off-the-wire/arrayfire-gpu-accelerator-software-library-goes-open-source/\">HPCWire.</a> In the <a href=\"http://developer.amd.com/community/blog/2014/11/21/arrayfire-now-open-source/\">AMD Developer Blog</a>, Brent Hollingsworth wrote  \r\n\r\n<blockquote>On the AMD side, we have been very impressed with the project. CLMath technical lead Kent Knox was excited when he took an early look. “I geeked out on their automation. It is pretty awesome – the flexibility they provide. They have a public Jenkins infrastructure for automated build &amp; test, which is impressive!”</blockquote>\r\n\r\nThe parallel community tweeted as news of the release spread across the globe:\r\n\r\n&nbsp;\r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">ArrayFire is now open source! I have to test this baby with my galaxy kinematic modelling software... <a href=\"https://twitter.com/hashtag/arrayfire?src=hash\">#arrayfire</a> — Bekos (@Bek0s) <a href=\"https://twitter.com/Bek0s/status/538636038483107840\">November 29, 2014</a></blockquote>\r\n\r\n&nbsp;\r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Arrayfire！が！Opensourceになった！(しかもBSDライセンス）乗るしかないこのビックウェーブに！ <a href=\"http://t.co/6HVr85zYWN\">http://t.co/6HVr85zYWN</a> — Masaki Saito (@rezoolab) <a href=\"https://twitter.com/rezoolab/status/532928538014257153\">November 13, 2014</a></blockquote>\r\n\r\n(Translation: ArrayFire is open source! No choice but to ride this big wave!)\r\n\r\n&nbsp;\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\"><a href=\"https://twitter.com/walkingrandomly\">@walkingrandomly</a> Ooh, Fortran wrapper: <a href=\"https://t.co/GgEaq79liq\">https://t.co/GgEaq79liq</a> — arclight (@arclight) <a href=\"https://twitter.com/arclight/status/532804582745726976\">November 13, 2014</a></blockquote>\r\n&nbsp;\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script><script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">&nbsp;\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Happy to see ArrayFire CUDA lib <a href=\"https://t.co/DCuBpBusth\">https://t.co/DCuBpBusth</a> going open source. I had some fun with it for a comp.arch class project. — btbytes (@btbytes) <a href=\"https://twitter.com/btbytes/status/532649263184883712\">November 12, 2014</a></blockquote>\r\n</blockquote>\r\nThanks for joining us on the ride! We look forward to many more exciting developments and wish you the best as you wrap up 2014 and gear up for 2015!\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>','ArrayFire Open Source Buzz','','inherit','open','open','','7570-revision-v1','','','2014-12-15 20:42:59','2014-12-15 20:42:59','',7570,'http://sandbox.arrayfire.com/7570-revision-v1/',0,'revision','',0),(7647,7,'2014-12-15 20:44:14','2014-12-15 20:44:14','Over the weekend we celebrated the month-iversary of ArrayFire going open source. A month later, we\'re <em>still</em> pumped about this move, and the response from the parallel computing community has been tremendous. We thought we\'d share some of our favorite ArrayFire buzz from the last month.\r\n\r\nOn the day of the release, we watched as the ArrayFire open source release steadily climbed up Hacker News, eventually landing the number three spot! Admittedly, it\'s hard to compete with a comet landing.\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">We are living one of the coolest moments ever in the history of <a href=\"https://twitter.com/arrayfire\">@arrayfire</a>! We just open sourced &amp; are at #3 on HN, <a href=\"http://t.co/NxwoO2sQqL\">pic.twitter.com/NxwoO2sQqL</a>\r\n\r\n— John Melonakos (@melonakos) <a href=\"https://twitter.com/melonakos/status/532651267466985473\">November 12, 2014</a></blockquote>\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n\r\n&nbsp;\r\n\r\nWith eager eyes we followed the rise of our GitHub repository\'s star count to an incredible 860 stars.\r\n\r\n  <img class=\"aligncenter size-full wp-image-7629\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/Github-stars.png\" alt=\"Github stars\" width=\"1016\" height=\"218\" /> \r\n\r\nWe received shout-outs from several major blogs including <a href=\"http://www.phoronix.com/scan.php?page=news_item&amp;px=MTg0Njk\">Phoronix</a>, <a href=\"http://insidehpc.com/2014/08/arrayfire-gpu-software-library-moving-open-source/\">insideHPC</a>, and <a href=\"http://www.hpcwire.com/off-the-wire/arrayfire-gpu-accelerator-software-library-goes-open-source/\">HPCWire.</a> In the <a href=\"http://developer.amd.com/community/blog/2014/11/21/arrayfire-now-open-source/\">AMD Developer Blog</a>, Brent Hollingsworth wrote  \r\n\r\n<blockquote>On the AMD side, we have been very impressed with the project. CLMath technical lead Kent Knox was excited when he took an early look. “I geeked out on their automation. It is pretty awesome – the flexibility they provide. They have a public Jenkins infrastructure for automated build &amp; test, which is impressive!”</blockquote>\r\n\r\nThe parallel community tweeted as news of the release spread across the globe:\r\n\r\n&nbsp;\r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">ArrayFire is now open source! I have to test this baby with my galaxy kinematic modelling software... <a href=\"https://twitter.com/hashtag/arrayfire?src=hash\">#arrayfire</a> — Bekos (@Bek0s) <a href=\"https://twitter.com/Bek0s/status/538636038483107840\">November 29, 2014</a></blockquote>\r\n\r\n&nbsp;\r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Arrayfire！が！Opensourceになった！(しかもBSDライセンス）乗るしかないこのビックウェーブに！ <a href=\"http://t.co/6HVr85zYWN\">http://t.co/6HVr85zYWN</a> — Masaki Saito (@rezoolab) <a href=\"https://twitter.com/rezoolab/status/532928538014257153\">November 13, 2014</a></blockquote>\r\n\r\n(Translation: ArrayFire is open source! No choice but to ride this big wave!)\r\n\r\n&nbsp;\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\"><a href=\"https://twitter.com/walkingrandomly\">@walkingrandomly</a> Ooh, Fortran wrapper: <a href=\"https://t.co/GgEaq79liq\">https://t.co/GgEaq79liq</a> — arclight (@arclight) <a href=\"https://twitter.com/arclight/status/532804582745726976\">November 13, 2014</a></blockquote>\r\n&nbsp;\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script><script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">&nbsp;\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Happy to see ArrayFire CUDA lib <a href=\"https://t.co/DCuBpBusth\">https://t.co/DCuBpBusth</a> going open source. I had some fun with it for a comp.arch class project. — btbytes (@btbytes) <a href=\"https://twitter.com/btbytes/status/532649263184883712\">November 12, 2014</a></blockquote>\r\n</blockquote>\r\nThanks for joining us on the ride, everyone. We look forward to many more exciting developments and wish you the best as you wrap up 2014!\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>','ArrayFire Open Source Buzz','','inherit','open','open','','7570-revision-v1','','','2014-12-15 20:44:14','2014-12-15 20:44:14','',7570,'http://sandbox.arrayfire.com/7570-revision-v1/',0,'revision','',0),(7648,7,'2014-12-15 20:46:34','2014-12-15 20:46:34','Over the weekend we celebrated the month-iversary of ArrayFire going open source. A month later, we\'re <em>still</em> pumped about this move, and the response from the parallel computing community has been tremendous. We thought we\'d share some of our favorite ArrayFire buzz from the last month.\r\n\r\nOn the day of the release, we watched as the ArrayFire open source release steadily climbed up Hacker News, eventually landing the number three spot! Admittedly, it\'s hard to compete with a comet landing.\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">We are living one of the coolest moments ever in the history of <a href=\"https://twitter.com/arrayfire\">@arrayfire</a>! We just open sourced &amp; are at #3 on HN, <a href=\"http://t.co/NxwoO2sQqL\">pic.twitter.com/NxwoO2sQqL</a>\r\n\r\n— John Melonakos (@melonakos) <a href=\"https://twitter.com/melonakos/status/532651267466985473\">November 12, 2014</a></blockquote>\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n\r\n&nbsp;\r\n\r\nWith eager eyes we followed the rise of our GitHub repository\'s star count to an incredible 860 stars.\r\n\r\n  <img class=\"aligncenter size-full wp-image-7629\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/Github-stars.png\" alt=\"Github stars\" width=\"1016\" height=\"218\" /> \r\n\r\nWe received shout-outs from several major blogs including <a href=\"http://www.phoronix.com/scan.php?page=news_item&amp;px=MTg0Njk\">Phoronix</a>, <a href=\"http://insidehpc.com/2014/08/arrayfire-gpu-software-library-moving-open-source/\">insideHPC</a>, and <a href=\"http://www.hpcwire.com/off-the-wire/arrayfire-gpu-accelerator-software-library-goes-open-source/\">HPCWire.</a> In the <a href=\"http://developer.amd.com/community/blog/2014/11/21/arrayfire-now-open-source/\">AMD Developer Blog</a>, Brent Hollingsworth wrote  \r\n\r\n<blockquote>On the AMD side, we have been very impressed with the project. CLMath technical lead Kent Knox was excited when he took an early look. “I geeked out on their automation. It is pretty awesome – the flexibility they provide. They have a public Jenkins infrastructure for automated build &amp; test, which is impressive!”</blockquote>\r\n\r\nThe parallel community tweeted as news of the release spread across the globe:\r\n\r\n&nbsp;\r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">ArrayFire is now open source! I have to test this baby with my galaxy kinematic modelling software... <a href=\"https://twitter.com/hashtag/arrayfire?src=hash\">#arrayfire</a> — Bekos (@Bek0s) <a href=\"https://twitter.com/Bek0s/status/538636038483107840\">November 29, 2014</a></blockquote>\r\n\r\n&nbsp;\r\n\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Arrayfire！が！Opensourceになった！(しかもBSDライセンス）乗るしかないこのビックウェーブに！ <a href=\"http://t.co/6HVr85zYWN\">http://t.co/6HVr85zYWN</a> — Masaki Saito (@rezoolab) <a href=\"https://twitter.com/rezoolab/status/532928538014257153\">November 13, 2014</a></blockquote>\r\n\r\n(Translation: ArrayFire is open source! No choice but to ride this big wave!)\r\n\r\n&nbsp;\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\"><a href=\"https://twitter.com/walkingrandomly\">@walkingrandomly</a> Ooh, Fortran wrapper: <a href=\"https://t.co/GgEaq79liq\">https://t.co/GgEaq79liq</a> — arclight (@arclight) <a href=\"https://twitter.com/arclight/status/532804582745726976\">November 13, 2014</a></blockquote>\r\n&nbsp;\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script><script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">&nbsp;\r\n<blockquote class=\"twitter-tweet\" lang=\"en\">Happy to see ArrayFire CUDA lib <a href=\"https://t.co/DCuBpBusth\">https://t.co/DCuBpBusth</a> going open source. I had some fun with it for a comp.arch class project. — btbytes (@btbytes) <a href=\"https://twitter.com/btbytes/status/532649263184883712\">November 12, 2014</a></blockquote>\r\n</blockquote>\r\n&nbsp;\r\n\r\nThanks for joining us on the ride, everyone. Share the excitement of open-sourced ArrayFire with your friends and colleagues (it makes a nice, free holiday gift!). We look forward to many more exciting developments and wish you the best as you wrap up 2014!\r\n\r\n<script src=\"//platform.twitter.com/widgets.js\" async=\"\" charset=\"utf-8\"></script>','ArrayFire Open Source Buzz','','inherit','open','open','','7570-revision-v1','','','2014-12-15 20:46:34','2014-12-15 20:46:34','',7570,'http://sandbox.arrayfire.com/7570-revision-v1/',0,'revision','',0),(7660,7,'2015-01-12 18:39:59','2015-01-12 18:39:59','The year 2014 was a big one for us! Before we get too far into 2015, we thought we\'d share the most popular posts of 2014.\r\n\r\nSo, without further adieu, we give you the TOP TEN ARRAYFIRE BLOG POSTS OF 2014:\r\n\r\n<strong>1. <a href=\"http://sandbox.arrayfire.com/getting-started-with-opencl-on-android/\">Getting Started with OpenCL on Android</a>:</strong> In which we review how to do image processing on camera feed on Android devices using OpenCL.\r\n\r\n<strong>2. <a href=\"http://sandbox.arrayfire.com/arrayfire-on-nvidia-tegra-tk1/\">Image Processing Benchmarks on NVIDIA Jetson TK1</a>:</strong> In which we look at benchmarks of the following ArrayFire image processing functions on an ARM device: erosion/dilation, median filter, resize, histogram, bilateral filter, and convolution.\r\n\r\n<strong>3. <a href=\"http://sandbox.arrayfire.com/opencl-on-mobile-devices/\">OpenCL on Mobile Devices</a>:</strong> In which we share a consolidated list of OpenCL supported Android devices.\r\n\r\n<strong>4. <a href=\"http://sandbox.arrayfire.com/quest-for-the-smallest-opencl-program/\">Quest for the Smallest OpenCL Program</a>:</strong> In which Umar searches for the smallest OpenCL program, with a focus on simplicity and readability.\r\n\r\n<strong>5. <a href=\"http://sandbox.arrayfire.com/arrayfire-is-now-open-source/\">ArrayFire is Now Open Source</a>:</strong> In which we announce the open sourcing of ArrayFire!\r\n\r\n<strong>6. <a href=\"http://sandbox.arrayfire.com/cross-compile-to-windows-from-linux/\">Cross Compile to Windows from Linux:</a></strong> In which we cover a quick way to get a Windows build of platform independent code that you might already have running in Linux.\r\n\r\n<strong>7. <a href=\"http://sandbox.arrayfire.com/zero-copy-on-tegra-k1/\">Zero Copy on Tegra K1</a>:</strong> In which we explore the utility of zero copy access on the Tegra K1 processor.\r\n\r\n<strong>8. <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">Computer Vision ArrayFire—Part 1: Feature Detection</a>:</strong> In which we share some of our current benchmarks for Harris corner detector and FAST feature detector, and compare the performance of our implementation of these functions against the same functions in OpenCV, one of the best code references for computer vision.\r\n\r\n<strong>9. <a href=\"http://sandbox.arrayfire.com/remote-off-screen-rendering-with-opengl/\">Remote Off-screen Rendering with OpenGL</a>:</strong> In which we have compiled a list of steps that users can use to run full profile OpenGL applications over SSH on remote systems without a display.\r\n\r\n<strong>10. <a href=\"http://sandbox.arrayfire.com/new-features-arrayfire/\">New Features in ArrayFire</a>:</strong> In which we discuss some of the bigger changes and additions to ArrayFire.\r\n\r\nEnjoy the reads! Here\'s to an equally momentous 2015!','The ArrayFire Blog\'s Best of 2014','','publish','open','open','','the-arrayfire-blogs-best-of-2014','','','2015-01-12 18:39:59','2015-01-12 18:39:59','',0,'http://sandbox.arrayfire.com/?p=7660',0,'post','',1),(7662,11,'2015-01-08 17:48:43','2015-01-08 17:48:43','<a title=\"Conway\'s Game of Life\" href=\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\">Conway\'s Game of Life</a> is a popular zero player cellular automaton devised by the John Horton Conway in 1970. The game makes for a fun evolution as the player sets the initial condition and then observes the evolution of the game.\n\nEach cell has 2 states: live or dead. There are 4 simple rules that determine this:\n<ul>\n<li>Any live cell with fewer than two live neighbours dies, as if caused by under-population.</li>\n<li>Any live cell with two or three live neighbours lives on to the next generation.</li>\n<li>Any live cell with more than three live neighbours dies, as if by overcrowding.</li>\n<li>Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.</li>\n</ul>\n\nFrom a programmer\'s perspective, the game is closer to an image processing algorithm. The \"world\" is a 2D image, where each pixel is a cell.\n\nThe state of a cell at any single moment in time is solely determined by the number of neighbors at the previous step. Hence this makes for an embarrassingly parallel image processing algorithm. Ding ding ding! GPUs!!!\n\nThe number of neighbors can be computed using a convolution kernel:\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/kernel_CodeCogsEqn1.png\"><img class=\"size-full wp-image-7582 aligncenter\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/kernel_CodeCogsEqn1.png\" alt=\"kernel_CodeCogsEqn\" width=\"159\" height=\"67\" /></a>\n\nSince the value of the a cell can be represented as 1 (live) and 0 (dead), using convolution will give us the number of neighbors of any cell. The center value of the kernel is 0 as we do not want to count the cell itself.\n\nHere is a general overview of a convolution operation:\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/convolve_CodeCogsEqn.png\"><img src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/convolve_CodeCogsEqn.png\" alt=\"convolve_CodeCogsEqn\" width=\"978\" height=\"150\" class=\"alignnone size-full wp-image-7588\" /></a>\n\nPlugging in 1s or 0s into the A matrix, we can see that this convolution operation will give us the neighborhood of each cell.\n\nThe next step is to compute the next state of the cell. Lets convert the rules into pseudocode.\n<pre>\nif(cell == 1 && neighbours < 2)                       -> cell = 0\nif(cell == 1 && (neighbours == 2 or neighbours == 3)) -> cell = 1\nif(cell == 1 && neighbours > 3)                       -> cell = 0\nif(cell == 0 && neighbours == 3)                      -> cell = 1\n</pre>\n\nBut we can optimize these as below:\n<pre>\nif((cell == 1 || cell == 0) && neighbours < 2)  -> cell = 0 // Since this does not make a difference to dead cell\nif(cell == 1 && neighbours == 2)                -> cell = 1\nif((cell == 1 || cell == 0) && neighbours == 3) -> cell = 1 // Since in both cell cases, the cell is alive in the next state\nif((cell == 1 || cell == 0) && neighbours > 3)  -> cell = 0 // Since in dead cell can\'t become live with more that 3 neighbours and an alive cell would die\n</pre>\n\nRemoving redundant conditions:\n<pre>\nif(neighbours < 2)                  -> cell = 0\nif(cell == 1 && neighbours == 2)    -> cell = 1\nif(neighbours == 3)                 -> cell = 1\nif(neighbours > 3)                  -> cell = 0\n</pre>\n\nLet\'s say A is the current state of the cell and neighborhood values are in matrix NHood.\nWe can compress the conditions into the following code:\n<pre>\nNHood = convolve(A, kernel);\ncond0 = (NHood < 2 ) // All cells with less than 2 neighbours will have value 1, others will be 0\ncond1 = (NHood == 2) // All cells with exactly 2 neighbours will have value 1, others will be 0\ncond2 = (NHood == 3) // All cells with exactly 3 neighbours will have value 1, others will be 0\ncond3 = (NHood > 3 ) // All cells with more than 3 neighbours will have value 1, others will be 0\n</pre>\n\nBut here is the best optimization--only two of these conditions matter: cond1 and cond2.\n\nUsing pseudocode:\n<pre>\n(NHood < 2 || NHood > 3) is equivalent to !(NHood == 2 && NHood == 3)\n//Or\n!(cond0 + cond3) = cond1 * cond2.\n</pre>\n\nLet\'s see how we can compute the next state using just these two conditions.\n\nFor cond2 it is straightforward. Any cell that is 1 in cond2 will be 1 in the next state irrespective of its value in A.\n\nFor cond1, all alive cells in A with 1 in cond1 will remain 1. All cells become dead if the corresponding value in cond1 is 0. This condition can be satisfied by doing (A * cond1).\nThat is, <pre> if(A && cond2) = A, else A = 0. </pre>\n\nHence the next state can be computed by:\n<pre>A = A * cond1 + cond2;</pre>\n\nAnd this is what ArrayFire is best at. Given its powerful API of element-wise operations and image processing algorithms, implementing the Game of Life is a breeze. Below is the entire ArrayFire code that is required to run Game of Life.\n\n<pre>\n// Initialize the kernel array just once\nstatic const float h_kernel[] = {1, 1, 1,\n                                 1, 0, 1,\n                                 1, 1, 1};\nstatic const af::array kernel(3, 3, h_kernel, af::afHost);\nint wId = -1;\n\n// Generate a random starting state\nstatic const int game_w = 100, game_h = 100;\narray state = (af::randu(game_h, game_w, f32) > 0.33).as(f32);  // Generates a 0s and 1s array based on random values\nwhile(wId != -2) {\n     // Convolve gets neighbors\n     af::array nHood = convolve(state, kernel, false);\n\n     // Generate conditions for life\n     af::array C0 = (nHood == 2);\n     af::array C1 = (nHood == 3);\n\n     // Update state\n     state = state * C0 + C1;\n     \n     // Display\n     wId = image(state, wId, \"Conway Using ArrayFire\");\n}\n</pre>\n\n<iframe src=\"http://gfycat.com/ifr/ChiefCheeryChrysalis\" frameborder=\"0\" scrolling=\"no\" width=\"448\" height=\"360\" style=\"-webkit-backface-visibility: hidden;-webkit-transform: scale(1);\" ></iframe>\n\nThis code is fully platform independent as it uses ArrayFire.\n\nLet us know if you have made any cool applications using ArrayFire.','Conway\'s Game of Life using ArrayFire','','inherit','open','open','','7579-autosave-v1','','','2015-01-08 17:48:43','2015-01-08 17:48:43','',7579,'http://sandbox.arrayfire.com/7579-autosave-v1/',0,'revision','',0),(7663,11,'2015-01-08 17:48:54','2015-01-08 17:48:54','<a title=\"Conway\'s Game of Life\" href=\"http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\">Conway\'s Game of Life</a> is a popular zero player cellular automaton devised by the John Horton Conway in 1970. The game makes for a fun evolution as the player sets the initial condition and then observes the evolution of the game.\r\n\r\nEach cell has 2 states: live or dead. There are 4 simple rules that determine this:\r\n<ul>\r\n<li>Any live cell with fewer than two live neighbours dies, as if caused by under-population.</li>\r\n<li>Any live cell with two or three live neighbours lives on to the next generation.</li>\r\n<li>Any live cell with more than three live neighbours dies, as if by overcrowding.</li>\r\n<li>Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.</li>\r\n</ul>\r\n\r\nFrom a programmer\'s perspective, the game is closer to an image processing algorithm. The \"world\" is a 2D image, where each pixel is a cell.\r\n\r\nThe state of a cell at any single moment in time is solely determined by the number of neighbors at the previous step. Hence this makes for an embarrassingly parallel image processing algorithm. Ding ding ding! GPUs!!!\r\n\r\nThe number of neighbors can be computed using a convolution kernel:\r\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/kernel_CodeCogsEqn1.png\"><img class=\"size-full wp-image-7582 aligncenter\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/kernel_CodeCogsEqn1.png\" alt=\"kernel_CodeCogsEqn\" width=\"159\" height=\"67\" /></a>\r\n\r\nSince the value of the a cell can be represented as 1 (live) and 0 (dead), using convolution will give us the number of neighbors of any cell. The center value of the kernel is 0 as we do not want to count the cell itself.\r\n\r\nHere is a general overview of a convolution operation:\r\n<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/convolve_CodeCogsEqn.png\"><img src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/12/convolve_CodeCogsEqn.png\" alt=\"convolve_CodeCogsEqn\" width=\"978\" height=\"150\" class=\"alignnone size-full wp-image-7588\" /></a>\r\n\r\nPlugging in 1s or 0s into the A matrix, we can see that this convolution operation will give us the neighborhood of each cell.\r\n\r\nThe next step is to compute the next state of the cell. Lets convert the rules into pseudocode.\r\n<pre>\r\nif(cell == 1 && neighbours < 2)                       -> cell = 0\r\nif(cell == 1 && (neighbours == 2 or neighbours == 3)) -> cell = 1\r\nif(cell == 1 && neighbours > 3)                       -> cell = 0\r\nif(cell == 0 && neighbours == 3)                      -> cell = 1\r\n</pre>\r\n\r\nBut we can optimize these as below:\r\n<pre>\r\nif((cell == 1 || cell == 0) && neighbours < 2)  -> cell = 0 // Since this does not make a difference to dead cell\r\nif(cell == 1 && neighbours == 2)                -> cell = 1\r\nif((cell == 1 || cell == 0) && neighbours == 3) -> cell = 1 // Since in both cell cases, the cell is alive in the next state\r\nif((cell == 1 || cell == 0) && neighbours > 3)  -> cell = 0 // Since in dead cell can\'t become live with more that 3 neighbours and an alive cell would die\r\n</pre>\r\n\r\nRemoving redundant conditions:\r\n<pre>\r\nif(neighbours < 2)                  -> cell = 0\r\nif(cell == 1 && neighbours == 2)    -> cell = 1\r\nif(neighbours == 3)                 -> cell = 1\r\nif(neighbours > 3)                  -> cell = 0\r\n</pre>\r\n\r\nLet\'s say A is the current state of the cell and neighborhood values are in matrix NHood.\r\nWe can compress the conditions into the following code:\r\n<pre>\r\nNHood = convolve(A, kernel);\r\ncond0 = (NHood < 2 ) // All cells with less than 2 neighbours will have value 1, others will be 0\r\ncond1 = (NHood == 2) // All cells with exactly 2 neighbours will have value 1, others will be 0\r\ncond2 = (NHood == 3) // All cells with exactly 3 neighbours will have value 1, others will be 0\r\ncond3 = (NHood > 3 ) // All cells with more than 3 neighbours will have value 1, others will be 0\r\n</pre>\r\n\r\nBut here is the best optimization--only two of these conditions matter: cond1 and cond2.\r\n\r\nUsing pseudocode:\r\n<pre>\r\n(NHood < 2 || NHood > 3) is equivalent to !(NHood == 2 && NHood == 3)\r\n//Or\r\n!(cond0 + cond3) = cond1 * cond2.\r\n</pre>\r\n\r\nLet\'s see how we can compute the next state using just these two conditions.\r\n\r\nFor cond2 it is straightforward. Any cell that is 1 in cond2 will be 1 in the next state irrespective of its value in A.\r\n\r\nFor cond1, all alive cells in A with 1 in cond1 will remain 1. All cells become dead if the corresponding value in cond1 is 0. This condition can be satisfied by doing (A * cond1).\r\nThat is, <pre> if(A && cond2) = A, else A = 0. </pre>\r\n\r\nHence the next state can be computed by:\r\n<pre>A = A * cond1 + cond2;</pre>\r\n\r\nAnd this is what ArrayFire is best at. Given its powerful API of element-wise operations and image processing algorithms, implementing the Game of Life is a breeze. Below is the entire ArrayFire code that is required to run Game of Life.\r\n\r\n<pre>\r\n// Initialize the kernel array just once\r\nstatic const float h_kernel[] = {1, 1, 1,\r\n                                 1, 0, 1,\r\n                                 1, 1, 1};\r\nstatic const af::array kernel(3, 3, h_kernel, af::afHost);\r\nint wId = -1;\r\n\r\n// Generate a random starting state\r\nstatic const int game_w = 100, game_h = 100;\r\narray state = (af::randu(game_h, game_w, f32) > 0.33).as(f32);  // Generates a 0s and 1s array based on random values\r\nwhile(wId != -2) {\r\n     // Convolve gets neighbors\r\n     af::array nHood = convolve(state, kernel, false);\r\n\r\n     // Generate conditions for life\r\n     af::array C0 = (nHood == 2);\r\n     af::array C1 = (nHood == 3);\r\n\r\n     // Update state\r\n     state = state * C0 + C1;\r\n     \r\n     // Display\r\n     wId = image(state, wId, \"Conway Using ArrayFire\");\r\n}\r\n</pre>\r\n\r\n<iframe src=\"http://gfycat.com/ifr/ChiefCheeryChrysalis\" frameborder=\"0\" scrolling=\"no\" width=\"448\" height=\"360\" style=\"-webkit-backface-visibility: hidden;-webkit-transform: scale(1);\" ></iframe>\r\n\r\nThis code is fully platform independent as it uses ArrayFire.\r\n\r\nLet us know if you have made any cool applications using ArrayFire.','Conway\'s Game of Life using ArrayFire','','inherit','open','open','','7579-revision-v1','','','2015-01-08 17:48:54','2015-01-08 17:48:54','',7579,'http://sandbox.arrayfire.com/7579-revision-v1/',0,'revision','',0),(7665,7,'2015-01-12 16:38:47','2015-01-12 16:38:47','<div>The year 2014 was a big one for us! Before we get too far into 2015, we thought we\'d share the most popular posts of 2014.</div>\r\n<div></div>\r\n<div>Without further adieu, we give you the TOP TEN ARRAYFIRE BLOG POSTS OF 2014:</div>\r\n<div></div>\r\n<div>\r\n<div> 10. <a href=\"http://sandbox.arrayfire.com/new-features-arrayfire/\">New Features in ArrayFire</a>: In which we discuss some of the bigger changes and additions to ArrayFire.</div>\r\n<div></div>\r\n<div>9. <a href=\"http://sandbox.arrayfire.com/remote-off-screen-rendering-with-opengl/\">Remote Off-screen Rendering with OpenG</a>L: In which we have compiled a list of steps that users can use to run full profile OpenGL applications over SSH on remote systems without a display.</div>\r\n<div></div>\r\n<div>8. <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">Computer Vision ArrayFire—Part 1: Feature Detection</a>: In which we share some of our current benchmarks for Harris corner detector and FAST feature detector, and compare the performance of our implementation of these functions against the same functions in OpenCV, one of the best code references for computer vision.</div>\r\n<div></div>\r\n<div>7. <a href=\"http://sandbox.arrayfire.com/zero-copy-on-tegra-k1/\">Zero Copy on Tegra K1</a>: In which we explore the utility of zero copy access on the Tegra K1 processor.</div>\r\n<div></div>\r\n<div>6. <a href=\"http://sandbox.arrayfire.com/cross-compile-to-windows-from-linux/\">Cross Compile to Windows from Linux:</a> In which we cover a quick way to get a Windows build of platform independent code that you might already have running in Linux.</div>\r\n<div></div>\r\n<div>5. <a href=\"http://sandbox.arrayfire.com/arrayfire-is-now-open-source/\">ArrayFire is Now Open Source</a>: In which we announce the open sourcing of ArrayFire!</div>\r\n<div></div>\r\n<div>4. <a href=\"http://sandbox.arrayfire.com/quest-for-the-smallest-opencl-program/\">Quest for the Smallest OpenCL Program</a>: In which Umar searches for the smallest OpenCL program, with a focus on simplicity and readability.</div>\r\n<div></div>\r\n<div>3. <a href=\"http://sandbox.arrayfire.com/opencl-on-mobile-devices/\">OpenCL on Mobile Devices</a>: In which we share a consolidated list of OpenCL supported Android devices.</div>\r\n<div></div>\r\n<div>2. <a href=\"http://sandbox.arrayfire.com/arrayfire-on-nvidia-tegra-tk1/\">Image Processing Benchmarks on NVIDIA Jetson TK1</a>: In which we look at benchmarks of the following ArrayFire image processing functions on an ARM device: erosion/dilation, median filter, resize, histogram, bilateral filter, and convolution.</div>\r\n<div></div>\r\n1. <a href=\"http://sandbox.arrayfire.com/getting-started-with-opencl-on-android/\">Getting Started with OpenCL on Android</a>: In which we review how to do image processing on camera feed on Android devices using OpenCL.</div>\r\n<div></div>\r\n<div>Enjoy the reads! Here\'s to an equally momentous 2015!</div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>','The ArrayFire Blog\'s Best of 2014','','inherit','open','open','','7660-revision-v1','','','2015-01-12 16:38:47','2015-01-12 16:38:47','',7660,'http://sandbox.arrayfire.com/7660-revision-v1/',0,'revision','',0),(7666,7,'2015-01-12 16:39:29','2015-01-12 16:39:29','<div>The year 2014 was a big one for us! Before we get too far into 2015, we thought we\'d share the most popular posts of 2014.</div>\r\n<div></div>\r\n<div></div>\r\n<div>Without further adieu, we give you the TOP TEN ARRAYFIRE BLOG POSTS OF 2014:</div>\r\n<div></div>\r\n<div></div>\r\n<div>\r\n<div> 10. <a href=\"http://sandbox.arrayfire.com/new-features-arrayfire/\">New Features in ArrayFire</a>: In which we discuss some of the bigger changes and additions to ArrayFire.</div>\r\n<div></div>\r\n<div>9. <a href=\"http://sandbox.arrayfire.com/remote-off-screen-rendering-with-opengl/\">Remote Off-screen Rendering with OpenG</a>L: In which we have compiled a list of steps that users can use to run full profile OpenGL applications over SSH on remote systems without a display.</div>\r\n<div></div>\r\n<div>8. <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">Computer Vision ArrayFire—Part 1: Feature Detection</a>: In which we share some of our current benchmarks for Harris corner detector and FAST feature detector, and compare the performance of our implementation of these functions against the same functions in OpenCV, one of the best code references for computer vision.</div>\r\n<div></div>\r\n<div>7. <a href=\"http://sandbox.arrayfire.com/zero-copy-on-tegra-k1/\">Zero Copy on Tegra K1</a>: In which we explore the utility of zero copy access on the Tegra K1 processor.</div>\r\n<div></div>\r\n<div>6. <a href=\"http://sandbox.arrayfire.com/cross-compile-to-windows-from-linux/\">Cross Compile to Windows from Linux:</a> In which we cover a quick way to get a Windows build of platform independent code that you might already have running in Linux.</div>\r\n<div></div>\r\n<div>5. <a href=\"http://sandbox.arrayfire.com/arrayfire-is-now-open-source/\">ArrayFire is Now Open Source</a>: In which we announce the open sourcing of ArrayFire!</div>\r\n<div></div>\r\n<div>4. <a href=\"http://sandbox.arrayfire.com/quest-for-the-smallest-opencl-program/\">Quest for the Smallest OpenCL Program</a>: In which Umar searches for the smallest OpenCL program, with a focus on simplicity and readability.</div>\r\n<div></div>\r\n<div>3. <a href=\"http://sandbox.arrayfire.com/opencl-on-mobile-devices/\">OpenCL on Mobile Devices</a>: In which we share a consolidated list of OpenCL supported Android devices.</div>\r\n<div></div>\r\n<div>2. <a href=\"http://sandbox.arrayfire.com/arrayfire-on-nvidia-tegra-tk1/\">Image Processing Benchmarks on NVIDIA Jetson TK1</a>: In which we look at benchmarks of the following ArrayFire image processing functions on an ARM device: erosion/dilation, median filter, resize, histogram, bilateral filter, and convolution.</div>\r\n<div></div>\r\n1. <a href=\"http://sandbox.arrayfire.com/getting-started-with-opencl-on-android/\">Getting Started with OpenCL on Android</a>: In which we review how to do image processing on camera feed on Android devices using OpenCL.\r\n\r\n</div>\r\n<div></div>\r\n<div>Enjoy the reads! Here\'s to an equally momentous 2015!</div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>','The ArrayFire Blog\'s Best of 2014','','inherit','open','open','','7660-revision-v1','','','2015-01-12 16:39:29','2015-01-12 16:39:29','',7660,'http://sandbox.arrayfire.com/7660-revision-v1/',0,'revision','',0),(7667,7,'2015-01-12 16:40:51','2015-01-12 16:40:51','<div>The year 2014 was a big one for us! Before we get too far into 2015, we thought we\'d share the most popular posts of 2014.</div>\r\n<div></div>\r\n<div> So, without further adieu, we give you the TOP TEN ARRAYFIRE BLOG POSTS OF 2014:</div>\r\n<div></div>\r\n<div>\r\n<div> 10. <a href=\"http://sandbox.arrayfire.com/new-features-arrayfire/\">New Features in ArrayFire</a>: In which we discuss some of the bigger changes and additions to ArrayFire.</div>\r\n<div></div>\r\n<div>9. <a href=\"http://sandbox.arrayfire.com/remote-off-screen-rendering-with-opengl/\">Remote Off-screen Rendering with OpenG</a>L: In which we have compiled a list of steps that users can use to run full profile OpenGL applications over SSH on remote systems without a display.</div>\r\n<div></div>\r\n<div>8. <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">Computer Vision ArrayFire—Part 1: Feature Detection</a>: In which we share some of our current benchmarks for Harris corner detector and FAST feature detector, and compare the performance of our implementation of these functions against the same functions in OpenCV, one of the best code references for computer vision.</div>\r\n<div></div>\r\n<div>7. <a href=\"http://sandbox.arrayfire.com/zero-copy-on-tegra-k1/\">Zero Copy on Tegra K1</a>: In which we explore the utility of zero copy access on the Tegra K1 processor.</div>\r\n<div></div>\r\n<div>6. <a href=\"http://sandbox.arrayfire.com/cross-compile-to-windows-from-linux/\">Cross Compile to Windows from Linux:</a> In which we cover a quick way to get a Windows build of platform independent code that you might already have running in Linux.</div>\r\n<div></div>\r\n<div>5. <a href=\"http://sandbox.arrayfire.com/arrayfire-is-now-open-source/\">ArrayFire is Now Open Source</a>: In which we announce the open sourcing of ArrayFire!</div>\r\n<div></div>\r\n<div>4. <a href=\"http://sandbox.arrayfire.com/quest-for-the-smallest-opencl-program/\">Quest for the Smallest OpenCL Program</a>: In which Umar searches for the smallest OpenCL program, with a focus on simplicity and readability.</div>\r\n<div></div>\r\n<div>3. <a href=\"http://sandbox.arrayfire.com/opencl-on-mobile-devices/\">OpenCL on Mobile Devices</a>: In which we share a consolidated list of OpenCL supported Android devices.</div>\r\n<div></div>\r\n<div>2. <a href=\"http://sandbox.arrayfire.com/arrayfire-on-nvidia-tegra-tk1/\">Image Processing Benchmarks on NVIDIA Jetson TK1</a>: In which we look at benchmarks of the following ArrayFire image processing functions on an ARM device: erosion/dilation, median filter, resize, histogram, bilateral filter, and convolution.</div>\r\n<div></div>\r\n<div>1. <a href=\"http://sandbox.arrayfire.com/getting-started-with-opencl-on-android/\">Getting Started with OpenCL on Android</a>: In which we review how to do image processing on camera feed on Android devices using OpenCL.</div>\r\n</div>\r\n<div></div>\r\n<div>Enjoy the reads! Here\'s to an equally momentous 2015!</div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>','The ArrayFire Blog\'s Best of 2014','','inherit','open','open','','7660-revision-v1','','','2015-01-12 16:40:51','2015-01-12 16:40:51','',7660,'http://sandbox.arrayfire.com/7660-revision-v1/',0,'revision','',0),(7668,7,'2015-01-12 16:42:16','2015-01-12 16:42:16','The year 2014 was a big one for us! Before we get too far into 2015, we thought we\'d share the most popular posts of 2014.\r\n\r\nSo, without further adieu, we give you the TOP TEN ARRAYFIRE BLOG POSTS OF 2014:</div>\r\n\r\n10. <a href=\"http://sandbox.arrayfire.com/new-features-arrayfire/\">New Features in ArrayFire</a>: In which we discuss some of the bigger changes and additions to ArrayFire.\r\n\r\n9. <a href=\"http://sandbox.arrayfire.com/remote-off-screen-rendering-with-opengl/\">Remote Off-screen Rendering with OpenG</a>L: In which we have compiled a list of steps that users can use to run full profile OpenGL applications over SSH on remote systems without a display.\r\n\r\n8. <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">Computer Vision ArrayFire—Part 1: Feature Detection</a>: In which we share some of our current benchmarks for Harris corner detector and FAST feature detector, and compare the performance of our implementation of these functions against the same functions in OpenCV, one of the best code references for computer vision.</div>\r\n<div></div>\r\n<div>7. <a href=\"http://sandbox.arrayfire.com/zero-copy-on-tegra-k1/\">Zero Copy on Tegra K1</a>: In which we explore the utility of zero copy access on the Tegra K1 processor.</div>\r\n<div></div>\r\n<div>6. <a href=\"http://sandbox.arrayfire.com/cross-compile-to-windows-from-linux/\">Cross Compile to Windows from Linux:</a> In which we cover a quick way to get a Windows build of platform independent code that you might already have running in Linux.</div>\r\n<div></div>\r\n<div>5. <a href=\"http://sandbox.arrayfire.com/arrayfire-is-now-open-source/\">ArrayFire is Now Open Source</a>: In which we announce the open sourcing of ArrayFire!</div>\r\n<div></div>\r\n<div>4. <a href=\"http://sandbox.arrayfire.com/quest-for-the-smallest-opencl-program/\">Quest for the Smallest OpenCL Program</a>: In which Umar searches for the smallest OpenCL program, with a focus on simplicity and readability.</div>\r\n<div></div>\r\n<div>3. <a href=\"http://sandbox.arrayfire.com/opencl-on-mobile-devices/\">OpenCL on Mobile Devices</a>: In which we share a consolidated list of OpenCL supported Android devices.</div>\r\n<div></div>\r\n<div>2. <a href=\"http://sandbox.arrayfire.com/arrayfire-on-nvidia-tegra-tk1/\">Image Processing Benchmarks on NVIDIA Jetson TK1</a>: In which we look at benchmarks of the following ArrayFire image processing functions on an ARM device: erosion/dilation, median filter, resize, histogram, bilateral filter, and convolution.</div>\r\n<div></div>\r\n<div>1. <a href=\"http://sandbox.arrayfire.com/getting-started-with-opencl-on-android/\">Getting Started with OpenCL on Android</a>: In which we review how to do image processing on camera feed on Android devices using OpenCL.</div>\r\n</div>\r\n<div></div>\r\n<div>Enjoy the reads! Here\'s to an equally momentous 2015!</div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>','The ArrayFire Blog\'s Best of 2014','','inherit','open','open','','7660-revision-v1','','','2015-01-12 16:42:16','2015-01-12 16:42:16','',7660,'http://sandbox.arrayfire.com/7660-revision-v1/',0,'revision','',0),(7669,7,'2015-01-12 16:42:32','2015-01-12 16:42:32','The year 2014 was a big one for us! Before we get too far into 2015, we thought we\'d share the most popular posts of 2014.\r\n\r\nSo, without further adieu, we give you the TOP TEN ARRAYFIRE BLOG POSTS OF 2014:\r\n\r\n10. <a href=\"http://sandbox.arrayfire.com/new-features-arrayfire/\">New Features in ArrayFire</a>: In which we discuss some of the bigger changes and additions to ArrayFire.\r\n\r\n9. <a href=\"http://sandbox.arrayfire.com/remote-off-screen-rendering-with-opengl/\">Remote Off-screen Rendering with OpenG</a>L: In which we have compiled a list of steps that users can use to run full profile OpenGL applications over SSH on remote systems without a display.\r\n\r\n8. <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">Computer Vision ArrayFire—Part 1: Feature Detection</a>: In which we share some of our current benchmarks for Harris corner detector and FAST feature detector, and compare the performance of our implementation of these functions against the same functions in OpenCV, one of the best code references for computer vision.</div>\r\n<div></div>\r\n<div>7. <a href=\"http://sandbox.arrayfire.com/zero-copy-on-tegra-k1/\">Zero Copy on Tegra K1</a>: In which we explore the utility of zero copy access on the Tegra K1 processor.</div>\r\n<div></div>\r\n<div>6. <a href=\"http://sandbox.arrayfire.com/cross-compile-to-windows-from-linux/\">Cross Compile to Windows from Linux:</a> In which we cover a quick way to get a Windows build of platform independent code that you might already have running in Linux.</div>\r\n<div></div>\r\n<div>5. <a href=\"http://sandbox.arrayfire.com/arrayfire-is-now-open-source/\">ArrayFire is Now Open Source</a>: In which we announce the open sourcing of ArrayFire!</div>\r\n<div></div>\r\n<div>4. <a href=\"http://sandbox.arrayfire.com/quest-for-the-smallest-opencl-program/\">Quest for the Smallest OpenCL Program</a>: In which Umar searches for the smallest OpenCL program, with a focus on simplicity and readability.</div>\r\n<div></div>\r\n<div>3. <a href=\"http://sandbox.arrayfire.com/opencl-on-mobile-devices/\">OpenCL on Mobile Devices</a>: In which we share a consolidated list of OpenCL supported Android devices.</div>\r\n<div></div>\r\n<div>2. <a href=\"http://sandbox.arrayfire.com/arrayfire-on-nvidia-tegra-tk1/\">Image Processing Benchmarks on NVIDIA Jetson TK1</a>: In which we look at benchmarks of the following ArrayFire image processing functions on an ARM device: erosion/dilation, median filter, resize, histogram, bilateral filter, and convolution.</div>\r\n<div></div>\r\n<div>1. <a href=\"http://sandbox.arrayfire.com/getting-started-with-opencl-on-android/\">Getting Started with OpenCL on Android</a>: In which we review how to do image processing on camera feed on Android devices using OpenCL.</div>\r\n</div>\r\n<div></div>\r\n<div>Enjoy the reads! Here\'s to an equally momentous 2015!</div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>\r\n<div></div>','The ArrayFire Blog\'s Best of 2014','','inherit','open','open','','7660-revision-v1','','','2015-01-12 16:42:32','2015-01-12 16:42:32','',7660,'http://sandbox.arrayfire.com/7660-revision-v1/',0,'revision','',0),(7670,7,'2015-01-12 16:44:06','2015-01-12 16:44:06','The year 2014 was a big one for us! Before we get too far into 2015, we thought we\'d share the most popular posts of 2014.\r\n\r\nSo, without further adieu, we give you the TOP TEN ARRAYFIRE BLOG POSTS OF 2014:\r\n\r\n10. <a href=\"http://sandbox.arrayfire.com/new-features-arrayfire/\">New Features in ArrayFire</a>: In which we discuss some of the bigger changes and additions to ArrayFire.\r\n\r\n9. <a href=\"http://sandbox.arrayfire.com/remote-off-screen-rendering-with-opengl/\">Remote Off-screen Rendering with OpenG</a>L: In which we have compiled a list of steps that users can use to run full profile OpenGL applications over SSH on remote systems without a display.\r\n\r\n8. <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">Computer Vision ArrayFire—Part 1: Feature Detection</a>: In which we share some of our current benchmarks for Harris corner detector and FAST feature detector, and compare the performance of our implementation of these functions against the same functions in OpenCV, one of the best code references for computer vision.\r\n\r\n7. <a href=\"http://sandbox.arrayfire.com/zero-copy-on-tegra-k1/\">Zero Copy on Tegra K1</a>: In which we explore the utility of zero copy access on the Tegra K1 processor.\r\n\r\n6. <a href=\"http://sandbox.arrayfire.com/cross-compile-to-windows-from-linux/\">Cross Compile to Windows from Linux:</a> In which we cover a quick way to get a Windows build of platform independent code that you might already have running in Linux.\r\n\r\n5. <a href=\"http://sandbox.arrayfire.com/arrayfire-is-now-open-source/\">ArrayFire is Now Open Source</a>: In which we announce the open sourcing of ArrayFire!\r\n\r\n4. <a href=\"http://sandbox.arrayfire.com/quest-for-the-smallest-opencl-program/\">Quest for the Smallest OpenCL Program</a>: In which Umar searches for the smallest OpenCL program, with a focus on simplicity and readability.\r\n\r\n3. <a href=\"http://sandbox.arrayfire.com/opencl-on-mobile-devices/\">OpenCL on Mobile Devices</a>: In which we share a consolidated list of OpenCL supported Android devices.\r\n\r\n2. <a href=\"http://sandbox.arrayfire.com/arrayfire-on-nvidia-tegra-tk1/\">Image Processing Benchmarks on NVIDIA Jetson TK1</a>: In which we look at benchmarks of the following ArrayFire image processing functions on an ARM device: erosion/dilation, median filter, resize, histogram, bilateral filter, and convolution.\r\n\r\n1. <a href=\"http://sandbox.arrayfire.com/getting-started-with-opencl-on-android/\">Getting Started with OpenCL on Android</a>: In which we review how to do image processing on camera feed on Android devices using OpenCL.\r\n\r\nEnjoy the reads! Here\'s to an equally momentous 2015!','The ArrayFire Blog\'s Best of 2014','','inherit','open','open','','7660-revision-v1','','','2015-01-12 16:44:06','2015-01-12 16:44:06','',7660,'http://sandbox.arrayfire.com/7660-revision-v1/',0,'revision','',0),(7671,7,'2015-01-12 16:44:49','2015-01-12 16:44:49','The year 2014 was a big one for us! Before we get too far into 2015, we thought we\'d share the most popular posts of 2014.\r\n\r\nSo, without further adieu, we give you the TOP TEN ARRAYFIRE BLOG POSTS OF 2014:\r\n\r\n10. <a href=\"http://sandbox.arrayfire.com/new-features-arrayfire/\">New Features in ArrayFire</a>: In which we discuss some of the bigger changes and additions to ArrayFire.\r\n\r\n9. <a href=\"http://sandbox.arrayfire.com/remote-off-screen-rendering-with-opengl/\">Remote Off-screen Rendering with OpenGL</a>: In which we have compiled a list of steps that users can use to run full profile OpenGL applications over SSH on remote systems without a display.\r\n\r\n8. <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">Computer Vision ArrayFire—Part 1: Feature Detection</a>: In which we share some of our current benchmarks for Harris corner detector and FAST feature detector, and compare the performance of our implementation of these functions against the same functions in OpenCV, one of the best code references for computer vision.\r\n\r\n7. <a href=\"http://sandbox.arrayfire.com/zero-copy-on-tegra-k1/\">Zero Copy on Tegra K1</a>: In which we explore the utility of zero copy access on the Tegra K1 processor.\r\n\r\n6. <a href=\"http://sandbox.arrayfire.com/cross-compile-to-windows-from-linux/\">Cross Compile to Windows from Linux:</a> In which we cover a quick way to get a Windows build of platform independent code that you might already have running in Linux.\r\n\r\n5. <a href=\"http://sandbox.arrayfire.com/arrayfire-is-now-open-source/\">ArrayFire is Now Open Source</a>: In which we announce the open sourcing of ArrayFire!\r\n\r\n4. <a href=\"http://sandbox.arrayfire.com/quest-for-the-smallest-opencl-program/\">Quest for the Smallest OpenCL Program</a>: In which Umar searches for the smallest OpenCL program, with a focus on simplicity and readability.\r\n\r\n3. <a href=\"http://sandbox.arrayfire.com/opencl-on-mobile-devices/\">OpenCL on Mobile Devices</a>: In which we share a consolidated list of OpenCL supported Android devices.\r\n\r\n2. <a href=\"http://sandbox.arrayfire.com/arrayfire-on-nvidia-tegra-tk1/\">Image Processing Benchmarks on NVIDIA Jetson TK1</a>: In which we look at benchmarks of the following ArrayFire image processing functions on an ARM device: erosion/dilation, median filter, resize, histogram, bilateral filter, and convolution.\r\n\r\n1. <a href=\"http://sandbox.arrayfire.com/getting-started-with-opencl-on-android/\">Getting Started with OpenCL on Android</a>: In which we review how to do image processing on camera feed on Android devices using OpenCL.\r\n\r\nEnjoy the reads! Here\'s to an equally momentous 2015!','The ArrayFire Blog\'s Best of 2014','','inherit','open','open','','7660-revision-v1','','','2015-01-12 16:44:49','2015-01-12 16:44:49','',7660,'http://sandbox.arrayfire.com/7660-revision-v1/',0,'revision','',0),(7672,7,'2015-01-12 18:38:16','2015-01-12 18:38:16','The year 2014 was a big one for us! Before we get too far into 2015, we thought we\'d share the most popular posts of 2014.\r\n\r\nSo, without further adieu, we give you the TOP TEN ARRAYFIRE BLOG POSTS OF 2014:\r\n\r\n1. <a href=\"http://sandbox.arrayfire.com/getting-started-with-opencl-on-android/\">Getting Started with OpenCL on Android</a>: In which we review how to do image processing on camera feed on Android devices using OpenCL.\r\n\r\n2. <a href=\"http://sandbox.arrayfire.com/arrayfire-on-nvidia-tegra-tk1/\">Image Processing Benchmarks on NVIDIA Jetson TK1</a>: In which we look at benchmarks of the following ArrayFire image processing functions on an ARM device: erosion/dilation, median filter, resize, histogram, bilateral filter, and convolution.\r\n\r\n3. <a href=\"http://sandbox.arrayfire.com/opencl-on-mobile-devices/\">OpenCL on Mobile Devices</a>: In which we share a consolidated list of OpenCL supported Android devices.\r\n\r\n4. <a href=\"http://sandbox.arrayfire.com/quest-for-the-smallest-opencl-program/\">Quest for the Smallest OpenCL Program</a>: In which Umar searches for the smallest OpenCL program, with a focus on simplicity and readability.\r\n\r\n5. <a href=\"http://sandbox.arrayfire.com/arrayfire-is-now-open-source/\">ArrayFire is Now Open Source</a>: In which we announce the open sourcing of ArrayFire!\r\n\r\n6. <a href=\"http://sandbox.arrayfire.com/cross-compile-to-windows-from-linux/\">Cross Compile to Windows from Linux:</a> In which we cover a quick way to get a Windows build of platform independent code that you might already have running in Linux.\r\n\r\n7. <a href=\"http://sandbox.arrayfire.com/zero-copy-on-tegra-k1/\">Zero Copy on Tegra K1</a>: In which we explore the utility of zero copy access on the Tegra K1 processor.\r\n\r\n8. <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">Computer Vision ArrayFire—Part 1: Feature Detection</a>: In which we share some of our current benchmarks for Harris corner detector and FAST feature detector, and compare the performance of our implementation of these functions against the same functions in OpenCV, one of the best code references for computer vision.\r\n\r\n9. <a href=\"http://sandbox.arrayfire.com/remote-off-screen-rendering-with-opengl/\">Remote Off-screen Rendering with OpenGL</a>: In which we have compiled a list of steps that users can use to run full profile OpenGL applications over SSH on remote systems without a display.\r\n\r\n10. <a href=\"http://sandbox.arrayfire.com/new-features-arrayfire/\">New Features in ArrayFire</a>: In which we discuss some of the bigger changes and additions to ArrayFire.\r\n\r\nEnjoy the reads! Here\'s to an equally momentous 2015!','The ArrayFire Blog\'s Best of 2014','','inherit','open','open','','7660-revision-v1','','','2015-01-12 18:38:16','2015-01-12 18:38:16','',7660,'http://sandbox.arrayfire.com/7660-revision-v1/',0,'revision','',0),(7673,7,'2015-01-12 18:39:41','2015-01-12 18:39:41','The year 2014 was a big one for us! Before we get too far into 2015, we thought we\'d share the most popular posts of 2014.\r\n\r\nSo, without further adieu, we give you the TOP TEN ARRAYFIRE BLOG POSTS OF 2014:\r\n\r\n<strong>1. <a href=\"http://sandbox.arrayfire.com/getting-started-with-opencl-on-android/\">Getting Started with OpenCL on Android</a>:</strong> In which we review how to do image processing on camera feed on Android devices using OpenCL.\r\n\r\n<strong>2. <a href=\"http://sandbox.arrayfire.com/arrayfire-on-nvidia-tegra-tk1/\">Image Processing Benchmarks on NVIDIA Jetson TK1</a>:</strong> In which we look at benchmarks of the following ArrayFire image processing functions on an ARM device: erosion/dilation, median filter, resize, histogram, bilateral filter, and convolution.\r\n\r\n<strong>3. <a href=\"http://sandbox.arrayfire.com/opencl-on-mobile-devices/\">OpenCL on Mobile Devices</a>:</strong> In which we share a consolidated list of OpenCL supported Android devices.\r\n\r\n<strong>4. <a href=\"http://sandbox.arrayfire.com/quest-for-the-smallest-opencl-program/\">Quest for the Smallest OpenCL Program</a>:</strong> In which Umar searches for the smallest OpenCL program, with a focus on simplicity and readability.\r\n\r\n<strong>5. <a href=\"http://sandbox.arrayfire.com/arrayfire-is-now-open-source/\">ArrayFire is Now Open Source</a>:</strong> In which we announce the open sourcing of ArrayFire!\r\n\r\n<strong>6. <a href=\"http://sandbox.arrayfire.com/cross-compile-to-windows-from-linux/\">Cross Compile to Windows from Linux:</a></strong> In which we cover a quick way to get a Windows build of platform independent code that you might already have running in Linux.\r\n\r\n<strong>7. <a href=\"http://sandbox.arrayfire.com/zero-copy-on-tegra-k1/\">Zero Copy on Tegra K1</a>:</strong> In which we explore the utility of zero copy access on the Tegra K1 processor.\r\n\r\n<strong>8. <a href=\"http://sandbox.arrayfire.com/computer-vision-arrayfire-part-1/\">Computer Vision ArrayFire—Part 1: Feature Detection</a>:</strong> In which we share some of our current benchmarks for Harris corner detector and FAST feature detector, and compare the performance of our implementation of these functions against the same functions in OpenCV, one of the best code references for computer vision.\r\n\r\n<strong>9. <a href=\"http://sandbox.arrayfire.com/remote-off-screen-rendering-with-opengl/\">Remote Off-screen Rendering with OpenGL</a>:</strong> In which we have compiled a list of steps that users can use to run full profile OpenGL applications over SSH on remote systems without a display.\r\n\r\n<strong>10. <a href=\"http://sandbox.arrayfire.com/new-features-arrayfire/\">New Features in ArrayFire</a>:</strong> In which we discuss some of the bigger changes and additions to ArrayFire.\r\n\r\nEnjoy the reads! Here\'s to an equally momentous 2015!','The ArrayFire Blog\'s Best of 2014','','inherit','open','open','','7660-revision-v1','','','2015-01-12 18:39:41','2015-01-12 18:39:41','',7660,'http://sandbox.arrayfire.com/7660-revision-v1/',0,'revision','',0),(7678,7,'2015-01-28 22:43:30','2015-01-28 22:43:30','[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=\"http://software.intel.com/en-us/articles/intel-mkl/\" target=\"_new\">Intel Math Kernel Library</a>, <a href=\"http://software.intel.com/en-us/articles/intel-ipp/\" target=\"_new\">Intel Integrated Performance Primitives</a>, <a href=\"http://eigen.tuxfamily.org/index.php?title=Main_Page\" target=\"_new\">Eigen</a>, and <a href=\"http://arma.sourceforge.net/\" target=\"_new\">Armadillo</a>.\r\n\r\n[button type=\"flat\" shape=\"rounded\" size=\"regular\" href=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://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=\"http://www.sandbox.arrayfire.com/docs/index.htm\">documentation</a>. And don’t forget to visit our <a href=\"http://sandbox.arrayfire.com/forums\">forums</a> to connect with the ArrayFire community and pick up acceleration tips and best practices.\r\n\r\n[/column]\r\n\r\n[column type=\"one-half\" last=\"true\"][gap size=\"3%\"][counter num_start=\"0\" num_end=\"911\" num_speed=\"5000\"  num_color=\"#f08027\" text_below=\"stars\" text_color=\"#212c43\"]\r\n\r\n[counter num_start=\"0\" num_end=\"82\" num_speed=\"5000\"  num_color=\"#f08027\"  text_below=\"forks\" text_color=\"#212c43\"]\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=\"1062\" num_speed=\"5000\"  num_color=\"#f08027\"  text_below=\"commits\" text_color=\"#212c43\"]\r\n\r\n[/column][/content_band]','Why ArrayFire?','','inherit','open','open','','7054-revision-v1','','','2015-01-28 22:43:30','2015-01-28 22:43:30','',7054,'http://sandbox.arrayfire.com/7054-revision-v1/',0,'revision','',0),(7679,7,'2015-01-30 21:01:58','2015-01-30 21:01:58','<p>[content_band inner_container=\"true\" no_margin=\"true\" border=\"top\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-fifth\"].[/column][column type=\"three-fifths\"][custom_headline type=\"left\" level=\"h3\"]Glasses.com App with 3Dfit Technology[/custom_headline][/column][column type=\"one-fifth\" last=\"true\"].[/column][gap size=\"3%\"]</p>\r\n<p>[column type=\"one-fifth\"].[/column][column type=\"three-fifths\"]<img class=\"alignright wp-image-6894 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/10/glasses-logo-promo-01.png\" alt=\"glasses logo, promo-01\" width=\"360\" height=\"120\" />Many find the experience of purchasing new glasses stressful. Even simply trying on frames can be uncomfortable when done in a public setting. Glasses.com set out to improve the experience by providing customers a way of virtually trying on glasses frames in the comfort of their homes via smart phone or tablet.</p>\r\n<p>The Glasses.com app takes a picture of the user’s face, creates a 3D model of facial features, and virtually places selected frames on the user’s 3D image. The user is then free to view the 3D image from a variety of angles.</p>\r\n<p>The application relies on computer vision to recognize the features of a user’s face and then generate an accurate, high-fidelity, 3D model of that face. Virtual frames can then be positioned on the 3D model.</p>\r\n<blockquote><p>This app is amazing! It takes a 3D video of your face in just a few steps, and the rendering is spot on! RayBan Aviators are always a little big on me, and the app showed them on my face exactly as they fit in the store! —davidandrew</p>\r\n</blockquote>\r\n<h4>Mission</h4>\r\n<p>Glasses.com brought our engineers an excellent, fully-functioning version of the application; they simply wanted it accelerated. The app took full advantage of the CPU, which—left unchanged—would necessitate Glasses.com’s purchasing and managing a large amount of hardware. Further, the application was running at a slow thirty seconds per session, resulting in a sub-optimal user experience. Our engineers were tasked with parallelizing the process and reducing the session runtime.</p>\r\n<p>Glasses.com has several machines they are using in production. Their main setup consists of a Haswell/Ivy Bridge CPU paired with a GTX 690. The machine is able to run 4 processes concurrently. In the past, Glasses.com used a 32 core Intel process with a couple of K20X. They are still using these machines, but they are not the main configuration. They are also making use of the Amazon EC2 instances in case they exceed internal capacity.</p>\r\n<h4>Action</h4>\r\n<p>We began by analyzing the application and targeting the process which would have the greatest impact on performance.</p>\r\n<p>The most pressing concern was the rendering portion of code, which was running on the CPU. We implemented rendering in ArrayFire, which is specially optimized for CUDA GPUs. Further, we noticed that while the application was rendering-intensive, much of the rendering did not need to be precise—we could make estimations without compromising quality. This estimated rendering speedup operation was critical to the success of the project.</p>\r\n<p>We discovered further opportunities for speedup within the architecture itself. The original app processed each frame in a separate thread; we accelerated this by combining each operation into a single kernel and running that kernel once. By moving the parallelization to the GPU we effectively took advantage of the strength of that architecture.</p>\r\n<h4>Results</h4>\r\n<p>Ultimately, parallelizing the application and incorporating the ArrayFire software library accelerated the application to about ten seconds per session—roughly three times as fast as the original code, and twice as fast as the target speed. We further exceeded expectations by improving general stability when handling errors. <img class=\"aligncenter size-full wp-image-6903\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/10/glassesdotcom-benchmarks.jpg\" alt=\"glassesdotcom benchmarks\" width=\"700\" height=\"442\" /></p>\r\n<p>The improvements in speed, stability, and user experience have resonated with the application’s target market, resulting in a 3.5/5 star rating in the Apple Store.</p>\r\n<h6>About glasses.com</h6>\r\n<p>Glasses.com launched in 2011 as an online retailer of prescription and non-prescription glasses and sunglasses, carrying a wide-range of styles and name brands such as Oakley, Ray-Ban, Kate Spade, Burberry, Maui Jim, and more.[/column][column type=\"one-fifth\" last=\"true\"].[/column][/content_band]</p>\r\n','Case Study: glasses.com App with 3Dfit Technology','','inherit','open','open','','6899-revision-v1','','','2015-01-30 21:01:58','2015-01-30 21:01:58','',6899,'http://sandbox.arrayfire.com/6899-revision-v1/',0,'revision','',0),(7681,18132,'2015-03-04 14:02:14','2015-03-04 14:02:14','<div style=\"text-align: center; display: block; float: right;margin-left: 20px;margin-right: 20px;margin-bottom: 10px; text-align: justify; width: 300px; font-size: 13px; font-weight: bold\"><img width=\"300px\" src=\"https://dl.dropboxusercontent.com/u/96059047/animation.gif\"/>A C++ interpreter compiled for ARM running on an x86 EC2 instance after following the given instructions. As C++ becomes more mature and high-level, an interpreted workflow might lead to mainstream C++ <i>productivity</i> in addition to development!</div>\r\n\r\n<p>Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and a window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure via Amazon EC2.</p>\r\n\r\n<p>With our prescribed steps in place, you can always have an up-to-date development version of Cling. This allows quick testing and investigation of LLVM\'s newest features. You will also possess a development environment as a path to contributing to Cling or learning how Cling\'s innards push C++ code along.</p>\r\n\r\n<h3 id=\"background\">Background</h3>\r\n\r\n<p>Astoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C++ for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.</p>\r\n\r\n<p>Development of a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\">was undertaken by the wizards at CERN</a> starting at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\">ROOT</a> (screenshot below). The system is certainly serious as it is giving researchers a way to investigate the very fabric of the universe!</p>\r\n\r\n<p><img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" /></p>\r\n\r\n<p>Over the last 20 years, CINT fell behind the evolving C++ language. In response, individuals at CERN began work on a replacement for CINT dubbed Cling with the strategy of leveraging LLVM to stay up to date with the growing C++ specification. Up until recently, the project has been rather nascent, but now it is at the point where its functionality and build system make Cling worthwhile for use and contribution.</p>\r\n\r\n<h3 id=\"build-instructions-for-x86\">Build instructions for x86</h3>\r\n\r\n<p>We present a build procedure that leverages Amazon EC2. By using the cloud, you are guaranteed to use the exact Linux version and hardware capabilities that we did in testing. We assume that you have an Amazon EC2 account. The expected compute resource cost will be around two dollars.</p>\r\n\r\n<ol>\r\n<li><p>Create an <strong>m3.xlarge</strong> instance with the <a href=\"http://thecloudmarket.com/image/ami-aae18fc2--debian-jessie-amd64-hvm-2014-12-25-13-19-ebs\">Debian Jessie AMI (ami-aae18fc2)</a>. Be sure to grab at least <strong>32Gb</strong> of storage.</p></li>\r\n<li><p>Boot the instance and login as <strong>admin</strong>.</p></li>\r\n<li><p>Install required build packages on the instance.</p>\r\n\r\n<pre><code>sudo apt-get update\r\nsudo apt-get install build-essential git\r\n</code></pre></li>\r\n<li><p>Use <a href=\"https://raw.githubusercontent.com/karies/cling-all-in-one/master/clone.sh\">the distributed build script</a> from the Cling project to clone required source code and build an x86 version of Cling with all available cores.</p>\r\n\r\n<pre><code>wget https://raw.githubusercontent.com/karies/cling-all-in-one/master/clone.sh\r\nchmod +x clone.sh\r\n./clone.sh           # will require a few minutes to finish\r\n</code></pre>\r\n\r\n<p>...this might take some time...</p>\r\n\r\n<div style=\"text-align: center;\">\r\n  <img width=\"75%\" style=\"padding: 20px;\" src=\"https://dl.dropboxusercontent.com/u/96059047/cling_build.png\" alt=\"Building cling on an x86 EC2 instance\" />\r\n</div></li>\r\n<li><p>Take Cling for a spin!</p></li>\r\n</ol>\r\n\r\n<h3 id=\"build-instructions-for-arm\">Build instructions for ARM</h3>\r\n\r\n<p>Whereas an x86 build is readily supported by the Cling developers, building for ARM is not a standard build path. Thus, ARM build instructions are a bit more involved.</p>\r\n\r\n<ol>\r\n<li><p>Log in as <strong>admin</strong> to the (same x86) instance described.</p></li>\r\n<li><p>First, you\'ll need LLVM and Clang as they provide utilities for compilation: llvm-tblgen and clang-tblgen.</p>\r\n\r\n<pre><code>sudo apt-get install llvm clang\r\n</code></pre>\r\n\r\n<li><p>Install ARM hard-float compilation tools.</p>\r\n\r\n<pre><code>sudo apt-get update\r\n\r\n# add Embedian as an installation source\r\nsudo bash -c \'echo deb http://emdebian.org/tools/debian/ jessie main > \\\r\n              /etc/apt/sources.list.d/crosstools.list\'\r\nsudo apt-get install -y curl\r\ncurl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | sudo apt-key add -\r\n\r\n# add arm hard-float as a supported architecture\r\nsudo dpkg --add-architecture armhf\r\nsudo apt-get update\r\n\r\n# install an ARM targeted cross compiler\r\nsudo apt-get install crossbuild-essential-armhf\r\n</code></pre></li>\r\n<li><p>Install QEMU-based ARM emulation. This is a fantastic feature of newer linux kernels: ARM executables are registered with the system so that under a normal invocation, QEMU is invoked under the hood so that it seems as though ARM binaries are native.</p>\r\n\r\n<pre><code># install QEMU emulation for ARM executables\r\nsudo apt-get install qemu binfmt-support qemu-user-static\r\nsudo update-binfmts --display\r\nsudo apt-get install libc6:armhf\r\n\r\n# compile an ARM executable\r\ncat > hello.c << EOF\r\n\r\n#include <stdio.h>\r\nint main(void) { return printf(\"Hello ARM!\\n\"); }\r\nEOF\r\narm-linux-gnueabihf-gcc -static -ohello hello.c\r\n\r\n# the following should indicate an ARM exe\r\nfile hello\r\n\r\n# running the executable with no fanfare should\r\n# transparently invoke QEMU to print \"Hello ARM!\"\r\n./hello\r\n</code></pre>\r\n\r\n<p>Having ARM emulation on our fast build machine makes debugging amazingly faster.</p></li>\r\n<li><p>Install build tools: cmake and ninja.</p>\r\n\r\n<pre><code> # install cmake\r\n sudo apt-get install cmake\r\n\r\n # ninja requires a build\r\n git clone git://github.com/martine/ninja.git && cd ninja\r\n git checkout release\r\n ./configure.py --bootstrap\r\n chmod +x ninja build.ninja\r\n sudo cp ninja build.ninja /usr/bin\r\n</code></pre></li>\r\n<li><p>Clone LLVM, Clang, and Cling to the <strong>llvm</strong> directory. This directory differs from the instructions, above, so no worries if you\'re following these steps in the order of the blog post. Note the specific SHA\'s we jump to in the repositories. As of this writing, ARM support is in and out, but will hopefully materialize for good!</p>\r\n\r\n<pre><code># the following steps assume this is done on a large volume\r\n# mounted at /mnt resulting in /mnt/llvm.\r\n\r\ngit clone http://root.cern.ch/git/llvm.git\r\ncd llvm\r\ngit checkout 88c56cd6d6aec0c44e9ca5aa96b354c1261a95aa\r\ncd tools\r\ngit clone http://root.cern.ch/git/cling.git\r\ncd cling\r\ngit checkout 899a5dde32cf670605a1478bea0b2d6fd3f95bef\r\ncd ..\r\ngit clone http://root.cern.ch/git/clang.git\r\ncd clang \r\ngit checkout d649bf1a04be728fc09222d111e696fce4b55324\r\n</code></pre></li\r\n<li><p>Configure a build in a new <strong>build</strong> directory using cmake. Note the intense and carefully crafted build flags required to do a successful cross compilation. <em>This took quite a bit of debugging to lock down.</em></p>\r\n\r\n<p>Note that the following assumes that the prior step was run in <code>/mnt</code> resulting in an <code>/mnt/llvm</code> directory. Indeed, the following block assumes that it is run in the <code>/mnt</code> directory, as well.</p> \r\n\r\n<pre><code>mkdir -p build; cd build\r\ncmake -G Ninja /mnt/llvm -DCMAKE_CROSSCOMPILING=True \\\r\n                  -DCMAKE_SYSTEM_NAME=Linux \\\r\n                  -DCMAKE_SYSTEM_VERSION=1 \\\r\n                  -DCMAKE_SYSTEM_PROCESSOR=armv7 \\\r\n                  -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc \\\r\n                  -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ \\\r\n                  -DCMAKE_INSTALL_PREFIX=/mnt/build/install \\\r\n                  -DLLVM_TABLEGEN=/usr/bin/llvm-tblgen-3.5 \\\r\n                  -DCLANG_TABLEGEN=/usr/bin/clang-tblgen-3.5 \\\r\n                  -DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-gnueabihf \\\r\n                  -DLLVM_HOST_TRIPLE=arm--linux-gnueabihf \\\r\n                  -DLLVM_TARGET_ARCH=ARM \\\r\n                  -DLLVM_TARGETS_TO_BUILD=ARM \\\r\n                  -DCMAKE_CXX_FLAGS=\"\\\r\n                      -mcpu=cortex-a9 \\\r\n                      -I/usr/include/arm-linux-gnueabihf/c++/4.9 \\\r\n                      -I/usr/lib/gcc/arm-linux-gnueabihf/4.9/include \\\r\n                      -mfloat-abi=hard\"\r\n</code></pre></li>\r\n<li><p>Do a build with ninja and install to the <strong>install</strong> subdirectory. This will take a few minutes.</p>\r\n\r\n<pre><code># from the /mnt/build directory\r\nmkdir -p install\r\nninja install\r\n</code></pre></li>\r\n<li><p>Fire up Cling! You can do this directly on your Amazon EC2 instance through QEMU, but watch out - it is a tad unstable in the case of recovering from syntax errors, etc. However, you can copy what you built to an ARM machine such as a Raspberry Pi or <a href=\"http://www.solid-run.com\">Cubox</a> to take it for a whirl there, too!</p></li>\r\n<pre><code>cd /mnt/build/install/bin\r\n./cling\r\n</code></pre>\r\n<div style=\"text-align: center\">\r\n<img src=\"https://dl.dropboxusercontent.com/u/96059047/animation.gif\"/></div>\r\n</img>\r\n</ol>\r\n\r\n<p></body></html></p>\r\n','Building a C++ Interpreter (Cling) for x86 and ARM','','publish','open','open','','building-cling-for-x86-and-arm','','','2015-03-04 19:00:38','2015-03-04 19:00:38','',0,'http://sandbox.arrayfire.com/?p=7681',0,'post','',0),(7682,18132,'2015-02-02 18:38:45','2015-02-02 18:38:45','Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure on top of Amazon EC2.\r\n\r\nWith our prescribed steps in place, you can always have a development version of a C++ interpreter in place, allowing quick testing and investigation of LLVM\'s newest features. You also get a development environment for Cling if interested in contributing to the project or learning how its innards push C++ along.\r\n\r\n<h3>Background</h3>\r\n\r\nAstoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.\r\n\r\nDevelopment on a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\" target=\"_blank\">was undertaken by the wizards at CERN</a>  at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\" target=\"_blank\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\" target=\"_blank\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\" target=\"_blank\">ROOT</a>.\r\n\r\n<img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" />\r\n\r\nOver the last 20 years, CINT has fallen behind the evolving C++ language. In response, workers at CERN began work on a replacement for CINT named Cling with the strategy of leveraging LLVM tp stay up to date. Up until recently, the project has been rather nascent, but now is at the point where its functionality and build system make Cling worthwhile for use and contribution.\r\n\r\n<h3>Building for x86</h3>\r\n\r\n','Building a C++ Interpreter (Cling) for x86 and ARM','','inherit','open','open','','7681-revision-v1','','','2015-02-02 18:38:45','2015-02-02 18:38:45','',7681,'http://sandbox.arrayfire.com/7681-revision-v1/',0,'revision','',0),(7683,18132,'2015-02-02 18:40:43','2015-02-02 18:40:43','Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure on top of Amazon EC2.\r\n\r\nWith our prescribed steps in place, you can always have a development version of a C++ interpreter in place, allowing quick testing and investigation of LLVM\'s newest features. You also get a development environment for Cling if interested in contributing to the project or learning how its innards push C++ along.\r\n\r\n<h3>Background</h3>\r\n\r\nAstoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.\r\n\r\nDevelopment of a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\" target=\"_blank\">was undertaken by the wizards at CERN</a> starting at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\" target=\"_blank\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\" target=\"_blank\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\" target=\"_blank\">ROOT</a>.\r\n\r\n<img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" />\r\n\r\nOver the last 20 years, CINT has fallen behind the evolving C++ language. In response, workers at CERN began work on a replacement for CINT named Cling with the strategy of leveraging LLVM tp stay up to date. Up until recently, the project has been rather nascent, but now is at the point where its functionality and build system make Cling worthwhile for use and contribution.\r\n\r\n<h3>Building for x86</h3>\r\n\r\n','Building a C++ Interpreter (Cling) for x86 and ARM','','inherit','open','open','','7681-revision-v1','','','2015-02-02 18:40:43','2015-02-02 18:40:43','',7681,'http://sandbox.arrayfire.com/7681-revision-v1/',0,'revision','',0),(7684,18132,'2015-02-02 18:50:34','2015-02-02 18:50:34','Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure on top of Amazon EC2.\r\n\r\nWith our prescribed steps in place, you can always have a development version of a C++ interpreter in place, allowing quick testing and investigation of LLVM\'s newest features. You also get a development environment for Cling if interested in contributing to the project or learning how its innards push C++ along.\r\n\r\n<h3>Background</h3>\r\n\r\nAstoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.\r\n\r\nDevelopment of a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\" target=\"_blank\">was undertaken by the wizards at CERN</a> starting at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\" target=\"_blank\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\" target=\"_blank\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\" target=\"_blank\">ROOT</a> (screenshot below).\r\n\r\n<img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" />\r\n\r\nOver the last 20 years, CINT fell behind the evolving C++ language. In response, workers at CERN began work on a replacement for CINT dubbed Cling with the strategy of leveraging LLVM to stay up to date with the growing C++ specification. Up until recently, the project has been rather nascent, but now is at the point where its functionality and build system make Cling worthwhile for use and contribution.\r\n\r\n<h3>Building for x86</h3>\r\n\r\nWe present a build procedure leveraging Amazon EC2. By using the cloud, you are guaranteed to use the exact Linux version and hardware capabilities that we did in testing. We assume that you have an Amazon EC2 account and that you are willing to spend around two dollars on compute resources.\r\n\r\n1. Create an <pre>m3.xlarge</pre> instance with the Debian Jessie community ABI ','Building a C++ Interpreter (Cling) for x86 and ARM','','inherit','open','open','','7681-revision-v1','','','2015-02-02 18:50:34','2015-02-02 18:50:34','',7681,'http://sandbox.arrayfire.com/7681-revision-v1/',0,'revision','',0),(7685,18132,'2015-02-02 18:52:34','2015-02-02 18:52:34','Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure on via of Amazon EC2.\r\n\r\nWith our prescribed steps in place, you can always have a development version of a C++ interpreter as the code-base chugs ahead allowing quick testing and investigation of LLVM\'s newest features. You also get a development environment for Cling if interested in contributing to the project or learning how its innards push C++ along.\r\n\r\n<h3>Background</h3>\r\n\r\nAstoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.\r\n\r\nDevelopment of a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\" target=\"_blank\">was undertaken by the wizards at CERN</a> starting at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\" target=\"_blank\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\" target=\"_blank\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\" target=\"_blank\">ROOT</a> (screenshot below).\r\n\r\n<img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" />\r\n\r\nOver the last 20 years, CINT fell behind the evolving C++ language. In response, workers at CERN began work on a replacement for CINT dubbed Cling with the strategy of leveraging LLVM to stay up to date with the growing C++ specification. Up until recently, the project has been rather nascent, but now is at the point where its functionality and build system make Cling worthwhile for use and contribution.\r\n\r\n<h3>Building for x86</h3>\r\n\r\nWe present a build procedure leveraging Amazon EC2. By using the cloud, you are guaranteed to use the exact Linux version and hardware capabilities that we did in testing. We assume that you have an Amazon EC2 account and that you are willing to spend around two dollars on compute resources.\r\n\r\n1. Create an <pre>m3.xlarge</pre> instance with the Debian Jessie community ABI ','Building a C++ Interpreter (Cling) for x86 and ARM','','inherit','open','open','','7681-revision-v1','','','2015-02-02 18:52:34','2015-02-02 18:52:34','',7681,'http://sandbox.arrayfire.com/7681-revision-v1/',0,'revision','',0),(7686,18132,'2015-02-02 18:52:51','2015-02-02 18:52:51','Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure via of Amazon EC2.\r\n\r\nWith our prescribed steps in place, you can always have a development version of a C++ interpreter as the code-base chugs ahead allowing quick testing and investigation of LLVM\'s newest features. You also get a development environment for Cling if interested in contributing to the project or learning how its innards push C++ along.\r\n\r\n<h3>Background</h3>\r\n\r\nAstoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.\r\n\r\nDevelopment of a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\" target=\"_blank\">was undertaken by the wizards at CERN</a> starting at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\" target=\"_blank\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\" target=\"_blank\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\" target=\"_blank\">ROOT</a> (screenshot below).\r\n\r\n<img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" />\r\n\r\nOver the last 20 years, CINT fell behind the evolving C++ language. In response, workers at CERN began work on a replacement for CINT dubbed Cling with the strategy of leveraging LLVM to stay up to date with the growing C++ specification. Up until recently, the project has been rather nascent, but now is at the point where its functionality and build system make Cling worthwhile for use and contribution.\r\n\r\n<h3>Building for x86</h3>\r\n\r\nWe present a build procedure leveraging Amazon EC2. By using the cloud, you are guaranteed to use the exact Linux version and hardware capabilities that we did in testing. We assume that you have an Amazon EC2 account and that you are willing to spend around two dollars on compute resources.\r\n\r\n1. Create an <pre>m3.xlarge</pre> instance with the Debian Jessie community ABI ','Building a C++ Interpreter (Cling) for x86 and ARM','','inherit','open','open','','7681-revision-v1','','','2015-02-02 18:52:51','2015-02-02 18:52:51','',7681,'http://sandbox.arrayfire.com/7681-revision-v1/',0,'revision','',0),(7687,18132,'2015-02-02 18:53:01','2015-02-02 18:53:01','Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure via Amazon EC2.\r\n\r\nWith our prescribed steps in place, you can always have a development version of a C++ interpreter as the code-base chugs ahead allowing quick testing and investigation of LLVM\'s newest features. You also get a development environment for Cling if interested in contributing to the project or learning how its innards push C++ along.\r\n\r\n<h3>Background</h3>\r\n\r\nAstoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.\r\n\r\nDevelopment of a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\" target=\"_blank\">was undertaken by the wizards at CERN</a> starting at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\" target=\"_blank\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\" target=\"_blank\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\" target=\"_blank\">ROOT</a> (screenshot below).\r\n\r\n<img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" />\r\n\r\nOver the last 20 years, CINT fell behind the evolving C++ language. In response, workers at CERN began work on a replacement for CINT dubbed Cling with the strategy of leveraging LLVM to stay up to date with the growing C++ specification. Up until recently, the project has been rather nascent, but now is at the point where its functionality and build system make Cling worthwhile for use and contribution.\r\n\r\n<h3>Building for x86</h3>\r\n\r\nWe present a build procedure leveraging Amazon EC2. By using the cloud, you are guaranteed to use the exact Linux version and hardware capabilities that we did in testing. We assume that you have an Amazon EC2 account and that you are willing to spend around two dollars on compute resources.\r\n\r\n1. Create an <pre>m3.xlarge</pre> instance with the Debian Jessie community ABI ','Building a C++ Interpreter (Cling) for x86 and ARM','','inherit','open','open','','7681-revision-v1','','','2015-02-02 18:53:01','2015-02-02 18:53:01','',7681,'http://sandbox.arrayfire.com/7681-revision-v1/',0,'revision','',0),(7688,18132,'2015-02-02 18:56:55','2015-02-02 18:56:55','Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure via Amazon EC2.\r\n\r\nWith our prescribed steps in place, you can always have an up-to-date development version of Cling, the C++ interpreter. This allows quick testing and investigation of LLVM\'s newest features. You also will possess a development environment as a path to contributing to Cling or learning how its innards push C++ along.\r\n\r\n<h3>Background</h3>\r\n\r\nAstoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.\r\n\r\nDevelopment of a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\" target=\"_blank\">was undertaken by the wizards at CERN</a> starting at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\" target=\"_blank\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\" target=\"_blank\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\" target=\"_blank\">ROOT</a> (screenshot below).\r\n\r\n<img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" />\r\n\r\nOver the last 20 years, CINT fell behind the evolving C++ language. In response, workers at CERN began work on a replacement for CINT dubbed Cling with the strategy of leveraging LLVM to stay up to date with the growing C++ specification. Up until recently, the project has been rather nascent, but now is at the point where its functionality and build system make Cling worthwhile for use and contribution.\r\n\r\n<h3>Building for x86</h3>\r\n\r\nWe present a build procedure leveraging Amazon EC2. By using the cloud, you are guaranteed to use the exact Linux version and hardware capabilities that we did in testing. We assume that you have an Amazon EC2 account and that you are willing to spend around two dollars on compute resources.\r\n\r\n1. Create an <pre>m3.xlarge</pre> instance with the Debian Jessie community ABI ','Building a C++ Interpreter (Cling) for x86 and ARM','','inherit','open','open','','7681-revision-v1','','','2015-02-02 18:56:55','2015-02-02 18:56:55','',7681,'http://sandbox.arrayfire.com/7681-revision-v1/',0,'revision','',0),(7689,18132,'2015-02-02 18:57:15','2015-02-02 18:57:15','Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and a window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure via Amazon EC2.\r\n\r\nWith our prescribed steps in place, you can always have an up-to-date development version of Cling, the C++ interpreter. This allows quick testing and investigation of LLVM\'s newest features. You also will possess a development environment as a path to contributing to Cling or learning how its innards push C++ along.\r\n\r\n<h3>Background</h3>\r\n\r\nAstoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.\r\n\r\nDevelopment of a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\" target=\"_blank\">was undertaken by the wizards at CERN</a> starting at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\" target=\"_blank\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\" target=\"_blank\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\" target=\"_blank\">ROOT</a> (screenshot below).\r\n\r\n<img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" />\r\n\r\nOver the last 20 years, CINT fell behind the evolving C++ language. In response, workers at CERN began work on a replacement for CINT dubbed Cling with the strategy of leveraging LLVM to stay up to date with the growing C++ specification. Up until recently, the project has been rather nascent, but now is at the point where its functionality and build system make Cling worthwhile for use and contribution.\r\n\r\n<h3>Building for x86</h3>\r\n\r\nWe present a build procedure leveraging Amazon EC2. By using the cloud, you are guaranteed to use the exact Linux version and hardware capabilities that we did in testing. We assume that you have an Amazon EC2 account and that you are willing to spend around two dollars on compute resources.\r\n\r\n1. Create an <pre>m3.xlarge</pre> instance with the Debian Jessie community ABI ','Building a C++ Interpreter (Cling) for x86 and ARM','','inherit','open','open','','7681-revision-v1','','','2015-02-02 18:57:15','2015-02-02 18:57:15','',7681,'http://sandbox.arrayfire.com/7681-revision-v1/',0,'revision','',0),(7690,18132,'2015-02-02 18:58:13','2015-02-02 18:58:13','Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and a window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure via Amazon EC2.\r\n\r\nWith our prescribed steps in place, you can always have an up-to-date development version of Cling. This allows quick testing and investigation of LLVM\'s newest features. You also will possess a development environment as a path to contributing to Cling or learning how Cling\'s innards push C++ along.\r\n\r\n<h3>Background</h3>\r\n\r\nAstoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.\r\n\r\nDevelopment of a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\" target=\"_blank\">was undertaken by the wizards at CERN</a> starting at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\" target=\"_blank\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\" target=\"_blank\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\" target=\"_blank\">ROOT</a> (screenshot below).\r\n\r\n<img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" />\r\n\r\nOver the last 20 years, CINT fell behind the evolving C++ language. In response, workers at CERN began work on a replacement for CINT dubbed Cling with the strategy of leveraging LLVM to stay up to date with the growing C++ specification. Up until recently, the project has been rather nascent, but now is at the point where its functionality and build system make Cling worthwhile for use and contribution.\r\n\r\n<h3>Building for x86</h3>\r\n\r\nWe present a build procedure leveraging Amazon EC2. By using the cloud, you are guaranteed to use the exact Linux version and hardware capabilities that we did in testing. We assume that you have an Amazon EC2 account and that you are willing to spend around two dollars on compute resources.\r\n\r\n1. Create an <pre>m3.xlarge</pre> instance with the Debian Jessie community ABI ','Building a C++ Interpreter (Cling) for x86 and ARM','','inherit','open','open','','7681-revision-v1','','','2015-02-02 18:58:13','2015-02-02 18:58:13','',7681,'http://sandbox.arrayfire.com/7681-revision-v1/',0,'revision','',0),(7691,18132,'2015-02-02 19:00:24','2015-02-02 19:00:24','Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and a window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure via Amazon EC2.\r\n\r\nWith our prescribed steps in place, you can always have an up-to-date development version of Cling. This allows quick testing and investigation of LLVM\'s newest features. You also will possess a development environment as a path to contributing to Cling or learning how Cling\'s innards push C++ along.\r\n\r\n<h3>Background</h3>\r\n\r\nAstoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.\r\n\r\nDevelopment of a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\" target=\"_blank\">was undertaken by the wizards at CERN</a> starting at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\" target=\"_blank\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\" target=\"_blank\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\" target=\"_blank\">ROOT</a> (screenshot below).\r\n\r\n<img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" />\r\n\r\nOver the last 20 years, CINT fell behind the evolving C++ language. In response, individuals at CERN began work on a replacement for CINT dubbed Cling with the strategy of leveraging LLVM to stay up to date with the growing C++ specification. Up until recently, the project has been rather nascent, but now is at the point where its functionality and build system make Cling worthwhile for use and contribution.\r\n\r\n<h3>Building for x86</h3>\r\n\r\nWe present a build procedure leveraging Amazon EC2. By using the cloud, you are guaranteed to use the exact Linux version and hardware capabilities that we did in testing. We assume that you have an Amazon EC2 account and that you are willing to spend around two dollars on compute resources.\r\n\r\n1. Create an <pre>m3.xlarge</pre> instance with the Debian Jessie community AMI ','Building a C++ Interpreter (Cling) for x86 and ARM','','inherit','open','open','','7681-revision-v1','','','2015-02-02 19:00:24','2015-02-02 19:00:24','',7681,'http://sandbox.arrayfire.com/7681-revision-v1/',0,'revision','',0),(7692,18132,'2015-02-02 20:15:20','2015-02-02 20:15:20','Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and a window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure via Amazon EC2.\r\n\r\nWith our prescribed steps in place, you can always have an up-to-date development version of Cling. This allows quick testing and investigation of LLVM\'s newest features. You also will possess a development environment as a path to contributing to Cling or learning how Cling\'s innards push C++ along.\r\n<h3>Background</h3>\r\nAstoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.\r\n\r\nDevelopment of a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\" target=\"_blank\">was undertaken by the wizards at CERN</a> starting at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\" target=\"_blank\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\" target=\"_blank\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\" target=\"_blank\">ROOT</a> (screenshot below).\r\n\r\n<img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" />\r\n\r\nOver the last 20 years, CINT fell behind the evolving C++ language. In response, individuals at CERN began work on a replacement for CINT dubbed Cling with the strategy of leveraging LLVM to stay up to date with the growing C++ specification. Up until recently, the project has been rather nascent, but now is at the point where its functionality and build system make Cling worthwhile for use and contribution.\r\n\r\n<h3>Building for x86</h3>\r\nWe present a build procedure leveraging Amazon EC2. By using the cloud, you are guaranteed to use the exact Linux version and hardware capabilities that we did in testing. We assume that you have an Amazon EC2 account and that you are willing to spend around two dollars on compute resources.\r\n\r\n1. Create an <strong>m3.xlarge</strong> instance with the <a href=\"http://thecloudmarket.com/image/ami-aae18fc2--debian-jessie-amd64-hvm-2014-12-25-13-19-ebs\" target=\"_blank\">Debian Jessie AMI (ami-aae18fc2)</a>. Be sure to grab at least <strong>16Gb</strong> of storage.\r\n\r\n2. Boot the instance and login as <strong>admin</strong>.\r\n\r\n3. Install required build packages on the instance,\r\n\r\n<pre>\r\nsudo apt-get update\r\nsudo apt-get install build-essential git\r\n</pre>\r\n\r\n4. Use <a href=\"https://raw.githubusercontent.com/karies/cling-all-in-one/master/clone.sh\" target=\"_blank\">the distributed build script</a> from the Cling project to get an x86 build. This will take quite a few minutes to finish!\r\n\r\n<pre>\r\n# copy the script to the clipboard\r\ncat > build.sh\r\n# paste the script, hit enter, then ctrl-d\r\nchmod +x build.sh\r\n./build.sh\r\n</pre>\r\n\r\n5. Take Cling for a spin!\r\n\r\n\r\n<h3>Building for ARM</h3>\r\n\r\nWhereas an x86 build is readily supported by the Cling developers, ARM is not a standard build path. The build instructions are therefore a bit more involved.\r\n\r\n1. Log in as <strong>admin</strong> to th instance described, above, in the x86 instructions.\r\n\r\n2. Install QEMU-based ARM emulation. This is a fantastic feature of newer linux kernels: ARM executables are registered with the system so that under a transparent invocation, QEMU handles execution as if the binaries were native.\r\n\r\n<pre>\r\nsudo apt-get install qemu binfmt-support qemu-user-static\r\nsudo update-binfmts --display      # arm targets should show up in this list\r\n\r\nsudo dpkg --add-architecture armhf\r\nsudo apt-get update\r\nsudo apt-get install libc6:armhf\r\n\r\n# test\r\ncat > hello.c << EOF\r\n \r\n#include <stdio.h>\r\nint main(void) { return printf(\"Hello ARM!\\n\"); }\r\nEOF\r\n \r\narm-linux-gnueabihf-gcc -static  -ohello hello.c\r\n \r\n# the following should indicate an arm excecutable...\r\nfile hello\r\n\r\n./hello    # should run!\r\n</pre>\r\n\r\n3. Install ARM hard-float compilation tools,\r\n\r\n<pre>\r\n# add embedian as an installation source\r\nsudo bash -c \'echo deb http://emdebian.org/tools/debian/ jessie main > /etc/apt/sources.list.d/crosstools.list\'\r\ncurl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | sudo apt-key add -\r\n\r\n# add arm hard-float as a supported architecture; cross compiler\r\nsudo dpkg --add-architecture armhf\r\nsudo apt-get update\r\nsudo apt-get install crossbuild-essential-armhf\r\n</pre>','Building a C++ Interpreter (Cling) for x86 and ARM','','inherit','open','open','','7681-revision-v1','','','2015-02-02 20:15:20','2015-02-02 20:15:20','',7681,'http://sandbox.arrayfire.com/7681-revision-v1/',0,'revision','',0),(7693,18132,'2015-02-02 20:27:43','2015-02-02 20:27:43','Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and a window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure via Amazon EC2.\r\n\r\nWith our prescribed steps in place, you can always have an up-to-date development version of Cling. This allows quick testing and investigation of LLVM\'s newest features. You also will possess a development environment as a path to contributing to Cling or learning how Cling\'s innards push C++ along.\r\n<h3>Background</h3>\r\nAstoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.\r\n\r\nDevelopment of a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\" target=\"_blank\">was undertaken by the wizards at CERN</a> starting at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\" target=\"_blank\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\" target=\"_blank\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\" target=\"_blank\">ROOT</a> (screenshot below).\r\n\r\n<img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" />\r\n\r\nOver the last 20 years, CINT fell behind the evolving C++ language. In response, individuals at CERN began work on a replacement for CINT dubbed Cling with the strategy of leveraging LLVM to stay up to date with the growing C++ specification. Up until recently, the project has been rather nascent, but now is at the point where its functionality and build system make Cling worthwhile for use and contribution.\r\n\r\n<h3>Building for x86</h3>\r\nWe present a build procedure leveraging Amazon EC2. By using the cloud, you are guaranteed to use the exact Linux version and hardware capabilities that we did in testing. We assume that you have an Amazon EC2 account and that you are willing to spend around two dollars on compute resources.\r\n\r\n1. Create an <strong>m3.xlarge</strong> instance with the <a href=\"http://thecloudmarket.com/image/ami-aae18fc2--debian-jessie-amd64-hvm-2014-12-25-13-19-ebs\" target=\"_blank\">Debian Jessie AMI (ami-aae18fc2)</a>. Be sure to grab at least <strong>16Gb</strong> of storage.\r\n\r\n2. Boot the instance and login as <strong>admin</strong>.\r\n\r\n3. Install required build packages on the instance,\r\n\r\n<pre>\r\nsudo apt-get update\r\nsudo apt-get install build-essential git\r\n</pre>\r\n\r\n4. Use <a href=\"https://raw.githubusercontent.com/karies/cling-all-in-one/master/clone.sh\" target=\"_blank\">the distributed build script</a> from the Cling project to get an x86 build. This will take quite a few minutes to finish!\r\n\r\n<pre>\r\n# copy the script to the clipboard\r\ncat > build.sh\r\n# paste the script, hit enter, then ctrl-d\r\nchmod +x build.sh\r\n./build.sh       # will require a few minutes to finish\r\n</pre>\r\n\r\n<img src=\"https://drive.google.com/file/d/0ByKhcOxrXKKJdmtGQ0Q3SG9CT1k/view?usp=sharing\" alt=\"Building cling on an x86 Ec2 instance\" />\r\n\r\n5. Take Cling for a spin!\r\n\r\n\r\n<h3>Building for ARM</h3>\r\n\r\nWhereas an x86 build is readily supported by the Cling developers, ARM is not a standard build path. The build instructions are therefore a bit more involved.\r\n\r\n1. Log in as <strong>admin</strong> to th instance described, above, in the x86 instructions.\r\n\r\n2. Install QEMU-based ARM emulation. This is a fantastic feature of newer linux kernels: ARM executables are registered with the system so that under a transparent invocation, QEMU handles execution as if the binaries were native.\r\n\r\n<pre>\r\nsudo apt-get install qemu binfmt-support qemu-user-static\r\nsudo update-binfmts --display      # arm targets should show up in this list\r\n\r\nsudo dpkg --add-architecture armhf\r\nsudo apt-get update\r\nsudo apt-get install libc6:armhf\r\n\r\n# test\r\ncat > hello.c << EOF\r\n \r\n#include <stdio.h>\r\nint main(void) { return printf(\"Hello ARM!\\n\"); }\r\nEOF\r\n \r\narm-linux-gnueabihf-gcc -static  -ohello hello.c\r\n \r\n# the following should indicate an arm excecutable...\r\nfile hello\r\n\r\n./hello    # should run!\r\n</pre>\r\n\r\n3. Install ARM hard-float compilation tools,\r\n\r\n<pre>\r\n# add embedian as an installation source\r\nsudo bash -c \'echo deb http://emdebian.org/tools/debian/ jessie main > /etc/apt/sources.list.d/crosstools.list\'\r\ncurl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | sudo apt-key add -\r\n\r\n# add arm hard-float as a supported architecture; cross compiler\r\nsudo dpkg --add-architecture armhf\r\nsudo apt-get update\r\nsudo apt-get install crossbuild-essential-armhf\r\n</pre>','Building a C++ Interpreter (Cling) for x86 and ARM','','inherit','open','open','','7681-revision-v1','','','2015-02-02 20:27:43','2015-02-02 20:27:43','',7681,'http://sandbox.arrayfire.com/7681-revision-v1/',0,'revision','',0),(7694,18132,'2015-02-02 21:10:24','2015-02-02 21:10:24','Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and a window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure via Amazon EC2.\r\n\r\nWith our prescribed steps in place, you can always have an up-to-date development version of Cling. This allows quick testing and investigation of LLVM\'s newest features. You will also possess a development environment as a path to contributing to Cling or learning how Cling\'s innards push C++ code along.\r\n<h3>Background</h3>\r\nAstoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.\r\n\r\nDevelopment of a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\" target=\"_blank\">was undertaken by the wizards at CERN</a> starting at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\" target=\"_blank\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\" target=\"_blank\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\" target=\"_blank\">ROOT</a> (screenshot below). The system is certainly serious as it is giving researchers a way to investigate the ver fabric of the universe!\r\n\r\n<img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" />\r\n\r\nOver the last 20 years, CINT fell behind the evolving C++ language. In response, individuals at CERN began work on a replacement for CINT dubbed Cling with the strategy of leveraging LLVM to stay up to date with the growing C++ specification. Up until recently, the project has been rather nascent, but now is at the point where its functionality and build system make Cling worthwhile for use and contribution.\r\n\r\n<h3>Building for x86</h3>\r\nWe present a build procedure leveraging Amazon EC2. By using the cloud, you are guaranteed to use the exact Linux version and hardware capabilities that we did in testing. We assume that you have an Amazon EC2 account and that you are willing to spend around two dollars on compute resources.\r\n\r\n1. Create an <strong>m3.xlarge</strong> instance with the <a href=\"http://thecloudmarket.com/image/ami-aae18fc2--debian-jessie-amd64-hvm-2014-12-25-13-19-ebs\" target=\"_blank\">Debian Jessie AMI (ami-aae18fc2)</a>. Be sure to grab at least <strong>32Gb</strong> of storage.\r\n\r\n2. Boot the instance and login as <strong>admin</strong>.\r\n\r\n3. Install required build packages on the instance,\r\n\r\n<pre>\r\nsudo apt-get update\r\nsudo apt-get install build-essential git\r\n</pre>\r\n\r\n4. Use <a href=\"https://raw.githubusercontent.com/karies/cling-all-in-one/master/clone.sh\" target=\"_blank\">the distributed build script</a> from the Cling project to clone required source code and build an x86 version of Cling with all available cores.\r\n\r\n<pre>\r\nwget https://raw.githubusercontent.com/karies/cling-all-in-one/master/clone.sh\r\nchmod +x clone.sh\r\n./clone.sh       # will require a few minutes to finish\r\n</pre>\r\n\r\n...this will take quite a few minutes to finish...\r\n\r\n<img style=\"padding: 20px\" src=\"https://dl.dropboxusercontent.com/u/96059047/cling_build.png\" alt=\"Building cling on an x86 EC2 instance\" />\r\n\r\n5. Take Cling for a spin!\r\n\r\n\r\n<h3>Building for ARM</h3>\r\n\r\nWhereas an x86 build is readily supported by the Cling developers, ARM is not a standard build path. The build instructions are therefore a bit more involved.\r\n\r\n1. Log in as <strong>admin</strong> to the instance described, above, in the x86 instructions.\r\n\r\n2. Install QEMU-based ARM emulation. This is a fantastic feature of newer linux kernels: ARM executables are registered with the system so that under a transparent invocation, QEMU handles execution as if the binaries were native.\r\n\r\n<pre>\r\nsudo apt-get install qemu binfmt-support qemu-user-static\r\nsudo update-binfmts --display      # arm targets should show up in this list\r\n\r\nsudo dpkg --add-architecture armhf\r\nsudo apt-get update\r\nsudo apt-get install libc6:armhf\r\n\r\n# test\r\ncat > hello.c << EOF\r\n \r\n#include <stdio.h>\r\nint main(void) { return printf(\"Hello ARM!\\n\"); }\r\nEOF\r\n \r\narm-linux-gnueabihf-gcc -static  -ohello hello.c\r\n \r\n# the following should indicate an arm excecutable...\r\nfile hello\r\n\r\n./hello    # should run!\r\n</pre>\r\n\r\n3. Install ARM hard-float compilation tools,\r\n\r\n<pre>\r\n# add embedian as an installation source\r\nsudo bash -c \'echo deb http://emdebian.org/tools/debian/ jessie main > /etc/apt/sources.list.d/crosstools.list\'\r\ncurl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | sudo apt-key add -\r\n\r\n# add arm hard-float as a supported architecture; cross compiler\r\nsudo dpkg --add-architecture armhf\r\nsudo apt-get update\r\nsudo apt-get install crossbuild-essential-armhf\r\n</pre>\r\n\r\n4. Install build tools cmake and ninja,\r\n\r\n<pre>\r\n# cmake\r\nsudo apt-get install cmake\r\n\r\n# ninja requires a build\r\ngit clone git://github.com/martine/ninja.git && cd ninja\r\ngit checkout release\r\n./configure.py --bootstrap\r\nchmod +x ninja build.ninja\r\nsudo cp ninja build.ninja /usr/bin\r\n</pre>\r\n\r\n5. Clone LLVM, Clang, and Cling to the <strong>llvm</strong> directory. Note that the x86 steps, above, cloned to the <strong>src</strong> directory, so the following will not clash with the other platform\'s instructions, above.\r\n\r\n<pre>\r\ngit clone http://root.cern.ch/git/llvm.git src\r\ncd src\r\ngit checkout cling-patches\r\ncd tools\r\ngit clone http://root.cern.ch/git/cling.git\r\ngit clone http://root.cern.ch/git/clang.git\r\ncd clang\r\ngit checkout cling-patches\r\n</pre>\r\n\r\n6. Configure a build in the <strong>build</strong> directory using cmake and carefully crafted build-time flags,\r\n\r\n<pre>\r\n\r\n</pre>','Building a C++ Interpreter (Cling) for x86 and ARM','','inherit','open','open','','7681-revision-v1','','','2015-02-02 21:10:24','2015-02-02 21:10:24','',7681,'http://sandbox.arrayfire.com/7681-revision-v1/',0,'revision','',0),(7695,18132,'2015-02-04 01:23:49','2015-02-04 01:23:49','Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and a window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure via Amazon EC2.\r\n\r\nWith our prescribed steps in place, you can always have an up-to-date development version of Cling. This allows quick testing and investigation of LLVM\'s newest features. You will also possess a development environment as a path to contributing to Cling or learning how Cling\'s innards push C++ code along.\r\n<h3>Background</h3>\r\nAstoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.\r\n\r\nDevelopment of a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\" target=\"_blank\">was undertaken by the wizards at CERN</a> starting at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\" target=\"_blank\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\" target=\"_blank\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\" target=\"_blank\">ROOT</a> (screenshot below). The system is certainly serious as it is giving researchers a way to investigate the ver fabric of the universe!\r\n\r\n<img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" />\r\n\r\nOver the last 20 years, CINT fell behind the evolving C++ language. In response, individuals at CERN began work on a replacement for CINT dubbed Cling with the strategy of leveraging LLVM to stay up to date with the growing C++ specification. Up until recently, the project has been rather nascent, but now is at the point where its functionality and build system make Cling worthwhile for use and contribution.\r\n\r\n<h3>Building for x86</h3>\r\nWe present a build procedure leveraging Amazon EC2. By using the cloud, you are guaranteed to use the exact Linux version and hardware capabilities that we did in testing. We assume that you have an Amazon EC2 account and that you are willing to spend around two dollars on compute resources.\r\n\r\n1. Create an <strong>m3.xlarge</strong> instance with the <a href=\"http://thecloudmarket.com/image/ami-aae18fc2--debian-jessie-amd64-hvm-2014-12-25-13-19-ebs\" target=\"_blank\">Debian Jessie AMI (ami-aae18fc2)</a>. Be sure to grab at least <strong>32Gb</strong> of storage.\r\n\r\n2. Boot the instance and login as <strong>admin</strong>.\r\n\r\n3. Install required build packages on the instance,\r\n\r\n<pre>\r\nsudo apt-get update\r\nsudo apt-get install build-essential git\r\n</pre>\r\n\r\n4. Use <a href=\"https://raw.githubusercontent.com/karies/cling-all-in-one/master/clone.sh\" target=\"_blank\">the distributed build script</a> from the Cling project to clone required source code and build an x86 version of Cling with all available cores.\r\n\r\n<pre>\r\nwget https://raw.githubusercontent.com/karies/cling-all-in-one/master/clone.sh\r\nchmod +x clone.sh\r\n./clone.sh       # will require a few minutes to finish\r\n</pre>\r\n\r\n...this will take quite a few minutes to finish...\r\n\r\n<img style=\"padding: 20px\" src=\"https://dl.dropboxusercontent.com/u/96059047/cling_build.png\" alt=\"Building cling on an x86 EC2 instance\" />\r\n\r\n5. Take Cling for a spin!\r\n\r\n\r\n<h3>Building for ARM</h3>\r\n\r\nWhereas an x86 build is readily supported by the Cling developers, building for ARM is not a standard build path. Thus, ARM build instructions are a bit more involved.\r\n\r\n1. Log in as <strong>admin</strong> to the instance described, above, in the x86 instructions.\r\n\r\n2. Install ARM hard-float compilation tools.\r\n\r\n<pre>\r\n# add Embedian as an installation source\r\nsudo bash -c \'echo deb http://emdebian.org/tools/debian/ jessie main > /etc/apt/sources.list.d/crosstools.list\'\r\nsudo apt-get install -y curl\r\ncurl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | sudo apt-key add -\r\n\r\n# add arm hard-float as a supported architecture\r\nsudo dpkg --add-architecture armhf\r\nsudo apt-get update\r\n\r\n# install an ARM targeted cross compiler\r\nsudo apt-get install crossbuild-essential-armhf\r\n</pre>\r\n\r\n\r\n3. Install QEMU-based ARM emulation. This is a fantastic feature of newer linux kernels: ARM executables are registered with the system so that under a normal invocation, QEMU is invoked under the hood so that it seems as though ARM binaries are native.\r\n\r\n<pre>\r\nsudo apt-get install qemu binfmt-support qemu-user-static\r\nsudo update-binfmts --display      # arm targets should show up in this list\r\n\r\nsudo apt-get install libc6:armhf\r\n\r\n# test\r\ncat > hello.c << EOF\r\n \r\n#include <stdio.h>\r\nint main(void) { return printf(\"Hello ARM!\\n\"); }\r\nEOF\r\n \r\narm-linux-gnueabihf-gcc -static  -ohello hello.c\r\n \r\n# the following should indicate an arm excecutable...\r\nfile hello\r\n\r\n./hello    # should run!\r\n</pre>\r\n\r\nHaving ARM emulation on our fast build machine makes debugging amazingly faster.\r\n\r\n4. Install build tools: cmake and ninja.\r\n\r\n<pre>\r\n# cmake\r\nsudo apt-get install cmake\r\n\r\n# ninja requires a build\r\ngit clone git://github.com/martine/ninja.git && cd ninja\r\ngit checkout release\r\n./configure.py --bootstrap\r\nchmod +x ninja build.ninja\r\nsudo cp ninja build.ninja /usr/bin\r\n</pre>\r\n\r\n5. Clone LLVM, Clang, and Cling to the <strong>llvm</strong> directory. This directory differs from the instructions, above, so no worries if you\'re following these steps in the order of the blog post.\r\n\r\n<pre>\r\ngit clone http://root.cern.ch/git/llvm.git src\r\ncd src\r\ngit checkout cling-patches\r\ncd tools\r\ngit clone http://root.cern.ch/git/cling.git\r\ngit clone http://root.cern.ch/git/clang.git\r\ncd clang\r\ngit checkout cling-patches\r\n</pre>\r\n\r\n6. Configure a build in the new <strong>build</strong> directory using cmake. Note the intense and carefully crafted build flags required to do a successful cross compilation. This took quite a bit of debugging to lock down.\r\n\r\n<pre>\r\n# cmake here\r\nmkdir -p build && cd build\r\n\r\n</pre>\r\n\r\n7. Do a build with ninja and install to the <strong>install</strong> subdirectory.\r\n\r\n<pre>\r\n# ninja here\r\n</pre>\r\n\r\n8. Fire up Cling!','Building a C++ Interpreter (Cling) for x86 and ARM','','inherit','open','open','','7681-revision-v1','','','2015-02-04 01:23:49','2015-02-04 01:23:49','',7681,'http://sandbox.arrayfire.com/7681-revision-v1/',0,'revision','',0),(7696,18132,'2015-02-04 01:44:29','2015-02-04 01:44:29','Development through a C++ interpreter (Cling) as opposed to a standard compiler is an amazing leap in productivity and a window into the newest features of C++. This post tells you how to get your own bleeding-edge C++ interpreter built right on top of the development version of LLVM. We give you a repeatable procedure via Amazon EC2.\r\n\r\nWith our prescribed steps in place, you can always have an up-to-date development version of Cling. This allows quick testing and investigation of LLVM\'s newest features. You will also possess a development environment as a path to contributing to Cling or learning how Cling\'s innards push C++ code along.\r\n<h3>Background</h3>\r\nAstoundingly, there <strong>is</strong> such a thing as a C++ interpreter! Thus, if you\'re interested in sticking to C for speed and efficiency, you\'re not confined to the code-compile-run-debug workflow. Living outside such a workflow lends jumps in productivity and a unique angle through which to see C++.\r\n\r\nDevelopment of a serious C++ interpreter <a href=\"http://www.linuxjournal.com/article/2895\" target=\"_blank\">was undertaken by the wizards at CERN</a> starting at around 1995. (You might recognize this group as searchers <a href=\"http://home.web.cern.ch/topics/higgs-boson\" target=\"_blank\">for the Higgs Boson</a>). The C++ interpreter was dubbed <a href=\"https://root.cern.ch/drupal/content/cint\" target=\"_blank\">CINT</a> and was designed to support a major data analysis and visualization package known as <a href=\"https://root.cern.ch/drupal/\" target=\"_blank\">ROOT</a> (screenshot below). The system is certainly serious as it is giving researchers a way to investigate the ver fabric of the universe!\r\n\r\n<img src=\"http://root.cern.ch/drupal/sites/default/files/images/alieve-esd-pbpb.png\" alt=\"A ROOT screenshot being driven by a C++ interpreter (CINT). CINT is not a toy implementation - rather it is used to investigate the fabric of the universe.\" />\r\n\r\nOver the last 20 years, CINT fell behind the evolving C++ language. In response, individuals at CERN began work on a replacement for CINT dubbed Cling with the strategy of leveraging LLVM to stay up to date with the growing C++ specification. Up until recently, the project has been rather nascent, but now is at the point where its functionality and build system make Cling worthwhile for use and contribution.\r\n\r\n<h3>Building for x86</h3>\r\nWe present a build procedure leveraging Amazon EC2. By using the cloud, you are guaranteed to use the exact Linux version and hardware capabilities that we did in testing. We assume that you have an Amazon EC2 account and that you are willing to spend around two dollars on compute resources.\r\n\r\n1. Create an <strong>m3.xlarge</strong> instance with the <a href=\"http://thecloudmarket.com/image/ami-aae18fc2--debian-jessie-amd64-hvm-2014-12-25-13-19-ebs\" target=\"_blank\">Debian Jessie AMI (ami-aae18fc2)</a>. Be sure to grab at least <strong>32Gb</strong> of storage.\r\n\r\n2. Boot the instance and login as <strong>admin</strong>.\r\n\r\n3. Install required build packages on the instance,\r\n\r\n<pre>\r\nsudo apt-get update\r\nsudo apt-get install build-essential git\r\n</pre>\r\n\r\n4. Use <a href=\"https://raw.githubusercontent.com/karies/cling-all-in-one/master/clone.sh\" target=\"_blank\">the distributed build script</a> from the Cling project to clone required source code and build an x86 version of Cling with all available cores.\r\n\r\n<pre>\r\nwget https://raw.githubusercontent.com/karies/cling-all-in-one/master/clone.sh\r\nchmod +x clone.sh\r\n./clone.sh       # will require a few minutes to finish\r\n</pre>\r\n\r\n...this will take quite a few minutes to finish...\r\n\r\n<img style=\"padding: 20px\" src=\"https://dl.dropboxusercontent.com/u/96059047/cling_build.png\" alt=\"Building cling on an x86 EC2 instance\" />\r\n\r\n5. Take Cling for a spin!\r\n\r\n\r\n<h3>Building for ARM</h3>\r\n\r\nWhereas an x86 build is readily supported by the Cling developers, building for ARM is not a standard build path. Thus, ARM build instructions are a bit more involved.\r\n\r\n1. Log in as <strong>admin</strong> to the instance described, above, in the x86 instructions.\r\n\r\n2. Install ARM hard-float compilation tools.\r\n\r\n<pre>\r\n# add Embedian as an installation source\r\nsudo bash -c \'echo deb http://emdebian.org/tools/debian/ jessie main > /etc/apt/sources.list.d/crosstools.list\'\r\nsudo apt-get install -y curl\r\ncurl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | sudo apt-key add -\r\n\r\n# add arm hard-float as a supported architecture\r\nsudo dpkg --add-architecture armhf\r\nsudo apt-get update\r\n\r\n# install an ARM targeted cross compiler\r\nsudo apt-get install crossbuild-essential-armhf\r\n</pre>\r\n\r\n\r\n3. Install QEMU-based ARM emulation. This is a fantastic feature of newer linux kernels: ARM executables are registered with the system so that under a normal invocation, QEMU is invoked under the hood so that it seems as though ARM binaries are native.\r\n\r\n<pre>\r\n# install QEMU emulation for ARM executables\r\nsudo apt-get install qemu binfmt-support qemu-user-static\r\nsudo update-binfmts --display\r\nsudo apt-get install libc6:armhf\r\n\r\n# compile an ARM executable\r\ncat > hello.c << EOF\r\n \r\n#include <stdio.h>\r\nint main(void) { return printf(\"Hello ARM!\\n\"); }\r\nEOF\r\narm-linux-gnueabihf-gcc -static -ohello hello.c\r\n\r\n# the following should indicate an ARM exe\r\nfile hello\r\n\r\n# running the executable with no fanfare should \r\n# invoke QEMU transparently to print \"Hello ARM!\"\r\n./hello\r\n</pre>\r\n\r\nHaving ARM emulation on our fast build machine makes debugging amazingly faster.\r\n\r\n4. Install build tools: cmake and ninja.\r\n\r\n<pre>\r\n# cmake\r\nsudo apt-get install cmake\r\n\r\n# ninja requires a build\r\ngit clone git://github.com/martine/ninja.git && cd ninja\r\ngit checkout release\r\n./configure.py --bootstrap\r\nchmod +x ninja build.ninja\r\nsudo cp ninja build.ninja /usr/bin\r\n</pre>\r\n\r\n5. Clone LLVM, Clang, and Cling to the <strong>llvm</strong> directory. This directory differs from the instructions, above, so no worries if you\'re following these steps in the order of the blog post.\r\n\r\n<pre>\r\n# the following steps aasume this is done in the home directory\r\n# and therefore yielding ~/llvm \r\ngit clone http://root.cern.ch/git/llvm.git src\r\ncd src\r\ngit checkout cling-patches\r\ncd tools\r\ngit clone http://root.cern.ch/git/cling.git\r\ngit clone http://root.cern.ch/git/clang.git\r\ncd clang\r\ngit checkout cling-patches\r\n</pre>\r\n\r\n6. Configure a build in the new <strong>build</strong> directory using cmake. Note the intense and carefully crafted build flags required to do a successful cross compilation. <em>This took quite a bit of debugging to lock down.</em>\r\n\r\n<pre>\r\nmkdir -p build && cd build\r\ncmake -G Ninja ~/llvm -DCMAKE_CROSSCOMPILING=True -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_VERSION=1 -DCMAKE_SYSTEM_PROCESSOR=armv7 -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ -DCMAKE_INSTALL_PREFIX=/home/admin/build/install -DLLVM_TABLEGEN=/usr/bin/llvm-tblgen-3.5 -DCLANG_TABLEGEN=/usr/bin/clang-tblgen-3.5 -DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-gnueabihf -DLLVM_HOST_TRIPLE=arm--linux-gnueabihf -DLLVM_TARGET_ARCH=ARM -DLLVM_TARGETS_TO_BUILD=ARM -DCMAKE_CXX_FLAGS=\'-mcpu=cortex-a9 -I/usr/include/arm-linux-gnueabihf/c++/4.9 -I/usr/lib/gcc/arm-linux-gnueabihf/4.9/include -mfloat-abi=hard\'\r\n</pre>\r\n\r\n7. Do a build with ninja and install to the <strong>install</strong> subdirectory.\r\n\r\n<pre>\r\n# ninja here\r\n</pre>\r\n\r\n8. Fire up Cling!','Building a C++ Interpreter (Cling) for x86 and ARM','','inherit','open','open','','7681-revision-v1','','','2015-02-04 01:44:29','2015-02-04 01:44:29','',7681,'http://sandbox.arrayfire.com/7681-revision-v1/',0,'revision','',0),(7698,7,'2015-02-05 15:48:53','2015-02-05 15:48:53','[content_band inner_container=\"true\" no_margin=\"true\" border=\"top\" padding_top=\"40px\" padding_bottom=\"40px\"][column type=\"one-fifth\"].[/column][column type=\"three-fifths\"][custom_headline type=\"left\" level=\"h3\"]Glasses.com App with 3Dfit Technology[/custom_headline][/column][column type=\"one-fifth\" last=\"true\"].[/column][gap size=\"3%\"]\r\n\r\n[column type=\"one-fifth\"].[/column][column type=\"three-fifths\"]<img class=\"alignright wp-image-6894 size-full\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/10/glasses-logo-promo-01.png\" alt=\"glasses logo, promo-01\" width=\"360\" height=\"120\" />Many find the experience of purchasing new glasses stressful. Even simply trying on frames can be uncomfortable when done in a public setting. Glasses.com set out to improve the experience by providing customers a way of virtually trying on glasses frames in the comfort of their homes via smart phone or tablet.\r\n\r\nThe Glasses.com app takes a picture of the user’s face, creates a 3D model of facial features, and virtually places selected frames on the user’s 3D image. The user is then free to view the 3D image from a variety of angles.\r\n\r\nThe application relies on computer vision to recognize the features of a user’s face and then generate an accurate, high-fidelity, 3D model of that face. Virtual frames can then be positioned on the 3D model.\r\n<blockquote>This app is amazing! It takes a 3D video of your face in just a few steps, and the rendering is spot on! RayBan Aviators are always a little big on me, and the app showed them on my face exactly as they fit in the store! —davidandrew</blockquote>\r\n<h4>Mission</h4>\r\nGlasses.com brought our engineers an excellent, fully-functioning version of the application; they simply wanted it accelerated. The app took full advantage of the CPU, which—left unchanged—would necessitate Glasses.com’s purchasing and managing a large amount of hardware. Further, the application was running at a slow thirty seconds per session, resulting in a sub-optimal user experience. Our engineers were tasked with parallelizing the process and reducing the session runtime.\r\n\r\nGlasses.com has several machines they are using in production. Their main setup consists of a Haswell/Ivy Bridge CPU paired with a GTX 690. The machine is able to run 4 processes concurrently. In the past, Glasses.com used a 32 core Intel process with a couple of K20X. They are still using these machines, but they are not the main configuration. They are also making use of the Amazon EC2 instances in case they exceed internal capacity.\r\n<h4>Action</h4>\r\nWe began by analyzing the application and targeting the process which would have the greatest impact on performance.\r\n\r\nThe most pressing concern was the rendering portion of code, which was running on the CPU. We implemented rendering in ArrayFire, which is specially optimized for CUDA GPUs. Further, we noticed that while the application was rendering-intensive, much of the rendering did not need to be precise—we could make estimations without compromising quality. This estimated rendering speedup operation was critical to the success of the project.\r\n\r\nWe discovered further opportunities for speedup within the architecture itself. The original app processed each frame in a separate thread; we accelerated this by combining each operation into a single kernel and running that kernel once. By moving the parallelization to the GPU we effectively took advantage of the strength of that architecture.\r\n<h4>Results</h4>\r\nUltimately, parallelizing the application and incorporating the ArrayFire software library accelerated the application to about ten seconds per session—roughly three times as fast as the original code, and twice as fast as the target speed. We further exceeded expectations by improving general stability when handling errors. <img class=\"aligncenter size-full wp-image-6903\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/10/glassesdotcom-benchmarks.jpg\" alt=\"glassesdotcom benchmarks\" width=\"700\" height=\"442\" />\r\n\r\nThe improvements in speed, stability, and user experience have resonated with the application’s target market, resulting in a 3.5/5 star rating in the Apple Store.\r\n<h6>About glasses.com</h6>\r\nGlasses.com launched in 2011 as an online retailer of prescription and non-prescription glasses and sunglasses, carrying a wide-range of styles and name brands such as Oakley, Ray-Ban, Kate Spade, Burberry, Maui Jim, and more.[/column][column type=\"one-fifth\" last=\"true\"].[/column][/content_band]','Case Study: glasses.com App with 3Dfit Technology','','inherit','open','open','','6899-revision-v1','','','2015-02-05 15:48:53','2015-02-05 15:48:53','',6899,'http://sandbox.arrayfire.com/6899-revision-v1/',0,'revision','',0),(7699,7,'2015-02-05 15:50:42','2015-02-05 15:50:42','[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\"]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 sets, 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%\"][button  type=\"flat\" shape=\"rounded\" href=\"http://meetme.so/arrayfire\" size=\"normal\" ]Schedule a consultation[/button][/column][column type=\"one-half\" last=\"true\" class=\"center-text\"][gap size=\"15%\"]<img class=\"aligncenter wp-image-462\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Bat-signal.png\" alt=\"Bat signal\" width=\"700\" height=\"437\" />[/column][gap size=\"2%\"][/content_band][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=\"40px\" padding_bottom=\"40px\"][gap size=\"2%\"]\r\n<p style=\"text-align: left;\">[column type=\"one-third\" ][promo image=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/10/lincoln-logo-promo-01.png\" alt=\"Lincoln Financial Group\"]Lincoln Financial Group ported their CPU code (C/C++) to CUDA. Before porting to CUDA, they required 10-12 hours to run the entire code. After porting to CUDA, they were able to do the same work in about 30 minutes.</p>\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"#example\" size=\"regular\" ]Read the case study[/button][/promo][/column]</p>\r\n<p style=\"text-align: left;\">[column type=\"one-third\"][promo image=\"http://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.</p>\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"http://sandbox.arrayfire.com/case-study-glasses-com-app-with-3dfit-technology/\" size=\"regular\" ]Read the case study[/button][/promo][/column]</p>\r\n<p style=\"text-align: left;\">[column type=\"one-third\" last=\"true\"][promo image=\"http://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.</p>\r\n<p style=\"text-align: center;\">[button type=\"flat\" shape=\"rounded\" href=\"#example\" size=\"regular\" ]Read the case study[/button][/promo][/column]</p>\r\n\r\n<div id=\"starter\"></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[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=\"http://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=\"http://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[content_band inner_container=\"true\" no_margin=\"true\" border=\"none\" padding_top=\"10px\" padding_bottom=\"40px\" ]\r\n\r\n[column type=\"one-half\"]\r\n\r\n&nbsp;\r\n\r\n[gap size=\"12%\"]\r\n\r\n<img class=\"aligncenter size-large wp-image-5100\" src=\"http://sandbox.arrayfire.com/wp-content/uploads/2014/01/Triumvirate_Exported-1024x599.png\" alt=\"Triumvirate_Exported\" width=\"742\" height=\"434\" />[/column]\r\n\r\n[column type=\"one-half\"  last=\"true\" ]\r\n\r\n[custom_headline type=\"left\" level=\"h2\" ]Custom coding[/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[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][button  type=\"flat\" shape=\"rounded\" href=\"http://meetme.so/arrayfire\" size=\"regular\" ]Schedule a consultation[/button][/column] [/content_band]','Consulting, OPSC','','inherit','open','open','','6634-revision-v1','','','2015-02-05 15:50:42','2015-02-05 15:50:42','',6634,'http://sandbox.arrayfire.com/6634-revision-v1/',0,'revision','',0),(7702,17796,'2015-02-18 20:29:04','2015-02-18 20:29:04','<p>The ArrayFire library offers JIT (Just In Time) compiling for standard arithmetic operations. This includes trigonometric functions, comparisons, and element-wise operations.</p>\r\n\r\n<p>At run-time, ArrayFire aggregates these function calls using an Abstract Syntax Tree (AST) data structure such that when ever a JIT supported function is \'\'met\'\' it is added into the AST for a given variable instance. The AST of the variable is computed if one of the following conditions is met:</p>\r\n\r\n<ul>\r\n<li>an explication evaluation is required by the programmer using the eval() function member or</li>\r\n<li>the variable is required for the computation of a different variable that is not-JIT supported it. </li>\r\n</ul>\r\n\r\n<p>When the above occurs and the variable needs to be evaluated, the functions and variables in the AST data structure are used to create a single kernel (\'\'function-call\'\'). This is done by a creating a customized kernel on-the-fly that is made up of all the functions in the AST - the customized function is then executed.</p>\r\n\r\n<p>This JIT compilation technique has multiple benefits:</p>\r\n\r\n<ul>\r\n<li>A reduced number of kernel calls - a kernel call can be a significant overhead for small data-sets. </li>\r\n<li>Better cache performance - there are many instances in which the memory required by a single element in the array can be reused multiple or the temporary value of a computation can be stored in the cache and reused by future computations. </li>\r\n<li>Temporary memory allocation and write-back can be reduced - when multiple expressions are evaluated and stored into temporary arrays, these arrays need to be allocated and the results written back to the main memory.</li>\r\n<li>Avoid computing elements that are not used - there are cases in which the AST is created for a variable, however the expression is not used later in the computation. Thus, it evaluation can be avoided.</li>\r\n<li>Better performance - all the above in fact can help reduce the total execution time.</li>\r\n</ul>\r\n\r\n<pre>// As JIT is automatically enabled in ArrayFire, this version of the function forces each expression to be evaluated.\r\n// If the eval() function calls are removed, then the execution of this code would be equivalent to the following function.\r\nstatic double pi_no_jit(array x, array y, array temp, int samples){\r\n        temp=x*x;\r\n        temp.eval();\r\n        temp+=y*y;\r\n        temp.eval();\r\n        temp=sqrt(temp);\r\n        temp.eval();\r\n        temp=temp < 1;\r\n        temp.eval();\r\n        return 4.0 sum<float>(temp)/samples;\r\n}\r\n\r\nstatic double pi_jit(array x, array y, array temp,int samples){\r\n        temp = (sqrt(x*x+y*y) < 1); \r\n        temp.eval();\r\n        return 4.0*sum<float>(temp)/samples;\r\n}\r\n</pre>\r\n\r\n<p>The above code (using ArrayFire) computes the value π using a Monte-Carlo simulation where points are randomly generated within the unit-square.Each point is then tested to see if it is within the unit-circle. The ratio of points within the circle and the point in the square approximate the value π. The accuracy of π improves as the number of samples are increased, which motivates using additional sample.</p>\r\n\r\n<p>There are two implementations in the code listing: - an implementation that takes advantage of the JIT feature (<code>pi_jit</code>) - an implementation that does not benefit from the JIT (<code>pi_no_jit</code>).</p>\r\n\r\n<p>Specifically, as JIT as an integral feature of the ArrayFire framework, it cannot simply be turned on and off. The only way for a programmer to side-step the JIT operations is to manually force the evaluation of expressions. This is done in the non-JIT supported implementation.</p>\r\n\r\n<p>[caption id=\"attachment_7740\" align=\"alignnone\" width=\"716\"] [<img src=\"http://sandbox.arrayfire.com/wp-content/uploads/2015/02/jit_cuda1.png\" alt=\"Performance of JIT and Non-JIT implementations\" width=\"716\" height=\"371\" class=\"size-full wp-image-7740\" />]<a href=\"http://sandbox.arrayfire.com/wp-content/uploads/2015/02/jit_cuda1.png\">1</a> Performance of JIT and Non-JIT implementations[/caption]</p>\r\n\r\n<p>The above figure depicts the execution time (abscissa) as a function of the number of samples (ordinate) for the two implementations discussed above. These tests were conducted on NVIDIA K20 GPU.</p>\r\n\r\n<p>When the number of samples is considerably small, the execution time of the non-JIT supported function is dominated by the launch of multiple kernels. While the JIT supported function only has a single kernel to launch, the creation of the JIT-code dominates the execution time. Nonetheless, the JIT supported function is <strong>1.4X-2.0X</strong> than the non-JIT supported function.</p>\r\n\r\n<p>In the case of the large number of samples, both the kernel launch overhead and the JIT-code creation, are not the limiting factor - the execution time is dominated by the functionality of the kernel. Specifically, the JIT supported version is <strong>2.0X-2.7X</strong> faster than the non-JIT support function due to the reduced number of cache-misses.</p>\r\n\r\n<p>The number of applications that benefit from the JIT code generation are large. The actual performance benefits are also application dependent though we have a seen similar performance curves in the past.In a recent blog, <a href=\"http://sandbox.arrayfire.com/conways-game-of-life-using-arrayfire/\" title=\"Conway\'s Game of Life\" target=\"_blank\"> Conway\'s Game of Life</a>, we showed how to implement the \"Game\" in a handful of lines of code. Now that you know about the JIT and what to look for, can you see how JIT is applied to the Game of Life?</p>\r\n','Performance of ArrayFire JIT Code Generation','','publish','open','open','','performance-of-arrayfire-jit-code-generation','','\nhttp://sandbox.arrayfire.com/conways-game-of-life-using-arrayfire/','2015-03-04 18:27:09','2015-03-04 18:27:09','',0,'http://sandbox.arrayfire.com/?p=7702',0,'post','',3),(7703,17796,'2015-02-12 16:19:00','2015-02-12 16:19:00','\r\nThe ArrayFire library offers JIT (Just In Time) compiling for standard arithmetic operations. This includes trigonometric functions,  comparisons, and element-wise operations. At run-time, ArrayFire aggregates these function calls using an Abstract Syntax Tree (AST) data structure such that when ever a JIT supported function is ``met\'\' it is added into the AST for a given variable instance. The AST of the variable is computed if one of the following conditions is met: 1) an explication evaluation is required by the programmer using the $eval()$ function member or 2) the variable is required for the computation of a different variable that is not-JIT supported it. When the above occurs and the variable needs to be evaluated, the functions and variables in the AST data structure are used to create a single kernel (``function-call\'\'). This is done by a creating a customized kernel on-the-fly that is made up of all the functions in the AST - the customized function is then executed.\r\n\r\nThis JIT compilation technique has multiple benefits:\r\n\r\nA reduced number of kernel calls - a kernel call can be a significant overhead for small data-sets.\r\n\r\nBetter cache performance - there are many instances in which the memory required by a \r\nsingle element in the array can be reused multiple or the temporary value of a computation can be stored in the cache and reused by future computations. \r\n\r\nTemporary memory allocation and write-back can be reduced - when multiple expressions are evaluated and stored into temporary arrays, these arrays need to be allocated and the results written back to the main memory.\r\n\r\nAvoid computing elements that are not used - there are cases in which the AST is created for a variable, however the expression is not used later in the computation. Thus, it evaluation can be avoided. \r\n\r\nBetter performance - all the above in fact can help reduce the total execution time.\r\n\r\n\r\n\r\n\r\n\r\n\r\nFig. \\ref{fig:jitlisting} presents the code for computing the value $\\pi$ using a Monte-Carlo simulation where points\r\nare randomly generated within the unit-square.Each point is then tested to see if it is within the unit-circle. The \r\nratio of points within the circle and the point in the square approximate the value $\\pi$. \r\nThe accuracy of $\\pi$ improves as the number of samples are increased. \r\nThere are two implementations in the code listing. One implementation takes advantage of the JIT feature while the \r\nother implementation does not benefit from the implementation. As the JIT operations are an integral part of the \r\nArrayFire framework, the only way for a programmer to side-step the JIT operations is to manually force expressions to be\r\nevaluated as was done in the non-JIT supported implementation.\r\n\r\nFig. \\ref{fig:jitperformance} depicts the \r\nexecution time (abscissa) as a function of the number of samples (ordinate) for two implementations in Fig. \r\n\\ref{fig:jitlisting}. When the number of samples is considerably small, the execution time of the non-JIT supported function\r\nis dominated by the launch of multiple kernels. While the JIT supported function only has a single kernel to launch, the\r\ncreation of the JIT-code dominates the execution time. Nonetheless, the JIT supported function is $1.4X-2.0X$ than the non-JIT\r\nsupported function. In the case of the large number of samples, both the kernel launch overhead and the JIT-code creation, \r\nare not the limiting factor - the execution time is dominated by the functionality of the kernel. Specifically, the JIT\r\nsupported version is $2.0X-2.7X$ faster than the non-JIT support function due to the reduced number of cache-misses.\r\n\r\n\r\n\r\n','Performance of ArrayFire JIT Code Generation','','inherit','open','open','','7702-revision-v1','','','2015-02-12 16:19:00','2015-02-12 16:19:00','',7702,'http://sandbox.arrayfire.com/7702-revision-v1/',0,'revision','',0),(7704,17796,'2015-02-12 16:20:14','2015-02-12 16:20:14','The ArrayFire library offers JIT (Just In Time) compiling for standard arithmetic operations. This includes trigonometric functions,  comparisons, and element-wise operations. At run-time, ArrayFire aggregates these function calls using an Abstract Syntax Tree (AST) data structure such that when ever a JIT supported function is ``met\'\' it is added into the AST for a given variable instance. The AST of the variable is computed if one of the following conditions is met: 1) an explication evaluation is required by the programmer using the $eval()$ function member or 2) the variable is required for the computation of a different variable that is not-JIT supported it. When the above occurs and the variable needs to be evaluated, the functions and variables in the AST data structure are used to create a single kernel (``function-call\'\'). This is done by a creating a customized kernel on-the-fly that is made up of all the functions in the AST - the customized function is then executed.\r\n\r\nThis JIT compilation technique has multiple benefits:\r\n<ul>\r\nA reduced number of kernel calls - a kernel call can be a significant overhead for small data-sets.\r\n\r\nBetter cache performance - there are many instances in which the memory required by a \r\nsingle element in the array can be reused multiple or the temporary value of a computation can be stored in the cache and reused by future computations. \r\n\r\nTemporary memory allocation and write-back can be reduced - when multiple expressions are evaluated and stored into temporary arrays, these arrays need to be allocated and the results written back to the main memory.\r\n\r\nAvoid computing elements that are not used - there are cases in which the AST is created for a variable, however the expression is not used later in the computation. Thus, it evaluation can be avoided. \r\n\r\nBetter performance - all the above in fact can help reduce the total execution time.\r\n</ul>\r\n\r\n\r\n\r\n\r\n\r\nFig. \\ref{fig:jitlisting} presents the code for computing the value $\\pi$ using a Monte-Carlo simulation where points\r\nare randomly generated within the unit-square.Each point is then tested to see if it is within the unit-circle. The \r\nratio of points within the circle and the point in the square approximate the value $\\pi$. \r\nThe accuracy of $\\pi$ improves as the number of samples are increased. \r\nThere are two implementations in the code listing. One implementation takes advantage of the JIT feature while the \r\nother implementation does not benefit from the implementation. As the JIT operations are an integral part of the \r\nArrayFire framework, the only way for a programmer to side-step the JIT operations is to manually force expressions to be\r\nevaluated as was done in the non-JIT supported implementation.\r\n\r\nFig. \\ref{fig:jitperformance} depicts the \r\nexecution time (abscissa) as a function of the number of samples (ordinate) for two implementations in Fig. \r\n\\ref{fig:jitlisting}. When the number of samples is considerably small, the execution time of the non-JIT supported function\r\nis dominated by the launch of multiple kernels. While the JIT supported function only has a single kernel to launch, the\r\ncreation of the JIT-code dominates the execution time. Nonetheless, the JIT supported function is $1.4X-2.0X$ than the non-JIT\r\nsupported function. In the case of the large number of samples, both the kernel launch overhead and the JIT-code creation, \r\nare not the limiting factor - the execution time is dominated by the functionality of the kernel. Specifically, the JIT\r\nsupported version is $2.0X-2.7X$ faster than the non-JIT support function due to the reduced number of cache-misses.\r\n\r\n\r\n\r\n','Performance of ArrayFire JIT Code Generation','','inherit','open','open','','7702-revision-v1','','','2015-02-12 16:20:14','2015-02-12 16:20:14','',7702,'http://sandbox.arrayfire.com/7702-revision-v1/',0,'revision','',0),(7705,17796,'2015-02-12 16:20:34','2015-02-12 16:20:34','The ArrayFire library offers JIT (Just In Time) compiling for standard arithmetic operations. This includes trigonometric functions,  comparisons, and element-wise operations. At run-time, ArrayFire aggregates these function calls using an Abstract Syntax Tree (AST) data structure such that when ever a JIT supported function is ``met\'\' it is added into the AST for a given variable instance. The AST of the variable is computed if one of the following conditions is met: 1) an explication evaluation is required by the programmer using the $eval()$ function member or 2) the variable is required for the computation of a different variable that is not-JIT supported it. When the above occurs and the variable needs to be evaluated, the functions and variables in the AST data structure are used to create a single kernel (``function-call\'\'). This is done by a creating a customized kernel on-the-fly that is made up of all the functions in the AST - the customized function is then executed.\r\n\r\nThis JIT compilation technique has multiple benefits:\r\n<ul>\r\n<li>A reduced number of kernel calls - a kernel call can be a significant overhead for small data-sets.\r\n</li>\r\nBetter cache performance - there are many instances in which the memory required by a \r\nsingle element in the array can be reused multiple or the temporary value of a computation can be stored in the cache and reused by future computations. \r\n\r\nTemporary memory allocation and write-back can be reduced - when multiple expressions are evaluated and stored into temporary arrays, these arrays need to be allocated and the results written back to the main memory.\r\n\r\nAvoid computing elements that are not used - there are cases in which the AST is created for a variable, however the expression is not used later in the computation. Thus, it evaluation can be avoided. \r\n\r\nBetter performance - all the above in fact can help reduce the total execution time.\r\n</ul>\r\n\r\n\r\n\r\n\r\n\r\nFig. \\ref{fig:jitlisting} presents the code for computing the value $\\pi$ using a Monte-Carlo simulation where points\r\nare randomly generated within the unit-square.Each point is then tested to see if it is within the unit-circle. The \r\nratio of points within the circle and the point in the square approximate the value $\\pi$. \r\nThe accuracy of $\\pi$ improves as the number of samples are increased. \r\nThere are two implementations in the code listing. One implementation takes advantage of the JIT feature while the \r\nother implementation does not benefit from the implementation. As the JIT operations are an integral part of the \r\nArrayFire framework, the only way for a programmer to side-step the JIT operations is to manually force expressions to be\r\nevaluated as was done in the non-JIT supported implementation.\r\n\r\nFig. \\ref{fig:jitperformance} depicts the \r\nexecution time (abscissa) as a function of the number of samples (ordinate) for two implementations in Fig. \r\n\\ref{fig:jitlisting}. When the number of samples is considerably small, the execution time of the non-JIT supported function\r\nis dominated by the launch of multiple kernels. While the JIT supported function only has a single kernel to launch, the\r\ncreation of the JIT-code dominates the execution time. Nonetheless, the JIT supported function is $1.4X-2.0X$ than the non-JIT\r\nsupported function. In the case of the large number of samples, both the kernel launch overhead and the JIT-code creation, \r\nare not the limiting factor - the execution time is dominated by the functionality of the kernel. Specifically, the JIT\r\nsupported version is $2.0X-2.7X$ faster than the non-JIT support function due to the reduced number of cache-misses.\r\n\r\n\r\n\r\n','Performance of ArrayFire JIT Code Generation','','inherit','open','open','','7702-revision-v1','','','2015-02-12 16:20:34','2015-02-12 16:20:34','',7702,'http://sandbox.arrayfire.com/7702-revision-v1/',0,'revision','',0),(7706,17796,'2015-02-12 16:25:57','2015-02-12 16:25:57','The ArrayFire library offers JIT (Just In Time) compiling for standard arithmetic operations. This includes trigonometric functions,  comparisons, and element-wise operations. At run-time, ArrayFire aggregates these function calls using an Abstract Syntax Tree (AST) data structure such that when ever a JIT supported function is ``met\'\' it is added into the AST for a given variable instance. The AST of the variable is computed if one of the following conditions is met: 1) an explication evaluation is required by the programmer using the $eval()$ function member or 2) the variable is required for the computation of a different variable that is not-JIT supported it. When the above occurs and the variable needs to be evaluated, the functions and variables in the AST data structure are used to create a single kernel (``function-call\'\'). This is done by a creating a customized kernel on-the-fly that is made up of all the functions in the AST - the customized function is then executed.\r\n\r\nThis JIT compilation technique has multiple benefits:\r\n<ul>\r\n<li>\r\nA reduced number of kernel calls - a kernel call can be a significant overhead for small data-sets.\r\n</li>\r\n<li>\r\nBetter cache performance - there are many instances in which the memory required by a \r\nsingle element in the array can be reused multiple or the temporary value of a computation can be stored in the cache and reused by future computations. \r\n</li>\r\n<li>\r\nTemporary memory allocation and write-back can be reduced - when multiple expressions are evaluated and stored into temporary arrays, these arrays need to be allocated and the results written back to the main memory.\r\n</li>\r\n<li>\r\nAvoid computing elements that are not used - there are cases in which the AST is created for a variable, however the expression is not used later in the computation. Thus, it evaluation can be avoided. \r\n</li>\r\n<li>\r\nBetter performance - all the above in fact can help reduce the total execution time.\r\n</li>\r\n</ul>\r\n\r\n\r\n\r\n\r\n\r\nFig. \\ref{fig:jitlisting} presents the code for computing the value $\\pi$ using a Monte-Carlo simulation where points\r\nare randomly generated within the unit-square.Each point is then tested to see if it is within the unit-circle. The \r\nratio of points within the circle and the point in the square approximate the value $\\pi$. \r\nThe accuracy of $\\pi$ improves as the number of samples are increased. \r\nThere are two implementations in the code listing. One implementation takes advantage of the JIT feature while the \r\nother implementation does not benefit from the implementation. As the JIT operations are an integral part of the \r\nArrayFire framework, the only way for a programmer to side-step the JIT operations is to manually force expressions to be\r\nevaluated as was done in the non-JIT supported implementation.\r\n\r\nFig. \\ref{fig:jitperformance} depicts the \r\nexecution time (abscissa) as a function of the number of samples (ordinate) for two implementations in Fig. \r\n\\ref{fig:jitlisting}. When the number of samples is considerably small, the execution time of the non-JIT supported function\r\nis dominated by the launch of multiple kernels. While the JIT supported function only has a single kernel to launch, the\r\ncreation of the JIT-code dominates the execution time. Nonetheless, the JIT supported function is $1.4X-2.0X$ than the non-JIT\r\nsupported function. In the case of the large number of samples, both the kernel launch overhead and the JIT-code creation, \r\nare not the limiting factor - the execution time is dominated by the functionality of the kernel. Specifically, the JIT\r\nsupported version is $2.0X-2.7X$ faster than the non-JIT support function due to the reduced number of cache-misses.\r\n\r\n\r\n\r\n','Performance of ArrayFire JIT Code Generation','','inherit','open','open','','7702-revision-v1','','','2015-02-12 16:25:57','2015-02-12 16:25:57','',7702,'http://sandbox.arrayfire.com/7702-revision-v1/',0,'revision','',0),