Vulkan Update

>> Sunday, December 20, 2015

The Vulkan Working Group released an announcement stating that Vulkan will not be ready by the end of the year. However, they are "in the home stretch" and the toolset will be released soon.

Google upgraded its membership in the Khronos Group. It would be great if the Android team took an active role in developing Khronos technologies like Vulkan. Now if only Apple would answer the phone...

I'd expect Vulkan's release to be announced at a tech conference so that it's capabilities can be demonstrated in full. But none of the upcoming conferences (CES, HiPEAC) seem appropriate. Hmm.

In other news, Imagination Technologies has released further video presentations on Vulkan, and they're all on YouTube.


SC15 Announcements

>> Wednesday, November 25, 2015

The Supercomputing 2015 (SC15) conference wrapped up last week. No news on Vulkan, but there were (at least) three noteworthy announcements:

  • The OpenCL 2.1 spec is available and you can download the PDF here. The major change is that SPIR-V is supported as an intermediate language (IL). To use it, call clCreateProgramWithIL with a pointer to the SPIR-V code.
  • Version 1.0 of SPIR-V is also available. The PDF is here.
  • Altera (now owned by Intel) demonstrated the processing power of its OpenCL-programmable FPGAs.


Fingers Crossed

>> Sunday, November 15, 2015

Imagination Technologies released its second Vulkan webinar on 11/9 (first and second). Valve released its Steam Machine on 11/10. It's probably just wishful thinking, but I hope these are tidings that Vulkan's release is imminent.

There's another reason to be hopeful. We've been told that Vulkan will be released before the end of the year, and the only remaining conference is next week's SC15. Will Vulkan be announced in the next few days? I certainly hope so.


Two Articles on Vulkan

>> Saturday, August 29, 2015

Still no hard documentation, but here are two interesting articles written by developers who are already using the Vulkan API:

  • Nermin Hajdarbegovic wrote a brief overview of the Vulkan API.
  • Sascha Willems wrote an article on his initial experiences with Vulkan.


Vulkan News

>> Sunday, August 16, 2015

The SIGGRAPH 2015 conference ended on 8/13, and like many, I was eager to hear about Vulkan, the upcoming replacement for OpenGL. Here's what we know:

  1. Steam and LunarG are working together to provide support tools for Vulkan. Their presentation is on YouTube.
  2. Piers Daniell of Nvidia gave a high-level talk (PDF) on the Vulkan language and Vulkan development.
  3. Google announced that Android will support Vulkan in addition to OpenGL ES.
Still no drivers or documentation on the API, but the Google announcement is certainly good news. Android graphics developers will probably continue to use OpenGL ES, but if Vulkan compute kernels can be executed on Android, I'll bet Renderscript won't last much longer.


The AMD Compute Libraries

>> Tuesday, August 11, 2015

AMD has released an open-source set of OpenCL libraries called the AMD Compute Libraries, or ACL. This contains four libraries intended for GPUs:

  • clBLAS - linear algebra functions
  • clFFT - Fast Fourier Transform
  • clSparse - Sparse matrix operations
  • clRNG - Random number generation
And two libraries intended to be run on CPUs:
  • BLIS - framework for "instantiating BLAS-like libraries"
  • libFlame - matrix operations, similar to LAPACK
I'd be interested to know how the clSparse functions compare to sparse matrix functions running on a CPU. I wrote some OpenCL sparse matrix routines for the book (Chapter 13), but the algorithms don't easily lend themselves to parallel computation, so it's hard to get good performance.


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:

  • clMath - includes OpenCL code for the FFT, BLAS operations, and random number generation
  • Advanced Simulation Library (ASL) - physics simulator using Lattice Boltzmann methods
  • ViennaCL - A linear algebra library with a Python wrapper
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.


One API to Rule Them All

>> Tuesday, March 3, 2015

The Khronos Group has announced that Vulkan (formerly known as glNext) will provide "high-efficiency access to graphics and compute on modern GPUs." From the look of it, Vulkan will effectively supersede OpenGL, OpenCL, CUDA, Direct3D, and Mantle for GPU development. The API won't be released until later in the year, but Valve will provide a preview at the Game Developers Conference.

I think this is wonderful. I shouldn't need three languages to program one processor. Further, OpenGL has become so bloated and high-level that it's next to impossible to know how efficiently an application will run. And though I loved OpenCL-OpenGL interoperability, it annoyed me that the CPU had to tell the GPU when to switch between OpenCL kernels and OpenGL shaders.

Most of the major hardware vendors have endorsed Vulkan, but I haven't heard anything from Google. That's a shame. Chrome won't run WebCL in any way and the only GPU compute language supported by Android is Renderscript. If Google would get on board with Vulkan, it would be a fine thing.

In other news, the Khronos Group has released a provisional spec for OpenCL 2.1. From the announcement, the major change is that kernels can be coded with C++. The link to the PDF is here.


Unveiling glNext

>> Tuesday, February 3, 2015

One of the most exciting technical developments on the horizon is the next-generation OpenGL initiative. I was skeptical at first, having been underwhelmed by the release of OpenGL 3.0. But Valve is deeply involved in launching the new API, and they'll have two developers discussing the effort at the upcoming Game Developers' Conference. According to the GDC schedule, this will be the "unveiling of Khronos' glNext initiative." Very interesting.

Valve is a funny company. It isn't publicly traded and they don't advertise, so you won't hear about them through regular channels. But in addition to producing some of the best PC games ever, they're also the largest digital distributor of PC games I know of. This gives them a lot of influence in the world of games and graphics. If Valve demands hardware that runs glNext, I'm sure the hardware vendors will bend over backwards to provide support.

That said, it doesn't look like any of the hardware vendors (Intel, AMD, Nvidia) will be present for the unveiling of glNext. I'm surprised.


  © Blogger template Werd by 2009

Back to TOP