Posts

Showing posts with the label Project

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 f...

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 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 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 to...

Project Stage 1 - Compiling and Benchmark Butteraugli

Image
Introduction This post is about the project I am working on the SPO600 class. I will benchmark one open-source, profile it, and optimize the project. The requirements for this project are the following: The running time has to be more than 4 minutes The open-source software package has to include a CPU-intensive function or method The open source software package has to implement in a language that compiles to machine code (such as C, C++, or Assembler) The detailed project instruction can be found on the  Winter 2020 SPO600 Project , I had the struggle to find a proper open-source with the requirement. I narrowed down the type of software I want to work on and found the open-source that is proper for this project. I will describe what is a project I selected, the ways I build and compile the open-source, how to benchmark the project. The Project I Selected: Butteraugli The Butteraugli is the project Google created. It estimates the psychovisual similarity of two images...