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
(33) |
2
(15) |
3
(20) |
4
(22) |
5
(13) |
|
6
(12) |
7
(32) |
8
(17) |
9
(31) |
10
(21) |
11
(7) |
12
(13) |
|
13
(13) |
14
(12) |
15
(10) |
16
(8) |
17
(7) |
18
(28) |
19
(5) |
|
20
(5) |
21
(7) |
22
(11) |
23
(7) |
24
(13) |
25
(7) |
26
(7) |
|
27
(7) |
28
(15) |
29
(30) |
30
(21) |
31
(6) |
|
|
|
From: <sv...@va...> - 2008-07-13 19:16:01
|
Author: bart
Date: 2008-07-13 20:16:08 +0100 (Sun, 13 Jul 2008)
New Revision: 8433
Log:
Merged trunk revisions 8423:8431 to DRDDEV branch.
Modified:
branches/DRDDEV/drd/scripts/download-and-build-splash2.in
branches/DRDDEV/drd/scripts/run-splash2
Modified: branches/DRDDEV/drd/scripts/download-and-build-splash2.in
===================================================================
--- branches/DRDDEV/drd/scripts/download-and-build-splash2.in 2008-07-13 19:15:03 UTC (rev 8432)
+++ branches/DRDDEV/drd/scripts/download-and-build-splash2.in 2008-07-13 19:16:08 UTC (rev 8433)
@@ -85,7 +85,7 @@
-CC := gcc
+CC := @CC@
-CFLAGS := -O3 -pthread -D_POSIX_C_SOURCE=200112
-+CFLAGS := -g3 -O3 -pthread -D_POSIX_C_SOURCE=200112
++CFLAGS := -g3 -m32 -O3 -pthread -D_POSIX_C_SOURCE=200112
#CFLAGS := -g3 -pthread -D_POSIX_C_SOURCE=200112
CFLAGS := \$(CFLAGS) -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wdisabled-optimization
CFLAGS := \$(CFLAGS) -Wpadded -Winline -Wpointer-arith -Wsign-compare -Wendif-labels
@@ -100,6 +100,69 @@
M4 := m4 -s -Ulen -Uindex
x = *
+--- orig/splash2/codes/apps/radiosity/elemman.C 2008-07-13 20:24:35.000000000 +0200
++++ splash2/codes/apps/radiosity/elemman.C 2008-07-13 20:45:15.000000000 +0200
+@@ -24,6 +24,7 @@
+
+
+ #include <stdio.h>
++#include "drd.h"
+
+ EXTERN_ENV;
+
+@@ -707,6 +708,12 @@ void process_rays(Element *e, long proce
+ e->n_interactions = 0 ;
+ UNLOCK(e->elem_lock->lock);
+
++ {
++ Interaction* p;
++ for (p = i_list; p; p = p->next)
++ DRD_IGNORE_VAR(*p);
++ }
++
+ /* For each interaction, do BF-error-analysis */
+ bf_error_analysis_list( e, i_list, process_id ) ;
+
+--- orig/splash2/codes/apps/radiosity/rad_main.C 2008-07-13 20:24:35.000000000 +0200
++++ splash2/codes/apps/radiosity/rad_main.C 2008-07-13 20:50:01.000000000 +0200
+@@ -30,6 +30,7 @@
+ #include <panel.h>
+ #endif
+ #endif
++#include "drd.h"
+
+ /* ANL macro initialization */
+
+@@ -1084,6 +1085,18 @@ void init_global(long process_id)
+ /* Initialize statistical info */
+ init_stat_info(process_id) ;
+
++ {
++ int i;
++
++ DRD_IGNORE_VAR(global->pbar_count);
++ for (i = 0;
++ i < sizeof(global->task_queue) / sizeof(global->task_queue[0]);
++ i++)
++ {
++ DRD_IGNORE_VAR(global->task_queue[i].n_tasks);
++ }
++ DRD_IGNORE_VAR(global->element_buf);
++ }
+ }
+
+
+--- orig/splash2/codes/apps/radiosity/Makefile 2008-07-13 20:24:35.000000000 +0200
++++ splash2/codes/apps/radiosity/Makefile 2008-07-13 20:09:27.000000000 +0200
+@@ -6,7 +6,7 @@ HS = model.h parallel.h patch.h radiosit
+
+ include ../../Makefile.config
+
+-CFLAGS := \$(CFLAGS) -I./glibdumb -I./glibps
++CFLAGS := \$(CFLAGS) -I./glibdumb -I./glibps -I../../../../../drd -I../../../../../include
+
+ #CCOPTS = -I -float -I/usr/include \$(CFLAGS)
+ #LDFLAGS = -lm -lpthread
EOF
for m in $(find codes -name Makefile)
Modified: branches/DRDDEV/drd/scripts/run-splash2
===================================================================
--- branches/DRDDEV/drd/scripts/run-splash2 2008-07-13 19:15:03 UTC (rev 8432)
+++ branches/DRDDEV/drd/scripts/run-splash2 2008-07-13 19:16:08 UTC (rev 8433)
@@ -191,10 +191,8 @@
run_test ${SPLASH2}/codes/apps/ocean/contiguous_partitions/OCEAN -n258
#run_test ${SPLASH2}/codes/apps/ocean/non_contiguous_partitions/OCEAN -n258
-# Radiosity. Disabled this benchmark because it deadlocks.
-if false; then
+# Radiosity.
psep=' ' run_test ${SPLASH2}/codes/apps/radiosity/RADIOSITY -batch -room -ae 5000.0 -en 0.050 -bf 0.10
-fi
# Radix
run_test ${SPLASH2}/codes/kernels/radix/RADIX -n$((2**20)) -r1024
|
|
From: <sv...@va...> - 2008-07-13 19:14:59
|
Author: bart Date: 2008-07-13 20:15:03 +0100 (Sun, 13 Jul 2008) New Revision: 8432 Log: Updated notes. Modified: branches/DRDDEV/drd/scripts/run-splash2 Modified: branches/DRDDEV/drd/scripts/run-splash2 =================================================================== --- branches/DRDDEV/drd/scripts/run-splash2 2008-07-13 19:08:44 UTC (rev 8431) +++ branches/DRDDEV/drd/scripts/run-splash2 2008-07-13 19:15:03 UTC (rev 8432) @@ -126,7 +126,7 @@ # - Not yet clear to me: whether or not Helgrind detects races on stack # variables. # - The ITC tests have been run on a 4-way 2.5 GHz Pentium 4 workstation. -# (OS: probably 32-bit Windows ?) +# Not yet clear to me: 32-bit or 64-bit OS ? Which OS ? ITC granularity ? # #################################################################################################################################### # Results: native native native none none DRD DRD HG HG-hb ITC ITC |
|
From: <sv...@va...> - 2008-07-13 19:08:37
|
Author: bart
Date: 2008-07-13 20:08:44 +0100 (Sun, 13 Jul 2008)
New Revision: 8431
Log:
Added -m32 flag, such that the SPLASH-2 benchmarks are compiled in 32-bit mode (these benchmarks were not designed to be compiled in 64-bit mode -- radiosity deadlocks when compiled in 64-bit mode). Suppressed harmless data races in the radiosity benchmark.
Modified:
trunk/drd/scripts/download-and-build-splash2.in
Modified: trunk/drd/scripts/download-and-build-splash2.in
===================================================================
--- trunk/drd/scripts/download-and-build-splash2.in 2008-07-13 19:06:44 UTC (rev 8430)
+++ trunk/drd/scripts/download-and-build-splash2.in 2008-07-13 19:08:44 UTC (rev 8431)
@@ -85,7 +85,7 @@
-CC := gcc
+CC := @CC@
-CFLAGS := -O3 -pthread -D_POSIX_C_SOURCE=200112
-+CFLAGS := -g3 -O3 -pthread -D_POSIX_C_SOURCE=200112
++CFLAGS := -g3 -m32 -O3 -pthread -D_POSIX_C_SOURCE=200112
#CFLAGS := -g3 -pthread -D_POSIX_C_SOURCE=200112
CFLAGS := \$(CFLAGS) -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wdisabled-optimization
CFLAGS := \$(CFLAGS) -Wpadded -Winline -Wpointer-arith -Wsign-compare -Wendif-labels
@@ -100,6 +100,69 @@
M4 := m4 -s -Ulen -Uindex
x = *
+--- orig/splash2/codes/apps/radiosity/elemman.C 2008-07-13 20:24:35.000000000 +0200
++++ splash2/codes/apps/radiosity/elemman.C 2008-07-13 20:45:15.000000000 +0200
+@@ -24,6 +24,7 @@
+
+
+ #include <stdio.h>
++#include "drd.h"
+
+ EXTERN_ENV;
+
+@@ -707,6 +708,12 @@ void process_rays(Element *e, long proce
+ e->n_interactions = 0 ;
+ UNLOCK(e->elem_lock->lock);
+
++ {
++ Interaction* p;
++ for (p = i_list; p; p = p->next)
++ DRD_IGNORE_VAR(*p);
++ }
++
+ /* For each interaction, do BF-error-analysis */
+ bf_error_analysis_list( e, i_list, process_id ) ;
+
+--- orig/splash2/codes/apps/radiosity/rad_main.C 2008-07-13 20:24:35.000000000 +0200
++++ splash2/codes/apps/radiosity/rad_main.C 2008-07-13 20:50:01.000000000 +0200
+@@ -30,6 +30,7 @@
+ #include <panel.h>
+ #endif
+ #endif
++#include "drd.h"
+
+ /* ANL macro initialization */
+
+@@ -1084,6 +1085,18 @@ void init_global(long process_id)
+ /* Initialize statistical info */
+ init_stat_info(process_id) ;
+
++ {
++ int i;
++
++ DRD_IGNORE_VAR(global->pbar_count);
++ for (i = 0;
++ i < sizeof(global->task_queue) / sizeof(global->task_queue[0]);
++ i++)
++ {
++ DRD_IGNORE_VAR(global->task_queue[i].n_tasks);
++ }
++ DRD_IGNORE_VAR(global->element_buf);
++ }
+ }
+
+
+--- orig/splash2/codes/apps/radiosity/Makefile 2008-07-13 20:24:35.000000000 +0200
++++ splash2/codes/apps/radiosity/Makefile 2008-07-13 20:09:27.000000000 +0200
+@@ -6,7 +6,7 @@ HS = model.h parallel.h patch.h radiosit
+
+ include ../../Makefile.config
+
+-CFLAGS := \$(CFLAGS) -I./glibdumb -I./glibps
++CFLAGS := \$(CFLAGS) -I./glibdumb -I./glibps -I../../../../../drd -I../../../../../include
+
+ #CCOPTS = -I -float -I/usr/include \$(CFLAGS)
+ #LDFLAGS = -lm -lpthread
EOF
for m in $(find codes -name Makefile)
|
|
From: <sv...@va...> - 2008-07-13 19:06:40
|
Author: bart
Date: 2008-07-13 20:06:44 +0100 (Sun, 13 Jul 2008)
New Revision: 8430
Log:
Enabled Radiosity benchmark.
Modified:
trunk/drd/scripts/run-splash2
Modified: trunk/drd/scripts/run-splash2
===================================================================
--- trunk/drd/scripts/run-splash2 2008-07-13 10:39:41 UTC (rev 8429)
+++ trunk/drd/scripts/run-splash2 2008-07-13 19:06:44 UTC (rev 8430)
@@ -210,10 +210,8 @@
run_test ${SPLASH2}/codes/apps/ocean/contiguous_partitions/OCEAN -n258
#run_test ${SPLASH2}/codes/apps/ocean/non_contiguous_partitions/OCEAN -n258
-# Radiosity. Disabled this benchmark because it deadlocks.
-if false; then
+# Radiosity.
psep=' ' run_test ${SPLASH2}/codes/apps/radiosity/RADIOSITY -batch -room -ae 5000.0 -en 0.050 -bf 0.10
-fi
# Radix
run_test ${SPLASH2}/codes/kernels/radix/RADIX -n$((2**20)) -r1024
|
|
From: <sv...@va...> - 2008-07-13 10:39:33
|
Author: bart
Date: 2008-07-13 11:39:41 +0100 (Sun, 13 Jul 2008)
New Revision: 8429
Log:
Switched from full to lazy evaluation of conflict set.
Modified:
branches/DRDDEV/drd/drd_bitmap.c
branches/DRDDEV/drd/drd_bitmap.h
branches/DRDDEV/drd/drd_thread.c
branches/DRDDEV/drd/pub_drd_bitmap.h
branches/DRDDEV/drd/scripts/run-splash2
Modified: branches/DRDDEV/drd/drd_bitmap.c
===================================================================
--- branches/DRDDEV/drd/drd_bitmap.c 2008-07-13 07:52:10 UTC (rev 8428)
+++ branches/DRDDEV/drd/drd_bitmap.c 2008-07-13 10:39:41 UTC (rev 8429)
@@ -41,12 +41,6 @@
struct bitmap2;
-/* Local function declarations. */
-
-static void bm2_merge(struct bitmap2* const bm2l,
- const struct bitmap2* const bm2r);
-
-
/* Local constants. */
static ULong s_bitmap_creation_count;
@@ -76,9 +70,10 @@
bm = VG_(malloc)(sizeof(*bm));
tl_assert(bm);
- /* Cache initialization. a1 is initialized with a value that never can */
- /* match any valid address: the upper ADDR0_BITS bits of a1 are always */
- /* zero for a valid cache entry. */
+ /* Cache initialization. a1 is initialized with a value that never can
+ * match any valid address: the upper (ADDR_LSB_BITS + ADDR_IGNORED_BITS)
+ * bits of a1 are always zero for a valid cache entry.
+ */
for (i = 0; i < N_CACHE_ELEM; i++)
{
bm->cache[i].a1 = ~(UWord)1;
@@ -120,6 +115,11 @@
/**
* Record an access of type access_type at addresses a .. a + size - 1 in
* bitmap bm.
+ *
+ * @note The current implementation of bm_access_range does not work for the
+ * highest addresses in the address range. At least on Linux this is
+ * not a problem since the upper part of the address space is reserved
+ * for the kernel.
*/
void bm_access_range(struct bitmap* const bm,
const Addr a1, const Addr a2,
@@ -129,10 +129,6 @@
tl_assert(bm);
tl_assert(a1 < a2);
- /* The current implementation of bm_access_range does not work for the */
- /* ADDR0_COUNT highest addresses in the address range. At least on Linux */
- /* this is not a problem since the upper part of the address space is */
- /* reserved for the kernel. */
tl_assert(a2 < first_address_with_higher_msb(a2));
for (b = a1; b < a2; b = b_next)
@@ -891,31 +887,36 @@
void bm_print(struct bitmap* const bm)
{
- struct bitmap2* bm2;
struct bitmap2ref* bm2ref;
- VG_(OSetGen_ResetIter)(bm->oset);
+ for (VG_(OSetGen_ResetIter)(bm->oset);
+ (bm2ref = VG_(OSetGen_Next)(bm->oset)) != 0;
+ )
+ {
+ bm2_print(bm2ref->bm2);
+ }
+}
- for ( ; (bm2ref = VG_(OSetGen_Next)(bm->oset)) != 0; )
+void bm2_print(const struct bitmap2* const bm2)
+{
+ const struct bitmap1* bm1;
+ Addr a;
+
+ tl_assert(bm2);
+
+ bm1 = &bm2->bm1;
+ for (a = make_address(bm2->addr, 0);
+ a <= first_address_with_higher_msb(make_address(bm2->addr, 0)) - 1;
+ a++)
{
- const struct bitmap1* bm1;
- Addr a;
-
- bm2 = bm2ref->bm2;
- bm1 = &bm2->bm1;
- for (a = make_address(bm2->addr, 0);
- a <= first_address_with_higher_msb(make_address(bm2->addr, 0)) - 1;
- a++)
+ const Bool r = bm0_is_set(bm1->bm0_r, address_lsb(a)) != 0;
+ const Bool w = bm0_is_set(bm1->bm0_w, address_lsb(a)) != 0;
+ if (r || w)
{
- const Bool r = bm0_is_set(bm1->bm0_r, address_lsb(a)) != 0;
- const Bool w = bm0_is_set(bm1->bm0_w, address_lsb(a)) != 0;
- if (r || w)
- {
- VG_(printf)("0x%08lx %c %c\n",
- a,
- w ? 'W' : ' ',
- r ? 'R' : ' ');
- }
+ VG_(printf)("0x%08lx %c %c\n",
+ a,
+ w ? 'W' : ' ',
+ r ? 'R' : ' ');
}
}
}
@@ -935,8 +936,13 @@
return s_bitmap2_creation_count;
}
-/** Allocate and initialize a second level bitmap. */
-static struct bitmap2* bm2_new(const UWord a1)
+/** Allocate a second level bitmap.
+ *
+ * @param a1 address_msb(client address).
+ *
+ * @note This function does not initialize the bitmap itself !!
+ */
+struct bitmap2* bm2_new(const UWord a1)
{
struct bitmap2* bm2;
@@ -949,11 +955,18 @@
return bm2;
}
+/** Clear the bitmap contents. */
+void bm2_clear(struct bitmap2* const bm2)
+{
+ tl_assert(bm2);
+ VG_(memset)(&bm2->bm1, 0, sizeof(bm2->bm1));
+}
+
/** Make a copy of a shared second level bitmap such that the copy can be
* modified.
*
- * @param a1 client address shifted right by ADDR0_BITS.
- * @param bm bitmap pointer.
+ * @param bm bitmap pointer.
+ * @param bm2ref pointer to pointer to the second level bitmap.
*/
static
struct bitmap2* bm2_make_exclusive(struct bitmap* const bm,
@@ -983,8 +996,8 @@
return bm2_copy;
}
-static void bm2_merge(struct bitmap2* const bm2l,
- const struct bitmap2* const bm2r)
+/** Compute *bm2l |= *bm2r. */
+void bm2_merge(struct bitmap2* const bm2l, const struct bitmap2* const bm2r)
{
unsigned k;
Modified: branches/DRDDEV/drd/drd_bitmap.h
===================================================================
--- branches/DRDDEV/drd/drd_bitmap.h 2008-07-13 07:52:10 UTC (rev 8428)
+++ branches/DRDDEV/drd/drd_bitmap.h 2008-07-13 10:39:41 UTC (rev 8429)
@@ -309,7 +309,6 @@
};
-static struct bitmap2* bm2_new(const UWord a1);
static struct bitmap2* bm2_make_exclusive(struct bitmap* const bm,
struct bitmap2ref* const bm2ref);
static __inline__
@@ -495,6 +494,8 @@
bm2 = (*bm->compute_bitmap2)(a1);
if (bm2)
{
+ tl_assert(bm2->refcnt == 1);
+ bm2->refcnt--;
return bm2_insert_addref(bm, bm2);
}
else
@@ -579,8 +580,8 @@
bm2ref = VG_(OSetGen_AllocNode)(bm->oset, sizeof(*bm2ref));
bm2ref->addr = a1;
bm2 = bm2_new(a1);
+ bm2_clear(bm2);
bm2ref->bm2 = bm2;
- VG_(memset)(&bm2->bm1, 0, sizeof(bm2->bm1));
VG_(OSetGen_Insert)(bm->oset, bm2ref);
bm_update_cache(bm, a1, bm2);
Modified: branches/DRDDEV/drd/drd_thread.c
===================================================================
--- branches/DRDDEV/drd/drd_thread.c 2008-07-13 07:52:10 UTC (rev 8428)
+++ branches/DRDDEV/drd/drd_thread.c 2008-07-13 10:39:41 UTC (rev 8429)
@@ -62,6 +62,7 @@
DrdThreadId s_drd_running_tid = DRD_INVALID_THREADID;
ThreadInfo s_threadinfo[DRD_N_THREADS];
struct bitmap* s_conflict_set;
+static DrdThreadId s_conflict_set_tid = DRD_INVALID_THREADID;
static Bool s_trace_context_switches = False;
static Bool s_trace_conflict_set = False;
static Bool s_segment_merging = True;
@@ -895,15 +896,104 @@
}
}
+#define LAZY_CONFLICT_SET_EVALUATION 1
+
static struct bitmap2* thread_compute_conflict_set_bitmap2(const UWord a1)
{
+ const DrdThreadId tid = s_conflict_set_tid;
+ struct bitmap2* result = 0;
+
if (s_trace_conflict_set)
{
VG_(message)(Vg_UserMsg,
- "thread_compute_conflict_set_bitmap2(a1 = %#lx)",
- a1);
+ "thread_compute_conflict_set_bitmap2("
+ "running tid %d, conflict set tid = %d, a1 = %#lx)",
+ thread_get_running_tid(), tid, a1);
}
- return 0;
+
+#if LAZY_CONFLICT_SET_EVALUATION == 1
+ s_conflict_set_bitmap2_creation_count -= bm_get_bitmap2_creation_count();
+
+ {
+ Segment* p;
+ p = s_threadinfo[tid].last;
+ {
+ unsigned j;
+
+ if (s_trace_conflict_set)
+ {
+ char msg[256];
+
+ VG_(snprintf)(msg, sizeof(msg),
+ "conflict set: thread [%d] at vc ",
+ tid);
+ vc_snprint(msg + VG_(strlen)(msg),
+ sizeof(msg) - VG_(strlen)(msg),
+ &p->vc);
+ VG_(message)(Vg_UserMsg, "%s", msg);
+ }
+
+ for (j = 0; j < sizeof(s_threadinfo) / sizeof(s_threadinfo[0]); j++)
+ {
+ if (j != tid && IsValidDrdThreadId(j))
+ {
+ const Segment* q;
+ for (q = s_threadinfo[j].last; q; q = q->prev)
+ {
+ const struct bitmap2* const q_bm2 = bm2_lookup(q->bm, a1);
+ if (q_bm2 && ! vc_lte(&q->vc, &p->vc) && ! vc_lte(&p->vc, &q->vc))
+ {
+ if (s_trace_conflict_set)
+ {
+ char msg[256];
+ VG_(snprintf)(msg, sizeof(msg),
+ "conflict set: [%d] merging segment ", j);
+ vc_snprint(msg + VG_(strlen)(msg),
+ sizeof(msg) - VG_(strlen)(msg),
+ &q->vc);
+ VG_(message)(Vg_UserMsg, "%s", msg);
+ }
+ if (result == 0)
+ {
+ result = bm2_new(q_bm2->addr);
+ bm2_clear(result);
+ }
+ bm2_merge(result, q_bm2);
+ }
+ else
+ {
+ if (s_trace_conflict_set)
+ {
+ char msg[256];
+ VG_(snprintf)(msg, sizeof(msg),
+ "conflict set: [%d] ignoring segment ", j);
+ vc_snprint(msg + VG_(strlen)(msg),
+ sizeof(msg) - VG_(strlen)(msg),
+ &q->vc);
+ VG_(message)(Vg_UserMsg, "%s", msg);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ s_conflict_set_bitmap2_creation_count += bm_get_bitmap2_creation_count();
+#endif
+
+ if (result)
+ {
+ if (s_trace_conflict_set)
+ {
+ VG_(message)(Vg_UserMsg,
+ "thread_compute_conflict_set_bitmap2(tid = %d, a1 = %#lx):",
+ tid, a1);
+ bm2_print(result);
+ }
+ }
+
+ return result;
}
/** Compute a bitmap that represents the union of all memory accesses of all
@@ -912,22 +1002,21 @@
static void thread_compute_conflict_set(struct bitmap** conflict_set,
const DrdThreadId tid)
{
- Segment* p;
-
tl_assert(0 <= (int)tid && tid < DRD_N_THREADS
&& tid != DRD_INVALID_THREADID);
tl_assert(tid == s_drd_running_tid);
s_update_conflict_set_count++;
s_conflict_set_bitmap_creation_count -= bm_get_bitmap_creation_count();
- s_conflict_set_bitmap2_creation_count -= bm_get_bitmap2_creation_count();
if (*conflict_set)
{
bm_delete(*conflict_set);
}
*conflict_set = bm_new_cb(thread_compute_conflict_set_bitmap2);
+ s_conflict_set_tid = tid;
+#if LAZY_CONFLICT_SET_EVALUATION == 0
if (s_trace_conflict_set)
{
char msg[256];
@@ -941,6 +1030,9 @@
VG_(message)(Vg_UserMsg, "%s", msg);
}
+ {
+ Segment* p;
+
p = s_threadinfo[tid].last;
{
unsigned j;
@@ -996,9 +1088,10 @@
}
}
}
+ }
+#endif
s_conflict_set_bitmap_creation_count += bm_get_bitmap_creation_count();
- s_conflict_set_bitmap2_creation_count += bm_get_bitmap2_creation_count();
if (0 && s_trace_conflict_set)
{
Modified: branches/DRDDEV/drd/pub_drd_bitmap.h
===================================================================
--- branches/DRDDEV/drd/pub_drd_bitmap.h 2008-07-13 07:52:10 UTC (rev 8428)
+++ branches/DRDDEV/drd/pub_drd_bitmap.h 2008-07-13 10:39:41 UTC (rev 8429)
@@ -55,6 +55,8 @@
// Function declarations.
+
+/* First level bitmaps. */
struct bitmap* bm_new(void);
struct bitmap* bm_new_cb(struct bitmap2* (*compute_bitmap2)(UWord));
void bm_delete(struct bitmap* const bm);
@@ -118,10 +120,14 @@
struct bitmap* const bm2);
void bm_print(struct bitmap* bm);
ULong bm_get_bitmap_creation_count(void);
+
+/* Second-level bitmaps. */
+struct bitmap2* bm2_new(const UWord a1);
+void bm2_clear(struct bitmap2* const bm2);
+void bm2_merge(struct bitmap2* const bm2l, const struct bitmap2* const bm2r);
+void bm2_print(const struct bitmap2* const bm2);
ULong bm_get_bitmap2_node_creation_count(void);
ULong bm_get_bitmap2_creation_count(void);
-void bm_test(void);
-
#endif /* __PUB_DRD_BITMAP_H */
Modified: branches/DRDDEV/drd/scripts/run-splash2
===================================================================
--- branches/DRDDEV/drd/scripts/run-splash2 2008-07-13 07:52:10 UTC (rev 8428)
+++ branches/DRDDEV/drd/scripts/run-splash2 2008-07-13 10:39:41 UTC (rev 8429)
@@ -120,7 +120,9 @@
# - Both Helgrind and DRD use a granularity of four bytes for data race
# detection.
# - Helgrind with --pure-happens-before=yes does not handle atomic variables
-# correctly. This causes real data races to be suppressed.
+# correctly. Furthermore, there is an artificial upper limit on the number
+# of segments (--max-segment-set-size=<n>). Both aspects will cause real
+# data races to be suppressed.
# - Not yet clear to me: whether or not Helgrind detects races on stack
# variables.
# - The ITC tests have been run on a 4-way 2.5 GHz Pentium 4 workstation.
@@ -130,16 +132,16 @@
# Results: native native native none none DRD DRD HG HG-hb ITC ITC
# -p1 -p2 -p4 -p1 -p4 -p4 -p4+f -p4 -p4 -p4 -p4+f
# ..................................................................................................................................
-# Cholesky 0.08 21760 0.05 31728 0.45 72027 10.8 3.62 5.6 1.49 18 1.64 15 1.69 10 2.76 19 3.49 239 82
-# FFT 0.02 13024 0.01 64931 0.01 81317 17.5 5.37 37.0 1.16 176 1.25 185 1.30 705 2.19 186 2.50 90 41
-# LU, contiguous 0.08 10440 0.06 18640 0.05 35048 10.1 6.45 15.6 2.63 79 2.78 86 2.90 188 4.83 149 5.63 428 128
-# Ocean, contiguous 0.20 23208 0.13 31744 0.13 48888 4.5 3.45 7.7 2.17 47 2.33 43 2.41 78 3.94 72 4.96 90 28
-# Radix 0.17 33760 0.10 41952 0.10 58488 7.3 2.68 12.7 1.98 23 2.17 32 2.24 150 3.64 31 4.12 222 56
-# Raytrace 0.49 352832 0.38 361024 0.39 399253 9.1 1.16 11.6 1.09 205 1.33 91 1.33 104 1.94 89 3.98 172 53
-# Water-n2 0.12 17104 0.07 33480 0.08 66240 11.3 4.38 18.0 1.88 1563 2.46 292 2.44 108 3.42 106 4.15 189 39
-# Water-sp 0.12 10784 0.06 62560 0.06 122645 11.1 6.28 23.0 0.75 212 0.83 80 0.83 129 1.39 139 1.62 183 34
+# Cholesky 0.08 21760 0.05 31728 0.55 72027 10.6 3.62 3.8 1.49 14 1.64 12 1.70 8 2.76 15 3.49 239 82
+# FFT 0.02 13024 0.01 86784 0.01 103168 17.0 5.37 36.0 0.92 175 0.98 185 1.02 701 1.70 182 1.97 90 41
+# LU, contiguous 0.08 10440 0.06 18640 0.05 35048 9.5 6.45 15.4 2.63 79 2.78 89 2.90 187 4.83 149 5.63 428 128
+# Ocean, contiguous 0.20 23208 0.17 31744 0.13 48888 4.5 3.45 7.6 2.17 46 2.33 42 2.41 77 3.94 71 4.96 90 28
+# Radix 0.18 33760 0.10 41952 0.09 58488 6.8 2.68 14.0 1.98 26 2.17 36 2.24 170 3.64 34 4.12 222 56
+# Raytrace 0.50 352832 0.37 382869 0.37 442944 9.1 1.16 12.2 0.98 234 1.20 111 1.20 109 1.75 93 4.02 172 53
+# Water-n2 0.13 17104 0.08 33480 0.08 66240 10.7 4.38 17.8 1.88 1496 2.46 176 2.44 107 3.42 105 4.15 189 39
+# Water-sp 0.12 10784 0.06 84352 0.06 144491 11.1 6.28 23.0 0.64 203 0.70 81 0.70 129 1.18 138 1.37 183 34
# ..................................................................................................................................
-# geometric mean 0.12 24965 0.07 49937 0.09 81274 9.6 3.72 14.1 1.53 108 1.72 72 1.76 111 2.81 79 3.58 180 51
+# geometric mean 0.12 24965 0.07 54148 0.09 86579 9.3 3.72 13.5 1.44 106 1.62 68 1.65 109 2.63 78 3.41 180 51
# ..................................................................................................................................
# Hardware: dual-core Intel Core2 Duo E6750, 2.66 GHz, 4 MB L2 cache, 2 GB RAM.
# Software: openSUSE 11.0, 64-bit, gcc 4.3.1, runlevel 3.
|
|
From: <sv...@va...> - 2008-07-13 07:52:05
|
Author: bart
Date: 2008-07-13 08:52:10 +0100 (Sun, 13 Jul 2008)
New Revision: 8428
Log:
Added support for computed bitmaps.
Modified:
branches/DRDDEV/drd/drd_bitmap.c
branches/DRDDEV/drd/drd_bitmap.h
branches/DRDDEV/drd/drd_thread.c
branches/DRDDEV/drd/pub_drd_bitmap.h
Modified: branches/DRDDEV/drd/drd_bitmap.c
===================================================================
--- branches/DRDDEV/drd/drd_bitmap.c 2008-07-13 07:51:30 UTC (rev 8427)
+++ branches/DRDDEV/drd/drd_bitmap.c 2008-07-13 07:52:10 UTC (rev 8428)
@@ -54,8 +54,19 @@
/* Function definitions. */
-struct bitmap* bm_new()
+/** Allocate and initialize a new bitmap structure. */
+struct bitmap* bm_new(void)
{
+ return bm_new_cb(0);
+}
+
+/** Allocate and initialize a new bitmap structure.
+ *
+ * @param compute_bitmap2 Callback function for computing the actual bitmap
+ * data.
+ */
+struct bitmap* bm_new_cb(struct bitmap2* (*compute_bitmap2)(UWord))
+{
unsigned i;
struct bitmap* bm;
@@ -74,6 +85,7 @@
bm->cache[i].bm2 = 0;
}
bm->oset = VG_(OSetGen_Create)(0, 0, VG_(malloc), VG_(free));
+ bm->compute_bitmap2 = compute_bitmap2;
s_bitmap_creation_count++;
@@ -91,10 +103,13 @@
for ( ; (bm2ref = VG_(OSetGen_Next)(bm->oset)) != 0; )
{
bm2 = bm2ref->bm2;
- tl_assert(bm2->refcnt >= 1);
- if (--bm2->refcnt == 0)
+ if (bm2)
{
- VG_(free)(bm2);
+ tl_assert(bm2->refcnt >= 1);
+ if (--bm2->refcnt == 0)
+ {
+ VG_(free)(bm2);
+ }
}
}
Modified: branches/DRDDEV/drd/drd_bitmap.h
===================================================================
--- branches/DRDDEV/drd/drd_bitmap.h 2008-07-13 07:51:30 UTC (rev 8427)
+++ branches/DRDDEV/drd/drd_bitmap.h 2008-07-13 07:52:10 UTC (rev 8428)
@@ -305,13 +305,20 @@
{
struct bm_cache_elem cache[N_CACHE_ELEM];
OSet* oset;
+ struct bitmap2* (*compute_bitmap2)(const UWord a1);
};
static struct bitmap2* bm2_new(const UWord a1);
static struct bitmap2* bm2_make_exclusive(struct bitmap* const bm,
struct bitmap2ref* const bm2ref);
+static __inline__
+void bm2_insert_empty(struct bitmap* const bm, const UWord a1);
+static __inline__
+struct bitmap2* bm2_insert_addref(struct bitmap* const bm,
+ struct bitmap2* const bm2);
+
/** 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.
*/
@@ -473,6 +480,7 @@
#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
tl_assert(bm);
#endif
+
if (! bm_cache_lookup(bm, a1, &bm2))
{
bm2ref = VG_(OSetGen_Lookup)(bm->oset, &a1);
@@ -480,7 +488,22 @@
{
bm2 = bm2ref->bm2;
}
- bm_update_cache(*(struct bitmap**)&bm, a1, bm2);
+ else if (bm->compute_bitmap2)
+ {
+ /* Compute the second-level bitmap, and insert the pointer to the
+ * computed bitmap. Note: this pointer may be NULL. */
+ bm2 = (*bm->compute_bitmap2)(a1);
+ if (bm2)
+ {
+ return bm2_insert_addref(bm, bm2);
+ }
+ else
+ {
+ bm2_insert_empty(bm, a1);
+ return NULL;
+ }
+ }
+ bm_update_cache(bm, a1, bm2);
}
return bm2;
}
@@ -498,6 +521,11 @@
struct bitmap2ref* bm2ref;
struct bitmap2* bm2;
+#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
+ tl_assert(bm);
+ tl_assert(bm->compute_bitmap2 == 0);
+#endif
+
bm2ref = 0;
if (bm_cache_lookup(bm, a1, &bm2))
{
@@ -525,17 +553,17 @@
#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
tl_assert(bm2ref);
#endif
- bm2 = bm2_make_exclusive(*(struct bitmap**)&bm, bm2ref);
+ bm2 = bm2_make_exclusive(bm, bm2ref);
}
return bm2;
}
-/** Look up the address a1 in bitmap bm. The returned second level bitmap has
- * reference count one and hence may be modified.
+/** Insert a new node in bitmap bm for the address a1. The returned second
+ * level bitmap has reference count one and hence may be modified.
*
+ * @param bm bitmap pointer.
* @param a1 client address shifted right by ADDR_LSB_BITS.
- * @param bm bitmap pointer.
*/
static __inline__
struct bitmap2* bm2_insert(struct bitmap* const bm, const UWord a1)
@@ -543,6 +571,10 @@
struct bitmap2ref* bm2ref;
struct bitmap2* bm2;
+#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
+ tl_assert(bm);
+#endif
+
s_bitmap2_node_creation_count++;
bm2ref = VG_(OSetGen_AllocNode)(bm->oset, sizeof(*bm2ref));
bm2ref->addr = a1;
@@ -551,13 +583,16 @@
VG_(memset)(&bm2->bm1, 0, sizeof(bm2->bm1));
VG_(OSetGen_Insert)(bm->oset, bm2ref);
- bm_update_cache(*(struct bitmap**)&bm, a1, bm2);
+ bm_update_cache(bm, a1, bm2);
return bm2;
}
/** Insert a new node in bitmap bm that points to the second level bitmap
* *bm2. This means that *bm2 becomes shared over two or more bitmaps.
+ *
+ * @param bm bitmap pointer.
+ * @param bm2 Second-level bitmap pointer. May be NULL.
*/
static __inline__
struct bitmap2* bm2_insert_addref(struct bitmap* const bm,
@@ -567,6 +602,7 @@
#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
tl_assert(bm);
+ tl_assert(bm2);
tl_assert(VG_(OSetGen_Lookup)(bm->oset, &bm2->addr) == 0);
#endif
@@ -577,11 +613,35 @@
bm2->refcnt++;
VG_(OSetGen_Insert)(bm->oset, bm2ref);
- bm_update_cache(*(struct bitmap**)&bm, bm2->addr, bm2);
+ bm_update_cache(bm, bm2->addr, bm2);
return bm2;
}
+/** Insert an empty node in bitmap bm.
+ *
+ * @param bm bitmap pointer.
+ * @param a1 client address shifted right by ADDR_LSB_BITS.
+ */
+static __inline__
+void bm2_insert_empty(struct bitmap* const bm, const UWord a1)
+{
+ struct bitmap2ref* bm2ref;
+
+#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
+ tl_assert(bm);
+ tl_assert(VG_(OSetGen_Lookup)(bm->oset, &a1) == 0);
+#endif
+
+ s_bitmap2_node_creation_count++;
+ bm2ref = VG_(OSetGen_AllocNode)(bm->oset, sizeof(*bm2ref));
+ bm2ref->addr = a1;
+ bm2ref->bm2 = NULL;
+ VG_(OSetGen_Insert)(bm->oset, bm2ref);
+
+ bm_update_cache(bm, a1, NULL);
+}
+
/** Look up the address a1 in bitmap bm, and insert it if not found.
* The returned second level bitmap may not be modified.
*
@@ -596,7 +656,9 @@
#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
tl_assert(bm);
+ tl_assert(bm->compute_bitmap2 == 0);
#endif
+
if (bm_cache_lookup(bm, a1, &bm2))
{
if (bm2 == 0)
@@ -615,7 +677,7 @@
{
bm2 = bm2_insert(bm, a1);
}
- bm_update_cache(*(struct bitmap**)&bm, a1, bm2);
+ bm_update_cache(bm, a1, bm2);
}
return bm2;
}
@@ -634,7 +696,9 @@
#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
tl_assert(bm);
+ tl_assert(bm->compute_bitmap2 == 0);
#endif
+
bm2 = (struct bitmap2*)bm2_lookup_or_insert(bm, a1);
#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
tl_assert(bm2);
@@ -654,6 +718,11 @@
{
struct bitmap2* bm2;
+#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
+ tl_assert(bm);
+ tl_assert(bm->compute_bitmap2 == 0);
+#endif
+
bm2 = bm2_lookup_or_insert_exclusive(bm, address_msb(a1));
bm0_set_range(bm2->bm1.bm0_r,
(a1 >> ADDR_IGNORED_BITS) & ADDR_LSB_MASK,
@@ -666,6 +735,11 @@
{
struct bitmap2* bm2;
+#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
+ tl_assert(bm);
+ tl_assert(bm->compute_bitmap2 == 0);
+#endif
+
bm2 = bm2_lookup_or_insert_exclusive(bm, address_msb(a1));
bm0_set_range(bm2->bm1.bm0_w,
(a1 >> ADDR_IGNORED_BITS) & ADDR_LSB_MASK,
@@ -674,34 +748,36 @@
static __inline__
Bool bm_aligned_load_has_conflict_with(struct bitmap* const bm,
- const Addr a1, const SizeT size)
+ const Addr a, const SizeT size)
{
const struct bitmap2* bm2;
- bm2 = bm2_lookup(bm, address_msb(a1));
+#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
+ tl_assert(bm);
+#endif
+ bm2 = bm2_lookup(bm, address_msb(a));
return (bm2
&& bm0_is_any_set(bm2->bm1.bm0_w,
- (a1 >> ADDR_IGNORED_BITS) & ADDR_LSB_MASK,
+ address_lsb(a),
SCALED_SIZE(size)));
}
static __inline__
Bool bm_aligned_store_has_conflict_with(struct bitmap* const bm,
- const Addr a1, const SizeT size)
+ const Addr a, const SizeT size)
{
const struct bitmap2* bm2;
- bm2 = bm2_lookup(bm, address_msb(a1));
+#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
+ tl_assert(bm);
+#endif
+ bm2 = bm2_lookup(bm, address_msb(a));
if (bm2)
{
- if (bm0_is_any_set(bm2->bm1.bm0_r,
- (a1 >> ADDR_IGNORED_BITS) & ADDR_LSB_MASK,
- SCALED_SIZE(size))
- | bm0_is_any_set(bm2->bm1.bm0_w,
- (a1 >> ADDR_IGNORED_BITS) & ADDR_LSB_MASK,
- SCALED_SIZE(size)))
+ if (bm0_is_any_set(bm2->bm1.bm0_r, address_lsb(a), SCALED_SIZE(size))
+ | bm0_is_any_set(bm2->bm1.bm0_w, address_lsb(a), SCALED_SIZE(size)))
{
return True;
}
Modified: branches/DRDDEV/drd/drd_thread.c
===================================================================
--- branches/DRDDEV/drd/drd_thread.c 2008-07-13 07:51:30 UTC (rev 8427)
+++ branches/DRDDEV/drd/drd_thread.c 2008-07-13 07:52:10 UTC (rev 8428)
@@ -895,6 +895,17 @@
}
}
+static struct bitmap2* thread_compute_conflict_set_bitmap2(const UWord a1)
+{
+ if (s_trace_conflict_set)
+ {
+ VG_(message)(Vg_UserMsg,
+ "thread_compute_conflict_set_bitmap2(a1 = %#lx)",
+ a1);
+ }
+ return 0;
+}
+
/** Compute a bitmap that represents the union of all memory accesses of all
* segments that are unordered to the current segment of the thread tid.
*/
@@ -915,7 +926,7 @@
{
bm_delete(*conflict_set);
}
- *conflict_set = bm_new();
+ *conflict_set = bm_new_cb(thread_compute_conflict_set_bitmap2);
if (s_trace_conflict_set)
{
Modified: branches/DRDDEV/drd/pub_drd_bitmap.h
===================================================================
--- branches/DRDDEV/drd/pub_drd_bitmap.h 2008-07-13 07:51:30 UTC (rev 8427)
+++ branches/DRDDEV/drd/pub_drd_bitmap.h 2008-07-13 07:52:10 UTC (rev 8428)
@@ -47,6 +47,7 @@
// Forward declarations.
struct bitmap;
+struct bitmap2;
// Datatype definitions.
@@ -55,6 +56,7 @@
// Function declarations.
struct bitmap* bm_new(void);
+struct bitmap* bm_new_cb(struct bitmap2* (*compute_bitmap2)(UWord));
void bm_delete(struct bitmap* const bm);
void bm_access_range(struct bitmap* const bm,
const Addr a1, const Addr a2,
|
|
From: <sv...@va...> - 2008-07-13 07:51:35
|
Author: bart Date: 2008-07-13 08:51:30 +0100 (Sun, 13 Jul 2008) New Revision: 8427 Log: Added more notes. Modified: branches/DRDDEV/drd/scripts/run-splash2 Modified: branches/DRDDEV/drd/scripts/run-splash2 =================================================================== --- branches/DRDDEV/drd/scripts/run-splash2 2008-07-12 17:59:09 UTC (rev 8426) +++ branches/DRDDEV/drd/scripts/run-splash2 2008-07-13 07:51:30 UTC (rev 8427) @@ -121,6 +121,10 @@ # detection. # - Helgrind with --pure-happens-before=yes does not handle atomic variables # correctly. This causes real data races to be suppressed. +# - Not yet clear to me: whether or not Helgrind detects races on stack +# variables. +# - The ITC tests have been run on a 4-way 2.5 GHz Pentium 4 workstation. +# (OS: probably 32-bit Windows ?) # #################################################################################################################################### # Results: native native native none none DRD DRD HG HG-hb ITC ITC @@ -134,6 +138,7 @@ # Raytrace 0.49 352832 0.38 361024 0.39 399253 9.1 1.16 11.6 1.09 205 1.33 91 1.33 104 1.94 89 3.98 172 53 # Water-n2 0.12 17104 0.07 33480 0.08 66240 11.3 4.38 18.0 1.88 1563 2.46 292 2.44 108 3.42 106 4.15 189 39 # Water-sp 0.12 10784 0.06 62560 0.06 122645 11.1 6.28 23.0 0.75 212 0.83 80 0.83 129 1.39 139 1.62 183 34 +# .................................................................................................................................. # geometric mean 0.12 24965 0.07 49937 0.09 81274 9.6 3.72 14.1 1.53 108 1.72 72 1.76 111 2.81 79 3.58 180 51 # .................................................................................................................................. # Hardware: dual-core Intel Core2 Duo E6750, 2.66 GHz, 4 MB L2 cache, 2 GB RAM. |
|
From: Tom H. <th...@cy...> - 2008-07-13 03:04:59
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-07-13 03:15:04 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 == 345 tests, 60 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin1-yes (stderr) memcheck/tests/origin4-many (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (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/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (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) helgrind/tests/tc24_nonzero_sem (stderr) |
|
From: Tom H. <th...@cy...> - 2008-07-13 02:55:13
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-07-13 03:20:06 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 == 443 tests, 8 stderr failures, 1 stdout failure, 2 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) massif/tests/new-cpp (post) massif/tests/overloaded-new (post) 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-07-13 02:42:55
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-07-13 03:05:04 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, 5 stderr failures, 2 stdout failures, 2 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) massif/tests/new-cpp (post) massif/tests/overloaded-new (post) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-07-13 02:42:07
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-07-13 03:25:06 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 == 441 tests, 8 stderr failures, 5 stdout failures, 2 post failures == memcheck/tests/file_locking (stderr) 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) massif/tests/new-cpp (post) massif/tests/overloaded-new (post) 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-07-13 02:24:08
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-07-13 03:00: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 == 443 tests, 33 stderr failures, 3 stdout failures, 2 post failures == memcheck/tests/file_locking (stderr) 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) massif/tests/new-cpp (post) massif/tests/overloaded-new (post) 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) drd/tests/atomic_var (stderr) drd/tests/pth_inconsistent_cond_wait (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 == 443 tests, 32 stderr failures, 3 stdout failures, 2 post failures == memcheck/tests/file_locking (stderr) 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) massif/tests/new-cpp (post) massif/tests/overloaded-new (post) 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) drd/tests/atomic_var (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Jul 13 03:12:23 2008 --- new.short Sun Jul 13 03:24:12 2008 *************** *** 8,10 **** ! == 443 tests, 32 stderr failures, 3 stdout failures, 2 post failures == memcheck/tests/file_locking (stderr) --- 8,10 ---- ! == 443 tests, 33 stderr failures, 3 stdout failures, 2 post failures == memcheck/tests/file_locking (stderr) *************** *** 46,47 **** --- 46,48 ---- drd/tests/atomic_var (stderr) + drd/tests/pth_inconsistent_cond_wait (stderr) |
|
From: Nicholas N. <nj...@cs...> - 2008-07-13 00:28:44
|
On Fri, 11 Jul 2008, Peter Siket wrote: > I would like to measure the real memory consumption of a program which > allocates memory with mmap calls. > Is it possible somehow to measure it with valgrind or could you suggest > any tool with which I could measure this? It's easy to modify one or more of the existing tools to do this. Eg. in Memcheck, memcheck/mc_main.c:mc_new_mem_startup() is called for each block that is initialised by the loader, and memcheck/mc_main.c:mc_new_mem_mmap() is called every time the program does an mmap() during the run. It should be easy to modify these to measure the mmap memory usage. If you want to track munmap as well, you'll need to change this line: VG_(track_die_mem_munmap) ( MC_(make_mem_noaccess) ); and register a different callback for that event. Nick |