Пример #1
0
 def test_readwrite_overflow(self, qty=1000):
     a = Hardlocation()
     b = Bitstring()
     for i in range(qty):
         a.write(b)
     c = a.read()
     self.assertEqual(b.distance_to(c), 0)
Пример #2
0
 def test_readwrite_overflow(self, qty=1000):
     a = Hardlocation()
     b = Bitstring()
     for i in range(qty):
         a.write(b)
     c = a.read()
     self.assertEqual(b.distance_to(c), 0)
Пример #3
0
 def test_average_same(self, qty=1000):
     for i in range(qty):
         a = Bitstring()
         b = a.copy()
         c = Bitstring.average(a, b)
         self.assertEqual(c.distance_to(a), 0)
         self.assertEqual(c.distance_to(b), 0)
Пример #4
0
 def test_writeread(self, qty=10):
     #sdm.initialize()
     for i in range(qty):
         a = Bitstring()
         sdm.write(a, a)
         b = sdm.read(a)
         self.assertEqual(a.distance_to(b), 0)
Пример #5
0
 def test_writeread(self, qty=10):
     sdm.initialize()
     for i in range(qty):
         a = Bitstring()
         sdm.thread_write(a, a)
         b = sdm.thread_read(a)
         self.assertEqual(a.distance_to(b), 0)
     sdm.free()
Пример #6
0
 def test_write_adder(self, qty=1000):
     for i in range(qty):
         a = Hardlocation()
         b = Bitstring()
         a.write(b)
         self.assertEqual([ b.bitsign(i) for i in xrange(sdm.get_dimension()) ], a.adder)
         a.write(b)
         self.assertEqual([ 2*b.bitsign(i) for i in xrange(sdm.get_dimension()) ], a.adder)
Пример #7
0
 def test_random_swap(self, qty=1000):
     for i in range(qty):
         a = Bitstring()
         b = a.copy()
         self.assertEqual(a.distance_to(b), 0)
         dist = random.randint(0, sdm.get_dimension())
         b.bitrandomswap(dist)
         self.assertEqual(a.distance_to(b), dist)
Пример #8
0
 def test_write_adder(self, qty=1000):
     for i in range(qty):
         a = Hardlocation()
         b = Bitstring()
         a.write(b)
         self.assertEqual([ b.bitsign(i) for i in xrange(sdm.get_dimension()) ], a.adder)
         a.write(b)
         self.assertEqual([ 2*b.bitsign(i) for i in xrange(sdm.get_dimension()) ], a.adder)
Пример #9
0
 def test_radius_count_intersect(self, qty=10):
     sdm.initialize()
     for i in range(qty):
         a = Bitstring()
         b = Bitstring()
         cnt1 = sdm.thread_radius_count_intersect(a, b)
         cnt2 = sdm.thread_radius_count_intersect(a, b)
         self.assertEqual(cnt1, cnt2)
     sdm.free()
Пример #10
0
 def test_writereadnear(self, distance=50, qty=10):
     #sdm.initialize()
     for i in range(qty):
         a = Bitstring()
         sdm.write(a, a)
         b = a.copy()
         b.bitrandomswap(distance)
         c = sdm.read(b)
         self.assertEqual(a.distance_to(c), 0)
Пример #11
0
    def test_bitset(self):
        dim = sdm.get_dimension()
        a = Bitstring(zero=True)
        for i in range(dim):
            a.bitset(i)

            s = str(a)
            s1 = sum([ 1 for x in s[:dim-i-1] if x == '0' ])
            s2 = sum([ 1 for x in s[-i-1:] if x == '1' ])
            self.assertEqual(s1+s2, dim)
Пример #12
0
def test_uniform_distribution(qty=10000):
    n = sdm.get_dimension()
    v = [0]*n
    for i in xrange(qty):
        a = Bitstring()
        for j in range(n):
            v[j] += a.bitsign(j)
    import pylab
    pylab.hist(v, bins=15)
    return v
