scholarly journals General Purpose Ray Tracing and Polarized Radiative Transfer in General Relativity

2018 ◽  
Vol 863 (1) ◽  
pp. 8 ◽  
Author(s):  
Pauli Pihajoki ◽  
Matias Mannerkoski ◽  
Joonas Nättilä ◽  
Peter H. Johansson
2016 ◽  
Vol 12 (S324) ◽  
pp. 347-350
Author(s):  
Pauli Pihajoki ◽  
Antti Rantala ◽  
Peter H. Johansson

AbstractWe discuss the problem of polarized radiative transfer in general relativity. We present a set of equations suitable for solving the problem numerically for the case of an arbitrary space-time metric, and show numerical solutions to example problems. The solutions are computed with a new ray-tracing code, Arcmancer, developed by the authors.


2018 ◽  
Vol 14 (S343) ◽  
pp. 381-382
Author(s):  
Frederik De Ceuster ◽  
Jeremy Yates ◽  
Peter Boyle ◽  
Leen Decin ◽  
James Hetherington

AbstractMagritte is a new deterministic radiative transfer code. It is a ray-tracing code that computes the radiation field by solving the radiative transfer equation along a fixed set of rays for each grid cell. Its ray-tracing algorithm is independent of the type of input grid and thus can handle smoothed-particle hydrodynamics (SPH) particles, structured as well as unstructured grids. The radiative transfer solver is highly parallelized and optimized to have well scaling performance on several computer architectures. Magritte also contains separate dedicated modules for chemistry and thermal balance. These enable it to self-consistently model the interdependence between the radiation field and the local thermal and chemical states. The source code for Magritte will be made publically available at github.com/Magritte-code.


2014 ◽  
Vol 442 (1) ◽  
pp. 121-130 ◽  
Author(s):  
T. Schönenbach ◽  
G. Caspar ◽  
P. O. Hess ◽  
T. Boller ◽  
A. Müller ◽  
...  

2017 ◽  
Vol 607 ◽  
pp. A125 ◽  
Author(s):  
Giovanni Natale ◽  
Cristina C. Popescu ◽  
Richard J. Tuffs ◽  
Adam J. Clarke ◽  
Victor P. Debattista ◽  
...  

2014 ◽  
Vol 4 (3) ◽  
Author(s):  
Branislav Sobota ◽  
Štefan Korečko ◽  
Csaba Szabó ◽  
František Hrozek

AbstractRay tracing is one of computer graphics methods for achieving the most realistic outputs. Its main disadvantage is high computation demands. Removal of this disadvantage is possible using parallelization due to the fact that the ray tracing method is inherently parallel. Solution presented in this article uses GPGPU (general-purpose computing on graphics processing units) technology and a predictive evaluation for the acceleration of ray tracing method. The CUDA C was selected as a GPGPU language and it was used for a conversion of a raytracer core. The main reason for choosing this language was usage of the Tesla C1060 graphics card. The predictive evaluation of a scene was based on the fact that total computation time increases proportionally with resolution. This evaluation allows selection of the optimal scene division for the parallel ray tracing. In tests, proposed GPGPU solution reached accelerations up to 28.3× comparing to CPU.


Author(s):  
Franz Schreier ◽  
Sebastián Gimeno García ◽  
Pascal Hedelt ◽  
Michael Hess ◽  
Jana Mendrok ◽  
...  

2021 ◽  
Vol 33 (5) ◽  
pp. 181-204
Author(s):  
Vladimir Frolov ◽  
Vadim Sanzharov ◽  
Vladimir Galaktionov ◽  
Alexander Shcherbakov

In this paper we propose a high-level approach to developing GPU applications based on the Vulkan API. The purpose of the work is to reduce the complexity of developing and debugging applications that implement complex algorithms on the GPU using Vulkan. The proposed approach uses the technology of code generation by translating a C++ program into an optimized implementation in Vulkan, which includes automatic shader generation, resource binding, and the use of synchronization mechanisms (Vulkan barriers). The proposed solution is not a general-purpose programming technology, but specializes in specific tasks. At the same time, it has extensibility, which allows to adapt the solution to new problems. For single input C++ program, we can generate several implementations for different cases (via translator options) or different hardware. For example, a call to virtual functions can be implemented either through a switch construct in a kernel, or through sorting threads and an indirect dispatching via different kernels, or through the so-called callable shaders in Vulkan. Instead of creating a universal programming technology for building various software systems, we offer an extensible technology that can be customized for a specific class of applications. Unlike, for example, Halide, we do not use a domain-specific language, and the necessary knowledge is extracted from ordinary C++ code. Therefore, we do not extend with any new language constructs or directives and the input source code is assumed to be normal C++ source code (albeit with some restrictions) that can be compiled by any C++ compiler. We use pattern matching to find specific patterns (or patterns) in C++ code and convert them to GPU efficient code using Vulkan. Pattern are expressed through classes, member functions, and the relationship between them. Thus, the proposed technology makes it possible to ensure a cross-platform solution by generating different implementations of the same algorithm for different GPUs. At the same time, due to this, it allows you to provide access to specific hardware functionality required in computer graphics applications. Patterns are divided into architectural and algorithmic. The architectural pattern defines the domain and behavior of the translator as a whole (for example, image processing, ray tracing, neural networks, computational fluid dynamics and etc.). Algorithmic pattern express knowledge of data flow and control and define a narrower class of algorithms that can be efficiently implemented in hardware. Algorithmic patterns can occur within architectural patterns. For example, parallel reduction, compaction (parallel append), sorting, prefix sum, histogram calculation, map-reduce, etc. The proposed generator works on the principle of code morphing. The essence of this approach is that, having a certain class in the program and transformation rules, one can automatically generate another class with the desired properties (for example, the implementation of the algorithm on the GPU). The generated class inherits from the input class and thus has access to all data and functions of the input class. Overriding virtual functions in generated class helps user to carefully connect generated code to the other Vulkan code written by hand. Shaders can be generated in two variants: OpenCL shaders for google “clspv” compiler and GLSL shaders for an arbitrary GLSL compiler. Clspv variant is better for code which intensively uses pointers and the GLSL generator is better if specific HW features are used (like hardware ray tracing acceleration). We have demonstrated our technology on several examples related to image processing and ray tracing on which we get 30-100 times acceleration over multithreaded CPU implementation.


Sign in / Sign up

Export Citation Format

Share Document