Reference no: EM132649966
A script to grab CPU temperature data every 30 seconds has been created. This resulted in three sets of data:
sensors-2018.12.26.txt
sensors-2019.01.26.txt
sensors-2019.02.09.txt
Click on each item to view raw text file.
Each of the encoding jobs ran for 5 to 10 hours. If you look at the data you see four temperatures for each reading. My CPU is a 4-core (8 thread) Intel i7-6700K. I found myself interested in not only the behavior of the readings, but also in the temperature differences between the 4 CPU cores.
Your task is to take the temperature readings and generate for each core:
1. A piecewise linear interpolation.
2. A global linear least squares approximation.
3. A cubic spline (or other non-linear) interpolation.
2 Program Arguments & Execution
Your program must accept an input filename as the first command line argument. Your program must NOT prompt the user for a filename.
2.1 Input Format
Data takes the form of temperatures in a txt file. All data points are whitespace delimited. For example, if I had 5 temperature readings:
Example 1: Sample Input with Labels
+61.0°C +63.0°C +50.0°C +58.0°C
+80.0°C +81.0°C +68.0°C +77.0°C
+62.0°C +63.0°C +52.0°C +60.0°C
+83.0°C +82.0°C +70.0°C +79.0°C
+68.0°C +69.0°C +58.0°C +65.0°C
Example 2: Sample Input without Labels
61.0 63.0 50.0 58.0
80.0 81.0 68.0 77.0
62.0 63.0 52.0 60.0
83.0 82.0 70.0 79.0
68.0 69.0 58.0 65.0
would be a possible input files. Each line represents temperature readings from 4 processor cores. Process each temperature column independently. Readings are taken every 30 seconds. In this example:
• line 1 is 0 sec
• line 2 is 30 sec,
• line 3 is 60 sec.
• line 4 is 120 sec.
• line 5 is 180 sec.
Your first step should be to pre-process this data into a usable form. Conceptually, you need the data in the following format:
This table is a conceptual visualization of the data. You may select any combination data structures, e.g., ADTS (classes or structs), arrays, lists, vectors, or maps.
Time (sec)
|
Core 0
|
Core 1
|
Core 2
|
Core 3
|
0
|
61.0
|
63.0
|
50.0
|
58.0
|
30
|
80.0
|
81.0
|
68.0
|
77.0
|
60
|
62.0
|
63.0
|
52.0
|
60.0
|
120
|
83.0
|
82.0
|
70.0
|
79.0
|
180
|
68.0
|
69.0
|
58.0
|
65.0
|
2.2 Import Input Libraries
You may opt to #include or import the C++provided
2.3 Output Format
All output must be written to text files (one file pre core). Each line must take the form:
xk<=x<xk+1xk<=x<xk+1; yi=c0+c1xyi=c0+c1x ; type
where
• xkxk and xk+1xk+1 are the domain in which ykyk is applicable
• ykyk is the kthkth function
• type is either least-squares or interpolation
For the example data in described in Section 2.1 (Input Format) you would generate 4 output files.
• {basename}-core-0.{txt}
• {basename}-core-1.{txt}
• {basename}-core-2.{txt}
• {basename}-core-3.{txt}
Programming Requirements & Constraints
o Provide a brief ReadMe file that specifies how to compile and
o Provide makefiles (or equivalent build files) for any compilable code.
3.1 Design & Style Requirements
• All code must follow best practices for:
o Indentation and spacing
o Naming conventions
o Top-down design (i.e., no monolithic functions)
3.3 Documentation Requirements
All code must be properly and fully documented using a language appropriate comment style. All functions (including parameters and return types) must be documented.
1. Doxygen can be used for C++