 
 int bloom_filter_test(int argc, char* argv[])
 {
-    uint64 size = 1000000;
+    uint64 size = 4*1024*1024; // 4MB
     uint32 N    = 100000;
 
     for (int i = 0; i < argc; ++i)
     {
         if (strcmp( argv[i], "-size" ) == 0)
-            size = uint64( atoi( argv[++i] ) ) * 1000u;
+            size = uint64( atoi( argv[++i] ) ) * uint64( 8*1024u*1024u );
         else if (strcmp( argv[i], "-queries" ) == 0)
             N = atoi( argv[++i] )*1000;
     }
 
     try
     {
-        log_info(stderr, "bloom filter test... started\n");
+        log_info(stderr, "bloom filter test... started (%.1f MB)\n", float(size) / float(8*1024*1024));
 
         // set the number of OpenMP threads
         omp_set_num_threads( omp_get_num_procs() );

    typedef uint64 argument_type;
    typedef uint8  return_type;

    bloom_filter_lookup(const uint64 _size, const uint32* _words) : filter( FILTER_K, _size * 32, (const uint4*)_words ) {}

    NVBIO_FORCEINLINE NVBIO_HOST_DEVICE
    uint8 operator() (const uint64 i) const

    typedef uint64 argument_type;
    typedef uint8  return_type;

    bloom_filter_inserter(const uint64 _size, uint32* _words) : filter( FILTER_K, _size, (uint64_2*)_words ) {}

    NVBIO_FORCEINLINE NVBIO_HOST_DEVICE
    void operator() (const uint64 i)
