memory corruption in using tbb task

memory corruption in using tbb task

Hi,

I encountered the following problem.

I have an array with size of num_items * length. Pointer to array is pArray.

For each item "i" in the range of num_items, I launch a task. In the execution of this task, I update this array at pArray+i*length.The update length is "length". I used memcpy. The size of data type has been considered.

The code looks like this: pArray is pointer to float array.

memcpy(pArray+length*i, pSourceArray, length*sizeof(float));

pArray is correctly allocated before launching tbb::task.

So in theory, there should not be any memory overlap on writing. The sequential execution of this method has been proved.

However, when I run in parallel version using tbb task, I got glibc, memory corruption error.

Why did I do wrong here? Thanks.

27 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

>>...Why did I do wrong here?..

Please review a threaded part of your application.I have not found any problems with a
non-threaded implementation.

Here is my C Test-Case:

...
int iNumItems = 8;
int iLength = 4;
const int iSize = 32; // ( iNumItems * iLength );

float fSrcArray[ iSize ] = { 0.0f };
// float fDstArray[ iSize - 4 ] = { 0.0f }; // to simulate a buffer overflow
// float fDstArray[ iSize ] = { 0.0f };
float fDstArray[ iSize + 4 ] = { 0.0f };// 4 more floats in order to detect & seea buffer overflow

int i;

for( i = 0; i < iSize; i++ )
fSrcArray[ i ] = ( float )7.7f;

for( i = 0; i < iNumItems; i++ )
{
memcpy( &fDstArray[ iLength * i ], &fSrcArray[0], iLength * sizeof( float ) );
}
...

Best regards,
Sergey

>>...glibc memory corruption error...

Speaking about glibc library, is it a single-threaded or multi-threaded?

If you're using a single-threaded version in a multi-tasking environment it could be the reasonof a
memory corruption andcrash.

Best regards,
Sergey

Here is my sample program and when I run it, I got glibc error. This is the extraction from my original program.

void SerialRun(int numItem, int len, float* cache){

float* fSrcArray = new float[len];

int i, j;

for ( i = 0; i < numItem; i++ ) {

for ( j = 0; j < len; j++ )

fSrcArray[ j ] = ( float )i;

memcpy( cache+i*len, fSrcArray, len * sizeof( float ) );

}

delete fSrcArray;

}

class OneTask: public tbb::task {

public:

tbb::task* execute() {

std::cout<<"Process id "<

float* fSrcArray = new float[ilen];

for (int i = 0; i < ilen; i++ )

fSrcArray[ i ] = ( float )i;

memcpy( pCache+inum*ilen, fSrcArray, ilen * sizeof( float ) );

delete fSrcArray;

return NULL;

}

OneTask(int numItem, int len, float* cache):

inum(numItem), ilen(len), pCache(cache) {};

int inum; int ilen;

float * pCache;

};

void ParallelRun(int numItem, int len, float* cache){

int i;

tbb::task_list list;

for ( i = 0; i < numItem; i++ ) {

OneTask &rmit = *new( tbb::task::allocate_root() )OneTask ( numItem, len, cache );

list.push_back( rmit );

}

tbb::task::spawn_root_and_wait(list);

}

int main (int argc, char *argv[])

{

int iNumItems = 8;

int iLength = 4;

float* fDstArray = new float[iNumItems * iLength];

tbb::task_scheduler_init init(4);

tbb::tick_count starttick = tbb::tick_count::now();

SerialRun(iNumItems, iLength, fDstArray);

tbb::tick_count endtick = tbb::tick_count::now();

cout<<"Total time in SerialRun = " << (endtick - starttick).seconds() <

starttick = tbb::tick_count::now();

ParallelRun(iNumItems, iLength, fDstArray);

endtick = tbb::tick_count::now();

cout<<"Total time in ParallelRun = " << (endtick - starttick).seconds() <

delete fDstArray;

return 0;

}

OneTask &rmit = *new( tbb::task::allocate_root() )OneTask ( numItem, len, cache );

...
void SerialRun(int numItem, int len, float* cache)
{
...
memcpy( cache+i*len, fSrcArray, len * sizeof( float ) );
...
}
...

tbb::task* execute()
{
...
memcpy( pCache+inum*ilen, fSrcArray, ilen * sizeof( float ) );
...
}

Is everything fine with the 2nd 'memcpy'?

"Is everything fine with the 2nd 'memcpy'?"
Sure.

Maybe I should have been more explicit in #4 (where I simply used boldface to indicate the problem): ParallelRun() loops over all numItem items, but then passes numItem instead of i to OneTask, thus always causing it to write past the end of the destination array.

Sorry for my typo. I meant :

void ParallelRun(int numItem, int len, float* cache){

int i;

tbb::task_list list;

for ( i = 0; i < numItem; i++ ) {

OneTask &rmit = *new( tbb::task::allocate_root() )OneTask ( i, len, cache );

list.push_back( rmit );

}

tbb::task::spawn_root_and_wait(list);

}

The interesting part is that I found my extaction example seems to be working, while my real project is not. I have checked in the index in my project.

So you don't see any problem with using memcpy here in different tbb tasks?

Also, as the example is very small, there is only one thread. All the thread ids are the same. But in my real project, there are differnt threads.

"So you don't see any problem with using memcpy here in different tbb tasks?"
Why not substitute a simple loop and see what happens?

>>...Why not substitute a simple loop and see what happens?..

It was proven twice that everything is fine. In a single-thread TBB case and in a single-thread Non-TBB case.

I mean replace memcpy with a simple loop (over individual bytes), in the multithreaded case. Your program may become somewhat slower, depending on how big the data is, but, if it still fails, you'll at least know that glibc's memcpy is not to blame, or at least not the only problem. It would probably only take fifteen minutes (including a coffee break), so...

>>...that glibc's memcpy is not to blame...

It is stillnot clearwhatglibc library was used,a single-threaded or multi-threaded?

"It is stillnot clearwhatglibc library was used,a single-threaded or multi-threaded?"
How does one even get single-threaded glibc and TBB together in the same program, I wonder?

My money is still on another bug (hence my suggestion to take memcpy off the table). :-)

Thanks.
I have tried and it works fine in a simple loop, no tbb task. It also works ok with tbb task loop when only one thread is used (using process id). But memory corrpution error when more than one processes are used.

Puzzled...

>>...But memory corrpution error when more than one processes are used...

There is one fundamental question:it is stillnot clearwhatglibc library is used,a single-threaded or multi-threaded?

I'll look at your Test-Case tomorrow on Windows XP.

Also, what version of TBB are you using? Keep an eye on the thread, please.

Best regards,
Sergey

I still see this problem. Is there a limit on how much memory each tbb task can allocate?

Please state clearly whether you are seeing the problem without use of memcmp because you replaced it with your own equivalent. Although it would then most likely no longer be an issue, and although I'm not sure how you would even get a single-threaded glibc into a TBB program, I'm sure Sergey would still also like to know whether you are using a multi-threaded or single-threaded version of glibc.

There is no limit on each task's use of dynamic memory, and you should see allocation failures as hard-to-miss exceptions when using the new operator (although, just to make sure, why not assert() that these pointers are not NULL).

Please use a debugger to inspect program memory near the offending access to get more information.

And have you undertaken peer review of your code? Maybe there's another "typo" somethere. :-)

