Posts

Showing posts with the label Aarch64

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

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

Image
Instruction This posting will describe the process and the finding of lab 5. This lab covers the comparison between Aarch64 and x86_64. The lab instructs to compare the result of the 'objdump -d' command in Aarch64 and x86_64. Also, it covers the writing code to make the same result using Aarch64 and x86_64. This posting only covers Aarch64 part because I got a login problem in x86_64. 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 Aarch64 part. ...