Posts

Showing posts from April, 2020

Project: Final

Introduction In this post, I will describe the summary of how I have done each stage. The purpose of this post is for wrapping up this project. The purpose of the project is the optimization of one open-source project. I need to compile, benchmark, profiling, and optimize the software. The detailed information about the project is described in the  SPO600 winter project .  Previous posts related to this project The previous posts for this project are listed below. You can read the detailed steps of how I have done each stage. Stage 1 Project Stage 1 - Compiling and Benchmark Butteraugli Stage 2 Project Stage 2 - Profiling Butteraugli Project Stage 2: Profiling (x86_64) The links for the results Project: Organize the Results Stage 3 Project Stage 3: Optimization Stage 1 Stage 1 is for building and benchmarking the performance of an open-source software package. There are some requirements for the open-source package I need to consider. Firstly, the time for testin

Project Stage 3: Optimization

Image
Introduction This is a report for the project stage 3, optimization. Before you read this post, it is vital to read stage 1  (compile and benchmark) and stage 2 reports (profiling under Aarch64 and x86_64 architecture ) because those are the previous steps for this report. If the results images are not shown on the reports, this is the additional post for this blog which contains the links for each result. The Project I Selected: Butteraugli The Butteraugli is the project Google created. It estimates the psychovisual similarity of two images. The detailed information about this project is described on the  Google Opensource website about the Butteraugli . The source code for this project is located here:  GitHub - Butteraugli . Discover the Points of the Optimization In stage 2, the results of the profiling show that butteraugli::Convolution is the function that takes the most of the time for compiling. Also, the command perf discovers 'ldr' is the code that takes th

Project: Organize the Results

Introduction This blog is for organizing all the results I have done in Stage 1 and Stage 2 ( Aarch64 profiling and x86_64 profiling ). As I have found that the images I put on the blogs sometimes are not shown on the screen, I think this organization can be helpful for the readers to understand what the result of each stages. I put the links for each stage's results. Benchmark result Profiling result On the next blog, I will post what points I can optimize this project based on the profiling results.

Project Stage 2: Profiling (x86_64)

Image
Introduction As the profiling I have done on the previous blog was using Aarch64 architecture, I will do profiling in x86_64 architecture and describe the result. I recommend to take a look at the previous blogs related to this project: Project Stage 1 - Compining and Benchmarking Butteraugli and Project Stage 2 - Profiling Butteraugli The Project I Selected: Butteraugli The Butteraugli is the project Google created. It estimates the psychovisual similarity of two images. The detailed information about this project is described on the Google Opensource website about the Butteraugli . The source code for this project is located here: GitHub - Butteraugli . How to use gprof and perf The detailed process of how to use gprof and perf for Butteraugli profiling is described in the Project Stage 2 - Profiling Butteraugli .  Result of the prof in x86_64 architecture Image size: 5mb Image size: 10mb Result of the perf in x86_64 architecture Image size: 5mb Image size: 1

Project Stage 2 - Profiling Butteraugli

Image
Introduction This post is about the  project  I am working on in the SPO600 class. The project is about the optimization an open-source software. I need to build, benchmark, profile, and optimize selected open-source software. The software I have selected is named 'Butteraugli'.  The 'Butteraugli' is the project Google created that estimates the psychovisual similarity of two images. The detailed information about this project is written on the Google Opensource website about the Butteraugli . The way to compile this project and the result of benchmarking this project are written in my previous post: Project Stage 1 - Compiling and Benchmarking Butteraugli . I recommend you to read this previous post to understand this post. Profiling Options There are two representative ways to profile the software: gprof and perf. The gprof  is a performance analysis tool for Unix application. It used a hybrid of both instrumentation and sampling. The perf is a profiler tool for L