Free OpenCL Libraries

>> Sunday, June 14, 2015

While reading through the Khronos site, I was surprised by how many OpenCL libraries are freely available for download. Here are three that look particularly interesting:

For more tools and resources, I strongly recommend the list maintained by StreamComputing.


Intel and Altera, Again

>> Monday, June 1, 2015

After months of rumors, it's finally official. Intel has agreed to pay $16.7B to purchase Altera. This will make them a major force in the world of field-programmable gate arrays (FPGAs).

Some analysts have questioned this deal, stating that the FPGA market is too small to be worth Intel's time. But they don't understand. Intel is going to use Altera's technology to create an entirely new type of computational device. Like peanut butter and chocolate, FPGAs and CPUs are two great things that go great together.

I'd love to know what the killer app will be. Database acceleration? Video compression? Deep packet inspection? According to this posting, Intel is looking for someone who knows OpenCL, FPGAs, and RF circuits. It looks like they're trying to perform all of a smartphone's processing on one device. Should we call it a smartphone on a chip (SPoC)? How about Field Programmable Processing Unit (FPPU)?

At the very least, I hope Intel will fix the vendor lock-in problem. Right now, you can't program Xilinx FPGAs without Xilinx's software and you can't program Altera FPGAs without Altera's software. But if Intel allows third-party tools to access their FPGA fabric the way they allow third-party access to their processors, it will be a major step forward.


Points of Interest

>> Monday, April 27, 2015

  • Alexander Overvoorde wrote a great post on the Mantle API, and explains how it can be used in a demo application.
  • According to AnandTech, Nvidia's latest GPU driver provides support for OpenCL 1.2. I haven't found any announcement or confirmation from Nvidia.
  • The International Workshop on OpenCL (IWOCL) will feature an advanced hands-on tutorial from Simon McIntosh-Smith. Topics include SYCL, SPIR, and features related to OpenCL 2.0. Dr. McIntosh-Smith has released a free tutorial on OpenCL here.


Intel and Altera

>> Sunday, March 29, 2015

Edit: As of 4/9, it looks like the Intel-Altera buyout discussions have come to a halt.

There's been no official word, but reputable sources are reporting that Intel is taking steps to buy Altera. In all likelihood, this is related to Intel's plan to integrate FPGA fabric into their upcoming Xeon processors. I've discussed this before (here and here).

I'll be surprised if Intel allows developers to access the FPGA fabric with traditional design languages like VHDL or Verilog. It would be safer to provide access through OpenCL kernels. That is, a design based on a simple procedure wouldn't be as susceptible to low-level issues like race conditions or clock skew. Still, current FPGA design tools are expensive (especially Altera's) and it can take hours to convert any type of design to an FPGA bitstream.

I'm particularly curious whether Intel will allow partial reconfiguration of the FPGA fabric. A long time ago, I worked on a DARPA project to implement cognitive modeling with FPGAs, and I became fascinated with the field of reconfigurable computing. Personally, I think hard artificial intelligence will only become realizable when devices are capable of rewiring their internal circuitry.


The Mantle API

>> Wednesday, March 18, 2015

AMD just released the programming guide and reference for the Mantle API (PDF). This should give us an idea of what the Vulkan API will be like.

I've only skimmed the document so far, but I'm surprised by how much Mantle resembles OpenCL and how little it resembles OpenGL. GPUs are represented by device structures that receive data packaged in memory objects. "Commands are sent to the GPU by recording them in command buffers and submitting command buffers to the GPU queues." Sounds familiar.

Mantle provides lower-level access to GPUs than OpenCL. It's reasonable to assume that a well-coded Mantle/Vulkan compute application will outperform a comparably well-coded OpenCL application. Of course, this only applies to applications that target GPUs.

Mantle has a window system interface specifically for the Windows operating system. Interesting. I wonder if Vulkan will have similar interfaces for different operating systems.


Why Valve Should Buy Qt

>> Sunday, March 15, 2015

Recently, I came up with an idea for a commercial desktop application. It's cross-platform, so I planned to use Qt as the framework. Qt is released under two licenses: a commercial license and the LGPL. The LGPL states that Qt can be freely distributed in an application so long as the libraries are kept separate. But I don't mind paying for quality, so I called the Qt Company to ask about the commercial license.

The least expensive commercial license costs over $300 a month. No technical support. That's pocket change for a large company, but it's beyond my reach and that of many small businesses. In contrast, Microsoft sells its toolset for a one-time cost of $500, making Windows development significantly more cost-effective.

Now I'm considering wxWidgets and GTK+, but I'd rather use Qt. It's polished and well-documented, and I've never encountered any errors or issues with performance. The developer base is vast, with coders across the world fixing bugs and adding their own extensions.

Valve is deeply interested in promoting Linux, so I think they should buy Qt and release it under a license like the MIT License or BSD License. This would give coders, corporations, and entrepreneurs a good reason to choose cross-platform development over Windows-only development. It would also give Valve and the Khronos Group a framework with which to showcase their new toolsets.

At present, Valve is focused on developing and distributing games. But there's no reason that Steam can't be used to distribute general applications. I'd be happy to pay Valve to distribute my product if they made sure it couldn't be pirated.

One last thing. Vulkan can render graphics inside of an application's window, but it can't provide the window. Basic frameworks like GLUT are fine for newcomers, but professional developers need more. Qt meets these needs, and if Qt supported Vulkan before anyone else, it would be a major step forward for open-source development.


Vulkan and OpenCL

>> Sunday, March 8, 2015

I've read the slides (PDF) from the presentations on Vulkan, and I've learned a great deal. But two things puzzle me. First, it's clear that Vulkan is intended to replace OpenGL, but nothing I've read suggests that it may replace OpenCL. But how can a compute-only language stay relevant when a graphics-and-compute language is available?

One important distinction is that, unlike Vulkan, OpenCL runs on devices that aren't GPUs. Intel has an OpenCL SDK for their CPUs and Altera has an SDK for their FPGAs. I've read that Texas Instruments is working on an SDK for their digital signal processors (DSPs). Still, the OpenCL developer base is so small and the API is so complex that I wonder if it's worth the effort.

My second question involves Nvidia. They've spent many years and millions of dollars trying to convince people that CUDA is the language for GPU computation. What do they gain by supporting Vulkan? I'm sure Vulkan will never approach CUDA in features or performance on Nvidia hardware, but it still seems odd to hear their representatives praising a competing language.


  © Blogger template Werd by 2009

Back to TOP