You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
1
(17) |
2
(14) |
3
(15) |
4
(30) |
5
(18) |
6
(12) |
7
(10) |
|
8
(11) |
9
(11) |
10
(14) |
11
(12) |
12
(12) |
13
(8) |
14
(5) |
|
15
(11) |
16
(19) |
17
(15) |
18
(15) |
19
(16) |
20
(9) |
21
(9) |
|
22
(12) |
23
(11) |
24
(10) |
25
(5) |
26
(11) |
27
(12) |
28
(20) |
|
29
(11) |
30
(21) |
|
|
|
|
|
|
From: <sv...@va...> - 2008-06-09 19:52:30
|
Author: bart
Date: 2008-06-09 20:52:37 +0100 (Mon, 09 Jun 2008)
New Revision: 8211
Log:
Run test only with one thread and with ten threads -- skip values inbetween.
Modified:
trunk/exp-drd/scripts/run-matinv
Modified: trunk/exp-drd/scripts/run-matinv
===================================================================
--- trunk/exp-drd/scripts/run-matinv 2008-06-09 19:51:41 UTC (rev 8210)
+++ trunk/exp-drd/scripts/run-matinv 2008-06-09 19:52:37 UTC (rev 8211)
@@ -28,8 +28,9 @@
read avg1 stddev1 < "$tmp"
echo "Average time: ${avg1} +/- ${stddev1} seconds"
- for ((i=1;i<=10;i++))
+ for i in 1 10
do
+ print_runtime_ratio ${VG} --tool=none ${MATINV} $n -t$i
print_runtime_ratio ${VG} --tool=exp-drd ${MATINV} $n -t$i
done
done
|
|
From: <sv...@va...> - 2008-06-09 19:51:34
|
Author: bart
Date: 2008-06-09 20:51:41 +0100 (Mon, 09 Jun 2008)
New Revision: 8210
Log:
Corrected rounding.
Modified:
trunk/exp-drd/Testing.txt
Modified: trunk/exp-drd/Testing.txt
===================================================================
--- trunk/exp-drd/Testing.txt 2008-06-09 19:50:51 UTC (rev 8209)
+++ trunk/exp-drd/Testing.txt 2008-06-09 19:51:41 UTC (rev 8210)
@@ -6,7 +6,7 @@
perl tests/vg_regtest exp-drd
2. Test the slowdown for matinv for various matrix sizes via the script
exp-drd/scripts/run-matinv (must be about 24 for i == 1 and about
- 33 for i == 10 with n == 200).
+ 34 for i == 10 with n == 200).
3. Test whether DRD works with standard KDE applications and whether it does
not print any false positives:
./vg-in-place --tool=exp-drd kate
|
|
From: <sv...@va...> - 2008-06-09 19:51:01
|
Author: bart
Date: 2008-06-09 20:50:51 +0100 (Mon, 09 Jun 2008)
New Revision: 8209
Log:
Implemented cache rotation.
Modified:
trunk/exp-drd/Testing.txt
trunk/exp-drd/drd_bitmap.c
trunk/exp-drd/drd_bitmap.h
trunk/exp-drd/pub_drd_bitmap.h
Modified: trunk/exp-drd/Testing.txt
===================================================================
--- trunk/exp-drd/Testing.txt 2008-06-09 15:18:59 UTC (rev 8208)
+++ trunk/exp-drd/Testing.txt 2008-06-09 19:50:51 UTC (rev 8209)
@@ -5,8 +5,8 @@
command:
perl tests/vg_regtest exp-drd
2. Test the slowdown for matinv for various matrix sizes via the script
- exp-drd/scripts/run-matinv (must be about 27 for i == 1 and about
- 36 for i == 10).
+ exp-drd/scripts/run-matinv (must be about 24 for i == 1 and about
+ 33 for i == 10 with n == 200).
3. Test whether DRD works with standard KDE applications and whether it does
not print any false positives:
./vg-in-place --tool=exp-drd kate
Modified: trunk/exp-drd/drd_bitmap.c
===================================================================
--- trunk/exp-drd/drd_bitmap.c 2008-06-09 15:18:59 UTC (rev 8208)
+++ trunk/exp-drd/drd_bitmap.c 2008-06-09 19:50:51 UTC (rev 8209)
@@ -250,7 +250,7 @@
bm_access_range(bm, a1, a1 + 8, eStore);
}
-Bool bm_has(const struct bitmap* const bm, const Addr a1, const Addr a2,
+Bool bm_has(struct bitmap* const bm, const Addr a1, const Addr a2,
const BmAccessTypeT access_type)
{
Addr b;
@@ -264,8 +264,7 @@
return True;
}
-Bool bm_has_any_load(const struct bitmap* const bm,
- const Addr a1, const Addr a2)
+Bool bm_has_any_load(struct bitmap* const bm, const Addr a1, const Addr a2)
{
Addr b, b_next;
@@ -317,7 +316,7 @@
return 0;
}
-Bool bm_has_any_store(const struct bitmap* const bm,
+Bool bm_has_any_store(struct bitmap* const bm,
const Addr a1, const Addr a2)
{
Addr b, b_next;
@@ -372,7 +371,7 @@
/* Return True if there is a read access, write access or both */
/* to any of the addresses in the range [ a1, a2 [ in bitmap bm. */
-Bool bm_has_any_access(const struct bitmap* const bm,
+Bool bm_has_any_access(struct bitmap* const bm,
const Addr a1, const Addr a2)
{
Addr b, b_next;
@@ -428,7 +427,7 @@
/** Report whether an access of type access_type at address a is recorded in
* bitmap bm.
*/
-Bool bm_has_1(const struct bitmap* const bm,
+Bool bm_has_1(struct bitmap* const bm,
const Addr a, const BmAccessTypeT access_type)
{
const struct bitmap2* p2;
@@ -448,7 +447,7 @@
return False;
}
-void bm_clear(const struct bitmap* const bm,
+void bm_clear(struct bitmap* const bm,
const Addr a1,
const Addr a2)
{
@@ -510,7 +509,7 @@
/** Clear all references to loads in bitmap bm starting at address a1 and
* up to but not including address a2.
*/
-void bm_clear_load(const struct bitmap* const bm,
+void bm_clear_load(struct bitmap* const bm,
const Addr a1, const Addr a2)
{
Addr a;
@@ -528,7 +527,7 @@
/** Clear all references to stores in bitmap bm starting at address a1 and
* up to but not including address a2.
*/
-void bm_clear_store(const struct bitmap* const bm,
+void bm_clear_store(struct bitmap* const bm,
const Addr a1, const Addr a2)
{
Addr a;
@@ -547,7 +546,7 @@
* a2. Return True if and only if any of the addresses was set before
* clearing.
*/
-Bool bm_test_and_clear(const struct bitmap* const bm,
+Bool bm_test_and_clear(struct bitmap* const bm,
const Addr a1, const Addr a2)
{
Bool result;
@@ -557,7 +556,7 @@
return result;
}
-Bool bm_has_conflict_with(const struct bitmap* const bm,
+Bool bm_has_conflict_with(struct bitmap* const bm,
const Addr a1, const Addr a2,
const BmAccessTypeT access_type)
{
@@ -623,18 +622,18 @@
return False;
}
-Bool bm_load_has_conflict_with(const struct bitmap* const bm,
+Bool bm_load_has_conflict_with(struct bitmap* const bm,
const Addr a1, const Addr a2)
{
return bm_has_conflict_with(bm, a1, a2, eLoad);
}
-Bool bm_load_1_has_conflict_with(const struct bitmap* const bm, const Addr a1)
+Bool bm_load_1_has_conflict_with(struct bitmap* const bm, const Addr a1)
{
return bm_aligned_load_has_conflict_with(bm, a1, 1);
}
-Bool bm_load_2_has_conflict_with(const struct bitmap* const bm, const Addr a1)
+Bool bm_load_2_has_conflict_with(struct bitmap* const bm, const Addr a1)
{
if ((a1 & 1) == 0)
return bm_aligned_load_has_conflict_with(bm, a1, 2);
@@ -642,7 +641,7 @@
return bm_has_conflict_with(bm, a1, a1 + 2, eLoad);
}
-Bool bm_load_4_has_conflict_with(const struct bitmap* const bm, const Addr a1)
+Bool bm_load_4_has_conflict_with(struct bitmap* const bm, const Addr a1)
{
if ((a1 & 3) == 0)
return bm_aligned_load_has_conflict_with(bm, a1, 4);
@@ -650,7 +649,7 @@
return bm_has_conflict_with(bm, a1, a1 + 4, eLoad);
}
-Bool bm_load_8_has_conflict_with(const struct bitmap* const bm, const Addr a1)
+Bool bm_load_8_has_conflict_with(struct bitmap* const bm, const Addr a1)
{
if ((a1 & 7) == 0)
return bm_aligned_load_has_conflict_with(bm, a1, 8);
@@ -658,12 +657,12 @@
return bm_has_conflict_with(bm, a1, a1 + 8, eLoad);
}
-Bool bm_store_1_has_conflict_with(const struct bitmap* const bm, const Addr a1)
+Bool bm_store_1_has_conflict_with(struct bitmap* const bm, const Addr a1)
{
return bm_aligned_store_has_conflict_with(bm, a1, 1);
}
-Bool bm_store_2_has_conflict_with(const struct bitmap* const bm, const Addr a1)
+Bool bm_store_2_has_conflict_with(struct bitmap* const bm, const Addr a1)
{
if ((a1 & 1) == 0)
return bm_aligned_store_has_conflict_with(bm, a1, 2);
@@ -671,7 +670,7 @@
return bm_has_conflict_with(bm, a1, a1 + 2, eStore);
}
-Bool bm_store_4_has_conflict_with(const struct bitmap* const bm, const Addr a1)
+Bool bm_store_4_has_conflict_with(struct bitmap* const bm, const Addr a1)
{
if ((a1 & 3) == 0)
return bm_aligned_store_has_conflict_with(bm, a1, 4);
@@ -679,7 +678,7 @@
return bm_has_conflict_with(bm, a1, a1 + 4, eStore);
}
-Bool bm_store_8_has_conflict_with(const struct bitmap* const bm, const Addr a1)
+Bool bm_store_8_has_conflict_with(struct bitmap* const bm, const Addr a1)
{
if ((a1 & 7) == 0)
return bm_aligned_store_has_conflict_with(bm, a1, 8);
@@ -687,7 +686,7 @@
return bm_has_conflict_with(bm, a1, a1 + 8, eStore);
}
-Bool bm_store_has_conflict_with(const struct bitmap* const bm,
+Bool bm_store_has_conflict_with(struct bitmap* const bm,
const Addr a1, const Addr a2)
{
return bm_has_conflict_with(bm, a1, a2, eStore);
@@ -696,7 +695,7 @@
/** Return True if the two bitmaps *lhs and *rhs are identical, and false
* if not.
*/
-Bool bm_equal(struct bitmap* const lhs, const struct bitmap* const rhs)
+Bool bm_equal(struct bitmap* const lhs, struct bitmap* const rhs)
{
struct bitmap2* bm2l;
struct bitmap2ref* bm2l_ref;
@@ -778,7 +777,7 @@
/** Merge bitmaps *lhs and *rhs into *lhs. */
void bm_merge2(struct bitmap* const lhs,
- const struct bitmap* const rhs)
+ struct bitmap* const rhs)
{
struct bitmap2* bm2l;
struct bitmap2ref* bm2l_ref;
@@ -814,8 +813,8 @@
* @param rhs Bitmap to be compared with lhs.
* @return !=0 if there are data races, == 0 if there are none.
*/
-int bm_has_races(const struct bitmap* const lhs,
- const struct bitmap* const rhs)
+int bm_has_races(struct bitmap* const lhs,
+ struct bitmap* const rhs)
{
VG_(OSetGen_ResetIter)(lhs->oset);
VG_(OSetGen_ResetIter)(rhs->oset);
@@ -868,7 +867,7 @@
return 0;
}
-void bm_print(const struct bitmap* const bm)
+void bm_print(struct bitmap* const bm)
{
struct bitmap2* bm2;
struct bitmap2ref* bm2ref;
Modified: trunk/exp-drd/drd_bitmap.h
===================================================================
--- trunk/exp-drd/drd_bitmap.h 2008-06-09 15:18:59 UTC (rev 8208)
+++ trunk/exp-drd/drd_bitmap.h 2008-06-09 19:50:51 UTC (rev 8209)
@@ -202,13 +202,40 @@
static struct bitmap2* bm2_make_exclusive(struct bitmap* const bm,
struct bitmap2ref* const bm2ref);
+/** Rotate elements cache[0..n-1] such that the element at position n-1 is
+ * moved to position 0. This allows to speed up future cache lookups.
+ */
+static __inline__
+void bm_cache_rotate(struct bm_cache_elem cache[], const int n)
+{
+ struct bm_cache_elem t;
+ t = cache[0];
+ if (n > 1)
+ cache[0] = cache[1];
+ if (n > 2)
+ cache[1] = cache[2];
+ if (n > 3)
+ cache[2] = cache[3];
+ if (n > 4)
+ cache[3] = cache[4];
+ if (n > 5)
+ cache[4] = cache[5];
+ if (n > 6)
+ cache[5] = cache[6];
+ if (n > 7)
+ cache[6] = cache[7];
+ cache[n - 1] = t;
+}
+
static __inline__
-Bool bm_cache_lookup(const struct bitmap* const bm, const UWord a1,
+Bool bm_cache_lookup(struct bitmap* const bm, const UWord a1,
struct bitmap2** bm2)
{
+#if 0
tl_assert(bm);
tl_assert(bm2);
+#endif
#if N_CACHE_ELEM > 8
#error Please update the code below.
@@ -231,6 +258,7 @@
if (a1 == bm->cache[2].a1)
{
*bm2 = bm->cache[2].bm2;
+ bm_cache_rotate(bm->cache, 3);
return True;
}
#endif
@@ -238,6 +266,7 @@
if (a1 == bm->cache[3].a1)
{
*bm2 = bm->cache[3].bm2;
+ bm_cache_rotate(bm->cache, 4);
return True;
}
#endif
@@ -245,6 +274,7 @@
if (a1 == bm->cache[4].a1)
{
*bm2 = bm->cache[4].bm2;
+ bm_cache_rotate(bm->cache, 5);
return True;
}
#endif
@@ -252,6 +282,7 @@
if (a1 == bm->cache[5].a1)
{
*bm2 = bm->cache[5].bm2;
+ bm_cache_rotate(bm->cache, 6);
return True;
}
#endif
@@ -259,6 +290,7 @@
if (a1 == bm->cache[6].a1)
{
*bm2 = bm->cache[6].bm2;
+ bm_cache_rotate(bm->cache, 7);
return True;
}
#endif
@@ -266,6 +298,7 @@
if (a1 == bm->cache[7].a1)
{
*bm2 = bm->cache[7].bm2;
+ bm_cache_rotate(bm->cache, 8);
return True;
}
#endif
@@ -316,7 +349,7 @@
* @param bm bitmap pointer.
*/
static __inline__
-const struct bitmap2* bm2_lookup(const struct bitmap* const bm, const UWord a1)
+const struct bitmap2* bm2_lookup(struct bitmap* const bm, const UWord a1)
{
struct bitmap2* bm2;
struct bitmap2ref* bm2ref;
@@ -342,7 +375,7 @@
*/
static __inline__
struct bitmap2*
-bm2_lookup_exclusive(const struct bitmap* const bm, const UWord a1)
+bm2_lookup_exclusive(struct bitmap* const bm, const UWord a1)
{
struct bitmap2ref* bm2ref;
struct bitmap2* bm2;
@@ -383,7 +416,7 @@
* @param bm bitmap pointer.
*/
static __inline__
-struct bitmap2* bm2_insert(const struct bitmap* const bm, const UWord a1)
+struct bitmap2* bm2_insert(struct bitmap* const bm, const UWord a1)
{
struct bitmap2ref* bm2ref;
struct bitmap2* bm2;
@@ -405,7 +438,7 @@
* *bm2. This means that *bm2 becomes shared over two or more bitmaps.
*/
static __inline__
-struct bitmap2* bm2_insert_addref(const struct bitmap* const bm,
+struct bitmap2* bm2_insert_addref(struct bitmap* const bm,
struct bitmap2* const bm2)
{
struct bitmap2ref* bm2ref;
@@ -432,8 +465,7 @@
* @param bm bitmap pointer.
*/
static __inline__
-struct bitmap2* bm2_lookup_or_insert(const struct bitmap* const bm,
- const UWord a1)
+struct bitmap2* bm2_lookup_or_insert(struct bitmap* const bm, const UWord a1)
{
struct bitmap2ref* bm2ref;
struct bitmap2* bm2;
@@ -507,7 +539,7 @@
}
static __inline__
-Bool bm_aligned_load_has_conflict_with(const struct bitmap* const bm,
+Bool bm_aligned_load_has_conflict_with(struct bitmap* const bm,
const Addr a1, const SizeT size)
{
const struct bitmap2* bm2;
@@ -518,7 +550,7 @@
}
static __inline__
-Bool bm_aligned_store_has_conflict_with(const struct bitmap* const bm,
+Bool bm_aligned_store_has_conflict_with(struct bitmap* const bm,
const Addr a1, const SizeT size)
{
const struct bitmap2* bm2;
Modified: trunk/exp-drd/pub_drd_bitmap.h
===================================================================
--- trunk/exp-drd/pub_drd_bitmap.h 2008-06-09 15:18:59 UTC (rev 8208)
+++ trunk/exp-drd/pub_drd_bitmap.h 2008-06-09 19:50:51 UTC (rev 8209)
@@ -71,50 +71,50 @@
void bm_access_store_2(struct bitmap* const bm, const Addr a1);
void bm_access_store_4(struct bitmap* const bm, const Addr a1);
void bm_access_store_8(struct bitmap* const bm, const Addr a1);
-Bool bm_has(const struct bitmap* const bm,
+Bool bm_has(struct bitmap* const bm,
const Addr a1, const Addr a2,
const BmAccessTypeT access_type);
-Bool bm_has_any_load(const struct bitmap* const bm,
+Bool bm_has_any_load(struct bitmap* const bm,
const Addr a1, const Addr a2);
-Bool bm_has_any_store(const struct bitmap* const bm,
+Bool bm_has_any_store(struct bitmap* const bm,
const Addr a1, const Addr a2);
-Bool bm_has_any_access(const struct bitmap* const bm,
+Bool bm_has_any_access(struct bitmap* const bm,
const Addr a1, const Addr a2);
-Bool bm_has_1(const struct bitmap* const bm,
+Bool bm_has_1(struct bitmap* const bm,
const Addr address, const BmAccessTypeT access_type);
-void bm_clear(const struct bitmap* const bm,
+void bm_clear(struct bitmap* const bm,
const Addr a1, const Addr a2);
-void bm_clear_load(const struct bitmap* const bm,
+void bm_clear_load(struct bitmap* const bm,
const Addr a1, const Addr a2);
-void bm_clear_store(const struct bitmap* const bm,
+void bm_clear_store(struct bitmap* const bm,
const Addr a1, const Addr a2);
-Bool bm_test_and_clear(const struct bitmap* const bm,
+Bool bm_test_and_clear(struct bitmap* const bm,
const Addr a1, const Addr a2);
-Bool bm_has_conflict_with(const struct bitmap* const bm,
+Bool bm_has_conflict_with(struct bitmap* const bm,
const Addr a1, const Addr a2,
const BmAccessTypeT access_type);
-Bool bm_load_1_has_conflict_with(const struct bitmap* const bm, const Addr a1);
-Bool bm_load_2_has_conflict_with(const struct bitmap* const bm, const Addr a1);
-Bool bm_load_4_has_conflict_with(const struct bitmap* const bm, const Addr a1);
-Bool bm_load_8_has_conflict_with(const struct bitmap* const bm, const Addr a1);
-Bool bm_load_has_conflict_with(const struct bitmap* const bm,
+Bool bm_load_1_has_conflict_with(struct bitmap* const bm, const Addr a1);
+Bool bm_load_2_has_conflict_with(struct bitmap* const bm, const Addr a1);
+Bool bm_load_4_has_conflict_with(struct bitmap* const bm, const Addr a1);
+Bool bm_load_8_has_conflict_with(struct bitmap* const bm, const Addr a1);
+Bool bm_load_has_conflict_with(struct bitmap* const bm,
const Addr a1, const Addr a2);
-Bool bm_store_1_has_conflict_with(const struct bitmap* const bm,const Addr a1);
-Bool bm_store_2_has_conflict_with(const struct bitmap* const bm,const Addr a1);
-Bool bm_store_4_has_conflict_with(const struct bitmap* const bm,const Addr a1);
-Bool bm_store_8_has_conflict_with(const struct bitmap* const bm,const Addr a1);
-Bool bm_store_has_conflict_with(const struct bitmap* const bm,
+Bool bm_store_1_has_conflict_with(struct bitmap* const bm,const Addr a1);
+Bool bm_store_2_has_conflict_with(struct bitmap* const bm,const Addr a1);
+Bool bm_store_4_has_conflict_with(struct bitmap* const bm,const Addr a1);
+Bool bm_store_8_has_conflict_with(struct bitmap* const bm,const Addr a1);
+Bool bm_store_has_conflict_with(struct bitmap* const bm,
const Addr a1, const Addr a2);
-Bool bm_equal(struct bitmap* const lhs, const struct bitmap* const rhs);
+Bool bm_equal(struct bitmap* const lhs, struct bitmap* const rhs);
void bm_swap(struct bitmap* const bm1, struct bitmap* const bm2);
void bm_merge2(struct bitmap* const lhs,
- const struct bitmap* const rhs);
-int bm_has_races(const struct bitmap* const bm1,
- const struct bitmap* const bm2);
+ struct bitmap* const rhs);
+int bm_has_races(struct bitmap* const bm1,
+ struct bitmap* const bm2);
void bm_report_races(ThreadId const tid1, ThreadId const tid2,
- const struct bitmap* const bm1,
- const struct bitmap* const bm2);
-void bm_print(const struct bitmap* bm);
+ struct bitmap* const bm1,
+ struct bitmap* const bm2);
+void bm_print(struct bitmap* bm);
ULong bm_get_bitmap_creation_count(void);
ULong bm_get_bitmap2_node_creation_count(void);
ULong bm_get_bitmap2_creation_count(void);
|
|
From: <sv...@va...> - 2008-06-09 15:18:57
|
Author: bart
Date: 2008-06-09 16:18:59 +0100 (Mon, 09 Jun 2008)
New Revision: 8208
Log:
Memory tracing now also works while not recording memory accesses for conflict analysis. Added branch prediction hints.
Modified:
trunk/exp-drd/drd_main.c
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-06-09 15:08:22 UTC (rev 8207)
+++ trunk/exp-drd/drd_main.c 2008-06-09 15:18:59 UTC (rev 8208)
@@ -269,14 +269,13 @@
== VgThreadIdToDrdThreadId(VG_(get_running_tid())));
#endif
- if (! running_thread_is_recording())
- return;
-
- if (range_any_is_traced(addr, size))
+ if (UNLIKELY(range_any_is_traced(addr, size)))
{
drd_trace_mem_access(addr, size, eLoad);
}
- if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
+
+ if (running_thread_is_recording()
+ && (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_load_triggers_conflict(addr, addr + size)
&& ! drd_is_suppressed(addr, addr + size))
{
@@ -286,14 +285,13 @@
static VG_REGPARM(1) void drd_trace_load_1(Addr addr)
{
- if (! running_thread_is_recording())
- return;
-
- if (range_any_is_traced(addr, 1))
+ if (UNLIKELY(range_any_is_traced(addr, 1)))
{
drd_trace_mem_access(addr, 1, eLoad);
}
- if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
+
+ if (running_thread_is_recording()
+ && (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_load_1_triggers_conflict(addr)
&& ! drd_is_suppressed(addr, addr + 1))
{
@@ -303,14 +301,13 @@
static VG_REGPARM(1) void drd_trace_load_2(Addr addr)
{
- if (! running_thread_is_recording())
- return;
-
- if (range_any_is_traced(addr, 2))
+ if (UNLIKELY(range_any_is_traced(addr, 2)))
{
drd_trace_mem_access(addr, 2, eLoad);
}
- if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
+
+ if (running_thread_is_recording()
+ && (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_load_2_triggers_conflict(addr)
&& ! drd_is_suppressed(addr, addr + 2))
{
@@ -320,14 +317,13 @@
static VG_REGPARM(1) void drd_trace_load_4(Addr addr)
{
- if (! running_thread_is_recording())
- return;
-
- if (range_any_is_traced(addr, 4))
+ if (UNLIKELY(range_any_is_traced(addr, 4)))
{
drd_trace_mem_access(addr, 4, eLoad);
}
- if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
+
+ if (running_thread_is_recording()
+ && (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_load_4_triggers_conflict(addr)
&& ! drd_is_suppressed(addr, addr + 4))
{
@@ -337,14 +333,13 @@
static VG_REGPARM(1) void drd_trace_load_8(Addr addr)
{
- if (! running_thread_is_recording())
- return;
-
- if (range_any_is_traced(addr, 8))
+ if (UNLIKELY(range_any_is_traced(addr, 8)))
{
drd_trace_mem_access(addr, 8, eLoad);
}
- if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
+
+ if (running_thread_is_recording()
+ && (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_load_8_triggers_conflict(addr)
&& ! drd_is_suppressed(addr, addr + 8))
{
@@ -361,14 +356,13 @@
== VgThreadIdToDrdThreadId(VG_(get_running_tid())));
#endif
- if (! running_thread_is_recording())
- return;
-
- if (range_any_is_traced(addr, size))
+ if (UNLIKELY(range_any_is_traced(addr, size)))
{
drd_trace_mem_access(addr, size, eStore);
}
- if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
+
+ if (running_thread_is_recording()
+ && (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_store_triggers_conflict(addr, addr + size)
&& ! drd_is_suppressed(addr, addr + size))
{
@@ -378,14 +372,13 @@
static VG_REGPARM(1) void drd_trace_store_1(Addr addr)
{
- if (! running_thread_is_recording())
- return;
-
- if (range_any_is_traced(addr, 1))
+ if (UNLIKELY(range_any_is_traced(addr, 1)))
{
drd_trace_mem_access(addr, 1, eStore);
}
- if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
+
+ if (running_thread_is_recording()
+ && (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_store_1_triggers_conflict(addr)
&& ! drd_is_suppressed(addr, addr + 1))
{
@@ -395,14 +388,13 @@
static VG_REGPARM(1) void drd_trace_store_2(Addr addr)
{
- if (! running_thread_is_recording())
- return;
-
- if (range_any_is_traced(addr, 2))
+ if (UNLIKELY(range_any_is_traced(addr, 2)))
{
drd_trace_mem_access(addr, 2, eStore);
}
- if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
+
+ if (running_thread_is_recording()
+ && (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_store_2_triggers_conflict(addr)
&& ! drd_is_suppressed(addr, addr + 2))
{
@@ -412,14 +404,13 @@
static VG_REGPARM(1) void drd_trace_store_4(Addr addr)
{
- if (! running_thread_is_recording())
- return;
-
- if (range_any_is_traced(addr, 4))
+ if (UNLIKELY(range_any_is_traced(addr, 4)))
{
drd_trace_mem_access(addr, 4, eStore);
}
- if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
+
+ if (running_thread_is_recording()
+ && (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_store_4_triggers_conflict(addr)
&& ! drd_is_suppressed(addr, addr + 4))
{
@@ -429,14 +420,13 @@
static VG_REGPARM(1) void drd_trace_store_8(Addr addr)
{
- if (! running_thread_is_recording())
- return;
-
- if (range_any_is_traced(addr, 8))
+ if (UNLIKELY(range_any_is_traced(addr, 8)))
{
drd_trace_mem_access(addr, 8, eStore);
}
- if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
+
+ if (running_thread_is_recording()
+ && (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_store_8_triggers_conflict(addr)
&& ! drd_is_suppressed(addr, addr + 8))
{
|
|
From: <sv...@va...> - 2008-06-09 15:08:36
|
Author: bart
Date: 2008-06-09 16:08:22 +0100 (Mon, 09 Jun 2008)
New Revision: 8207
Log:
Commented out assert statements because of performance reasons.
Modified:
trunk/exp-drd/drd_thread.h
Modified: trunk/exp-drd/drd_thread.h
===================================================================
--- trunk/exp-drd/drd_thread.h 2008-06-09 12:43:20 UTC (rev 8206)
+++ trunk/exp-drd/drd_thread.h 2008-06-09 15:08:22 UTC (rev 8207)
@@ -168,8 +168,10 @@
static __inline__
Bool running_thread_is_recording(void)
{
+#if 0
tl_assert(0 <= (int)s_drd_running_tid && s_drd_running_tid < DRD_N_THREADS
&& s_drd_running_tid != DRD_INVALID_THREADID);
+#endif
return (s_threadinfo[s_drd_running_tid].synchr_nesting == 0
&& s_threadinfo[s_drd_running_tid].is_recording);
}
@@ -207,9 +209,11 @@
static __inline__
Segment* thread_get_segment(const DrdThreadId tid)
{
+#if 0
tl_assert(0 <= (int)tid && tid < DRD_N_THREADS
&& tid != DRD_INVALID_THREADID);
tl_assert(s_threadinfo[tid].last);
+#endif
return s_threadinfo[tid].last;
}
|
|
From: <sv...@va...> - 2008-06-09 12:43:15
|
Author: bart Date: 2008-06-09 13:43:20 +0100 (Mon, 09 Jun 2008) New Revision: 8206 Log: Reran benchmark after latest optimizations. Modified: trunk/exp-drd/scripts/run-splash2 Modified: trunk/exp-drd/scripts/run-splash2 =================================================================== --- trunk/exp-drd/scripts/run-splash2 2008-06-08 14:44:41 UTC (rev 8205) +++ trunk/exp-drd/scripts/run-splash2 2008-06-09 12:43:20 UTC (rev 8206) @@ -59,20 +59,20 @@ fi ############################################################################## -# Results: (-p1) (-p2) (-p4) ITC (-p4) ITC (-p4) -# original w/ filter +# Results (-p4): native DRD DRD HG ITC ITC +# time w/ filter w/ filter # ............................................................................ -# Cholesky 40 47 82 239 82 -# FFT 16 17 47 90 41 -# LU, contiguous blocks 39 41 45 428 128 -# LU, non-contiguous blocks 39 41 49 428 128 -# Ocean, contiguous partitions 17 19 25 90 28 -# Ocean, non-continguous partns 18 21 30 90 28 -# Radiosity 78 78 78 485 163 -# Radix 10 12 15 222 56 -# Raytrace 56 56 56 172 53 -# Water-n2 34 34 34 189 39 -# Water-sp 33 33 33 183 34 +# Cholesky 0.29 115 80 47 239 82 +# FFT 0.19 80 46 556 90 41 +# LU, contiguous blocks 0.76 48 41 97 428 128 +# LU, non-contiguous blocks 0.85 48 42 59 428 128 +# Ocean, contiguous partitions 19.41 31 24 54 90 28 +# Ocean, non-continguous partns 0.29 26 29 53 90 28 +# Radiosity 3.11 240 76 58 485 163 +# Radix 4.05 16 15 65 222 56 +# Raytrace 2.21 272 57 89 172 53 +# Water-n2 0.17 174 35 53 189 39 +# Water-sp 0.18 144 35 51 183 34 # ............................................................................ # Hardware: dual-core Intel Xeon 5130, 2.0 GHz, 4 MB L2 cache, 4 GB RAM. # Software: Ubuntu 7.10 server, 64-bit, gcc 4.1.3. @@ -88,7 +88,7 @@ # Ocean, non-continguous partns 0.21 28 30 57 90 28 # Radiosity 2.35 259 75 60 485 163 # Radix 2.80 17 15 90 222 56 -# Raytrace 90.79 339 55 89 172 53 +# Raytrace (?) 90.79 339 55 89 172 53 # Water-n2 0.15 154 30 46 189 39 # Water-sp 0.15 146 30 46 183 34 # ............................................................................ |
|
From: Tom H. <th...@cy...> - 2008-06-09 02:59:55
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-06-09 03:20:09 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 437 tests, 7 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-06-09 02:49:22
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-06-09 03:05:04 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 431 tests, 5 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 431 tests, 4 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Jun 9 03:28:47 2008 --- new.short Mon Jun 9 03:49:28 2008 *************** *** 8,10 **** ! == 431 tests, 4 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 431 tests, 5 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 14,15 **** --- 14,16 ---- helgrind/tests/tc20_verifywrap (stderr) + helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-06-09 02:41:52
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-06-09 03:25:03 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 435 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-06-09 02:38:24
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-06-09 03:10:05 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 431 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-06-09 02:23:32
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-06-09 03:00:03 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 437 tests, 30 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |