We present several algorithms that solve the single-source shortestpath problem using CUDA. We have run them on a database, composed of hundreds of large graphs represented by adjacency lists and adjacency matrices, achieving high speedups regarding a CPU implementation based on Fibonacci heaps. Concerning correctness, we outline why our solutions work, and show that a previous approach [10] is incorrect.
Abstract-Many general-purpose applications exploit GraphicsProcessing Units (GPUs) by executing a set of well-known dataparallel primitives. Those primitives are usually invoked from the host many times, so their throughput has a great impact on the performance of the overall system. Thus, the study of novel algorithmic strategies to optimize their implementation on current devices is an interesting topic to the GPU community. In this paper we focus on optimizing the reduction primitive, which merely reduces a data sequence into a single value using a binary associative operator. Although tree-based and sequential-based algorithms have been already implemented on GPUs, a comparison of both algorithm performance had not been carried out yet. Thus, our first contribution is to present an experimental study of state-of-the-art reduction algorithms on CUDA. Next we introduce two algorithmic optimizations that are integrated into the fastest solution (a sequential-based algorithm), improving its throughput even more. Finally, we replicate this methodology to the segmented version of the primitive, which applies when the input is composed of several independent segments. In this case, it is not clear which algorithm exhibits the best performance, since throughput deeply depends on the distribution of segments along the input. According to our results, tree-based algorithms run faster for small segments, while sequential methods are better for medium and large ones.
We describe the Patterns+UML tool that has been designed to help students of a first year object-oriented programming (OOP) course to apply design patterns to UML class diagrams, to analyze the code generated after their application, and especially to learn how different design patterns interact each other when they share some classes that play a different role in each pattern.
Abstract. Algorithm design is one of the more neglected aspects in programming introduction courses. On the contrary, schemas focus on solution construction, since they gather common characteristics of algorithms, so they can be considered as algorithm cognitive units. In this paper, we go beyond the benefits of teaching schemas and we present a tool that incorporates their use. It automatically generates code from the application of schemas, allowing its integration into the class as a useful educational tool.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.