Пример #13
0
def test_uniform_distribution(qty=10000):
    n = sdm.get_dimension()
    v = [0] * n
    for i in xrange(qty):
        a = Bitstring()
        for j in range(n):
            v[j] += a.bitsign(j)
    import pylab
    pylab.hist(v, bins=15)
    return v
Пример #14
0
 def test_writereadnear(self, distance=50, qty=10):
     sdm.initialize()
     for i in range(qty):
         a = Bitstring()
         sdm.thread_write(a, a)
         b = a.copy()
         b.bitrandomswap(distance)
         c = sdm.thread_read(b)
         self.assertEqual(a.distance_to(c), 0)
     sdm.free()
Пример #15
0
def table_7_1():
    n = sdm.get_dimension()
    a = Bitstring()
    v = []
    for i in range(550):
        b = a.copy()
        b.bitrandomswap(i)
        v.append([i, sdm.thread_radius_count_intersect(a, b)])
        print i
        sys.stdout.flush()
    return v
Пример #16
0
def table_7_1():
    n = sdm.get_dimension()
    a = Bitstring()
    v = []
    for i in range(550):
        b = a.copy()
        b.bitrandomswap(i)
        v.append([ i, sdm.thread_radius_count_intersect(a, b) ])
        print i
        sys.stdout.flush()
    return v
Пример #17
0
    def test_bitstring_xor(self):
        bs1 = Bitstring.init_random(1000)

        bs2 = Bitstring.init_ones(1000)
        bs3 = bs1.copy()
        bs3.xor(bs2)
        self.assertEqual(1000, bs1.distance_to(bs3))

        bs2 = Bitstring.init_zeros(1000)
        bs3 = bs1.copy()
        bs3.xor(bs2)
        self.assertEqual(0, bs1.distance_to(bs3))
Пример #18
0
 def test_saveload(self):
     a = Bitstring()
     #sdm.initialize()
     sdm.thread_write(a, a)
     self.assertEqual(a.distance_to(sdm.thread_read(a)), 0)
     self.assertEqual(sdm.save_to_file('_test.sdm'), 0)
     sdm.free()
     sdm.initialize()
     self.assertTrue(a.distance_to(sdm.read(a)) > 0)
     sdm.free()
     self.assertEqual(sdm.initialize_from_file('_test.sdm'), 0)
     self.assertEqual(a.distance_to(sdm.thread_read(a)), 0)
Пример #19
0
 def test_average_random(self, qty=1000):
     for i in range(qty):
         a = Bitstring()
         b = Bitstring()
         c = Bitstring.average(a, b)
         d0 = a.distance_to(b)
         d1 = c.distance_to(a)
         d2 = c.distance_to(b)
         self.assertEqual(d1+d2, d0)
         self.assertTrue(d1 < d0)
         self.assertTrue(d2 < d0)
         self.assertTrue(abs(d1-d2) <= 1)
Пример #20
0
def sample_radius(rounds=1, verbose=0):
    if verbose > 0:
        print 'Initializing SDM'
    sdm.initialize()
    dimension = sdm.get_dimension()
    v = []
    for i in xrange(rounds):
        if verbose > 0:
            print 'Round #%d' % (i + 1)
        addr = Bitstring()

        dist = sdm.distance(addr)

        if verbose > 0:
            print '  Processing results'
        w = [0] * (dimension + 1)
        for d in dist:
            w[d] += 1
        u = [0] * (dimension + 1)
        for d, n in enumerate(w):
            for j in range(d, dimension + 1):
                u[j] += n
        v.append(u)
    sdm.free()
    return v
Пример #21
0
 def test_mean_distance(self, qty=10):
     sdm.initialize()
     for i in range(qty):
         a = Bitstring()
         arr = array(sdm.thread_distance(a))
         self.assertTrue(abs(arr.mean() - 500) <= 1.5)
     sdm.free()
Пример #22
0
def write_random(qty, use_threads=True):
    w = sdm.write if not use_threads else sdm.thread_write
    t0 = time()
    for i in range(qty):
        a = Bitstring()
        print '#%d' % i, w(a, a)
    t1 = time()
    print 'Time:', t1 - t0, 'seconds'
