Posts

Showing posts with the label x86_64

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

Lab 6 - Algorithm Selection Lab

Image
Introduction This post is the contents of experiments I found during the lab 6. Lab 6 is the Algorithm Selection Lab. I observed different types of algorithms, compiled them, and checked what are the differences. The detailed contents will be described below. Lab 6 There are three source files name 'vol1.c', 'vol2.c', and 'vol3.c' that contains different types of algorithm. The algorithms are to change the volume of the digital sound. The basic or Naive algorithm ( vol1.c ). This approach multiplies each sound sample by 0.75, casting from signed 16-bit integer to floating point and back again. Casting between integer and floating-point can be  expensive  operations. A lookup-based algorithm ( vol2.c ). This approach uses a pre-calculated table of all 65536 possible results, and looks up each sample in that table instead of multiplying. A fixed-point algorithm ( vol3.c ). This approach uses fixed-point math and bit shifting to perform the multiplication w...

Lab 5: 64-bit Assembler - x86_64

Image
Instruction This posting will describe the process and the finding of lab 5. This posting only covers x86_64. The explanation for Aarch64 is described in the previous posting:  Lab 5: 64-bit Assembler - Aarch64 .  You can see  the detailed instruction of the lab5  on the Seneca SPO600 website. The Brief Instruction of the Lab 5 about Aarch64 There are four representative part of the Lab 5 Take a look at the code using 'objdump -d objectfile' using aarch64 assembly language programs Take a look at the code using 'objdump -d objectfile' using x86_64 assembly language programs Write code to loop a message with digit using Aarch64 assembly language programs Write code to loop a message with digit using x86_64 assembly language programs This posting only covers the x86_64 part. 'Objdump -d hello' using Aarch64 language programs The <main> section in the output of 'objdump -d' command using x86_64 language programs is below. hello  ...