GPU card

The Power of GPU

Supercomputer Speed at Zero Cost

Massively Parallel Speed

GPGPU stands for General Purpose GPU. It means using a GPU (Graphics Processing Unit) not just as a graphics processor but as a general purpose processor, taking advantage of the hundreds or even thousands of processing cores available on modern GPUs to accomplish computations with massive parallelism and speed. As fast as Parallel CPU operation can be, when Radian goes beyond that to dispatch massively parallel tasks to GPGPU, it can absolutely crush anything that is limited to just the CPU.

It is not an exaggeration to say that massively parallel GPGPU technology could be the most revolutionary thing to happen in computing since the invention of the microprocessor. It is that fast, that inexpensive and has that much potential. GPU is so important that all Radian users should insist the computer hardware they procure is GPGPU-enabled. GPGPU computation requires an NVIDIA GPU of Fermi generation or later.

Ensuring your system is GPGPU-capable will probably cost you zero extra, because modern systems all have GPUs for graphics anyway. Reasonably recent computers with an NVIDIA GPU already are GPGPU-capable. If not, adding a GPGPU-capable card costs almost nothing because for $50 you can buy a GPU card with hundreds of cores that will absolutely crush any CPU. Radian will automatically use multiple GPU cards to run thousands of cores. Four top end GPU cards with 3584 cores each provide a total of 14336 cores. Radian will use them all.

Parallel Processing

Radian is inherently a parallel processing system. Whenever it makes sense to do so, Radian will automatically utilize multiple processors or multiple processor cores by parallelizing a task into multiple threads for execution on more than one core. Given hyperthreading plus multi-core CPUs it is now routine to encounter desktop systems with 8, 16, 32 or even more CPU cores available. See the Parallel CPU page for info on CPU parallelism in Radian.

In addition to this basic, parallel processing capability using multiple CPU cores Radian also includes the ability to utilize massively parallel multiprocessing utilizing GPUs, potentially launching tasks on thousands of processing cores at once for true supercomputer computational performance, far beyond what can be achieved with CPUs.

Radian automatically parallelizes and dispatches as many tasks as make sense to GPGPU, with automatic fallback to parallelized tasks dispatched to multiple CPU cores if a GPU is not available. CPU parallelism in Radian is also a key part of providing massively parallel GPGPU function, because many CPU cores working in parallel are required to ensure maximum use of GPU. A single CPU core running non-parallel is not fast enough to keep up.

Automatic GPGPU Utilization

GPGPU acceleration works everywhere in Radian SQL where worthwhile work arises: in the SELECT list, in WHERE, in EXECUTE, ...everywhere. For example, if you add to a table a computed field that combines multiple tiles together, that computed field will use GPGPU. If you do some tile math in a FUNCTION, that FUNCTION will use GPGPU as well.

You don't have to write something special or learn programming environments like CUDA. Use the same SQL you already know and Radian automatically parallelizes it to use GPGPU. If you don't use SQL but prefer point-and-click Radian templates, those automatically use GPGPU as well.

When you write something like SELECT tilea + tileb ∗ 5 + tilec ∗ 8 FROM ..., the Radian engine takes the expression with three additions and two multiplications, generates GPGPU code for that function in a Just In Time, JIT manner and uploads the resulting code to GPGPU to execute the computations.

To save execution time and boost efficiency, JIT code generation for GPGPU functions is cache-friendly for the driver. Running the same query again, or even running different queries for which the GPGPU expressions are sufficiently similar to each other, will engage the compilation cache maintained by the driver

If you save the project using that computed field or FUNCTION into a Radian .map file and then bring that .map file onto a machine running Radian that has no GPGPU, the computed field will be executed by Radian automatically falling back to using Radian's CPU parallelism, taking advantage of as many CPU cores are available using CPU core parallelism instead of GPGPU. If you bring the .map file back onto a machine that has a GPGPU Radian will automatically use the GPGPU.

Other optimizations play along transparently. If a particular subexpression inside of an expression that runs on GPGPU is a constant in the context of that expression, it will only be evaluated once. If an expression that can run on GPGPU refers to data from multiple tables and has parts that only reference one of these tables, the join optimizer will split the GPGPU expression into pieces according to dependencies and will run these pieces separately and at different times, minimizing work. A SELECT with more than one thread will run multiple copies of GPGPU expressions simultaneously. There are many other similar optimizations automatically integrated with GPGPU utilization.

Some operations are so trivial in terms of computational requirements it makes no sense to dispatch them to GPGPU, the classic case being scalars (trivial) as opposed to tiles (more bulk). CASE expressions, conditionals and similar constructions or functions that operate on scalar values stay on the CPU while functions that operate on tile values generally go to GPGPU unless they use tiles in a trivial fashion, such as making a simple comparison.

Radian's automatic CPU parallelism with typical multicore CPUs is so fast that keeping lighter operations on parallel CPU is faster than packaging them for dispatch to GPU. Each processor core in a modern CPUs is a very powerful computing machine: When Radian parallelizes a task to eight or sixteen hypercores that is a massive amount of computing power. Radian automatically adapts to however many CPU cores are in the computer.