Пример #23
0
def sample():
    print 'Initializing SDM'
    sdm.initialize()
    dimension = sdm.get_dimension()
    addr = Bitstring()
    dist = sdm.distance(addr)
    sdm.free()
    return dist
Пример #24
0
    def _test_sdm(self, scanner_type):
        as1 = AddressSpace.init_random(1000, 1000000)
        counter = Counter.init_zero(1000, 1000000)
        sdm = SDM(as1, counter, 451, scanner_type)

        bs1 = Bitstring.init_random(1000)
        sdm.write(bs1, bs1)
        bs2 = sdm.read(bs1)
        self.assertEqual(0, bs1.distance_to(bs2))
Пример #25
0
    def test_readwrite_swap(self, qty=1000):
        for i in range(qty):
            a = Hardlocation()
            b = Bitstring()
            a.write(b)
            c = a.read()
            self.assertEqual(b.distance_to(c), 0)

            b.bitswap(0)
            a.write(b)
            a.write(b)
            c = a.read()
            b.bitswap(0)

            self.assertEqual(b.distance_to(c), 1)
            c.bitswap(0)
            self.assertEqual(b.distance_to(c), 0)
Пример #26
0
    def test_sdm_opencl_kernels(self):
        as1 = AddressSpace.init_random(1000, 1000000)
        counter = Counter.init_zero(1000, 1000000)
        sdm = SDM(as1, counter, 451, sdmlib.SDM_SCANNER_OPENCL)
        as1.opencl_opts.verbose = 1
        for kernel in sdmlib.OPENCL_KERNEL_NAMES:
            as1.set_opencl_kernel(kernel)

            bs1 = Bitstring.init_random(1000)
            sdm.write(bs1, bs1)
            bs2 = sdm.read(bs1)
            self.assertEqual(0, bs1.distance_to(bs2))
Пример #27
0
    def test_readwrite_swap(self, qty=1000):
        for i in range(qty):
            a = Hardlocation()
            b = Bitstring()
            a.write(b)
            c = a.read()
            self.assertEqual(b.distance_to(c), 0)

            b.bitswap(0)
            a.write(b)
            a.write(b)
            c = a.read()
            b.bitswap(0)

            self.assertEqual(b.distance_to(c), 1)
            c.bitswap(0)
            self.assertEqual(b.distance_to(c), 0)
Пример #28
0
 def test_bitstring_copy(self):
     bs1 = Bitstring.init_random(1000)
     bs2 = bs1.copy()
     self.assertEqual(0, bs1.distance_to(bs2))
Пример #29
0
 def test_bitstring_init_ones(self):
     bs1 = Bitstring.init_ones(1000)
     cnt1 = bs1.to_binary().count('1')
     self.assertEqual(1000, cnt1)
Пример #30
0
 def test_bitstring_init_zeros(self):
     bs1 = Bitstring.init_zeros(1000)
     cnt0 = bs1.to_binary().count('0')
     self.assertEqual(1000, cnt0)
Пример #31
0
 def test_bitstring_flip_random_bits(self):
     bs1 = Bitstring.init_random(1000)
     for i in range(1001):
         bs2 = bs1.copy()
         bs2.flip_random_bits(i)
         self.assertEqual(i, bs1.distance_to(bs2))
Пример #32
0
 def test_distance_random(self, qty=1000):
     for i in range(qty):
         a = Bitstring()
         b = Bitstring()
         dist = sum([ 1 for x, y in zip(str(a), str(b)) if x != y ])
         self.assertEqual(Bitstring.distance(a, b), dist)
Пример #33
0
 def test_distance_zero(self, qty=1000):
     for i in range(qty):
         a = Bitstring()
         self.assertEqual(Bitstring.distance(a, a), 0)
Пример #34
0
 def test_address_space(self):
     as1 = AddressSpace.init_random(1000, 1000000)
     bs = Bitstring.init_random(1000)
     as1.scan_thread2(bs, 451)
Пример #35
0
 def test_bitstring_init_random(self):
     bs1 = Bitstring.init_random(1000)
     cnt1 = bs1.to_binary().count('1')
     self.assertLessEqual(abs(cnt1 - 500), 100)