TornadoVM 7 জাভা অ্যাপ্লিকেশন থেকে GPU-নেটিভ ওয়ার্কলোড সক্ষম করে

TornadoVM 7 জাভা অ্যাপ্লিকেশন থেকে GPU-নেটিভ ওয়ার্কলোড সক্ষম করে


টর্নেডোভিএম, জাভার জন্য একটি ওপেন-সোর্স ভিন্নধর্মী GPU প্রোগ্রামিং ফ্রেমওয়ার্ক সংস্করণ 7.3-এ পৌঁছেছে, এই প্রকল্পের জন্য একটি বড় মাইলফলক।

InfoQ এর আগে ডিসেম্বর 2025 এবং 2022 সালে প্রকল্পটি কভার করেছিল।

টর্নেডোভিএম স্বয়ংক্রিয়ভাবে মাল্টি-কোর সিপিইউ এবং জিপিইউতে জাভা প্রোগ্রামকে ত্বরান্বিত করে। বিদ্যমান JVMগুলি প্রতিস্থাপন করার পরিবর্তে, এটি তাদের পাশাপাশি কাজ করে এবং জাভাতে একটি সমৃদ্ধ GPU প্রোগ্রামিং ইকোসিস্টেম সরবরাহ করে যা আপনি OpenJDK, Graalvm, Temurin বা জুলুর মতো মূলধারার JDK বিতরণের সাথে ব্যবহার করতে পারেন।

এটি হার্ডওয়্যার ব্যাকএন্ডে জাভা কোড অফলোড করে, জাভা হিপ এবং এক্সিলারেটরের মধ্যে মেমরি পরিচালনা করে এবং ফলস্বরূপ কম্পিউট কার্নেল চালায়। এটি আধুনিক ক্লাউড এবং মেশিন লার্নিং কাজের চাপের জন্য এটিকে একটি দরকারী বিল্ডিং ব্লক করে তোলে।

বিকাশের সময়, টর্নাডোভিএম ওপেনসিএল এবং অ্যাপল মেটাল ব্যাকএন্ডে সোর্স জাভা কোড কম্পাইল করে। ধারণাটি হল যে আপনি আপনার ল্যাপটপে স্থানীয়ভাবে বিকাশ করতে পারেন এবং স্থানীয়ভাবে উপলব্ধ হার্ডওয়্যার ব্যবহার করতে পারেন, এবং তারপরে Nvidia GPUs আছে এমন একটি সার্ভারে স্থাপন করতে পারেন এবং প্রধান কর্মক্ষমতা উন্নতি অর্জন করতে পারেন – আধুনিক ML কাজের চাপের জন্য “একবার লিখুন, যেকোনো জায়গায় চালান” এর একটি রূপ৷

সংস্করণ 7 বেশ কিছু স্থাপত্য পরিবর্তন এনেছে। ব্যাকএন্ডগুলি এখন জাভা নেটিভ ইন্টারফেস (JNI) এর জায়গায় ফরেন ফাংশন অ্যান্ড মেমরি (FFM) API ব্যবহার করে। পরীক্ষামূলক JVM কম্পাইলার ইন্টারফেস (JVMCI) নির্ভরতাও সরানো হয়েছে। দলের মতে, টর্নাডোভিএম এখন “প্রতিফলন + ASM + অনিরাপদ স্তরের মাধ্যমে সমস্ত কম্পাইলার মেটাডেটা” উত্স করে যা প্রতিটি সমর্থিত JDK (21, 25, 26 এবং 27) এর একক, অভিন্ন পথ।

রিলিজটি একটি অপ্টিমাইজড CUDA ব্যাকএন্ডের মাধ্যমে এনভিডিয়া ইকোসিস্টেমের সাথে একীকরণকে আরও গভীর করে। এতে কিউটাইল প্রোগ্রামিং মডেলের জন্য সমর্থন অন্তর্ভুক্ত রয়েছে (একটি নতুনের মাধ্যমে টাইল কনটেক্সট) এবং TornadoVM টাস্কগ্রাফের মধ্যে থেকে সরাসরি CUDA লাইব্রেরি যেমন cuBLAS এবং CUTLASS কল করার ক্ষমতা। বিকাশকারীরা CUDA লাইব্রেরি কলগুলির জন্য JIT-উত্পন্ন কার্নেলগুলিকে অদলবদল করতে পারে বা তাদের কার্যকারিতা এবং বহনযোগ্যতার প্রয়োজনের উপর নির্ভর করে দুটিকে একসাথে চেইন করতে পারে। একইভাবে, টর্নেডোভিএম আবার হাইব্রিড API এর মাধ্যমে অ্যাপলের MXL লাইব্রেরির জন্য একই কার্যকারিতা যোগ করে। অবশেষে, মাল্টি-জিপিইউ এক্সিকিউশনের জন্য সমর্থন যোগ করা হয়েছে।

