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 )
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)
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)'],