നുംബ (Numba) ഒരു ഓപ്പൺ സോഴ്സ് നം‌പൈ (NumPy) - അവേയർ ഒപ്റ്റിമൈസിങ് കമ്പൈലർ ആണ്. അനക്കോണ്ട, ഐഎൻസി(Inc) സ്പോൺസർ ചെയ്യുന്ന പൈത്തൺ പ്രോഗ്രാമുകൾക്കായി ഗോർഡൻ, ബെറ്റി മോർ ഫൗണ്ടേഷൻ എന്നിവിടങ്ങളിൽ നിന്നുള്ള ഗ്രാൻറ് ലഭിച്ചു. സിപിയു, ജിപിയു മെഷീൻ കോഡ് എന്നിവയിലേക്ക് പൈത്തൺ കംപൈൽ ചെയ്യുന്നതിനായി എൽഎൽവിഎം കമ്പൈലർ ഇൻഫ്രാസ്ട്രക്ചർ ഉപയോഗിക്കുന്നു.[1]

നുംബ
Original author(s)Continuum Analytics
വികസിപ്പിച്ചത്Community project
ആദ്യപതിപ്പ്15 ഓഗസ്റ്റ് 2012; 12 വർഷങ്ങൾക്ക് മുമ്പ് (2012-08-15)
Stable release
0.38.0 / 24 ഏപ്രിൽ 2018; 6 വർഷങ്ങൾക്ക് മുമ്പ് (2018-04-24)
Preview release
0.38.0rc1 / 13 ഏപ്രിൽ 2018; 6 വർഷങ്ങൾക്ക് മുമ്പ് (2018-04-13)
റെപോസിറ്ററി വിക്കിഡാറ്റയിൽ തിരുത്തുക
ഭാഷPython, C
ഓപ്പറേറ്റിങ് സിസ്റ്റംCross-platform
തരംTechnical computing
വെബ്‌സൈറ്റ്numba.pydata.org

ഗുണങ്ങൾ

തിരുത്തുക

നുംബ എൽഎൽവിഎം(LLVM) ഉള്ള പൈത്തൺ കോഡ് സംഗ്രഹിക്കുന്നു. പ്രവർത്തിപ്പിക്കുന്ന സമയത്ത് സിപിയു അല്ലെങ്കിൽ ജിപിയു മുഖേന സ്വഭാവികമായി പ്രവർത്തിക്കുന്ന കോഡ്. പൈത്തൺ ഫംഗ്ഷനുകൾ അലങ്കരിക്കുന്നതിലൂടെ ഇത് സംഭവിക്കുന്നു, വിവിധ ഇൻപുട്ട് തരങ്ങൾക്ക് നേറ്റീവ് ഫംഗ്ഷൻകൾ സൃഷ്ടിക്കാൻ ഉപയോക്താക്കളെ അനുവദിക്കുക, അല്ലെങ്കിൽ ഫ്ലയിൽ അവ സൃഷ്ടിക്കുന്നു:

@jit('f8(f8[:])')
def sum1d(my_double_array):
    total = 0.0
    for i in range(my_double_array.shape[0]):
        total += my_double_array[i]
    return total

ഈ ഒപ്റ്റിമൈസ് ചെയ്ത ഫങ്ഷൻ ഒരു വലിയ നംപൈ(NumPy) അറേയിൽ വ്യാഖ്യാനിച്ച യഥാർത്ഥ പ്രവർത്തനത്തെക്കാൾ 200 മടങ്ങ് വേഗത്തിൽ പ്രവർത്തിക്കുന്നു; നംപൈയുടെ ബിൽറ്റ്-ഇൻ സം()ഫംഗ്ഷനെ അപേക്ഷിച്ച് 30% വേഗതയുണ്ട് (പതിപ്പ് 0.27.0).[2][3]

അനുയോജ്യമായ ഇൻപുട്ട് രീതികൾക്കായി മുകളിലുള്ള ഉദാഹരണം പ്രവർത്തിപ്പിക്കുന്നതിന്, സ്വയമേവ സ്പെഷ്യലൈസ് ചെയ്ത ഒരു ഫങ്ഷൻ നമുക്ക് സൃഷ്ടിക്കാം:

@jit
def sum1d(my_array):
    ...

ജിപിയു പിന്തുണ

തിരുത്തുക

നുംബ ജിപിയു കോഡിൽ പൈത്തൺ ഫംഗ്ഷനുകൾ സമാഹരിക്കാൻ കഴിയും. നിലവിൽ രണ്ട് സമീപനങ്ങൾ ലഭ്യമാണ്:

എൻവിഐഡിഎ സിയുഡിഎ(NVIDIA CUDA)

തിരുത്തുക
@cuda.jit
def increment_a_2D_array(an_array):
    x, y = cuda.grid(2)
    if x < an_array.shape[0] and y < an_array.shape[1]:
       an_array[x, y] += 1

numba.pydata.org/numba-doc/dev/cuda/overview.html

എഎംഡി എച്ച്എസ്എ(AMD HSA)

തിരുത്തുക

ലളിത വ്യാഖ്യാനമായ '@ hsa.jit' ഉപയോഗിക്കുക:

@hsa.jit(device=True)
def a_device_function(a, b):
    return a + b

numba.pydata.org/numba-doc/dev/hsa/overview.html

ബദൽ സമീപനങ്ങൾ

തിരുത്തുക

പൈത്തൺ ത്വരിതപ്പെടുത്തുന്നതിനുള്ള ഇതര സമീപനങ്ങളാണ് താഴെ കൊടുത്തിരിക്കുന്ന പദ്ധതികൾ:

  1. "numba/numba: NumPy aware dynamic Python compiler using LLVM". GitHub.
  2. "A Speed Comparison Of C, Julia, Python, Numba, and Cython on LU Factorization".
  3. "Numba vs. Cython: Take 2".
"https://ml.wikipedia.org/w/index.php?title=നുംബ&oldid=2868191" എന്ന താളിൽനിന്ന് ശേഖരിച്ചത്