473,756 Members | 6,482 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

gprof, -pg and rand() problem

Hi

I have written a C++ program (Redhat Linux 7.2, gcc v2.96). The
program makes a sequence of calls to rand() after having seeded the
random number generator using srand( 0 ). Under normal circumstances,
for a given input state, the sequence of random numbers generated is
exactly reproduced each time the program is run. So, if I run the tool
3 times in succession, the path of execution is completely identical
each time as far as the sequence of random numbers is concerned.

I also want to profile the performance of this program, and so
recompiled and linked using the -pg option to allow gprof to be run
after execution.

However, I now find that the sequence of random numbers generated at
each subsequent run of the program is NOT reproducible. It looks like
linking with -pg is what caused the problem. Obviously, since the path
of execution is now different each time, the profiling results are
rather less meaningful.

Has anyone observed this behaviour? If so, can you recommend any ways
to get reproducible random number sequences WITH the -pg linking
option?

Thanks
Andrew.
Jul 19 '05 #1
3 4025
Andrew Bonello wrote:
Hi

I have written a C++ program (Redhat Linux 7.2, gcc v2.96). The

[SNIP]

Could you please post again the part of your question which was about the
Standard C++ programming language? I could not find it.

http://www.slack.net/~shiva/welcome.txt

http://www.slack.net/~shiva/offtopic.txt

--
WW aka Attila
Jul 19 '05 #2
Andrew Bonello wrote:
Hi

I have written a C++ program (Redhat Linux 7.2, gcc v2.96). The
program makes a sequence of calls to rand() after having seeded the
random number generator using srand( 0 ). Under normal circumstances,
for a given input state, the sequence of random numbers generated is
exactly reproduced each time the program is run. So, if I run the tool
3 times in succession, the path of execution is completely identical
each time as far as the sequence of random numbers is concerned.

I also want to profile the performance of this program, and so
recompiled and linked using the -pg option to allow gprof to be run
after execution.

However, I now find that the sequence of random numbers generated at
each subsequent run of the program is NOT reproducible. It looks like
linking with -pg is what caused the problem. Obviously, since the path
of execution is now different each time, the profiling results are
rather less meaningful.

Has anyone observed this behaviour? If so, can you recommend any ways
to get reproducible random number sequences WITH the -pg linking
option?


Since this problem statement is specific to GNU G++ (and the GNU
profiling tools), the GNU G++ newsgroups / mailing lists are probably
the best/right places to ask for assistance. On Usenet, the GNU G++
"help" group is,

gnu.g++.help

For mailing list info, visit the GCC web site at

http://gcc.gnu.org

FWIW, you should also post a short, complete, compilable C++ program
sample that exactly demonstrates the problem you're describing. Without
some actual code to look at, the g++ folks can only make guesses as to
the "real" problem (e.g., compiler bug, code bug, linker bug, programmer
error ;-), etc.).

--
Jim

To reply by email, remove "link" and change "now.here" to "yahoo"
jfischer_link58 09{at}now.here. com
Jul 19 '05 #3
Jim Fischer wrote:
FWIW, you should also post a short, complete, compilable C++ program
sample that exactly demonstrates the problem you're describing. Without
some actual code to look at, the g++ folks can only make guesses as to
the "real" problem (e.g., compiler bug, code bug, linker bug, programmer
error ;-), etc.).


FWIW2, when I use a "stock" (non-redhat) GNU G++ 3.3.1 compiler to build
the following C++ code sample on a Red Hat 9 Linux box (with an Intel
Pentium-III/Celeron CPU), the program output is always the same - with
or without profiling support enabled:

// main.cpp

#include <cstdlib>
#include <iostream>
using namespace std;

int main()
{
srand( 0 );
for ( int i = 0; i < 10; ++i) {
cout << rand() << '\n';
}
}

$ g++ -Wall -Werror -O3 -pg -o try main.cpp
FWIW3: IIRC, the GCC 2.96.x releases are Red Hat specific beasts. So the
GNU G++ folks might redirect you to the Red Hat Linux groups / mailing
lists for help with this problem. IOW, the problem might be a "feature"
of Red Hat's GCC 2.96 builds...

--
Jim

To reply by email, remove "link" and change "now.here" to "yahoo"
jfischer_link58 09{at}now.here. com
Jul 19 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
4982
by: takashi | last post by:
Hi, I am having trouble, using 'gnu profiler'. The problem is when I type: gprof executable_name I don't get any accumulated time for the execution of the program. The detail of what I have done is the following. 1) I created a program named "prac2.cpp". Prac2.cpp is the following. #include<iostream> using namespace std; int main(){
0
1232
by: Gumby | last post by:
Is gprof on Solaris 9 X86 not as supported as Solaris 9 Sparc? At work when we try to compile a program with -pg to use gprof to performance profile our software, the compiled app just dies instantly when it's started, no gmon.out file is made and the core file can't be traced by ddd: (it warns there's no symbols or no stack something like that). We did remove /usr/lib from the LD_LIBRARY_PATH and substituted it with /usr/lib/libp as...
0
1797
by: Dave | last post by:
Hello, I would like to profile a Python program using gprof. I already rebuilt Python with CC="gcc -pg" ../configure. So, I should be able to use gprof. How do I do that? Should I first run Python and then gprof? What are the steps? Thanks a lot!
2
3196
by: AlvaroMako | last post by:
Hello: I am using g++, on linux, and i am trying profile out my program but I have problems with the calls to the symbols that are in shared library, does not leave anything these symbols. Everything is compiled with -pg -g. Where is the problem? Gprof works with the dynamic librarys ??? Thanks
1
418
by: Yan Yang | last post by:
Hi, I have a program and I want to test its execution time. When I run the program, I can feel it runs about 4 mins, but the gprof only says the accumlated time is 7.2 secs. Then I use the command: "date; my program; date" and from the time difference, I got the time 287 seconds? I am really confused about these two numbers. Why gprof only accumlated 7.2
1
2248
by: Pasacco | last post by:
dear I need to know the execution time of the program. Below is just an example. I used to use gprof. But in this case, the error messsage says "gprof : gmon.out file is missing call-graph data". Is it possible to 'gprof' with this ? Or it will be nice if someone introduce how to measure execution time...... Thankyou for comment.
2
2076
by: =?iso-8859-1?q?Nicolas_Herv=E9?= | last post by:
I am using gprof, and as explain in http://www.gnu.org/software/binutils/manual/gprof-2.9.1/html_node/gprof_18.html#SEC18 I could use the "-g -pg -a" options of gcc and then use the "-l -A" options of gprof to obtain an anotated source listing at the basic bloc level. Unfortunately my version of gcc (4.0.0) does not recognize the "-a" option. cc1: error: unrecognized command line option "-a"
1
2012
by: Congcong | last post by:
When I use gprof to profile a program, it seems never show me the profile info on c lib routines such as malloc. But sometimes, profile info on such c lib routines are also important. I use 'gcc -g -pg' to compile the c source. Should I use other options in order for gprof to show 'malloc'? Any more suggestions on program profiling? Thanks!
15
3939
by: Rich Fife | last post by:
Quick rand() question: I know you're not supposed to use "rand() % 1024" for instance, because it focuses on the lower bits. However, it seems to me that given that the argument is not a power of two (or near a power of two), that this is not an issue. The upper bits will participate equally in the result with the lower. Am I missing something? Thanks!
0
9462
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
10046
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
9886
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
8723
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
7259
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5318
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
3817
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
3369
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2677
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.