- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi everyone!
I wrote a C++ program for computing the elements of the logistic map and profiled it by using intel VTune Profiler but in the results there is a surprising thing: in the row of 'Cycles of 3+ Port Utilized' there is 55.6 % but below it in every row there is 0.0 %. What does it mean? Where could that 55.6 % disappear? (I'm very beginner in profiling codes.)
The exact program I profiled is here:
#include <iostream>
#include <time.h> //clock!!
#include <fstream>
#include <vector>
#include <stdio.h>
#define MAX_VECTOR_SIZE 256
#include <vectorclass.h>
#include <cstdlib>
#include <malloc.h>
using namespace std;
int main()
{
// Allocated on STACK
const int Resolution = 4 * 8 * 3125; // Dividable by 4
const int Transients = 512;
const int SavedPoints = 128;
const int LoopUnrollFactor = 4 * 8;
//double r[Resolution];
//double x[Resolution];
// Allocated on HEAP
double* r = (double*)_aligned_malloc(Resolution * sizeof(double),64);
double* x = (double*)_aligned_malloc(Resolution * sizeof(double),64);
//double* r = new double[Resolution];
//double* x = new double[Resolution];
// Initialisation
double dr = 4.0 / (Resolution - 1.0); // Only 1 type conversion!
r[0] = 0.0;
x[0] = 0.5;
for (int i = 1; i < Resolution; i++)
{
r[i] = r[i - 1] + dr;
x[i] = 0.5;
}
// Transient iterations
clock_t SimulationStart = clock();
Vec4d xact[8];
Vec4d ract[8];
for (int i = 0; i < Resolution; i += LoopUnrollFactor)
{
#pragma unroll
for (int k = 0; k < 8; k++)
{
xact[k].load_a(x + i + k * 4); // Loading states from alligned memory
ract[k].load_a(r + i + k * 4); // Loading parameters from alligned memory
}
for (int j = 0; j < Transients; j++)
{
#pragma unroll
for (int k = 0; k < 8; k++)
xact[k] = ract[k] * xact[k] * (1.0 - xact[k]);
}
#pragma unroll
for (int k = 0; k < 8; k++)
{
xact[k].store_a(x + i + k * 4); // Storing states from alligned memory
ract[k].store_a(r + i + k * 4); // Storing parameters from alligned memory
}
}
clock_t SimulationEnd = clock();
cout << "Simulation time: " << 1000.0*(SimulationEnd - SimulationStart) / CLOCKS_PER_SEC << "ms" << endl << endl;
// Converged iterations and save to file
/*ofstream DataFile;
DataFile.open("LogisticMap.txt");
int Width = 18;
DataFile.precision(10);
DataFile.flags(ios::scientific);
for (int i = 0; i < Resolution; i++)
{
for (int j = 0; j < SavedPoints; j++)
{
x[i] = r[i] * x[i] * (1.0 - x[i]);
DataFile.width(Width); DataFile << r[i]; //Don't place here any commas, because dlmread won't work in MATLAB!!!
DataFile.width(Width); DataFile << x[i];
DataFile << '\n';
}
}
DataFile.close();*/
return 0;
}
Thanks for your answer in advance.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi.
Is it possible to increase workload time
0.038 sec is too small to build correct microarchitecture metrics at all.
They could be incorrect such in your case
Kirill
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Thanks for posting in Intel forums.
We will try from our end and let you know.
Regards,
Janani Chandran
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi.
Is it possible to increase workload time
0.038 sec is too small to build correct microarchitecture metrics at all.
They could be incorrect such in your case
Kirill
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Is your issue resolved? Please let us know if the issue still persists.
Regards,
Janani Chandran
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi!
Thank you, it helped a lot! After increasing the number of Resolution the error did'nt appear.
mrkf100
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Thanks for the confirmation. If you need any additional information, please submit a new question as this thread will no longer be monitored.
Regards,
Janani Chandran

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page