Ray Tracing with CUDA

78
Ray tracing with GPGPUs Pedro G. M. R. Alves and Ricardo Biloti, Unicamp & INCT-GP, BR quarta-feira, 21 de setembro de 11

Transcript of Ray Tracing with CUDA

Page 1: Ray Tracing with CUDA

Ray tracing with GPGPUs

Pedro G. M. R. Alves and Ricardo Biloti,Unicamp & INCT-GP, BR

quarta-feira, 21 de setembro de 11

Page 2: Ray Tracing with CUDA

quarta-feira, 21 de setembro de 11

Page 3: Ray Tracing with CUDA

Ray Tracing

quarta-feira, 21 de setembro de 11

Page 4: Ray Tracing with CUDA

Ray Tracing

The ray theory is a high frequency approximation of the wave equation solution.

Rays are preferential paths for energy propagation.

quarta-feira, 21 de setembro de 11

Page 5: Ray Tracing with CUDA

Ray Tracing

quarta-feira, 21 de setembro de 11

Page 6: Ray Tracing with CUDA

Ray Tracing

Subsurface Model

quarta-feira, 21 de setembro de 11

Page 7: Ray Tracing with CUDA

Ray Tracing

Subsurface Model

Propagation Times

quarta-feira, 21 de setembro de 11

Page 8: Ray Tracing with CUDA

Ray Tracing

Direct Problem

Subsurface Model

Propagation Times

quarta-feira, 21 de setembro de 11

Page 9: Ray Tracing with CUDA

Ray Tracing

Direct Problem

Subsurface Model

Propagation Times

Inverse Problem

quarta-feira, 21 de setembro de 11

Page 10: Ray Tracing with CUDA

Ray Tracing

quarta-feira, 21 de setembro de 11

Page 11: Ray Tracing with CUDA

Ray Tracing

Comparison between real and simulated data.

quarta-feira, 21 de setembro de 11

Page 12: Ray Tracing with CUDA

Ray Tracing

Comparison between real and simulated data.

The synthetic model may need modification.

quarta-feira, 21 de setembro de 11

Page 13: Ray Tracing with CUDA

Ray Tracing

Comparison between real and simulated data.

The synthetic model may need modification.

More rays to trace.

quarta-feira, 21 de setembro de 11

Page 14: Ray Tracing with CUDA

Ray Tracing

Comparison between real and simulated data.

The synthetic model may need modification.

More rays to trace.

This step should be as fast as possible.

quarta-feira, 21 de setembro de 11

Page 15: Ray Tracing with CUDA

Ray Tracing

quarta-feira, 21 de setembro de 11

Page 16: Ray Tracing with CUDA

We need to solve a differential equation system to calculate a ray's path.

Ray Tracing

8<

:

@X@t = v2P

@P@t = 1

vrv

1

quarta-feira, 21 de setembro de 11

Page 17: Ray Tracing with CUDA

Ray Tracing

quarta-feira, 21 de setembro de 11

Page 18: Ray Tracing with CUDA

Runge-Kutta method to solve each equation.

Ray Tracing

quarta-feira, 21 de setembro de 11

Page 19: Ray Tracing with CUDA

Runge-Kutta method to solve each equation.

Interpolation method to find velocity on the ray's path.

Ray Tracing

quarta-feira, 21 de setembro de 11

Page 20: Ray Tracing with CUDA

Runge-Kutta method to solve each equation.

Interpolation method to find velocity on the ray's path.

Should be done fast.

Ray Tracing

quarta-feira, 21 de setembro de 11

Page 21: Ray Tracing with CUDA

quarta-feira, 21 de setembro de 11

Page 22: Ray Tracing with CUDA

Sequential Processing VS

Parallel Processing

quarta-feira, 21 de setembro de 11

Page 23: Ray Tracing with CUDA

Sequential Processing VS

Parallel Processing

In the Past: Increasing a computer's performance -> Increasing CPU's operating frequency.

quarta-feira, 21 de setembro de 11

Page 24: Ray Tracing with CUDA

Sequential Processing VS

Parallel Processing

In the Past: Increasing a computer's performance -> Increasing CPU's operating frequency.

Today: Multi-Core processors.

quarta-feira, 21 de setembro de 11

Page 25: Ray Tracing with CUDA

Sequential Processing VS

Parallel Processing

quarta-feira, 21 de setembro de 11

Page 26: Ray Tracing with CUDA

GPUs (Graphic Processor Unit).

Sequential Processing VS

Parallel Processing

quarta-feira, 21 de setembro de 11

Page 27: Ray Tracing with CUDA

GPUs (Graphic Processor Unit).

Dedicated processor to the graphic card.

Sequential Processing VS

Parallel Processing

quarta-feira, 21 de setembro de 11

Page 28: Ray Tracing with CUDA

GPUs (Graphic Processor Unit).

