In Part 1 and Part 2 of this series, I discussed the fundamentals of profiling and provided an introduction to VTune. Now it’s time to create, configure, and run an analysis. Since we are interested in finding performance hotspots, we have two analysis types to choose from: Basic Hotspots and Advanced Hotspots. The former uses time-based sampling and the latter uses event-based sampling. Throughout this series, I’ll use both of them starting with Basic Hotspots. In a real world scenario, if you can use Advanced Hotspots, then you can just use that instead and enjoy the smaller sampling interval and lighter overhead. Continue reading
In Part 1, I introduced VTune, the profiling workflow, and the program to be profiled. The first step of the profiling workflow is building the target program. It’s important that the target is built with compiler optimizations turned on. In this part, I’ll provide an introduction to analysis types. Continue reading
Intel VTune Amplifier is the ultimate performance profiler and analyzer for Intel processors. It supports all Intel processors and works on Windows, Linux, Android, and macOS. The basic profiling features work on non-Intel compatible processors (I’ll discuss them in Part 2). If you’re working in a non-commercial environment, you can obtain it for free. Otherwise, you can either avail the free 30-day evaluation or, if you or your boss are rich, you can purchase it. Continue reading
Debugging symbols contain source code level information such as function names, function calling conventions, and source line numbers to instructions mapping. This information is very useful when debugging or profiling the kernel. In this article, I will show how to get debugging symbols on Ubuntu with any kernel. Continue reading
Most or all governments in the world employ an education system that can be described as multi-stage lecture-based, and it works like this. There are about a dozen stages of increasing density and complexity, each has a duration of one year. During each stage, there are a bunch of courses about a variety of topics. Each student then must attend daily lectures, solve many assignments, study these courses, and pass all the exams with sufficiently high grades. Only then the student can move on to the next stage of the system and go through this whole process again, except that with courses that demand more time and effort. This system is implemented by building and maintaining many schools and colleges and hiring teachers for all the courses in all the stages and staff for doing the managerial and maintenance work. This is more or less the same system that has been used for hundreds of years, before the invention of any electrical machines.
Does this system work? Continue reading
Many people are curious to know what the most popular programming languages are in the sense that they are being actively used to write code. This is usually done annually. If look this up in your favorite search engine you will probably find many lists or charts. Among the most prestigious websites that produce charts of the most popular programming languages is IEEE Spectrum. Their list for 2016 can be found here.
While they use many sources to reasonably sort languages by popularity, the list of languages they show is not really meaningful. Continue reading
Computer science is essentially the study of computational problems and how solve them using the minimal amount of resources. A computational problem is a specification of the relation between input and output. A solution to the problem is an executable algorithm that realizes that relation. That is, given a particular input to the algorithm (which is really an instance of the problem), the algorithm will process it and produces the required output(1). Sorting is a typical example of a computation problem. Some problems can be solved quite easily even by people who know very little about computer science, while others may require a tremendous amount of ingenuity and/or experience. Continue reading