GeForce GTX 560

I've just got i5 2300 + GeForce GTX 560 (each for about 200$).
WebCL test report for i5 + GTX 560.

Double floats: GeForce GTX 560 vs. i5 2300

i5 2300   2.8GHz, 4 cores, 4 threads, 32nm technology, AVX instructions
2.8GHz with 4 double float operations/clock (256/64 bits) and 4 cores ~ 45

GTX 560   830gpu/1002mem/1660shaders clock (MHz), 128GB/s Bandwidth, 1950M transistors, 40nm technology
1.66GHz with 336 shaders but double floats are ~8 times slower therefore ~ 70 ?

Intel i5 2300 is only 5.7 times slower than GeForce GTX 560 in double floats (see Parallel M-set test). It is not bad:
1. we get it "for free" and
2. we can't use Intel GPU (GMA) cores power yet but - "The Ivy Bridge GPU adds support for OpenCL 1.1, DirectX 11 and OpenGL 3.1" ( AnandTech: Intel's Ivy Bridge Architecture Exposed)

I think Tesla is more than 4 times faster, but what about Knights Corner? :)

Global memory bandwidth profiling. How warps are placed on 48 core SM

Global memory bandwidth tests: copying 1024×1024 float4 matrices and 2048×2048 float matrices.

Operation   float write   float copy   float4 copy
E-350 3.3 5.5 5.9
GTX 560   91.5   113.7

For GTX 560 the maximum bandwidth is 128GB/s. Global memory is accessed via 32-, 64-, or 128-byte memory transactions. In one float transaction for (32×8) thread blocks a warp reads 32×4 bytes = 128 consecutive bytes with maximum bandwidth. But in 48 core streaming multiprocessor (SM) two schedulers place one warp and a half at the same time. Therefore SM reads at first 128 then 64 bytes and we get ~3/4 of the maximum bandwidth. To get maximum bandwidth 1/2 of warp shall read (write) 128 consecutive bytes as like as in float4 transactions for (16×8) thread blocks.

Note also that: "A cache line is 128 bytes and maps to a 128-byte aligned segment in device memory. Memory accesses that are cached in both L1 and L2 are serviced with 128-byte memory transactions whereas memory accesses that are cached in L2 only are serviced with 32-byte memory transactions."

Ink droplet profiling and optimization?

Simulations are based on the "stable fluids" method of Stam [1,2] (see also 2D fluid dynamics). For simplicity we do not take into account diffusion, but advection introduces artificial diffusion due to linear interpolation between nearest points (it is much larger for 256×256 and 128×128 grids). To improve pictures we could use larger lattices but simulation on 2563 grid uses 0.87 GB of memory and is very slow (5123 grid needs 8 times more). Therefore higher-order accuracy MacCormack scheme is used in [3].

We have several questions:

[1] Jos Stam   Stable Fluids
[2] Mark J. Harris   Fast Fluid Dynamics Simulation on the GPU   GPU Gems: Chapter 38
[3] Keenan Crane, Ignacio Llamas, Sarah Tariq   Real-Time Simulation and Rendering of 3D Fluids. GPU Gems. Chapter 30

WebCL Demos     updated   17 Nov 2011