- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I've got a small unit test using Intel TBB:
SInt32 nextThreadId = 0;
SInt32 maxNumThreads = 0;
HashSet activeThreads;
Random seedRng;
tbb::spin_mutex randMutex;
tbb::parallel_for(
tbb::blocked_range<SInt32>(0, 1000000),
[&](tbb::blocked_range<SInt32>& br) {
randMutex.lock();
SInt32 randSeed = seedRng.RandNum();
SInt32 sleepTime = randSeed % 3;
SInt32 threadId = nextThreadId;
printf("Starting thread %d\n", threadId);
activeThreads.InsertInt(threadId);
maxNumThreads = (activeThreads.Num() > maxNumThreads) ? activeThreads.Num() : maxNumThreads;
nextThreadId++;
randMutex.unlock();
sleep(sleepTime);
HashTable hashTable;
Random random(randSeed);
for (SInt32 i = br.begin(); i < br.end(); i++)
{
SInt32 randNum1 = random.RandNum();
SInt32 randNum2 = random.RandNum();
if (!hashTable.Contains(randNum1))
{
hashTable.AtPutInt(randNum1, randNum2);
}
}
for (HashIter i(&hashTable); !i.End(); i.Next())
{
SInt32 randNum1 = i.GetKeyInt();
SInt32 randNum2 = i.GetValueInt();
if (randNum1 == randNum2)
{
printf("Impossible happened\n");
}
}
randMutex.lock();
activeThreads.RemoveInt(threadId);
randMutex.unlock();
});
printf("Finished with %d threads (max %d)\n", nextThreadId, maxNumThreads);
exit(0);
The variables randSeed, sleepTime, nextThreadId, maxNumThreads, and activeThreads are all in the critical section and protected by a mutex called randMutex. The programs runs fine on the command line but Intel Inspector reports 42 problems, all data races. Here's the first one
Read: SInt32 threadId = nextThreadId; >>>> Write: nextThreadId++;
Both of these accesses are protected by the spin_mutex. Any idea why it's being reported?
The rest seem to be in other parts of my application that aren't multi-threaded or even executed. My application uses TCmalloc for memory allocation and some of the errors are coming from it.
- Tags:
- CC++
- Debugging
- Development Tools
- Fortran
- Intel® Inspector
- Optimization
- Parallel Computing
- Vectorization
Link Copied
0 Replies
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page