Hello,
I'm currently trying to use the Southampton supercomputer to run my simulations using the Einstein Toolkit.
I'm using the latest version of carpet (Mercurial) and the I've loaded the Intel 11.1 compiler, but I am getting the following error.
"Run-Time Check Failure: The variable 'd' is being used without being initialized"
This can be traced back to a function in CarpetLib (cycle.h),
#if (defined(__GNUC__) || defined(__ICC) || defined(__SUNPRO_C)) && defined(__x86_64__) && !defined(HAVE_TICK_COUNTER) typedef unsigned long long ticks;
static __inline__ ticks getticks(void) { unsigned a, d; asm volatile("rdtsc" : "=a" (a), "=d" (d)); return ((ticks)a) | (((ticks)d) << 32); }
Any suggestions on how to fix this problem?
Tim
This function is a timing function. The assembler statements has two outputs, namely the variables a and d. Apparently the compiler doesn't understand that.
You can manually initialise a and d before the assembler statement to circumvent this. This is a compiler error; consider reporting it to Intel.
-erik
On Tue, Aug 9, 2011 at 11:47 AM, Tim Lemon tim.lemon@soton.ac.uk wrote:
Hello,
I'm currently trying to use the Southampton supercomputer to run my simulations using the Einstein Toolkit.
I'm using the latest version of carpet (Mercurial) and the I've loaded the Intel 11.1 compiler, but I am getting the following error.
"Run-Time Check Failure: The variable 'd' is being used without being initialized"
This can be traced back to a function in CarpetLib (cycle.h),
#if (defined(__GNUC__) || defined(__ICC) || defined(__SUNPRO_C)) && defined(__x86_64__) && !defined(HAVE_TICK_COUNTER) typedef unsigned long long ticks;
static __inline__ ticks getticks(void) { unsigned a, d; asm volatile("rdtsc" : "=a" (a), "=d" (d)); return ((ticks)a) | (((ticks)d) << 32); }
Any suggestions on how to fix this problem?
-- Kind Regards
Tim lemon
Users mailing list Users@einsteintoolkit.org http://lists.einsteintoolkit.org/mailman/listinfo/users
Hi,
On Tue, Aug 09, 2011 at 04:47:22PM +0100, Tim Lemon wrote:
"Run-Time Check Failure: The variable 'd' is being used without being initialized"
I tried to reproduce this with this small program:
#include <iostream> using namespace std;
typedef unsigned long long ticks;
static __inline__ ticks getticks(void) { unsigned a, d; asm volatile("rdtsc" : "=a" (a), "=d" (d)); return ((ticks)a) | (((ticks)d) << 32); }
int main() { ticks t = getticks(); cout << "ticks: " << t << "\n"; }
I compiled it and can run it:
$ icpc -Wall test.cc -o test $ ./test ticks: 10401616400236550 $ icpc --version icpc (ICC) 11.1 20091130 Copyright (C) 1985-2009 Intel Corporation. All rights reserved.
I cannot see this problem.
Frank
users@lists.einsteintoolkit.org