Power Usage of Algorithms in C#

Algorithms power the world – from search to streaming to AI. Each algorithmic domain has a variety of algorithms to choose from, with different run times and characteristics. But how much power do algorithms use? Does power usage vary between algorithms? Are some algorithms more power efficient than others? This blog answers these questions by […]

Read more "Power Usage of Algorithms in C#"

Testing the Tester

Unit testing and integration testing are ubiquitous for software development and chip design. Unit testing consists of numerous test cases which test various aspects of the unit/device under test. Typically, unit test cases make sure that all required behaviors are performed by the unit under test. One problem that comes up time and time again […]

Read more "Testing the Tester"

ParlayLib Parallel Algorithms Library

Professor Blelloch and his team at Carnegie Mellon University have designed and developed a parallel algorithms library over the last decade – ParlayLib. It provides numerous parallel algorithms targeting shared-memory multicore processors. It is similar to Intel’s Threading Building Blocks (TBB), providing a works-stealing scheduler, but also goes beyond with support for additional parallel primitives […]

Read more "ParlayLib Parallel Algorithms Library"

Parallel Acceleration at Small Scale

In my previous blogs, performance acceleration via parallelism worked well for large problems, but for small problems slowed performance down significantly. A solution to this dilemma was suggested, which applied 1 core for the smallest problems, 2 cores for larger problems, and so on, scaling the number of cores to the problem size – avoiding […]

Read more "Parallel Acceleration at Small Scale"

C++ Parallel STL on GPUs

Under Construction… Nvidia has added standard C++ parallel algorithms on GPUs. Algorithm seq unseq par par_unseq GPUSpeedup max_element(std:: 1600 1613 1620 1581 1.0 adjacent_difference(std:: 2052 2062 996 0.5 adjacent_find(std:: 2963 2947 37 all_of(std:: 3652 3752 34 any_of(std:: 3652 3584 37 count(std:: 2999 2987 1627 equal(std:: 3839 3716 37 copy(std:: 4421 4525 1529 merge(std:: 201 197 […]

Read more "C++ Parallel STL on GPUs"

Can C++ Parallel Standard Algorithms Accelerate, Even Small Arrays?

My previous blog, C++ Parallel STL Benchmark, showed performance for all measured C++ Parallel Standard algorithms increased over sequential single-core implementations. Some algorithms scaled much better than others – by nearly 10X on a 14-core processor and over 20X on a 48-core. Only large arrays with 100 million integers were used for these benchmarks. Let’s […]

Read more "Can C++ Parallel Standard Algorithms Accelerate, Even Small Arrays?"