Optimize Virtual Memory by Normalizing Columns in a 1024x1024 Array

  • Thread starter Thread starter rootX
  • Start date Start date
  • Tags Tags
    Memory Virtual
Click For Summary
Normalizing a 1024x1024 array of 32-bit numbers by columns involves an algorithm that identifies the maximum value in each column and divides all numbers in that column by this maximum. Storing the data by column is recommended to optimize memory usage and minimize page faults. With 1MB of allocated main memory and 4KB page sizes, processing by columns results in fewer page faults compared to processing by rows, which would require more memory and lead to increased page faults. Specifically, processing by rows would result in three page faults for reading and three for writing back normalized numbers, necessitating 4MB of memory. Performance can be affected by cache size and the specific algorithm used, as DRAM is typically optimized for sequential access patterns.
rootX
Messages
478
Reaction score
4
If there is a 1024x1024 array of 32 bits numbers and we need to normalize by columns.

Algorithm goes through each column, finds max and divide all numbers by the max.
It would be certainly wise to store the pages by column?

My rationale:
1M (2^20) main memory is allocated and each page is 4K bytes as provided.

Because if it is done by rows, 256 rows will be stored. So, for each column there will be 3 page faults when reading numbers and 3 page faults when writing back the normalized numbers.
 
Technology news on Phys.org
You'd need 4MB of memory to hold all the data. Unless other processes were consuming nearly all of you computers memory, then none of that 4MB of data would be paged out to the swap file.

Performance issues would be related to the cache size and algorithm implemented on your computer. Dram is normally optimized for sequential access.
 
Learn If you want to write code for Python Machine learning, AI Statistics/data analysis Scientific research Web application servers Some microcontrollers JavaScript/Node JS/TypeScript Web sites Web application servers C# Games (Unity) Consumer applications (Windows) Business applications C++ Games (Unreal Engine) Operating systems, device drivers Microcontrollers/embedded systems Consumer applications (Linux) Some more tips: Do not learn C++ (or any other dialect of C) as a...

Similar threads

  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 30 ·
2
Replies
30
Views
6K
  • · Replies 4 ·
Replies
4
Views
11K
  • · Replies 3 ·
Replies
3
Views
6K
Replies
7
Views
3K
  • · Replies 5 ·
Replies
5
Views
3K
Replies
7
Views
7K
  • · Replies 3 ·
Replies
3
Views
1K
  • · Replies 17 ·
Replies
17
Views
3K
  • · Replies 14 ·
Replies
14
Views
5K