Dedicated processor to the graphic card.

Solution for graphic processing.

Sequential Processing VS

Parallel Processing

quarta-feira, 21 de setembro de 11

Page 29: Ray Tracing with CUDA

GPUs (Graphic Processor Unit).

Dedicated processor to the graphic card.

Solution for graphic processing.

Graphic applications use a lot of parallel processing, so GPUs have to be good in it.

Sequential Processing VS

Parallel Processing

quarta-feira, 21 de setembro de 11

Page 30: Ray Tracing with CUDA

Sequential Processing VS

Parallel Processing

quarta-feira, 21 de setembro de 11

Page 31: Ray Tracing with CUDA

Cores

Price

CPU

10

High

Sequential Processing VS

Parallel Processing

quarta-feira, 21 de setembro de 11

Page 32: Ray Tracing with CUDA

Cores

Price

CPU GPU

10 +400

High Popular

Sequential Processing VS

Parallel Processing

quarta-feira, 21 de setembro de 11

Page 33: Ray Tracing with CUDA

quarta-feira, 21 de setembro de 11

Page 34: Ray Tracing with CUDA

CUDA

quarta-feira, 21 de setembro de 11

Page 35: Ray Tracing with CUDA

CUDA

Developed by NVIDIA.

quarta-feira, 21 de setembro de 11

Page 36: Ray Tracing with CUDA

CUDA

Developed by NVIDIA.

Programs being executed on GPU.

quarta-feira, 21 de setembro de 11

Page 37: Ray Tracing with CUDA

CUDA

Developed by NVIDIA.

Programs being executed on GPU.

GPU being used as a General Purpose processor (GPGPU), taking advantage of parallel processing capability.

quarta-feira, 21 de setembro de 11

Page 38: Ray Tracing with CUDA

CUDA

quarta-feira, 21 de setembro de 11

Page 39: Ray Tracing with CUDA

A thread is a portion of a program that runs independently of and concurrently with other portions of the program.

CUDA

quarta-feira, 21 de setembro de 11

Page 40: Ray Tracing with CUDA

A thread is a portion of a program that runs independently of and concurrently with other portions of the program.

Thousands of threads running simultaneously on GPU against a few ones on CPU.

CUDA

quarta-feira, 21 de setembro de 11

Page 41: Ray Tracing with CUDA

quarta-feira, 21 de setembro de 11

Page 42: Ray Tracing with CUDA

Ray tracer

quarta-feira, 21 de setembro de 11

Page 43: Ray Tracing with CUDA

Ray tracer

Ray Tracer application developed in C with support to CUDA.

quarta-feira, 21 de setembro de 11

Page 44: Ray Tracing with CUDA

Ray tracer

Ray Tracer application developed in C with support to CUDA.

Excellent for CUDA implementation.

quarta-feira, 21 de setembro de 11

Page 45: Ray Tracing with CUDA

Ray tracer

Ray Tracer application developed in C with support to CUDA.

Excellent for CUDA implementation.

Simultaneous path calculation for several rays.

quarta-feira, 21 de setembro de 11

Page 46: Ray Tracing with CUDA

Ray tracer

quarta-feira, 21 de setembro de 11

Page 47: Ray Tracing with CUDA

0

1000

2000

0 2000 4000 6000 8000

2000

3000

4000

5000

m/s

Ray tracer

Marmousi Modelquarta-feira, 21 de setembro de 11

Page 48: Ray Tracing with CUDA

Ray tracer

quarta-feira, 21 de setembro de 11

Page 49: Ray Tracing with CUDA

0

500

1000

1500

2000

2500

0 1000 2000 3000 4000 5000 6000 7000 8000 9000

Depth (m)

Range (m)

Ray tracer

quarta-feira, 21 de setembro de 11

Page 50: Ray Tracing with CUDA

Ray tracer

quarta-feira, 21 de setembro de 11

Page 51: Ray Tracing with CUDA

0

1000

2000

0 2000 4000 6000 8000

2000

3000

4000

5000

m/s

0

500

1000

1500

2000

2500

0 1000 2000 3000 4000 5000 6000 7000 8000 9000

Depth (m)

Range (m)

Ray tracer

quarta-feira, 21 de setembro de 11

Page 52: Ray Tracing with CUDA

Ray tracer

quarta-feira, 21 de setembro de 11

Page 53: Ray Tracing with CUDA

Ray tracer 0

500

1000

1500

2000

2500

0 1000 2000 3000 4000 5000 6000 7000 8000 9000

Dept

h (m

)

Range (m)

quarta-feira, 21 de setembro de 11

Page 54: Ray Tracing with CUDA

Ray tracer

quarta-feira, 21 de setembro de 11

Page 55: Ray Tracing with CUDA

Tracer supports parallel processing with CUDA (GPU) and sequential/parallel processing with the CPU.

