নাম্বা

নাম্বা (ইংরেজি: Numba) হলো পাইথনের একটি মুক্ত ও ওপেন সোর্স জাস্ট-ইন-টাইম কম্পাইলার। এটি 'এলএলভিএমলাইট' প্যাকেজের মাধ্যমে এলএলভিএম কম্পাইলার অবকাঠামো ব্যবহার করে পাইথন এবং নামপাই কোডের একটি অংশকে দ্রুত মেশিন কোডে রূপান্তর করে। নাম্বা সিপিইউ এবং জিপিইউ -এর জন্য পাইথন কোডকে প্যারালাল বা সমান্তরাল করার বিভিন্ন সুবিধা প্রদান করে, যার জন্য মূল কোডে খুব সামান্যই পরিবর্তনের প্রয়োজন হয়।

২০১২ সালে ট্র্যাভিস অলিফ্যান্ট নাম্বা প্রকল্পটির সূচনা করেন। তখন থেকেই এটি নিয়মিত আপডেটের মাধ্যমে সক্রিয়ভাবে উন্নত করা হচ্ছে। প্রকল্পটি মূলত এনাকোন্ডা ইনকর্পোরেটেডের ডেভেলপারদের দ্বারা পরিচালিত হয়। এছাড়াও ডারপা, গর্ডন এবং বেটি মুর ফাউন্ডেশন, ইন্টেল, এনভিডিয়া এবং এএমডি-এর মতো প্রতিষ্ঠানের পৃষ্ঠপোষকতা এবং গিটহাবে একটি বিশাল কমিউনিটির অবদান এতে রয়েছে।

 উদাহরণ 
গাণিতিক হিসাব-নিকাশ করে এমন যেকোনো পাইথন ফাংশনে কেবল numba.jit ডেকোরেটর যুক্ত করে নাম্বা ব্যবহার করা যায়। নিচে পাইথনের মাধ্যমে পাই -এর মান নির্ণয়ে মন্টি কার্লো অ্যালগরিদমের একটি উদাহরণ দেওয়া হলো:

import numba
import random

@numba.jit(nopython=True)
def monte_carlo_pi(n_samples: int) -> float:
    """মন্টি কার্লো পদ্ধতিতে পাই এর মান নির্ণয়"""
    acc = 0
    for i in range(n_samples):
        x = random.random()
        y = random.random()
        if (x**2 + y**2) < 1.0:
            acc += 1
    return 4.0 * acc / n_samples

ফাংশনটি কল করার সময় জাস্ট-ইন-টাইম কম্পাইলেশন স্বয়ংক্রিয়ভাবে সম্পন্ন হয়:

>>> monte_carlo_pi(1000000)
3.14

 জিপিইউ সমর্থন 
নাম্বা পাইথন ফাংশনগুলোকে জিপিইউ কোডে কম্পাইল করতে পারে। প্রাথমিকভাবে দুটি ব্যাকএন্ড উপলব্ধ ছিল:

 এনভিডিয়া কুডা: এটি এনভিডিয়া জিপিইউ-এর জন্য ব্যবহৃত হয়।
 এএমডি আরওসিএম এইচএসএ: সংস্করণ ০.৫৬.৪-এর পর থেকে এএমডি আরওসিএম এইচএসএ-এর সমর্থন আনুষ্ঠানিকভাবে বন্ধ করে দেওয়া হয়েছে এবং এর জন্য একটি পৃথক রিপোজিটরি তৈরি করা হয়েছে।

২০২৪-২৫ সাল নাগাদ, এনভিডিয়া নাম্বা কুডা টার্গেটের উন্নয়নে সক্রিয় ভূমিকা পালন করছে এবং এটি একটি পৃথক প্লাগইন হিসেবেও উপলব্ধ।

 বিকল্প পদ্ধতিসমূহ 
নাম্বা হলো পাইথনের গতি বৃদ্ধির একটি অন্যতম উপায়, যা নির্দিষ্ট কিছু ফাংশন কম্পাইল করে কাজ করে। পাইথনে দ্রুত গাণিতিক বা নিউমেরিক্যাল কম্পিউটিংয়ের জন্য আরও বেশ কিছু বিকল্প পদ্ধতি রয়েছে, যেমন:
 সাইথন: যা পাইথন কোডকে সি-তে রূপান্তর করে।
 পাইথ্রান: বৈজ্ঞানিক পাইথন কোডের জন্য একটি কম্পাইলার।
 পিপাই: পাইথনের একটি বিকল্প দ্রুতগতির ইন্টারপ্রেটার।

 তথ্যসূত্র 

 বহিঃসংযোগ 

 গিটহাবে নাম্বা রিপোজিটরি

বিষয়শ্রেণী:পাইথন (প্রোগ্রামিং ভাষা)
বিষয়শ্রেণী:পাইথন (প্রোগ্রামিং ভাষা) বাস্তবায়ন
বিষয়শ্রেণী:কম্পাইলার