コード例 #1
0
 def test_mvectorize(self):
     
     x = np.linspace( 1, 1000, 10000 )
     
     mf_fn = mvectorize( nb_fn, ( double[:], double[:] ), num_threads=8 )
     
     result = mf_fn( x )
     expected = np.vectorize( fn )( x )
     
     np.testing.assert_array_equal( expected, result )
コード例 #2
0
    def test_mvectorize_performance(self):

        x = np.linspace(0, 1000)

        mf_fn = mvectorize(nb_fn, (double[:], double[:]), num_threads=8)
        # Call once to initialize
        mf_fn(x)
        num_tests = 100

        with Timer('mf_nb') as nbtimer:
            for _ in range(num_tests):
                mf_fn(x)

        np_fn = np.vectorize(fn)
        with Timer('np') as nptimer:
            for _ in range(num_tests):
                np_fn(x)

        ratio = nbtimer.interval / nptimer.interval
        print('Numba version took %s as long as numpy' % ratio)
コード例 #3
0
            return 2.0 * np.floor(xi / 2.0)
        elif xi <= 100.0:
            return 5.0 * np.floor(xi / 5.0)
        elif xi <= 1000.0:
            return 10.0 * np.floor(xi / 10.0)
        else:
            return 1000.0
        return 0.0

    signature = double(double, )
    print('Compiling jit function')
    nb_floor_closest_valid_odds = jit(signature,
                                      nopython=True)(floor_closest_valid_odds)

    print('Compiling 4 thread')
    mf4 = mvectorize(nb_floor_closest_valid_odds, (double[:], double[:]),
                     num_threads=4)
    print('Compiling 6 thread')
    mf6 = mvectorize(nb_floor_closest_valid_odds, (double[:], double[:]),
                     num_threads=6)
    print('Compiling 7 thread')
    mf7 = mvectorize(nb_floor_closest_valid_odds, (double[:], double[:]),
                     num_threads=7)
    print('Compiling 8 thread')
    mf8 = mvectorize(nb_floor_closest_valid_odds, (double[:], double[:]),
                     num_threads=8)
    print('Compiling 16 thread')
    mf16 = mvectorize(nb_floor_closest_valid_odds, (double[:], double[:]),
                      num_threads=16)

    signature = double[:](double[:], )
    vf = vectorize(['float64(float64)'],