Scale Invariant Feature Transform (SIFT) algorithm is a widely used computer vision algorithm that detects and extracts local feature descriptors from images. SIFT is computationally intensive, making it infeasible fo...Scale Invariant Feature Transform (SIFT) algorithm is a widely used computer vision algorithm that detects and extracts local feature descriptors from images. SIFT is computationally intensive, making it infeasible for single threaded im-plementation to extract local feature descriptors for high-resolution images in real time. In this paper, an approach to parallelization of the SIFT algorithm is demonstrated using NVIDIA’s Graphics Processing Unit (GPU). The parallel-ization design for SIFT on GPUs is divided into two stages, a) Algorithm de-sign-generic design strategies which focuses on data and b) Implementation de-sign-architecture specific design strategies which focuses on optimally using GPU resources for maximum occupancy. Increasing memory latency hiding, eliminating branches and data blocking achieve a significant decrease in aver-age computational time. Furthermore, it is observed via Paraver tools that our approach to parallelization while optimizing for maximum occupancy allows GPU to execute memory bound SIFT algorithm at optimal levels.展开更多
Current HPC hardware presents the characteristics of heterogeneity and diversity.Portable parallel programming technologies are attractive for application developers.OP2 is a domain specific programming framework for ...Current HPC hardware presents the characteristics of heterogeneity and diversity.Portable parallel programming technologies are attractive for application developers.OP2 is a domain specific programming framework for unstructured applications.It supports unified programming and automatic code generation for multiple hardware platforms.However,current OP2 implementation is faced with some difficulties in programming application with complex data structures and function calls.To address this issue,we improve the implementation of OP2 framework in this paper.We modified the source-to-source translator and the runtime library of OP2,making it possible to automatically support applications with complex data structures and function calls during the generation of serial,OpenMP,CUDA,and MPI versions of codes.This avoids tedious manual code rewriting process for the OP2 application developers.HOUR2D,a high order and complex unstructured CFD application,is used as an example to verify the applicability of our extension to the OP2 framework.The results show that our extension enables OP2 to support portable programming for complex unstructured applications without changing its programming mode,ensures the correctness of the results,and achieves comparable or even better performance than manual parallelizations on Intel Xeon Gold CPU,HUAWEI Kunpeng CPU and NVIDIA V100 GPU.展开更多
文摘Scale Invariant Feature Transform (SIFT) algorithm is a widely used computer vision algorithm that detects and extracts local feature descriptors from images. SIFT is computationally intensive, making it infeasible for single threaded im-plementation to extract local feature descriptors for high-resolution images in real time. In this paper, an approach to parallelization of the SIFT algorithm is demonstrated using NVIDIA’s Graphics Processing Unit (GPU). The parallel-ization design for SIFT on GPUs is divided into two stages, a) Algorithm de-sign-generic design strategies which focuses on data and b) Implementation de-sign-architecture specific design strategies which focuses on optimally using GPU resources for maximum occupancy. Increasing memory latency hiding, eliminating branches and data blocking achieve a significant decrease in aver-age computational time. Furthermore, it is observed via Paraver tools that our approach to parallelization while optimizing for maximum occupancy allows GPU to execute memory bound SIFT algorithm at optimal levels.
基金supported by the National Natural Science Foundation of China under Grant Nos.62272474 and 61561146395.
文摘Current HPC hardware presents the characteristics of heterogeneity and diversity.Portable parallel programming technologies are attractive for application developers.OP2 is a domain specific programming framework for unstructured applications.It supports unified programming and automatic code generation for multiple hardware platforms.However,current OP2 implementation is faced with some difficulties in programming application with complex data structures and function calls.To address this issue,we improve the implementation of OP2 framework in this paper.We modified the source-to-source translator and the runtime library of OP2,making it possible to automatically support applications with complex data structures and function calls during the generation of serial,OpenMP,CUDA,and MPI versions of codes.This avoids tedious manual code rewriting process for the OP2 application developers.HOUR2D,a high order and complex unstructured CFD application,is used as an example to verify the applicability of our extension to the OP2 framework.The results show that our extension enables OP2 to support portable programming for complex unstructured applications without changing its programming mode,ensures the correctness of the results,and achieves comparable or even better performance than manual parallelizations on Intel Xeon Gold CPU,HUAWEI Kunpeng CPU and NVIDIA V100 GPU.