Posts

Showing posts with the label Open Source Software

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

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

Lab 1: Open Source Softwares and Patch Process

Image
What is Open Source  Open source is a source code for software people can use for free. Users can freely take the source code, modify it, and distribute their versions of the program. Open-source software is released through a specific kind of licenses such as Apache License 2.0, Massachusetts Institute of Technology license (MIT license), Berkeley Software Distribution license (BSD), and Mozilla Public License 2.0 (MPL 2.0). Each license has rules users must follow. For example, if users want to use an open-source software released through MPL 2.0 license, they must include copyright, license, and original. Also, they must disclose the source. In comparison, when they want to use open-source software released through BSD, they must include only copyright and license. As one of the advantages of open source is many people can contribute to the open-source software to improve the functionality, open-source software has their ways to get feedback to patch their software. This pos...