Sorry, I don't know which glibc I am using.
Is there a way to find out?

>>...Is there a limit on how much memory each tbb task can allocate?..

I don't think so. Guys, please correct me if I'm wrong.

For example, on Win32 platforms an application could allocate up to 2GB of memory.

OnaLinux platforma number could be similar...

Tested on Windows XP andeverything isworking after modifications are applied.

Here are results:

There is an incorrect application of a C++ operator 'new'. It doesn't work with Microsoft's Visual C/C++ compiler.

Instead of:
...
float *fSrcArray = new float( len );
...

Try to use:
...
float *fSrcArray = new float[ len ];
...

> Test1148 Start <
Destination Array ( 1x32 ):
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7

SerialRun Test-Case
Total time in SerialRun : 0.00001955 secs
Destination Array ( 1x32 ):
0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 3.0 3.0 3.0 3.0 4.0 4.0 4.0 4.0 5.0 5.0 5.0 5.0 6.0 6.0 6.0 6.0 7.0 7.0 7.0 7.0

ParallelRun Test-Case
Process NUM: 7
Process NUM: 6
Process NUM: 5
Process NUM: 4
Process NUM: 3
Process NUM: 2
Process NUM: 1
Process NUM: 0
Total time in ParallelRun : 0.00177509 secs
Destination Array ( 1x32 ):
0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 3.0 3.0 3.0 3.0 4.0 4.0 4.0 4.0 5.0 5.0 5.0 5.0 6.0 6.0 6.0 6.0 7.0 7.0 7.0 7.0

> Test1148 End <

PS: Also, a GCC C/C++ compiler has an option for verification of the stack:

