这段代码实现了sorting networks个代码,我正在try 用Numba编译它们以提高性能.然而,每个函数的编译时间都在呈指数级增长.Numba总共有大约60个函数(下面只显示了19个例子),在太阳经历红巨星inflating 之前,Numba不会完成它们的编译.
我怀疑问题存在于Numba试图在编译期间应用积极的优化标志(如-O2),从而导致过高的复杂性和处理时间.
编辑:我找到了Numba takes his optimization level from environment variable NUMBA_OPT,所以我将其设置为0
import os
os.environ["NUMBA_OPT"] = "0"
但它什么也做不了.
有没有一种方法可以让Numba简单地为这些函数生成汇编代码,而不try 进一步优化? 或者其他方法来编译它?
import numba as nb
import numpy as np
# This function calculates the min and the max of his parameters.
@nb.njit(nb.types.UniTuple(nb.uint64, 2)(nb.uint64, nb.uint64),fastmath=True,inline='always')
def m(a: np.uint64, b: np.uint64) -> (np.uint64, np.uint64):
return min(a, b), max(a, b)
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_1(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
return a
print('Defining function 2')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_2(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[1] = m(a[0], a[1])
return a
print('Defining function 3')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_3(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[2] = m(a[0], a[2])
a[0], a[1] = m(a[0], a[1])
a[1], a[2] = m(a[1], a[2])
return a
print('Defining function 4')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_4(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[2] = m(a[0], a[2])
a[1], a[3] = m(a[1], a[3])
a[0], a[1] = m(a[0], a[1])
a[2], a[3] = m(a[2], a[3])
a[1], a[2] = m(a[1], a[2])
return a
print('Defining function 5')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_5(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[3] = m(a[0], a[3])
a[1], a[4] = m(a[1], a[4])
a[0], a[2] = m(a[0], a[2])
a[1], a[3] = m(a[1], a[3])
a[0], a[1] = m(a[0], a[1])
a[2], a[4] = m(a[2], a[4])
a[1], a[2] = m(a[1], a[2])
a[3], a[4] = m(a[3], a[4])
a[2], a[3] = m(a[2], a[3])
return a
print('Defining function 6')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_6(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[5] = m(a[0], a[5])
a[1], a[3] = m(a[1], a[3])
a[2], a[4] = m(a[2], a[4])
a[1], a[2] = m(a[1], a[2])
a[3], a[4] = m(a[3], a[4])
a[0], a[3] = m(a[0], a[3])
a[2], a[5] = m(a[2], a[5])
a[0], a[1] = m(a[0], a[1])
a[2], a[3] = m(a[2], a[3])
a[4], a[5] = m(a[4], a[5])
a[1], a[2] = m(a[1], a[2])
a[3], a[4] = m(a[3], a[4])
return a
print('Defining function 7')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_7(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[6] = m(a[0], a[6])
a[2], a[3] = m(a[2], a[3])
a[4], a[5] = m(a[4], a[5])
a[0], a[2] = m(a[0], a[2])
a[1], a[4] = m(a[1], a[4])
a[3], a[6] = m(a[3], a[6])
a[0], a[1] = m(a[0], a[1])
a[2], a[5] = m(a[2], a[5])
a[3], a[4] = m(a[3], a[4])
a[1], a[2] = m(a[1], a[2])
a[4], a[6] = m(a[4], a[6])
a[2], a[3] = m(a[2], a[3])
a[4], a[5] = m(a[4], a[5])
a[1], a[2] = m(a[1], a[2])
a[3], a[4] = m(a[3], a[4])
a[5], a[6] = m(a[5], a[6])
return a
print('Defining function 8')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_8(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[2] = m(a[0], a[2])
a[1], a[3] = m(a[1], a[3])
a[4], a[6] = m(a[4], a[6])
a[5], a[7] = m(a[5], a[7])
a[0], a[4] = m(a[0], a[4])
a[1], a[5] = m(a[1], a[5])
a[2], a[6] = m(a[2], a[6])
a[3], a[7] = m(a[3], a[7])
a[0], a[1] = m(a[0], a[1])
a[2], a[3] = m(a[2], a[3])
a[4], a[5] = m(a[4], a[5])
a[6], a[7] = m(a[6], a[7])
a[2], a[4] = m(a[2], a[4])
a[3], a[5] = m(a[3], a[5])
a[1], a[4] = m(a[1], a[4])
a[3], a[6] = m(a[3], a[6])
a[1], a[2] = m(a[1], a[2])
a[3], a[4] = m(a[3], a[4])
a[5], a[6] = m(a[5], a[6])
return a
print('Defining function 9')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_9(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[3] = m(a[0], a[3])
a[1], a[7] = m(a[1], a[7])
a[2], a[5] = m(a[2], a[5])
a[4], a[8] = m(a[4], a[8])
a[0], a[7] = m(a[0], a[7])
a[2], a[4] = m(a[2], a[4])
a[3], a[8] = m(a[3], a[8])
a[5], a[6] = m(a[5], a[6])
a[0], a[2] = m(a[0], a[2])
a[1], a[3] = m(a[1], a[3])
a[4], a[5] = m(a[4], a[5])
a[7], a[8] = m(a[7], a[8])
a[1], a[4] = m(a[1], a[4])
a[3], a[6] = m(a[3], a[6])
a[5], a[7] = m(a[5], a[7])
a[0], a[1] = m(a[0], a[1])
a[2], a[4] = m(a[2], a[4])
a[3], a[5] = m(a[3], a[5])
a[6], a[8] = m(a[6], a[8])
a[2], a[3] = m(a[2], a[3])
a[4], a[5] = m(a[4], a[5])
a[6], a[7] = m(a[6], a[7])
a[1], a[2] = m(a[1], a[2])
a[3], a[4] = m(a[3], a[4])
a[5], a[6] = m(a[5], a[6])
return a
print('Defining function 10')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_10(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[8] = m(a[0], a[8])
a[1], a[9] = m(a[1], a[9])
a[2], a[7] = m(a[2], a[7])
a[3], a[5] = m(a[3], a[5])
a[4], a[6] = m(a[4], a[6])
a[0], a[2] = m(a[0], a[2])
a[1], a[4] = m(a[1], a[4])
a[5], a[8] = m(a[5], a[8])
a[7], a[9] = m(a[7], a[9])
a[0], a[3] = m(a[0], a[3])
a[2], a[4] = m(a[2], a[4])
a[5], a[7] = m(a[5], a[7])
a[6], a[9] = m(a[6], a[9])
a[0], a[1] = m(a[0], a[1])
a[3], a[6] = m(a[3], a[6])
a[8], a[9] = m(a[8], a[9])
a[1], a[5] = m(a[1], a[5])
a[2], a[3] = m(a[2], a[3])
a[4], a[8] = m(a[4], a[8])
a[6], a[7] = m(a[6], a[7])
a[1], a[2] = m(a[1], a[2])
a[3], a[5] = m(a[3], a[5])
a[4], a[6] = m(a[4], a[6])
a[7], a[8] = m(a[7], a[8])
a[2], a[3] = m(a[2], a[3])
a[4], a[5] = m(a[4], a[5])
a[6], a[7] = m(a[6], a[7])
a[3], a[4] = m(a[3], a[4])
a[5], a[6] = m(a[5], a[6])
return a
print('Defining function 11')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_11(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[9] = m(a[0], a[9])
a[1], a[6] = m(a[1], a[6])
a[2], a[4] = m(a[2], a[4])
a[3], a[7] = m(a[3], a[7])
a[5], a[8] = m(a[5], a[8])
a[0], a[1] = m(a[0], a[1])
a[3], a[5] = m(a[3], a[5])
a[4], a[10] = m(a[4], a[10])
a[6], a[9] = m(a[6], a[9])
a[7], a[8] = m(a[7], a[8])
a[1], a[3] = m(a[1], a[3])
a[2], a[5] = m(a[2], a[5])
a[4], a[7] = m(a[4], a[7])
a[8], a[10] = m(a[8], a[10])
a[0], a[4] = m(a[0], a[4])
a[1], a[2] = m(a[1], a[2])
a[3], a[7] = m(a[3], a[7])
a[5], a[9] = m(a[5], a[9])
a[6], a[8] = m(a[6], a[8])
a[0], a[1] = m(a[0], a[1])
a[2], a[6] = m(a[2], a[6])
a[4], a[5] = m(a[4], a[5])
a[7], a[8] = m(a[7], a[8])
a[9], a[10] = m(a[9], a[10])
a[2], a[4] = m(a[2], a[4])
a[3], a[6] = m(a[3], a[6])
a[5], a[7] = m(a[5], a[7])
a[8], a[9] = m(a[8], a[9])
a[1], a[2] = m(a[1], a[2])
a[3], a[4] = m(a[3], a[4])
a[5], a[6] = m(a[5], a[6])
a[7], a[8] = m(a[7], a[8])
a[2], a[3] = m(a[2], a[3])
a[4], a[5] = m(a[4], a[5])
a[6], a[7] = m(a[6], a[7])
return a
print('Defining function 12')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_12(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[8] = m(a[0], a[8])
a[1], a[7] = m(a[1], a[7])
a[2], a[6] = m(a[2], a[6])
a[3], a[11] = m(a[3], a[11])
a[4], a[10] = m(a[4], a[10])
a[5], a[9] = m(a[5], a[9])
a[0], a[1] = m(a[0], a[1])
a[2], a[5] = m(a[2], a[5])
a[3], a[4] = m(a[3], a[4])
a[6], a[9] = m(a[6], a[9])
a[7], a[8] = m(a[7], a[8])
a[10], a[11] = m(a[10], a[11])
a[0], a[2] = m(a[0], a[2])
a[1], a[6] = m(a[1], a[6])
a[5], a[10] = m(a[5], a[10])
a[9], a[11] = m(a[9], a[11])
a[0], a[3] = m(a[0], a[3])
a[1], a[2] = m(a[1], a[2])
a[4], a[6] = m(a[4], a[6])
a[5], a[7] = m(a[5], a[7])
a[8], a[11] = m(a[8], a[11])
a[9], a[10] = m(a[9], a[10])
a[1], a[4] = m(a[1], a[4])
a[3], a[5] = m(a[3], a[5])
a[6], a[8] = m(a[6], a[8])
a[7], a[10] = m(a[7], a[10])
a[1], a[3] = m(a[1], a[3])
a[2], a[5] = m(a[2], a[5])
a[6], a[9] = m(a[6], a[9])
a[8], a[10] = m(a[8], a[10])
a[2], a[3] = m(a[2], a[3])
a[4], a[5] = m(a[4], a[5])
a[6], a[7] = m(a[6], a[7])
a[8], a[9] = m(a[8], a[9])
a[4], a[6] = m(a[4], a[6])
a[5], a[7] = m(a[5], a[7])
a[3], a[4] = m(a[3], a[4])
a[5], a[6] = m(a[5], a[6])
a[7], a[8] = m(a[7], a[8])
return a
print('Defining function 13')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_13(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[12] = m(a[0], a[12])
a[1], a[10] = m(a[1], a[10])
a[2], a[9] = m(a[2], a[9])
a[3], a[7] = m(a[3], a[7])
a[5], a[11] = m(a[5], a[11])
a[6], a[8] = m(a[6], a[8])
a[1], a[6] = m(a[1], a[6])
a[2], a[3] = m(a[2], a[3])
a[4], a[11] = m(a[4], a[11])
a[7], a[9] = m(a[7], a[9])
a[8], a[10] = m(a[8], a[10])
a[0], a[4] = m(a[0], a[4])
a[1], a[2] = m(a[1], a[2])
a[3], a[6] = m(a[3], a[6])
a[7], a[8] = m(a[7], a[8])
a[9], a[10] = m(a[9], a[10])
a[11], a[12] = m(a[11], a[12])
a[4], a[6] = m(a[4], a[6])
a[5], a[9] = m(a[5], a[9])
a[8], a[11] = m(a[8], a[11])
a[10], a[12] = m(a[10], a[12])
a[0], a[5] = m(a[0], a[5])
a[3], a[8] = m(a[3], a[8])
a[4], a[7] = m(a[4], a[7])
a[6], a[11] = m(a[6], a[11])
a[9], a[10] = m(a[9], a[10])
a[0], a[1] = m(a[0], a[1])
a[2], a[5] = m(a[2], a[5])
a[6], a[9] = m(a[6], a[9])
a[7], a[8] = m(a[7], a[8])
a[10], a[11] = m(a[10], a[11])
a[1], a[3] = m(a[1], a[3])
a[2], a[4] = m(a[2], a[4])
a[5], a[6] = m(a[5], a[6])
a[9], a[10] = m(a[9], a[10])
a[1], a[2] = m(a[1], a[2])
a[3], a[4] = m(a[3], a[4])
a[5], a[7] = m(a[5], a[7])
a[6], a[8] = m(a[6], a[8])
a[2], a[3] = m(a[2], a[3])
a[4], a[5] = m(a[4], a[5])
a[6], a[7] = m(a[6], a[7])
a[8], a[9] = m(a[8], a[9])
a[3], a[4] = m(a[3], a[4])
a[5], a[6] = m(a[5], a[6])
return a
print('Defining function 14')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_14(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[1] = m(a[0], a[1])
a[2], a[3] = m(a[2], a[3])
a[4], a[5] = m(a[4], a[5])
a[6], a[7] = m(a[6], a[7])
a[8], a[9] = m(a[8], a[9])
a[10], a[11] = m(a[10], a[11])
a[12], a[13] = m(a[12], a[13])
a[0], a[2] = m(a[0], a[2])
a[1], a[3] = m(a[1], a[3])
a[4], a[8] = m(a[4], a[8])
a[5], a[9] = m(a[5], a[9])
a[10], a[12] = m(a[10], a[12])
a[11], a[13] = m(a[11], a[13])
a[0], a[4] = m(a[0], a[4])
a[1], a[2] = m(a[1], a[2])
a[3], a[7] = m(a[3], a[7])
a[5], a[8] = m(a[5], a[8])
a[6], a[10] = m(a[6], a[10])
a[9], a[13] = m(a[9], a[13])
a[11], a[12] = m(a[11], a[12])
a[0], a[6] = m(a[0], a[6])
a[1], a[5] = m(a[1], a[5])
a[3], a[9] = m(a[3], a[9])
a[4], a[10] = m(a[4], a[10])
a[7], a[13] = m(a[7], a[13])
a[8], a[12] = m(a[8], a[12])
a[2], a[10] = m(a[2], a[10])
a[3], a[11] = m(a[3], a[11])
a[4], a[6] = m(a[4], a[6])
a[7], a[9] = m(a[7], a[9])
a[1], a[3] = m(a[1], a[3])
a[2], a[8] = m(a[2], a[8])
a[5], a[11] = m(a[5], a[11])
a[6], a[7] = m(a[6], a[7])
a[10], a[12] = m(a[10], a[12])
a[1], a[4] = m(a[1], a[4])
a[2], a[6] = m(a[2], a[6])
a[3], a[5] = m(a[3], a[5])
a[7], a[11] = m(a[7], a[11])
a[8], a[10] = m(a[8], a[10])
a[9], a[12] = m(a[9], a[12])
a[2], a[4] = m(a[2], a[4])
a[3], a[6] = m(a[3], a[6])
a[5], a[8] = m(a[5], a[8])
a[7], a[10] = m(a[7], a[10])
a[9], a[11] = m(a[9], a[11])
a[3], a[4] = m(a[3], a[4])
a[5], a[6] = m(a[5], a[6])
a[7], a[8] = m(a[7], a[8])
a[9], a[10] = m(a[9], a[10])
a[6], a[7] = m(a[6], a[7])
return a
print('Defining function 15')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_15(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[1], a[2] = m(a[1], a[2])
a[3], a[10] = m(a[3], a[10])
a[4], a[14] = m(a[4], a[14])
a[5], a[8] = m(a[5], a[8])
a[6], a[13] = m(a[6], a[13])
a[7], a[12] = m(a[7], a[12])
a[9], a[11] = m(a[9], a[11])
a[0], a[14] = m(a[0], a[14])
a[1], a[5] = m(a[1], a[5])
a[2], a[8] = m(a[2], a[8])
a[3], a[7] = m(a[3], a[7])
a[6], a[9] = m(a[6], a[9])
a[10], a[12] = m(a[10], a[12])
a[11], a[13] = m(a[11], a[13])
a[0], a[7] = m(a[0], a[7])
a[1], a[6] = m(a[1], a[6])
a[2], a[9] = m(a[2], a[9])
a[4], a[10] = m(a[4], a[10])
a[5], a[11] = m(a[5], a[11])
a[8], a[13] = m(a[8], a[13])
a[12], a[14] = m(a[12], a[14])
a[0], a[6] = m(a[0], a[6])
a[2], a[4] = m(a[2], a[4])
a[3], a[5] = m(a[3], a[5])
a[7], a[11] = m(a[7], a[11])
a[8], a[10] = m(a[8], a[10])
a[9], a[12] = m(a[9], a[12])
a[13], a[14] = m(a[13], a[14])
a[0], a[3] = m(a[0], a[3])
a[1], a[2] = m(a[1], a[2])
a[4], a[7] = m(a[4], a[7])
a[5], a[9] = m(a[5], a[9])
a[6], a[8] = m(a[6], a[8])
a[10], a[11] = m(a[10], a[11])
a[12], a[13] = m(a[12], a[13])
a[0], a[1] = m(a[0], a[1])
a[2], a[3] = m(a[2], a[3])
a[4], a[6] = m(a[4], a[6])
a[7], a[9] = m(a[7], a[9])
a[10], a[12] = m(a[10], a[12])
a[11], a[13] = m(a[11], a[13])
a[1], a[2] = m(a[1], a[2])
a[3], a[5] = m(a[3], a[5])
a[8], a[10] = m(a[8], a[10])
a[11], a[12] = m(a[11], a[12])
a[3], a[4] = m(a[3], a[4])
a[5], a[6] = m(a[5], a[6])
a[7], a[8] = m(a[7], a[8])
a[9], a[10] = m(a[9], a[10])
a[2], a[3] = m(a[2], a[3])
a[4], a[5] = m(a[4], a[5])
a[6], a[7] = m(a[6], a[7])
a[8], a[9] = m(a[8], a[9])
a[10], a[11] = m(a[10], a[11])
a[5], a[6] = m(a[5], a[6])
a[7], a[8] = m(a[7], a[8])
return a
print('Defining function 16')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_16(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[13] = m(a[0], a[13])
a[1], a[12] = m(a[1], a[12])
a[2], a[15] = m(a[2], a[15])
a[3], a[14] = m(a[3], a[14])
a[4], a[8] = m(a[4], a[8])
a[5], a[6] = m(a[5], a[6])
a[7], a[11] = m(a[7], a[11])
a[9], a[10] = m(a[9], a[10])
a[0], a[5] = m(a[0], a[5])
a[1], a[7] = m(a[1], a[7])
a[2], a[9] = m(a[2], a[9])
a[3], a[4] = m(a[3], a[4])
a[6], a[13] = m(a[6], a[13])
a[8], a[14] = m(a[8], a[14])
a[10], a[15] = m(a[10], a[15])
a[11], a[12] = m(a[11], a[12])
a[0], a[1] = m(a[0], a[1])
a[2], a[3] = m(a[2], a[3])
a[4], a[5] = m(a[4], a[5])
a[6], a[8] = m(a[6], a[8])
a[7], a[9] = m(a[7], a[9])
a[10], a[11] = m(a[10], a[11])
a[12], a[13] = m(a[12], a[13])
a[14], a[15] = m(a[14], a[15])
a[0], a[2] = m(a[0], a[2])
a[1], a[3] = m(a[1], a[3])
a[4], a[10] = m(a[4], a[10])
a[5], a[11] = m(a[5], a[11])
a[6], a[7] = m(a[6], a[7])
a[8], a[9] = m(a[8], a[9])
a[12], a[14] = m(a[12], a[14])
a[13], a[15] = m(a[13], a[15])
a[1], a[2] = m(a[1], a[2])
a[3], a[12] = m(a[3], a[12])
a[4], a[6] = m(a[4], a[6])
a[5], a[7] = m(a[5], a[7])
a[8], a[10] = m(a[8], a[10])
a[9], a[11] = m(a[9], a[11])
a[13], a[14] = m(a[13], a[14])
a[1], a[4] = m(a[1], a[4])
a[2], a[6] = m(a[2], a[6])
a[5], a[8] = m(a[5], a[8])
a[7], a[10] = m(a[7], a[10])
a[9], a[13] = m(a[9], a[13])
a[11], a[14] = m(a[11], a[14])
a[2], a[4] = m(a[2], a[4])
a[3], a[6] = m(a[3], a[6])
a[9], a[12] = m(a[9], a[12])
a[11], a[13] = m(a[11], a[13])
a[3], a[5] = m(a[3], a[5])
a[6], a[8] = m(a[6], a[8])
a[7], a[9] = m(a[7], a[9])
a[10], a[12] = m(a[10], a[12])
a[3], a[4] = m(a[3], a[4])
a[5], a[6] = m(a[5], a[6])
a[7], a[8] = m(a[7], a[8])
a[9], a[10] = m(a[9], a[10])
a[11], a[12] = m(a[11], a[12])
a[6], a[7] = m(a[6], a[7])
a[8], a[9] = m(a[8], a[9])
return a
print('Defining function 17')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_17(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[11] = m(a[0], a[11])
a[1], a[15] = m(a[1], a[15])
a[2], a[10] = m(a[2], a[10])
a[3], a[5] = m(a[3], a[5])
a[4], a[6] = m(a[4], a[6])
a[8], a[12] = m(a[8], a[12])
a[9], a[16] = m(a[9], a[16])
a[13], a[14] = m(a[13], a[14])
a[0], a[6] = m(a[0], a[6])
a[1], a[13] = m(a[1], a[13])
a[2], a[8] = m(a[2], a[8])
a[4], a[14] = m(a[4], a[14])
a[5], a[15] = m(a[5], a[15])
a[7], a[11] = m(a[7], a[11])
a[0], a[8] = m(a[0], a[8])
a[3], a[7] = m(a[3], a[7])
a[4], a[9] = m(a[4], a[9])
a[6], a[16] = m(a[6], a[16])
a[10], a[11] = m(a[10], a[11])
a[12], a[14] = m(a[12], a[14])
a[0], a[2] = m(a[0], a[2])
a[1], a[4] = m(a[1], a[4])
a[5], a[6] = m(a[5], a[6])
a[7], a[13] = m(a[7], a[13])
a[8], a[9] = m(a[8], a[9])
a[10], a[12] = m(a[10], a[12])
a[11], a[14] = m(a[11], a[14])
a[15], a[16] = m(a[15], a[16])
a[0], a[3] = m(a[0], a[3])
a[2], a[5] = m(a[2], a[5])
a[6], a[11] = m(a[6], a[11])
a[7], a[10] = m(a[7], a[10])
a[9], a[13] = m(a[9], a[13])
a[12], a[15] = m(a[12], a[15])
a[14], a[16] = m(a[14], a[16])
a[0], a[1] = m(a[0], a[1])
a[3], a[4] = m(a[3], a[4])
a[5], a[10] = m(a[5], a[10])
a[6], a[9] = m(a[6], a[9])
a[7], a[8] = m(a[7], a[8])
a[11], a[15] = m(a[11], a[15])
a[13], a[14] = m(a[13], a[14])
a[1], a[2] = m(a[1], a[2])
a[3], a[7] = m(a[3], a[7])
a[4], a[8] = m(a[4], a[8])
a[6], a[12] = m(a[6], a[12])
a[11], a[13] = m(a[11], a[13])
a[14], a[15] = m(a[14], a[15])
a[1], a[3] = m(a[1], a[3])
a[2], a[7] = m(a[2], a[7])
a[4], a[5] = m(a[4], a[5])
a[9], a[11] = m(a[9], a[11])
a[10], a[12] = m(a[10], a[12])
a[13], a[14] = m(a[13], a[14])
a[2], a[3] = m(a[2], a[3])
a[4], a[6] = m(a[4], a[6])
a[5], a[7] = m(a[5], a[7])
a[8], a[10] = m(a[8], a[10])
a[3], a[4] = m(a[3], a[4])
a[6], a[8] = m(a[6], a[8])
a[7], a[9] = m(a[7], a[9])
a[10], a[12] = m(a[10], a[12])
a[5], a[6] = m(a[5], a[6])
a[7], a[8] = m(a[7], a[8])
a[9], a[10] = m(a[9], a[10])
a[11], a[12] = m(a[11], a[12])
a[4], a[5] = m(a[4], a[5])
a[6], a[7] = m(a[6], a[7])
a[8], a[9] = m(a[8], a[9])
a[10], a[11] = m(a[10], a[11])
a[12], a[13] = m(a[12], a[13])
return a
print('Defining function 18')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_18(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[1] = m(a[0], a[1])
a[2], a[3] = m(a[2], a[3])
a[4], a[5] = m(a[4], a[5])
a[6], a[7] = m(a[6], a[7])
a[8], a[9] = m(a[8], a[9])
a[10], a[11] = m(a[10], a[11])
a[12], a[13] = m(a[12], a[13])
a[14], a[15] = m(a[14], a[15])
a[16], a[17] = m(a[16], a[17])
a[0], a[2] = m(a[0], a[2])
a[1], a[3] = m(a[1], a[3])
a[4], a[12] = m(a[4], a[12])
a[5], a[13] = m(a[5], a[13])
a[6], a[8] = m(a[6], a[8])
a[9], a[11] = m(a[9], a[11])
a[14], a[16] = m(a[14], a[16])
a[15], a[17] = m(a[15], a[17])
a[0], a[14] = m(a[0], a[14])
a[1], a[16] = m(a[1], a[16])
a[2], a[15] = m(a[2], a[15])
a[3], a[17] = m(a[3], a[17])
a[0], a[6] = m(a[0], a[6])
a[1], a[10] = m(a[1], a[10])
a[2], a[9] = m(a[2], a[9])
a[7], a[16] = m(a[7], a[16])
a[8], a[15] = m(a[8], a[15])
a[11], a[17] = m(a[11], a[17])
a[1], a[4] = m(a[1], a[4])
a[3], a[9] = m(a[3], a[9])
a[5], a[7] = m(a[5], a[7])
a[8], a[14] = m(a[8], a[14])
a[10], a[12] = m(a[10], a[12])
a[13], a[16] = m(a[13], a[16])
a[0], a[1] = m(a[0], a[1])
a[2], a[5] = m(a[2], a[5])
a[3], a[13] = m(a[3], a[13])
a[4], a[14] = m(a[4], a[14])
a[7], a[9] = m(a[7], a[9])
a[8], a[10] = m(a[8], a[10])
a[12], a[15] = m(a[12], a[15])
a[16], a[17] = m(a[16], a[17])
a[1], a[2] = m(a[1], a[2])
a[3], a[5] = m(a[3], a[5])
a[4], a[6] = m(a[4], a[6])
a[11], a[13] = m(a[11], a[13])
a[12], a[14] = m(a[12], a[14])
a[15], a[16] = m(a[15], a[16])
a[4], a[8] = m(a[4], a[8])
a[5], a[12] = m(a[5], a[12])
a[6], a[10] = m(a[6], a[10])
a[7], a[11] = m(a[7], a[11])
a[9], a[13] = m(a[9], a[13])
a[1], a[4] = m(a[1], a[4])
a[2], a[8] = m(a[2], a[8])
a[3], a[6] = m(a[3], a[6])
a[5], a[7] = m(a[5], a[7])
a[9], a[15] = m(a[9], a[15])
a[10], a[12] = m(a[10], a[12])
a[11], a[14] = m(a[11], a[14])
a[13], a[16] = m(a[13], a[16])
a[2], a[4] = m(a[2], a[4])
a[5], a[8] = m(a[5], a[8])
a[6], a[10] = m(a[6], a[10])
a[7], a[11] = m(a[7], a[11])
a[9], a[12] = m(a[9], a[12])
a[13], a[15] = m(a[13], a[15])
a[3], a[5] = m(a[3], a[5])
a[6], a[8] = m(a[6], a[8])
a[7], a[10] = m(a[7], a[10])
a[9], a[11] = m(a[9], a[11])
a[12], a[14] = m(a[12], a[14])
a[3], a[4] = m(a[3], a[4])
a[5], a[6] = m(a[5], a[6])
a[7], a[8] = m(a[7], a[8])
a[9], a[10] = m(a[9], a[10])
a[11], a[12] = m(a[11], a[12])
a[13], a[14] = m(a[13], a[14])
return a
print('Defining function 19')
@nb.njit(nb.uint64[:](nb.uint64[:]),fastmath=True)
def sort_small_array_19(a: 'np.ndarray[np.uint64]') -> 'np.ndarray[np.uint64]':
a[0], a[12] = m(a[0], a[12])
a[1], a[4] = m(a[1], a[4])
a[2], a[8] = m(a[2], a[8])
a[3], a[5] = m(a[3], a[5])
a[6], a[17] = m(a[6], a[17])
a[7], a[11] = m(a[7], a[11])
a[9], a[14] = m(a[9], a[14])
a[10], a[13] = m(a[10], a[13])
a[15], a[16] = m(a[15], a[16])
a[0], a[2] = m(a[0], a[2])
a[1], a[7] = m(a[1], a[7])
a[3], a[6] = m(a[3], a[6])
a[4], a[11] = m(a[4], a[11])
a[5], a[17] = m(a[5], a[17])
a[8], a[12] = m(a[8], a[12])
a[10], a[15] = m(a[10], a[15])
a[13], a[16] = m(a[13], a[16])
a[14], a[18] = m(a[14], a[18])
a[3], a[10] = m(a[3], a[10])
a[4], a[14] = m(a[4], a[14])
a[5], a[15] = m(a[5], a[15])
a[6], a[13] = m(a[6], a[13])
a[7], a[9] = m(a[7], a[9])
a[11], a[17] = m(a[11], a[17])
a[16], a[18] = m(a[16], a[18])
a[0], a[7] = m(a[0], a[7])
a[1], a[10] = m(a[1], a[10])
a[4], a[6] = m(a[4], a[6])
a[9], a[15] = m(a[9], a[15])
a[11], a[16] = m(a[11], a[16])
a[12], a[17] = m(a[12], a[17])
a[13], a[14] = m(a[13], a[14])
a[0], a[3] = m(a[0], a[3])
a[2], a[6] = m(a[2], a[6])
a[5], a[7] = m(a[5], a[7])
a[8], a[11] = m(a[8], a[11])
a[12], a[16] = m(a[12], a[16])
a[1], a[8] = m(a[1], a[8])
a[2], a[9] = m(a[2], a[9])
a[3], a[4] = m(a[3], a[4])
a[6], a[15] = m(a[6], a[15])
a[7], a[13] = m(a[7], a[13])
a[10], a[11] = m(a[10], a[11])
a[12], a[18] = m(a[12], a[18])
a[1], a[3] = m(a[1], a[3])
a[2], a[5] = m(a[2], a[5])
a[6], a[9] = m(a[6], a[9])
a[7], a[12] = m(a[7], a[12])
a[8], a[10] = m(a[8], a[10])
a[11], a[14] = m(a[11], a[14])
a[17], a[18] = m(a[17], a[18])
a[0], a[1] = m(a[0], a[1])
a[2], a[3] = m(a[2], a[3])
a[4], a[8] = m(a[4], a[8])
a[6], a[10] = m(a[6], a[10])
a[9], a[12] = m(a[9], a[12])
a[14], a[15] = m(a[14], a[15])
a[16], a[17] = m(a[16], a[17])
a[1], a[2] = m(a[1], a[2])
a[5], a[8] = m(a[5], a[8])
a[6], a[7] = m(a[6], a[7])
a[9], a[11] = m(a[9], a[11])
a[10], a[13] = m(a[10], a[13])
a[14], a[16] = m(a[14], a[16])
a[15], a[17] = m(a[15], a[17])
a[3], a[6] = m(a[3], a[6])
a[4], a[5] = m(a[4], a[5])
a[7], a[9] = m(a[7], a[9])
a[8], a[10] = m(a[8], a[10])
a[11], a[12] = m(a[11], a[12])
a[13], a[14] = m(a[13], a[14])
a[15], a[16] = m(a[15], a[16])
a[3], a[4] = m(a[3], a[4])
a[5], a[6] = m(a[5], a[6])
a[7], a[8] = m(a[7], a[8])
a[9], a[10] = m(a[9], a[10])
a[11], a[13] = m(a[11], a[13])
a[12], a[14] = m(a[12], a[14])
a[2], a[3] = m(a[2], a[3])
a[4], a[5] = m(a[4], a[5])
a[6], a[7] = m(a[6], a[7])
a[8], a[9] = m(a[8], a[9])
a[10], a[11] = m(a[10], a[11])
a[12], a[13] = m(a[12], a[13])
a[14], a[15] = m(a[14], a[15])
return a
dummy=np.arange(63).astype(np.uint64)
print('Compiling functions (numba)...')
print('..compiling 1 of 63, '); sort_small_array_1(dummy[:1])
print('..compiling 2 of 63, '); sort_small_array_2(dummy[:2])
print('..compiling 3 of 63, '); sort_small_array_3(dummy[:3])
print('..compiling 4 of 63, '); sort_small_array_4(dummy[:4])
print('..compiling 5 of 63, '); sort_small_array_5(dummy[:5])
print('..compiling 6 of 63, '); sort_small_array_6(dummy[:6])
print('..compiling 7 of 63, '); sort_small_array_7(dummy[:7])
print('..compiling 8 of 63, '); sort_small_array_8(dummy[:8])
print('..compiling 9 of 63, '); sort_small_array_9(dummy[:9])
print('..compiling 10 of 63, '); sort_small_array_10(dummy[:10])