প্রতিটি জাভা গণনা অফলোডিং থেকে উপকৃত হয় না। সেরা প্রার্থীরা হল ডেটা-সমান্তরাল ওয়ার্কলোড, যেমন লুপ যার পুনরাবৃত্তির মধ্যে কোন নির্ভরতা নেই, কারণ তাদের পুনরাবৃত্তিগুলি ত্বরণকারীতে সমান্তরালভাবে চলতে পারে।

সাম্প্রতিক টর্নেডোভিএম সংস্করণগুলির একটি লক্ষ্য হল লাইব্রেরিগুলি অ্যাক্সেস করার জন্য একটি ইডিওম্যাটিক JVM পরিবেশ তৈরি করা যা এনভিডিয়া বিভিন্ন হার্ডওয়্যার প্ল্যাটফর্মের জন্য টিউন করছে। জাভা ডেভেলপারদের উদ্দেশ্য হল লিনিয়ার অ্যালজেবরা, ফাস্ট ফুরিয়ার ট্রান্সফর্মস (সিগন্যাল অ্যানালাইসিসের জন্য), ডিপ নিউরাল নেটওয়ার্ক এবং স্পার্স ম্যাট্রিক্সের জন্য হ্যান্ড-অপ্টিমাইজ করা ম্যাট্রিক্স গুণনের মতো জিনিসগুলিতে ট্যাপ করা। TornadoVM-এর Quarkus, Lang4j, Flink, Spring AI এবং অন্যান্যদের সাথে লাইব্রেরি ইন্টিগ্রেশন রয়েছে এবং এটি SDKMan-এর মাধ্যমেও উপলব্ধ।

উদাহরণস্বরূপ, টর্নেডোভিএম-এর সাথে Apache Flink-এর ইন্টিগ্রেশন বিবেচনা করুন – মূল ধারণা হল যে ডেভেলপার একটি স্ট্যান্ডার্ড ক্যোয়ারী লেখেন যেমনটি তারা সাধারণত টেবিল API এর সাথে করে। একটি কনফিগারেশন ফ্ল্যাগ ইঙ্গিত করতে ব্যবহৃত হয় যে এই ক্যোয়ারীটি সম্ভাব্যভাবে একটি GPU-তে ত্বরান্বিত হওয়া উচিত।

তারপর, যখন গণনা টাস্ক ম্যানেজারের কাছে পৌঁছায়, তখন ফ্রেমওয়ার্ক পরীক্ষা করে যে নোডটিতে এটি কার্যকর করা হচ্ছে সেখানে একটি GPU উপলব্ধ আছে কিনা এবং যদি তাই হয়, তাহলে এটি একটি লাইব্রেরি প্রদানকারীর সাথে সংযোগ করে – যা গণনাটি আসলে GPU সম্পাদনের জন্য উপযুক্ত কিনা তা দেখার জন্য কোয়েরির মধ্যবর্তী প্রতিনিধিত্ব (IR) বিশ্লেষণ করে৷

মোট, টর্নাডোভিএম জাভা প্রোগ্রামার হিসাবে এনভিডিয়া জিপিইউগুলিকে প্রোগ্রাম করার চারটি উপায় অফার করে – প্রথমত, সমান্তরাল API যা সত্যিই একটি টীকা যা একটি লুপকে টীকা দেয় এবং কম্পাইলারের জন্য একটি ইঙ্গিত দেয় যে এই লুপটি সম্ভাব্যভাবে পক্ষাঘাতগ্রস্ত হতে পারে। এই সাধারণ API দীর্ঘমেয়াদে উত্পাদন অ্যাপ্লিকেশনের জন্য পছন্দসই কর্মক্ষমতা পেতে যথেষ্ট বলে প্রমাণিত হয়নি, তাই অতিরিক্ত API যোগ করা হয়েছে – যেমন কার্নেল প্রসঙ্গ API এবং ইতিমধ্যেই উল্লেখ করা TileContext।

7.3 রিলিজের পাশাপাশি, TornadoVM টিম jitLLM v2.0 প্রবর্তন করেছে, এটির পরবর্তী প্রজন্মের জাভা AI ইনফারেন্স ইঞ্জিন যা TornadoVM-এ নির্মিত। দলটি jitLLM-কে llama.cpp এবং ওল্লামার কার্যক্ষমতার সরাসরি প্রতিযোগী হিসাবে অবস্থান করে এবং এটি একটি একক JAR ফাইল হিসাবে প্রেরণ করে।

TornadoVM এবং jitLLM উভয়ই Beestream.ai-এর মাধ্যমে বাণিজ্যিকীকরণ করা হচ্ছে, TornadoVM টিম দ্বারা প্রতিষ্ঠিত একটি স্পিন-অফ।

টর্নাডোভিএম সাইটে এবং ডেভক্সক্স বেলজিয়ামের সাম্প্রতিক ভিডিওগুলিতে আরও বিশদ বিবরণ পাওয়া যাবে, যার মধ্যে রয়েছে: “TornadoVM-এর হাইব্রিড API দিয়ে জাভা থেকে NVIDIA ইকোসিস্টেমে ট্যাপ করুন”।





Source link

Leave a Reply

Your email address will not be published. Required fields are marked *