Comparative performance analysis of vulkan implementations of computational applications
dc.creator | Gkeka M.R., Bellas N., Antonopoulos C.D. | en |
dc.date.accessioned | 2023-01-31T07:42:48Z | |
dc.date.available | 2023-01-31T07:42:48Z | |
dc.date.issued | 2019 | |
dc.identifier | 10.1145/3318170.3318174 | |
dc.identifier.isbn | 9781450362306 | |
dc.identifier.uri | http://hdl.handle.net/11615/72466 | |
dc.description.abstract | The recent introduction of the Vulkan API and the SPIR-V intermediate-level language by the Khronos Group provides a new GPU programming model in an effort to combine the advantages of its predecessors, OpenGL for 3D graphics and OpenCL for computing. Vulkan’s low-level and more direct control over the underlying GPU hardware as well as its support for explicit multi-threaded execution offers opportunities for better performance at the cost of higher programming effort. Most of the previous work associated with Vulkan has targeted the graphics pipeline. The fact that Vulkan also supports the compute pipeline has motivated us to examine it from the GPGPU perspective, by porting a number of realistic applications to a desktop GPU and evaluating their Vulkan implementations in terms of performance and programmability. Specifically, we consider the Laplacian filter which is used in image processing to detect areas of rapid change (edges) in images. Also, we consider a Visual Odometry (VO) application used to track the position and pose of a robot by analyzing a sequence of camera frames. VO is part of a Simultaneous Localization and Mapping (SLAM) application used in autonomous navigation systems to build a map of surrounding environments and to determine the location of a moving robot inside this map. These applications require advanced pixel-level processing at different levels of pyramid-based granularity, and may even require real-time performance (when, for example, SLAM is used in a robot navigation system). We ported the original implementations (written in C for Laplacian filter and in CUDA for SLAM) to OpenCL, OpenGL and Vulkan and evaluated their performance on a desktop NVIDIA GPGPU. We show that Vulkan performance is comparable (within 10%) with the performance attained by OpenCL and higher than the performance attained by OpenGL compute shader implementations. By exploiting Vulkan synchronization primitives using the command buffer, we can eliminate the overhead of launching multiple kernel invocations in iterative applications and improve performance of Vulkan implementations by up to 30%. However, the OpenCL compiler seems to be more mature than the SPIR-V compiler used in Vulkan implementations resulting in slightly faster OpenCL kernel execution. On the other hand, the low-level semantics of Vulkan demand higher programming effort compared with OpenCL/OpenGL which can be a burden if Vulkan is to be used as a GPGPU programming model. Most of the additional effort, however, is boilerplate code that can be reused in more than one Vulkan applications. Our work is one of the first to consider Vulkan compute as an implementation language for larger scale applications (and not just for small kernels as in previous work). © 2019 Copyright is held by the owner/author(s). | en |
dc.language.iso | en | en |
dc.source | ACM International Conference Proceeding Series | en |
dc.source.uri | https://www.scopus.com/inward/record.uri?eid=2-s2.0-85069152948&doi=10.1145%2f3318170.3318174&partnerID=40&md5=2004d6fa041c7bac54ccb1c2fe7d209d | |
dc.subject | Computer graphics | en |
dc.subject | Computer graphics equipment | en |
dc.subject | Graphics processing unit | en |
dc.subject | Image processing | en |
dc.subject | Laplace transforms | en |
dc.subject | Navigation systems | en |
dc.subject | Pipelines | en |
dc.subject | Program compilers | en |
dc.subject | Robots | en |
dc.subject | Semantics | en |
dc.subject | SLAM robotics | en |
dc.subject | Visual servoing | en |
dc.subject | Autonomous navigation systems | en |
dc.subject | Comparative performance analysis | en |
dc.subject | Computational applications | en |
dc.subject | Implementation languages | en |
dc.subject | Robot navigation system | en |
dc.subject | Simultaneous localization and mapping | en |
dc.subject | Surrounding environment | en |
dc.subject | Synchronization primitive | en |
dc.subject | Application programming interfaces (API) | en |
dc.subject | Association for Computing Machinery | en |
dc.title | Comparative performance analysis of vulkan implementations of computational applications | en |
dc.type | conferenceItem | en |
Αρχεία σε αυτό το τεκμήριο
Αρχεία | Μέγεθος | Τύπος | Προβολή |
---|---|---|---|
Δεν υπάρχουν αρχεία που να σχετίζονται με αυτό το τεκμήριο. |