Ray tracer

quarta-feira, 21 de setembro de 11

Page 56: Ray Tracing with CUDA

Tracer supports parallel processing with CUDA (GPU) and sequential/parallel processing with the CPU.

Processing performance by CPU uses GSL library.

Ray tracer

quarta-feira, 21 de setembro de 11

Page 57: Ray Tracing with CUDA

Tracer supports parallel processing with CUDA (GPU) and sequential/parallel processing with the CPU.

Processing performance by CPU uses GSL library.

CUDA doesn't support most of the common C libraries.

Ray tracer

quarta-feira, 21 de setembro de 11

Page 58: Ray Tracing with CUDA

quarta-feira, 21 de setembro de 11

Page 59: Ray Tracing with CUDA

Benchmark

quarta-feira, 21 de setembro de 11

Page 60: Ray Tracing with CUDA

Benchmark application.

Benchmark

quarta-feira, 21 de setembro de 11

Page 61: Ray Tracing with CUDA

Benchmark application.

GPU with CUDA.

CPU performing sequential processing.

CPU performing parallel processing.

Benchmark

quarta-feira, 21 de setembro de 11

Page 62: Ray Tracing with CUDA

Benchmark application.

GPU with CUDA.

CPU performing sequential processing.

CPU performing parallel processing.

Least-squares method to analyse data.

Benchmark

quarta-feira, 21 de setembro de 11

Page 63: Ray Tracing with CUDA

Benchmark

quarta-feira, 21 de setembro de 11

Page 64: Ray Tracing with CUDA

Benchmark

CPU: Intel Xeon X5570 @ 2.93GHz, 4 cores | GPU: NVIDIA Tesla C1060 @ 1.3 GHz, 240 cores

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0 200 400 600 800 1000

Processing time (s)

Rays

GPU with CUDACPU parallel

CPU sequential

quarta-feira, 21 de setembro de 11

Page 65: Ray Tracing with CUDA

Benchmark

CPU: Intel Xeon X5570 @ 2.93GHz, 4 cores | GPU: NVIDIA Tesla C1060 @ 1.3 GHz, 240 cores

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0 200 400 600 800 1000

Processing time (s)

Rays

GPU with CUDACPU parallel

CPU sequential

quarta-feira, 21 de setembro de 11

Page 66: Ray Tracing with CUDA

Benchmark

CPU: Intel Xeon X5570 @ 2.93GHz, 4 cores | GPU: NVIDIA Tesla C1060 @ 1.3 GHz, 240 cores

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0 200 400 600 800 1000

Processing time (s)

Rays

GPU with CUDACPU parallel

CPU sequential

quarta-feira, 21 de setembro de 11

Page 67: Ray Tracing with CUDA

Benchmark

CPU: Intel Xeon X5570 @ 2.93GHz, 4 cores | GPU: NVIDIA Tesla C1060 @ 1.3 GHz, 240 cores

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0 200 400 600 800 1000

Processing time (s)

Rays

GPU with CUDACPU parallel

CPU sequential

quarta-feira, 21 de setembro de 11

Page 68: Ray Tracing with CUDA

Benchmark

quarta-feira, 21 de setembro de 11

Page 69: Ray Tracing with CUDA

Benchmark

CPU: Intel Xeon X5570 @ 2.93GHz, 4 cores | GPU: NVIDIA Tesla C1060 @ 1.3 GHz, 240 cores

0

10

20

30

40

50

60

70

0 20000 40000 60000 80000 100000

Processing time (s)

Rays

GPU with CUDACPU parallel

CPU sequential

quarta-feira, 21 de setembro de 11

Page 70: Ray Tracing with CUDA

Benchmark

quarta-feira, 21 de setembro de 11

Page 71: Ray Tracing with CUDA

66%

Benchmark

against parallel processing performed by CPU.

quarta-feira, 21 de setembro de 11

Page 72: Ray Tracing with CUDA

Benchmark

quarta-feira, 21 de setembro de 11

Page 73: Ray Tracing with CUDA

82%

Benchmark

against sequential processing performed by CPU.

quarta-feira, 21 de setembro de 11

Page 74: Ray Tracing with CUDA

Benchmark

quarta-feira, 21 de setembro de 11

Page 75: Ray Tracing with CUDA

Benchmark

Processing Type / Processor Parallel/CPU Sequential/CPU

Parallel/GPU 66% 82%

GPU's performance increase against CPU

quarta-feira, 21 de setembro de 11

Page 76: Ray Tracing with CUDA

Conclusion

quarta-feira, 21 de setembro de 11

Page 77: Ray Tracing with CUDA

quarta-feira, 21 de setembro de 11

Page 78: Ray Tracing with CUDA

Acknowledgements

GêBR project

Petrobras

WIT Consortium

quarta-feira, 21 de setembro de 11