Examples:

  • Abs(v) takes a number and returns a number: it stays on CPU.
  • TileAbs(t) takes a tile and returns a tile: it can go to GPGPU.
  • TileContrast(t, c, p) takes a tile and two numbers, and returns a tile: it can go to GPGPU.
  • TileToValues stays on CPU since it is simply splitting pixels out of tile with no need for GPGPU for something so simple. If the operation was doing a computation on the pixels first and then splitting it might then be sent to GPGPU.

CASE conditions are scalar, so they stay on CPU. When CASE is used with tiles whether it is faster to dispatch the task to GPGPU depends on exactly how the tiles are used. Some examples where vXX are scalar values and tXX are tiles:

CASE WHEN v=2 THEN t1 ELSE t2 END

In the above not much is being done with the tiles so the entire construction stays on CPU.

CASE v WHEN 3 THEN TileAbs(t1)+ t2*t3 + TileSqrt(t4) ELSE t1 END

In the above, the expression in THEN will go to GPGPU while the rest of CASE will stay on CPU.

CASE WHEN t1 < t2 THEN 0 ELSE 8 END

In the above the comparison in WHEN does use tiles but it uses them like raw binary values, similar to how ORDER works, so it is more efficient to leave it on CPU.

How Fast Is Radian GPGPU?

If you are doing computations it's fast. Really fast. Gains are usually from 20 times faster to 100 times faster running typical computations on low end, dirt cheap GPU cards. Running complex computations on faster cards, performance can be 100 to 200 times faster than using CPU alone. It's fairly common to do in a second or two what takes more than five minutes without Radian.

If your time is worth more than minimum wage and you're doing anything that requires your machine to think at a higher level than your coffee pot timer, you'll often pay back the cost of a Radian license the first time you use it for anything serious. It's that fast. Nothing else comes close.

The NVIDIA Titan X GPU card at right provides 3584 GPU cores. Radian will use them all for massively parallel power. Plug four of these cards in your desktop computer and you have 14336 GPU cores. Radian will use them all for supercomputer performance. At 74 TeraFLOPS (FP16) a desktop computer with four latest generation NVIDIA cards is over 50 times faster than the fastest supercomputer in the world in 1997, the ASCI RED supercomputer built at Sandia for thermonuclear weapons simulations. That's over 50 times faster.

74 TeraFLOPS is so much power it is difficult for humans to imagine. To match what four such cards can do in one second a human would have to do a floating point calculation every second for almost two and a half million years. Radian makes that power available to you with a point and click. No other GIS or spatial engineering software can do that.

Parallel CPU or Parallel GPU? Which is better?

Easy. Use both! GPGPU is so fast and so inexpensive that no matter how many CPU cores you have it makes sense to also use GPGPU. Don't even think about it. Just do it.

Systems with many CPU cores will also be able to utilize GPGPU more effectively, because Radian's automatic CPU parallelism will launch tasks in parallel on many CPU cores better to keep up with the insane speed of GPGPU.

The biggest technical challenge with advanced GPUs is keeping them busy. Hundreds or thousands of GPU cores are so fast they easily finish tasks that just one CPU core can send them, and then they wait around for something more to do. That's why first and second generation GPGPU applications quickly top out.

Such applications are not parallel but run conventional single core software that dispatches tasks to GPGPU. But non-parallel, single core software cannot remotely keep up with what a thousand GPU cores can do, let alone five thousand or ten thousand GPU cores. To effectively make use of GPU cores the system that feeds them must be totally parallel as well, using many CPU cores in parallel. That's the hallmark of a third or fourth generation fully parallel application like Radian.

The more CPU cores you have the better your system can load your GPU cores. Radian technology automatically utilizes many CPU cores in parallel to dispatch massively parallel tasks into many GPU cores. It's all automatic with no code or anything special from you. Just write the SQL you already know or launch point-and-click templates in Radian and everything happens automatically.


Experience Radian Power in a Free Tool

See Manifold Viewer in Action. Manifold Viewer is a read-only subset of Radian Studio. Although Viewer cannot write projects or save edited data back out to the original data sources, Viewer provides phenomenal capability to view and to analyze almost all possible different types of data in tables, vector geometry, raster data, drawings, maps and images from thousands of different sources. Manifold Viewer delivers a truly useful, Radian technology tool you can use for free to experience Radian power firsthand. See Viewer in action Watch the Manifold Viewer Introduction YouTube video.

Get Manifold Viewer


Suggestions

Suggestions to improve Manifold are always welcome. Please see the Suggestions page for tips on making effective suggestions.


Buy Now via the Online Store

Buy Manifold products on the Online Store. The store is open 24 hours / seven days a week / every day of the year. Orders are processed immediately with serial number email sent out in seconds. Use Manifold products today!

 Click to begin shopping


Radian

Terrain elevations and bathymetry by the Gulf of Aden off the tip of the Horn of Africa, from US Space Shuttle SRTM data. Colored and hill shaded on the fly with a quantized elevation palette by Radian.

About Manifold

Manifold products deliver quality, performance and value in the world's most sophisticated, most modern and most powerful spatial engineering products. Total integration ensures unbeatably low cost of ownership.