`-fstack-check'

Generate code to verify that you do not go beyond the boundary of
the stack. You should specify this flag if you are running in an
environment with multiple threads, but only rarely need to specify
it in a single-threaded environment since stack overflow is
automatically detected on nearly all systems if there is only one
stack.

Note that this switch does not actually cause checking to be done;
the operating system must do that. The switch causes generation
of code to ensure that the operating system sees the stack being
extended.

Please don't worry about the glibc library.

The source codes are enclosed AS IS and you will need to do some small modifications related to 'RT',
'Crt', 'RTU' prefixes I used in my standard test-environment.

Note:I useCRT'malloc'-'free' functions instead of 'new'-'delete' C++ operators.

RTvoid SerialRun( RTint iNumItem, RTint iLen, RTfloat *pfCache );

RTvoid SerialRun( RTint iNumItem, RTint iLen, RTfloat *pfCache )
{
RTfloat *pfSrcArray = ( RTfloat * )CrtMalloc( iLen * sizeof( RTfloat ) );

RTint i, j;

for( i = 0; i < iNumItem; i++ )
{
for( j = 0; j < iLen; j++ )
pfSrcArray[ j ] = ( RTfloat )0.0f + i;

CrtMemcpy( pfCache + ( i*iLen ), pfSrcArray, iLen * sizeof( RTfloat ) );

//CrtPrintf( RTU("\t") );
//for( RTint p = 0; p < iLen; p++ )
// CrtPrintf( RTU("%4.1f "), pfCache[ ( i*iLen ) + p ] );
//CrtPrintf( RTU("\n") );
}

if( pfSrcArray != RTnull )
CrtFree( pfSrcArray );
}

class OneTask: public tbb::task
{
public:
tbb::task *execute()
{
//std::cout << "Process ID :" << getpid() << std::endl;
//CrtPrintf( RTU("Process ID : %ld\n"), ( RTint )::GetCurrentProcess() );
//CrtPrintf( RTU("Thread ID : %ld\n"), ( RTint )::GetCurrentThread() );
CrtPrintf( RTU("Process NUM: %ld\n"), ( RTint )m_iNum );

RTfloat *pfSrcArray = ( RTfloat * )CrtMalloc( m_iLen * sizeof( RTfloat ) );

for( RTint i = 0; i < m_iLen; i++ )
pfSrcArray[ i ] = ( RTfloat )0.0f + m_iNum;

CrtMemcpy( m_pfCache + ( m_iNum*m_iLen ), pfSrcArray, m_iLen * sizeof( RTfloat ) );

//CrtPrintf( RTU("\t") );
//for( RTint p = 0; p < m_iLen; p++ )
// CrtPrintf( RTU("%4.1f "), m_pfCache[ ( m_iNum*m_iLen ) + p ] );
//CrtPrintf( RTU("\n") );

if( pfSrcArray != RTnull )
CrtFree( pfSrcArray );

return ( tbb::task * )RTnull;
}

OneTask( RTint iNumItem, RTint iLen, RTfloat *pfCache )
{
m_iNum = iNumItem;
m_iLen = iLen;
m_pfCache = pfCache;
};

RTint m_iNum;
RTint m_iLen;
RTfloat *m_pfCache;
};

RTvoid ParallelRun( RTint iNumItem, RTint iLen, RTfloat *pfCache );

RTvoid ParallelRun( RTint iNumItem, RTint iLen, RTfloat *pfCache )
{
tbb::task_list TaskList;

for( RTint i = 0; i < iNumItem; i++ )
{ // Wrong
//OneTask &rmit = *new( tbb::task::allocate_root() )OneTask ( iNumItem, iLen, pfCache );
// Correct
OneTask &rmit = *new( tbb::task::allocate_root() )OneTask ( i, iLen, pfCache );

TaskList.push_back( rmit );
}

tbb::task::spawn_root_and_wait( TaskList );
}

...
int iNumItems = 8;
int iLen = 4;
int iArraySize = ( iNumItems * iLen );

RTfloat *pfDstArray = ( RTfloat * )CrtMalloc( iArraySize * sizeof( RTfloat ) );

CrtPrintf( RTU("Destination Array ( 1x32 ):\n") );
for( int i = 0; i < iArraySize; i++ )
{
pfDstArray[ i ] = 7.7f;
CrtPrintf( RTU("%3.1f "), pfDstArray[ i ] );
}
CrtPrintf( RTU("\n\n") );

tbb::task_scheduler_init init( 4 );

CrtPrintf( RTU("SerialRun Test-Case\n") );
tbb::tick_count starttick = tbb::tick_count::now();
SerialRun( iNumItems, iLen, pfDstArray );
tbb::tick_count endtick = tbb::tick_count::now();
cout << "Total time in SerialRun : " << ( endtick - starttick ).seconds() << " secs" << endl;
CrtPrintf( RTU("Destination Array ( 1x32 ):\n") );
for( int i = 0; i < iArraySize; i++ )
CrtPrintf( RTU("%3.1f "), pfDstArray[ i ] );
CrtPrintf( RTU("\n\n") );

CrtPrintf( RTU("ParallelRun Test-Case\n") );
starttick = tbb::tick_count::now();
ParallelRun( iNumItems, iLen, pfDstArray );
endtick = tbb::tick_count::now();
cout << "Total time in ParallelRun : " << ( endtick - starttick ).seconds() << " secs" << endl;
CrtPrintf( RTU("Destination Array ( 1x32 ):\n") );
for( int i = 0; i < iArraySize; i++ )
CrtPrintf( RTU("%3.1f "), pfDstArray[ i ] );
CrtPrintf( RTU("\n\n") );

if( pfDstArray != RTnull )
CrtFree( pfDstArray );
...

Here are results of verificationfor an array of 512 floats.

Execution Summary:

Total time in SerialRun : 0.00007515 secs
Total time in ParallelRun : 0.00454108 secs

...
> Test1148 Start <
Destination Array ( 1x512 ):
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7
7.7 7.7 7.7 7.7 7.7 7.7 7.7 7.7

SerialRun Test-Case
Total time in SerialRun : 0.00007515 secs
Destination Array ( 1x512 ):
0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 3.0 3.0 3.0 3.0 4.0 4.0 4.0 4.0 5.0 5.0 5.0 5.0 6.0 6.0 6.0 6.0 7.0 7.0
7.0 7.0 8.0 8.0 8.0 8.0 9.0 9.0 9.0 9.0 10.0 10.0 10.0 10.0 11.0 11.0 11.0 11.0 12.0 12.0 12.0 12.0 13.0 13.0 13.0 13.0
14.0 14.0 14.0 14.0 15.0 15.0 15.0 15.0 16.0 16.0 16.0 16.0 17.0 17.0 17.0 17.0 18.0 18.0 18.0 18.0 19.0 19.0 19.0 19.0
20.0 20.0 20.0 20.0 21.0 21.0 21.0 21.0 22.0 22.0 22.0 22.0 23.0 23.0 23.0 23.0 24.0 24.0 24.0 24.0 25.0 25.0 25.0 25.0
26.0 26.0 26.0 26.0 27.0 27.0 27.0 27.0 28.0 28.0 28.0 28.0 29.0 29.0 29.0 29.0 30.0 30.0 30.0 30.0 31.0 31.0 31.0 31.0
32.0 32.0 32.0 32.0 33.0 33.0 33.0 33.0 34.0 34.0 34.0 34.0 35.0 35.0 35.0 35.0 36.0 36.0 36.0 36.0 37.0 37.0 37.0 37.0
38.0 38.0 38.0 38.0 39.0 39.0 39.0 39.0 40.0 40.0 40.0 40.0 41.0 41.0 41.0 41.0 42.0 42.0 42.0 42.0 43.0 43.0 43.0 43.0
44.0 44.0 44.0 44.0 45.0 45.0 45.0 45.0 46.0 46.0 46.0 46.0 47.0 47.0 47.0 47.0 48.0 48.0 48.0 48.0 49.0 49.0 49.0 49.0
50.0 50.0 50.0 50.0 51.0 51.0 51.0 51.0 52.0 52.0 52.0 52.0 53.0 53.0 53.0 53.0 54.0 54.0 54.0 54.0 55.0 55.0 55.0 55.0
56.0 56.0 56.0 56.0 57.0 57.0 57.0 57.0 58.0 58.0 58.0 58.0 59.0 59.0 59.0 59.0 60.0 60.0 60.0 60.0 61.0 61.0 61.0 61.0
62.0 62.0 62.0 62.0 63.0 63.0 63.0 63.0 64.0 64.0 64.0 64.0 65.0 65.0 65.0 65.0 66.0 66.0 66.0 66.0 67.0 67.0 67.0 67.0
68.0 68.0 68.0 68.0 69.0 69.0 69.0 69.0 70.0 70.0 70.0 70.0 71.0 71.0 71.0 71.0 72.0 72.0 72.0 72.0 73.0 73.0 73.0 73.0
74.0 74.0 74.0 74.0 75.0 75.0 75.0 75.0 76.0 76.0 76.0 76.0 77.0 77.0 77.0 77.0 78.0 78.0 78.0 78.0 79.0 79.0 79.0 79.0
80.0 80.0 80.0 80.0 81.0 81.0 81.0 81.0 82.0 82.0 82.0 82.0 83.0 83.0 83.0 83.0 84.0 84.0 84.0 84.0 85.0 85.0 85.0 85.0
86.0 86.0 86.0 86.0 87.0 87.0 87.0 87.0 88.0 88.0 88.0 88.0 89.0 89.0 89.0 89.0 90.0 90.0 90.0 90.0 91.0 91.0 91.0 91.0
92.0 92.0 92.0 92.0 93.0 93.0 93.0 93.0 94.0 94.0 94.0 94.0 95.0 95.0 95.0 95.0 96.0 96.0 96.0 96.0 97.0 97.0 97.0 97.0
98.0 98.0 98.0 98.0 99.0 99.0 99.0 99.0 100.0 100.0 100.0 100.0 101.0 101.0 101.0 101.0 102.0 102.0 102.0 102.0 103.0 10
3.0 103.0 103.0 104.0 104.0 104.0 104.0 105.0 105.0 105.0 105.0 106.0 106.0 106.0 106.0 107.0 107.0 107.0 107.0 108.0 10
8.0 108.0 108.0 109.0 109.0 109.0 109.0 110.0 110.0 110.0 110.0 111.0 111.0 111.0 111.0 112.0 112.0 112.0 112.0 113.0 11
3.0 113.0 113.0 114.0 114.0 114.0 114.0 115.0 115.0 115.0 115.0 116.0 116.0 116.0 116.0 117.0 117.0 117.0 117.0 118.0 11
8.0 118.0 118.0 119.0 119.0 119.0 119.0 120.0 120.0 120.0 120.0 121.0 121.0 121.0 121.0 122.0 122.0 122.0 122.0 123.0 12
3.0 123.0 123.0 124.0 124.0 124.0 124.0 125.0 125.0 125.0 125.0 126.0 126.0 126.0 126.0 127.0 127.0 127.0 127.0 128.0 12
8.0 128.0 128.0 129.0 129.0 129.0 129.0 130.0 130.0 130.0 130.0 131.0 131.0 131.0 131.0 132.0 132.0 132.0 132.0 133.0 13
3.0 133.0 133.0 134.0 134.0 134.0 134.0 135.0 135.0 135.0 135.0 136.0 136.0 136.0 136.0 137.0 137.0 137.0 137.0 138.0 13
8.0 138.0 138.0 139.0 139.0 139.0 139.0 140.0 140.0 140.0 140.0 141.0 141.0 141.0 141.0 142.0 142.0 142.0 142.0 143.0 14
3.0 143.0 143.0 144.0 144.0 144.0 144.0 145.0 145.0 145.0 145.0 146.0 146.0 146.0 146.0 147.0 147.0 147.0 147.0 148.0 14
8.0 148.0 148.0 149.0 149.0 149.0 149.0 150.0 150.0 150.0 150.0 151.0 151.0 151.0 151.0 152.0 152.0 152.0 152.0 153.0 15
3.0 153.0 153.0 154.0 154.0 154.0 154.0 155.0 155.0 155.0 155.0 156.0 156.0 156.0 156.0 157.0 157.0 157.0 157.0 158.0 15
8.0 158.0 158.0 159.0 159.0 159.0 159.0 160.0 160.0 160.0 160.0 161.0 161.0 161.0 161.0 162.0 162.0 162.0 162.0 163.0 16
3.0 163.0 163.0 164.0 164.0 164.0 164.0 165.0 165.0 165.0 165.0 166.0 166.0 166.0 166.0 167.0 167.0 167.0 167.0 168.0 16
8.0 168.0 168.0 169.0 169.0 169.0 169.0 170.0 170.0 170.0 170.0 171.0 171.0 171.0 171.0 172.0 172.0 172.0 172.0 173.0 17
3.0 173.0 173.0 174.0 174.0 174.0 174.0 175.0 175.0 175.0 175.0 176.0 176.0 176.0 176.0 177.0 177.0 177.0 177.0 178.0 17
8.0 178.0 178.0 179.0 179.0 179.0 179.0 180.0 180.0 180.0 180.0 181.0 181.0 181.0 181.0 182.0 182.0 182.0 182.0 183.0 18
3.0 183.0 183.0 184.0 184.0 184.0 184.0 185.0 185.0 185.0 185.0 186.0 186.0 186.0 186.0 187.0 187.0 187.0 187.0 188.0 18
8.0 188.0 188.0 189.0 189.0 189.0 189.0 190.0 190.0 190.0 190.0 191.0 191.0 191.0 191.0 192.0 192.0 192.0 192.0 193.0 19
3.0 193.0 193.0 194.0 194.0 194.0 194.0 195.0 195.0 195.0 195.0 196.0 196.0 196.0 196.0 197.0 197.0 197.0 197.0 198.0 19
8.0 198.0 198.0 199.0 199.0 199.0 199.0 200.0 200.0 200.0 200.0 201.0 201.0 201.0 201.0 202.0 202.0 202.0 202.0 203.0 20
3.0 203.0 203.0 204.0 204.0 204.0 204.0 205.0 205.0 205.0 205.0 206.0 206.0 206.0 206.0 207.0 207.0 207.0 207.0 208.0 20
8.0 208.0 208.0 209.0 209.0 209.0 209.0 210.0 210.0 210.0 210.0 211.0 211.0 211.0 211.0 212.0 212.0 212.0 212.0 213.0 21
3.0 213.0 213.0 214.0 214.0 214.0 214.0 215.0 215.0 215.0 215.0 216.0 216.0 216.0 216.0 217.0 217.0 217.0 217.0 218.0 21
8.0 218.0 218.0 219.0 219.0 219.0 219.0 220.0 220.0 220.0 220.0 221.0 221.0 221.0 221.0 222.0 222.0 222.0 222.0 223.0 22
3.0 223.0 223.0 224.0 224.0 224.0 224.0 225.0 225.0 225.0 225.0 226.0 226.0 226.0 226.0 227.0 227.0 227.0 227.0 228.0 22
8.0 228.0 228.0 229.0 229.0 229.0 229.0 230.0 230.0 230.0 230.0 231.0 231.0 231.0 231.0 232.0 232.0 232.0 232.0 233.0 23
3.0 233.0 233.0 234.0 234.0 234.0 234.0 235.0 235.0 235.0 235.0 236.0 236.0 236.0 236.0 237.0 237.0 237.0 237.0 238.0 23
8.0 238.0 238.0 239.0 239.0 239.0 239.0 240.0 240.0 240.0 240.0 241.0 241.0 241.0 241.0 242.0 242.0 242.0 242.0 243.0 24
3.0 243.0 243.0 244.0 244.0 244.0 244.0 245.0 245.0 245.0 245.0 246.0 246.0 246.0 246.0 247.0 247.0 247.0 247.0 248.0 24
8.0 248.0 248.0 249.0 249.0 249.0 249.0 250.0 250.0 250.0 250.0 251.0 251.0 251.0 251.0 252.0 252.0 252.0 252.0 253.0 25
3.0 253.0 253.0 254.0 254.0 254.0 254.0 255.0 255.0 255.0 255.0 256.0 256.0 256.0 256.0 257.0 257.0 257.0 257.0 258.0 25
8.0 258.0 258.0 259.0 259.0 259.0 259.0 260.0 260.0 260.0 260.0 261.0 261.0 261.0 261.0 262.0 262.0 262.0 262.0 263.0 26
3.0 263.0 263.0 264.0 264.0 264.0 264.0 265.0 265.0 265.0 265.0 266.0 266.0 266.0 266.0 267.0 267.0 267.0 267.0 268.0 26
8.0 268.0 268.0 269.0 269.0 269.0 269.0 270.0 270.0 270.0 270.0 271.0 271.0 271.0 271.0 272.0 272.0 272.0 272.0 273.0 27
3.0 273.0 273.0 274.0 274.0 274.0 274.0 275.0 275.0 275.0 275.0 276.0 276.0 276.0 276.0 277.0 277.0 277.0 277.0 278.0 27
8.0 278.0 278.0 279.0 279.0 279.0 279.0 280.0 280.0 280.0 280.0 281.0 281.0 281.0 281.0 282.0 282.0 282.0 282.0 283.0 28
3.0 283.0 283.0 284.0 284.0 284.0 284.0 285.0 285.0 285.0 285.0 286.0 286.0 286.0 286.0 287.0 287.0 287.0 287.0 288.0 28
8.0 288.0 288.0 289.0 289.0 289.0 289.0 290.0 290.0 290.0 290.0 291.0 291.0 291.0 291.0 292.0 292.0 292.0 292.0 293.0 29
3.0 293.0 293.0 294.0 294.0 294.0 294.0 295.0 295.0 295.0 295.0 296.0 296.0 296.0 296.0 297.0 297.0 297.0 297.0 298.0 29
8.0 298.0 298.0 299.0 299.0 299.0 299.0 300.0 300.0 300.0 300.0 301.0 301.0 301.0 301.0 302.0 302.0 302.0 302.0 303.0 30
3.0 303.0 303.0 304.0 304.0 304.0 304.0 305.0 305.0 305.0 305.0 306.0 306.0 306.0 306.0 307.0 307.0 307.0 307.0 308.0 30
8.0 308.0 308.0 309.0 309.0 309.0 309.0 310.0 310.0 310.0 310.0 311.0 311.0 311.0 311.0 312.0 312.0 312.0 312.0 313.0 31
3.0 313.0 313.0 314.0 314.0 314.0 314.0 315.0 315.0 315.0 315.0 316.0 316.0 316.0 316.0 317.0 317.0 317.0 317.0 318.0 31
8.0 318.0 318.0 319.0 319.0 319.0 319.0 320.0 320.0 320.0 320.0 321.0 321.0 321.0 321.0 322.0 322.0 322.0 322.0 323.0 32
3.0 323.0 323.0 324.0 324.0 324.0 324.0 325.0 325.0 325.0 325.0 326.0 326.0 326.0 326.0 327.0 327.0 327.0 327.0 328.0 32
8.0 328.0 328.0 329.0 329.0 329.0 329.0 330.0 330.0 330.0 330.0 331.0 331.0 331.0 331.0 332.0 332.0 332.0 332.0 333.0 33
3.0 333.0 333.0 334.0 334.0 334.0 334.0 335.0 335.0 335.0 335.0 336.0 336.0 336.0 336.0 337.0 337.0 337.0 337.0 338.0 33
8.0 338.0 338.0 339.0 339.0 339.0 339.0 340.0 340.0 340.0 340.0 341.0 341.0 341.0 341.0 342.0 342.0 342.0 342.0 343.0 34
3.0 343.0 343.0 344.0 344.0 344.0 344.0 345.0 345.0 345.0 345.0 346.0 346.0 346.0 346.0 347.0 347.0 347.0 347.0 348.0 34
8.0 348.0 348.0 349.0 349.0 349.0 349.0 350.0 350.0 350.0 350.0 351.0 351.0 351.0 351.0 352.0 352.0 352.0 352.0 353.0 35
3.0 353.0 353.0 354.0 354.0 354.0 354.0 355.0 355.0 355.0 355.0 356.0 356.0 356.0 356.0 357.0 357.0 357.0 357.0 358.0 35
8.0 358.0 358.0 359.0 359.0 359.0 359.0 360.0 360.0 360.0 360.0 361.0 361.0 361.0 361.0 362.0 362.0 362.0 362.0 363.0 36
3.0 363.0 363.0 364.0 364.0 364.0 364.0 365.0 365.0 365.0 365.0 366.0 366.0 366.0 366.0 367.0 367.0 367.0 367.0 368.0 36
8.0 368.0 368.0 369.0 369.0 369.0 369.0 370.0 370.0 370.0 370.0 371.0 371.0 371.0 371.0 372.0 372.0 372.0 372.0 373.0 37
3.0 373.0 373.0 374.0 374.0 374.0 374.0 375.0 375.0 375.0 375.0 376.0 376.0 376.0 376.0 377.0 377.0 377.0 377.0 378.0 37
8.0 378.0 378.0 379.0 379.0 379.0 379.0 380.0 380.0 380.0 380.0 381.0 381.0 381.0 381.0 382.0 382.0 382.0 382.0 383.0 38
3.0 383.0 383.0 384.0 384.0 384.0 384.0 385.0 385.0 385.0 385.0 386.0 386.0 386.0 386.0 387.0 387.0 387.0 387.0 388.0 38
8.0 388.0 388.0 389.0 389.0 389.0 389.0 390.0 390.0 390.0 390.0 391.0 391.0 391.0 391.0 392.0 392.0 392.0 392.0 393.0 39
3.0 393.0 393.0 394.0 394.0 394.0 394.0 395.0 395.0 395.0 395.0 396.0 396.0 396.0 396.0 397.0 397.0 397.0 397.0 398.0 39
8.0 398.0 398.0 399.0 399.0 399.0 399.0 400.0 400.0 400.0 400.0 401.0 401.0 401.0 401.0 402.0 402.0 402.0 402.0 403.0 40
3.0 403.0 403.0 404.0 404.0 404.0 404.0 405.0 405.0 405.0 405.0 406.0 406.0 406.0 406.0 407.0 407.0 407.0 407.0 408.0 40
8.0 408.0 408.0 409.0 409.0 409.0 409.0 410.0 410.0 410.0 410.0 411.0 411.0 411.0 411.0 412.0 412.0 412.0 412.0 413.0 41
3.0 413.0 413.0 414.0 414.0 414.0 414.0 415.0 415.0 415.0 415.0 416.0 416.0 416.0 416.0 417.0 417.0 417.0 417.0 418.0 41
8.0 418.0 418.0 419.0 419.0 419.0 419.0 420.0 420.0 420.0 420.0 421.0 421.0 421.0 421.0 422.0 422.0 422.0 422.0 423.0 42
3.0 423.0 423.0 424.0 424.0 424.0 424.0 425.0 425.0 425.0 425.0 426.0 426.0 426.0 426.0 427.0 427.0 427.0 427.0 428.0 42
8.0 428.0 428.0 429.0 429.0 429.0 429.0 430.0 430.0 430.0 430.0 431.0 431.0 431.0 431.0 432.0 432.0 432.0 432.0 433.0 43
3.0 433.0 433.0 434.0 434.0 434.0 434.0 435.0 435.0 435.0 435.0 436.0 436.0 436.0 436.0 437.0 437.0 437.0 437.0 438.0 43
8.0 438.0 438.0 439.0 439.0 439.0 439.0 440.0 440.0 440.0 440.0 441.0 441.0 441.0 441.0 442.0 442.0 442.0 442.0 443.0 44
3.0 443.0 443.0 444.0 444.0 444.0 444.0 445.0 445.0 445.0 445.0 446.0 446.0 446.0 446.0 447.0 447.0 447.0 447.0 448.0 44
8.0 448.0 448.0 449.0 449.0 449.0 449.0 450.0 450.0 450.0 450.0 451.0 451.0 451.0 451.0 452.0 452.0 452.0 452.0 453.0 45
3.0 453.0 453.0 454.0 454.0 454.0 454.0 455.0 455.0 455.0 455.0 456.0 456.0 456.0 456.0 457.0 457.0 457.0 457.0 458.0 45
8.0 458.0 458.0 459.0 459.0 459.0 459.0 460.0 460.0 460.0 460.0 461.0 461.0 461.0 461.0 462.0 462.0 462.0 462.0 463.0 46
3.0 463.0 463.0 464.0 464.0 464.0 464.0 465.0 465.0 465.0 465.0 466.0 466.0 466.0 466.0 467.0 467.0 467.0 467.0 468.0 46
8.0 468.0 468.0 469.0 469.0 469.0 469.0 470.0 470.0 470.0 470.0 471.0 471.0 471.0 471.0 472.0 472.0 472.0 472.0 473.0 47
3.0 473.0 473.0 474.0 474.0 474.0 474.0 475.0 475.0 475.0 475.0 476.0 476.0 476.0 476.0 477.0 477.0 477.0 477.0 478.0 47
8.0 478.0 478.0 479.0 479.0 479.0 479.0 480.0 480.0 480.0 480.0 481.0 481.0 481.0 481.0 482.0 482.0 482.0 482.0 483.0 48
3.0 483.0 483.0 484.0 484.0 484.0 484.0 485.0 485.0 485.0 485.0 486.0 486.0 486.0 486.0 487.0 487.0 487.0 487.0 488.0 48
8.0 488.0 488.0 489.0 489.0 489.0 489.0 490.0 490.0 490.0 490.0 491.0 491.0 491.0 491.0 492.0 492.0 492.0 492.0 493.0 49
3.0 493.0 493.0 494.0 494.0 494.0 494.0 495.0 495.0 495.0 495.0 496.0 496.0 496.0 496.0 497.0 497.0 497.0 497.0 498.0 49
8.0 498.0 498.0 499.0 499.0 499.0 499.0 500.0 500.0 500.0 500.0 501.0 501.0 501.0 501.0 502.0 502.0 502.0 502.0 503.0 50
3.0 503.0 503.0 504.0 504.0 504.0 504.0 505.0 505.0 505.0 505.0 506.0 506.0 506.0 506.0 507.0 507.0 507.0 507.0 508.0 50
8.0 508.0 508.0 509.0 509.0 509.0 509.0 510.0 510.0 510.0 510.0 511.0 511.0 511.0 511.0

ParallelRun Test-Case
Total time in ParallelRun : 0.00454108 secs
Destination Array ( 1x512 ):
0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 3.0 3.0 3.0 3.0 4.0 4.0 4.0 4.0 5.0 5.0 5.0 5.0 6.0 6.0 6.0 6.0 7.0 7.0
7.0 7.0 8.0 8.0 8.0 8.0 9.0 9.0 9.0 9.0 10.0 10.0 10.0 10.0 11.0 11.0 11.0 11.0 12.0 12.0 12.0 12.0 13.0 13.0 13.0 13.0
14.0 14.0 14.0 14.0 15.0 15.0 15.0 15.0 16.0 16.0 16.0 16.0 17.0 17.0 17.0 17.0 18.0 18.0 18.0 18.0 19.0 19.0 19.0 19.0
20.0 20.0 20.0 20.0 21.0 21.0 21.0 21.0 22.0 22.0 22.0 22.0 23.0 23.0 23.0 23.0 24.0 24.0 24.0 24.0 25.0 25.0 25.0 25.0
26.0 26.0 26.0 26.0 27.0 27.0 27.0 27.0 28.0 28.0 28.0 28.0 29.0 29.0 29.0 29.0 30.0 30.0 30.0 30.0 31.0 31.0 31.0 31.0
32.0 32.0 32.0 32.0 33.0 33.0 33.0 33.0 34.0 34.0 34.0 34.0 35.0 35.0 35.0 35.0 36.0 36.0 36.0 36.0 37.0 37.0 37.0 37.0
38.0 38.0 38.0 38.0 39.0 39.0 39.0 39.0 40.0 40.0 40.0 40.0 41.0 41.0 41.0 41.0 42.0 42.0 42.0 42.0 43.0 43.0 43.0 43.0
44.0 44.0 44.0 44.0 45.0 45.0 45.0 45.0 46.0 46.0 46.0 46.0 47.0 47.0 47.0 47.0 48.0 48.0 48.0 48.0 49.0 49.0 49.0 49.0
50.0 50.0 50.0 50.0 51.0 51.0 51.0 51.0 52.0 52.0 52.0 52.0 53.0 53.0 53.0 53.0 54.0 54.0 54.0 54.0 55.0 55.0 55.0 55.0
56.0 56.0 56.0 56.0 57.0 57.0 57.0 57.0 58.0 58.0 58.0 58.0 59.0 59.0 59.0 59.0 60.0 60.0 60.0 60.0 61.0 61.0 61.0 61.0
62.0 62.0 62.0 62.0 63.0 63.0 63.0 63.0 64.0 64.0 64.0 64.0 65.0 65.0 65.0 65.0 66.0 66.0 66.0 66.0 67.0 67.0 67.0 67.0
68.0 68.0 68.0 68.0 69.0 69.0 69.0 69.0 70.0 70.0 70.0 70.0 71.0 71.0 71.0 71.0 72.0 72.0 72.0 72.0 73.0 73.0 73.0 73.0
74.0 74.0 74.0 74.0 75.0 75.0 75.0 75.0 76.0 76.0 76.0 76.0 77.0 77.0 77.0 77.0 78.0 78.0 78.0 78.0 79.0 79.0 79.0 79.0
80.0 80.0 80.0 80.0 81.0 81.0 81.0 81.0 82.0 82.0 82.0 82.0 83.0 83.0 83.0 83.0 84.0 84.0 84.0 84.0 85.0 85.0 85.0 85.0
86.0 86.0 86.0 86.0 87.0 87.0 87.0 87.0 88.0 88.0 88.0 88.0 89.0 89.0 89.0 89.0 90.0 90.0 90.0 90.0 91.0 91.0 91.0 91.0
92.0 92.0 92.0 92.0 93.0 93.0 93.0 93.0 94.0 94.0 94.0 94.0 95.0 95.0 95.0 95.0 96.0 96.0 96.0 96.0 97.0 97.0 97.0 97.0
98.0 98.0 98.0 98.0 99.0 99.0 99.0 99.0 100.0 100.0 100.0 100.0 101.0 101.0 101.0 101.0 102.0 102.0 102.0 102.0 103.0 10
3.0 103.0 103.0 104.0 104.0 104.0 104.0 105.0 105.0 105.0 105.0 106.0 106.0 106.0 106.0 107.0 107.0 107.0 107.0 108.0 10
8.0 108.0 108.0 109.0 109.0 109.0 109.0 110.0 110.0 110.0 110.0 111.0 111.0 111.0 111.0 112.0 112.0 112.0 112.0 113.0 11
3.0 113.0 113.0 114.0 114.0 114.0 114.0 115.0 115.0 115.0 115.0 116.0 116.0 116.0 116.0 117.0 117.0 117.0 117.0 118.0 11
8.0 118.0 118.0 119.0 119.0 119.0 119.0 120.0 120.0 120.0 120.0 121.0 121.0 121.0 121.0 122.0 122.0 122.0 122.0 123.0 12
3.0 123.0 123.0 124.0 124.0 124.0 124.0 125.0 125.0 125.0 125.0 126.0 126.0 126.0 126.0 127.0 127.0 127.0 127.0 128.0 12
8.0 128.0 128.0 129.0 129.0 129.0 129.0 130.0 130.0 130.0 130.0 131.0 131.0 131.0 131.0 132.0 132.0 132.0 132.0 133.0 13
3.0 133.0 133.0 134.0 134.0 134.0 134.0 135.0 135.0 135.0 135.0 136.0 136.0 136.0 136.0 137.0 137.0 137.0 137.0 138.0 13
8.0 138.0 138.0 139.0 139.0 139.0 139.0 140.0 140.0 140.0 140.0 141.0 141.0 141.0 141.0 142.0 142.0 142.0 142.0 143.0 14
3.0 143.0 143.0 144.0 144.0 144.0 144.0 145.0 145.0 145.0 145.0 146.0 146.0 146.0 146.0 147.0 147.0 147.0 147.0 148.0 14
8.0 148.0 148.0 149.0 149.0 149.0 149.0 150.0 150.0 150.0 150.0 151.0 151.0 151.0 151.0 152.0 152.0 152.0 152.0 153.0 15
3.0 153.0 153.0 154.0 154.0 154.0 154.0 155.0 155.0 155.0 155.0 156.0 156.0 156.0 156.0 157.0 157.0 157.0 157.0 158.0 15
8.0 158.0 158.0 159.0 159.0 159.0 159.0 160.0 160.0 160.0 160.0 161.0 161.0 161.0 161.0 162.0 162.0 162.0 162.0 163.0 16
3.0 163.0 163.0 164.0 164.0 164.0 164.0 165.0 165.0 165.0 165.0 166.0 166.0 166.0 166.0 167.0 167.0 167.0 167.0 168.0 16
8.0 168.0 168.0 169.0 169.0 169.0 169.0 170.0 170.0 170.0 170.0 171.0 171.0 171.0 171.0 172.0 172.0 172.0 172.0 173.0 17
3.0 173.0 173.0 174.0 174.0 174.0 174.0 175.0 175.0 175.0 175.0 176.0 176.0 176.0 176.0 177.0 177.0 177.0 177.0 178.0 17
8.0 178.0 178.0 179.0 179.0 179.0 179.0 180.0 180.0 180.0 180.0 181.0 181.0 181.0 181.0 182.0 182.0 182.0 182.0 183.0 18
3.0 183.0 183.0 184.0 184.0 184.0 184.0 185.0 185.0 185.0 185.0 186.0 186.0 186.0 186.0 187.0 187.0 187.0 187.0 188.0 18
8.0 188.0 188.0 189.0 189.0 189.0 189.0 190.0 190.0 190.0 190.0 191.0 191.0 191.0 191.0 192.0 192.0 192.0 192.0 193.0 19
3.0 193.0 193.0 194.0 194.0 194.0 194.0 195.0 195.0 195.0 195.0 196.0 196.0 196.0 196.0 197.0 197.0 197.0 197.0 198.0 19
8.0 198.0 198.0 199.0 199.0 199.0 199.0 200.0 200.0 200.0 200.0 201.0 201.0 201.0 201.0 202.0 202.0 202.0 202.0 203.0 20
3.0 203.0 203.0 204.0 204.0 204.0 204.0 205.0 205.0 205.0 205.0 206.0 206.0 206.0 206.0 207.0 207.0 207.0 207.0 208.0 20
8.0 208.0 208.0 209.0 209.0 209.0 209.0 210.0 210.0 210.0 210.0 211.0 211.0 211.0 211.0 212.0 212.0 212.0 212.0 213.0 21
3.0 213.0 213.0 214.0 214.0 214.0 214.0 215.0 215.0 215.0 215.0 216.0 216.0 216.0 216.0 217.0 217.0 217.0 217.0 218.0 21
8.0 218.0 218.0 219.0 219.0 219.0 219.0 220.0 220.0 220.0 220.0 221.0 221.0 221.0 221.0 222.0 222.0 222.0 222.0 223.0 22
3.0 223.0 223.0 224.0 224.0 224.0 224.0 225.0 225.0 225.0 225.0 226.0 226.0 226.0 226.0 227.0 227.0 227.0 227.0 228.0 22
8.0 228.0 228.0 229.0 229.0 229.0 229.0 230.0 230.0 230.0 230.0 231.0 231.0 231.0 231.0 232.0 232.0 232.0 232.0 233.0 23
3.0 233.0 233.0 234.0 234.0 234.0 234.0 235.0 235.0 235.0 235.0 236.0 236.0 236.0 236.0 237.0 237.0 237.0 237.0 238.0 23
8.0 238.0 238.0 239.0 239.0 239.0 239.0 240.0 240.0 240.0 240.0 241.0 241.0 241.0 241.0 242.0 242.0 242.0 242.0 243.0 24
3.0 243.0 243.0 244.0 244.0 244.0 244.0 245.0 245.0 245.0 245.0 246.0 246.0 246.0 246.0 247.0 247.0 247.0 247.0 248.0 24
8.0 248.0 248.0 249.0 249.0 249.0 249.0 250.0 250.0 250.0 250.0 251.0 251.0 251.0 251.0 252.0 252.0 252.0 252.0 253.0 25
3.0 253.0 253.0 254.0 254.0 254.0 254.0 255.0 255.0 255.0 255.0 256.0 256.0 256.0 256.0 257.0 257.0 257.0 257.0 258.0 25
8.0 258.0 258.0 259.0 259.0 259.0 259.0 260.0 260.0 260.0 260.0 261.0 261.0 261.0 261.0 262.0 262.0 262.0 262.0 263.0 26
3.0 263.0 263.0 264.0 264.0 264.0 264.0 265.0 265.0 265.0 265.0 266.0 266.0 266.0 266.0 267.0 267.0 267.0 267.0 268.0 26
8.0 268.0 268.0 269.0 269.0 269.0 269.0 270.0 270.0 270.0 270.0 271.0 271.0 271.0 271.0 272.0 272.0 272.0 272.0 273.0 27
3.0 273.0 273.0 274.0 274.0 274.0 274.0 275.0 275.0 275.0 275.0 276.0 276.0 276.0 276.0 277.0 277.0 277.0 277.0 278.0 27
8.0 278.0 278.0 279.0 279.0 279.0 279.0 280.0 280.0 280.0 280.0 281.0 281.0 281.0 281.0 282.0 282.0 282.0 282.0 283.0 28
3.0 283.0 283.0 284.0 284.0 284.0 284.0 285.0 285.0 285.0 285.0 286.0 286.0 286.0 286.0 287.0 287.0 287.0 287.0 288.0 28
8.0 288.0 288.0 289.0 289.0 289.0 289.0 290.0 290.0 290.0 290.0 291.0 291.0 291.0 291.0 292.0 292.0 292.0 292.0 293.0 29
3.0 293.0 293.0 294.0 294.0 294.0 294.0 295.0 295.0 295.0 295.0 296.0 296.0 296.0 296.0 297.0 297.0 297.0 297.0 298.0 29
8.0 298.0 298.0 299.0 299.0 299.0 299.0 300.0 300.0 300.0 300.0 301.0 301.0 301.0 301.0 302.0 302.0 302.0 302.0 303.0 30
3.0 303.0 303.0 304.0 304.0 304.0 304.0 305.0 305.0 305.0 305.0 306.0 306.0 306.0 306.0 307.0 307.0 307.0 307.0 308.0 30
8.0 308.0 308.0 309.0 309.0 309.0 309.0 310.0 310.0 310.0 310.0 311.0 311.0 311.0 311.0 312.0 312.0 312.0 312.0 313.0 31
3.0 313.0 313.0 314.0 314.0 314.0 314.0 315.0 315.0 315.0 315.0 316.0 316.0 316.0 316.0 317.0 317.0 317.0 317.0 318.0 31
8.0 318.0 318.0 319.0 319.0 319.0 319.0 320.0 320.0 320.0 320.0 321.0 321.0 321.0 321.0 322.0 322.0 322.0 322.0 323.0 32
3.0 323.0 323.0 324.0 324.0 324.0 324.0 325.0 325.0 325.0 325.0 326.0 326.0 326.0 326.0 327.0 327.0 327.0 327.0 328.0 32
8.0 328.0 328.0 329.0 329.0 329.0 329.0 330.0 330.0 330.0 330.0 331.0 331.0 331.0 331.0 332.0 332.0 332.0 332.0 333.0 33
3.0 333.0 333.0 334.0 334.0 334.0 334.0 335.0 335.0 335.0 335.0 336.0 336.0 336.0 336.0 337.0 337.0 337.0 337.0 338.0 33
8.0 338.0 338.0 339.0 339.0 339.0 339.0 340.0 340.0 340.0 340.0 341.0 341.0 341.0 341.0 342.0 342.0 342.0 342.0 343.0 34
3.0 343.0 343.0 344.0 344.0 344.0 344.0 345.0 345.0 345.0 345.0 346.0 346.0 346.0 346.0 347.0 347.0 347.0 347.0 348.0 34
8.0 348.0 348.0 349.0 349.0 349.0 349.0 350.0 350.0 350.0 350.0 351.0 351.0 351.0 351.0 352.0 352.0 352.0 352.0 353.0 35
3.0 353.0 353.0 354.0 354.0 354.0 354.0 355.0 355.0 355.0 355.0 356.0 356.0 356.0 356.0 357.0 357.0 357.0 357.0 358.0 35
8.0 358.0 358.0 359.0 359.0 359.0 359.0 360.0 360.0 360.0 360.0 361.0 361.0 361.0 361.0 362.0 362.0 362.0 362.0 363.0 36
3.0 363.0 363.0 364.0 364.0 364.0 364.0 365.0 365.0 365.0 365.0 366.0 366.0 366.0 366.0 367.0 367.0 367.0 367.0 368.0 36
8.0 368.0 368.0 369.0 369.0 369.0 369.0 370.0 370.0 370.0 370.0 371.0 371.0 371.0 371.0 372.0 372.0 372.0 372.0 373.0 37
3.0 373.0 373.0 374.0 374.0 374.0 374.0 375.0 375.0 375.0 375.0 376.0 376.0 376.0 376.0 377.0 377.0 377.0 377.0 378.0 37
8.0 378.0 378.0 379.0 379.0 379.0 379.0 380.0 380.0 380.0 380.0 381.0 381.0 381.0 381.0 382.0 382.0 382.0 382.0 383.0 38
3.0 383.0 383.0 384.0 384.0 384.0 384.0 385.0 385.0 385.0 385.0 386.0 386.0 386.0 386.0 387.0 387.0 387.0 387.0 388.0 38
8.0 388.0 388.0 389.0 389.0 389.0 389.0 390.0 390.0 390.0 390.0 391.0 391.0 391.0 391.0 392.0 392.0 392.0 392.0 393.0 39
3.0 393.0 393.0 394.0 394.0 394.0 394.0 395.0 395.0 395.0 395.0 396.0 396.0 396.0 396.0 397.0 397.0 397.0 397.0 398.0 39
8.0 398.0 398.0 399.0 399.0 399.0 399.0 400.0 400.0 400.0 400.0 401.0 401.0 401.0 401.0 402.0 402.0 402.0 402.0 403.0 40
3.0 403.0 403.0 404.0 404.0 404.0 404.0 405.0 405.0 405.0 405.0 406.0 406.0 406.0 406.0 407.0 407.0 407.0 407.0 408.0 40
8.0 408.0 408.0 409.0 409.0 409.0 409.0 410.0 410.0 410.0 410.0 411.0 411.0 411.0 411.0 412.0 412.0 412.0 412.0 413.0 41
3.0 413.0 413.0 414.0 414.0 414.0 414.0 415.0 415.0 415.0 415.0 416.0 416.0 416.0 416.0 417.0 417.0 417.0 417.0 418.0 41
8.0 418.0 418.0 419.0 419.0 419.0 419.0 420.0 420.0 420.0 420.0 421.0 421.0 421.0 421.0 422.0 422.0 422.0 422.0 423.0 42
3.0 423.0 423.0 424.0 424.0 424.0 424.0 425.0 425.0 425.0 425.0 426.0 426.0 426.0 426.0 427.0 427.0 427.0 427.0 428.0 42
8.0 428.0 428.0 429.0 429.0 429.0 429.0 430.0 430.0 430.0 430.0 431.0 431.0 431.0 431.0 432.0 432.0 432.0 432.0 433.0 43
3.0 433.0 433.0 434.0 434.0 434.0 434.0 435.0 435.0 435.0 435.0 436.0 436.0 436.0 436.0 437.0 437.0 437.0 437.0 438.0 43
8.0 438.0 438.0 439.0 439.0 439.0 439.0 440.0 440.0 440.0 440.0 441.0 441.0 441.0 441.0 442.0 442.0 442.0 442.0 443.0 44
3.0 443.0 443.0 444.0 444.0 444.0 444.0 445.0 445.0 445.0 445.0 446.0 446.0 446.0 446.0 447.0 447.0 447.0 447.0 448.0 44
8.0 448.0 448.0 449.0 449.0 449.0 449.0 450.0 450.0 450.0 450.0 451.0 451.0 451.0 451.0 452.0 452.0 452.0 452.0 453.0 45
3.0 453.0 453.0 454.0 454.0 454.0 454.0 455.0 455.0 455.0 455.0 456.0 456.0 456.0 456.0 457.0 457.0 457.0 457.0 458.0 45
8.0 458.0 458.0 459.0 459.0 459.0 459.0 460.0 460.0 460.0 460.0 461.0 461.0 461.0 461.0 462.0 462.0 462.0 462.0 463.0 46
3.0 463.0 463.0 464.0 464.0 464.0 464.0 465.0 465.0 465.0 465.0 466.0 466.0 466.0 466.0 467.0 467.0 467.0 467.0 468.0 46
8.0 468.0 468.0 469.0 469.0 469.0 469.0 470.0 470.0 470.0 470.0 471.0 471.0 471.0 471.0 472.0 472.0 472.0 472.0 473.0 47
3.0 473.0 473.0 474.0 474.0 474.0 474.0 475.0 475.0 475.0 475.0 476.0 476.0 476.0 476.0 477.0 477.0 477.0 477.0 478.0 47
8.0 478.0 478.0 479.0 479.0 479.0 479.0 480.0 480.0 480.0 480.0 481.0 481.0 481.0 481.0 482.0 482.0 482.0 482.0 483.0 48
3.0 483.0 483.0 484.0 484.0 484.0 484.0 485.0 485.0 485.0 485.0 486.0 486.0 486.0 486.0 487.0 487.0 487.0 487.0 488.0 48
8.0 488.0 488.0 489.0 489.0 489.0 489.0 490.0 490.0 490.0 490.0 491.0 491.0 491.0 491.0 492.0 492.0 492.0 492.0 493.0 49
3.0 493.0 493.0 494.0 494.0 494.0 494.0 495.0 495.0 495.0 495.0 496.0 496.0 496.0 496.0 497.0 497.0 497.0 497.0 498.0 49
8.0 498.0 498.0 499.0 499.0 499.0 499.0 500.0 500.0 500.0 500.0 501.0 501.0 501.0 501.0 502.0 502.0 502.0 502.0 503.0 50
3.0 503.0 503.0 504.0 504.0 504.0 504.0 505.0 505.0 505.0 505.0 506.0 506.0 506.0 506.0 507.0 507.0 507.0 507.0 508.0 50
8.0 508.0 508.0 509.0 509.0 509.0 509.0 510.0 510.0 510.0 510.0 511.0 511.0 511.0 511.0
...
> Test1148 End <

PS:
...
tbb::task *execute()
{
//std::cout << "Process ID :" << getpid() << std::endl;
//CrtPrintf( RTU("Process ID : %ld\n"), ( RTint )::GetCurrentProcess() );
//CrtPrintf( RTU("Thread ID : %ld\n"), ( RTint )::GetCurrentThread() );
// Commented out...
//CrtPrintf( RTU("Process NUM: %ld\n"), ( RTint )m_iNum );
...

#20 Where did you see "float *fSrcArray = new float( len );"?

#21 The test program was already said to work after correction of the "typo".

What is the point of these postings, when the problem only occurs in a larger program and with glibc...

Hi 'zlw',

Please let me know if you have any questions.

Best regards,
Sergey

Thank you for your response. I still don't know how to know which glibc I am using.
Here is what I saw when my program corrupts.

======= Backtrace: =========

/lib64/libc.so.6(+0x75018)[0x7ff402b23018]

/lib64/libc.so.6(cfree+0x6c)[0x7ff402b27f6c]

/lib64/libpthread.so.0(+0x75f0)[0x7ff40358b5f0]

AmI using the wrong library? My compile option is very minimum.

>>...Am I using the wrong library?..

Isee thatyou're trying to use 64-bit libraries on some Linux platform. My question is:

Are you trying to builda 32-bit application or a 64-bit application?

Try to test the codes I posted in post #21in your Linux environment. I kept a processinglogic of your
Test-Caseas much as I could but I replaced all calls for memory allocation buffers with 'new' & 'delete'
C++ operatorson Crt-functions'malloc' & 'free'. Actually, it doesn't matter because the memory in
both cases is allocated from the heap allocated to your xx-bit application.

Itested the codes from the post #21on Windows XP andeverything worked well.

Best regards,
Sergey

PS: My test 32-bitapplication was compiled with Visual Studio 2005 with multi-threaded Crt-libraries.

I am building 64 bit.

I will try your program. The truth is with small program it seems to be working. But with larger program (my real project), it is not.
I understand I have the responsibilty to reproduce the problem. But it is not easy. Thank you all for your help.

Leave a Comment

Please sign in to add a comment. Not a member? Join today