GIMPS: মার্জেন প্রাইমের খোঁজে একদল মানুষ


১.

“আমরা একা একা খুব কম কিছু করতে পারি, অনেকজন মিলে আবার খুব বেশি কিছু করতে পারি”

- হেলেন কেলার

আমরা একা একা যে কাজটা করতে পারি, অনেকজন মিলে একসাথে সেই কাজটা করা সত্যিই কি আরও সহজ হতো না? যেমন ধরা যাক আমাদের খুব বড় (এবং জটিল) একটা গাণিতিক হিসেব করা দরকার। আমরা কী করতে পারি?

একটা উপায় হচ্ছে কিংবদন্তীর কোন একজন গণিতবিদকে ধরে আনা, এবং তাকে দিয়ে হিসেবটা করাতে থাকা। দিন যায় রাত যায়, গণিতবিদ হিসেব করেই যাবেন। তার খাওয়া-দাওয়ার দায়িত্ব আমাদের, তার কাজ কেবল হিসেব করে যাওয়া। কিন্তু এটা কি খুব ভালো একটা উপায় হবে?

প্রথমত একজন গণিতবিদ নিঃসন্দেহে আমাদের থেকে দ্রুত গাণিতিক হিসেব করতে পারবে, কিন্তু একটানা একটা কাজ করতে গেলে ক্লান্তি আসবেই। আর হিসেব করা যতটা না সৃজনশীল কাজ, তার থেকে অনেকগুণ বেশি পরিশ্রমের কাজ। সেই ক্লান্তি দূর আমরা কেমন করে করবো?

তবে আরেকটা উপায় আছে। আমরা একজন গণিতবিদকে ধরে না এনে শত শত লোককে জিজ্ঞেস করলাম যার যখন খুশি আমাদের সাহায্য করতে। বড় হিসেবটা তখন সবাই মিলে শেষ করার চেষ্টা করতে শুরু করলো। একজন অর্গানাইজার দরকার যে কার কী করতে হবে সেটা ঠিক করে দিতে পারবে, বাকিটা ভলান্টিয়ারদের কাজ। যার যখন খুশি আসছে, যতক্ষন খুশি কাজ করে যাচ্ছে। কারও কোন ক্লান্তি লাগবে না, কারও উপর ভয়ানক চাপও তখন পড়বে না। আমি যখন স্কুলে পড়তাম তখন একটা অঙ্ক ছিলো এরকম, “একজন একটা সমস্যা অমুক সময়ে সমাধান করতে পারে, আরেকজন একটা সমস্যা তমুক সময়ে সমাধান করতে পারে। দুজনের একসাথে সমস্যাটা সমাধান করতে কত সময় লাগবে?” এক দিক দিয়ে প্রশ্নটা হাস্যকর। একজন এন্ড্রু উইলস এর ফার্মার লাস্ট থিওরেম প্রমাণ করতে যদি আট বছর লাগে, আটজন এন্ড্রু উইলস কি সেটা সত্যিই এক বছরে করতে পারবে(আটজন কোথা থেকে আসবে সেটা অন্য বিষয়, কিন্তু আমরা কল্পনা করে নিতে পারি তার কাছে সায়েন্স ফ্যান্টাসির কোন ক্লোনিং মেশিন আছে। মেশিনে এন্ড্রু উইলস ঢুকালে টপাটপ পাঁচ-দশজন কপি বের হয়ে আসে।)? মনে হয় না। কিন্তু যদি এমন একটা উপায় বের করা যায় যেখানে একটা সমস্যাকে ছোট ছোট সমস্যায় ভাগ করে ফেলা হবে এবং সবগুলো সমাধান এক করলে পুরো সমাধানটা বের হয়ে আসবে, তখন? হ্যা, তখন কিন্তু সত্যিই অনেকজন মিলে কাজটা করে ফেলতে পারবে। দরকার শুধু সমাধানকারীদের মাঝে সামান্য যোগাযোগের উপায়।

সুপার কম্পিউটার বললেই আমাদের সামনে বিশাল বড় কোন কম্পিউটারের ছবি ভেসে উঠে, যাতে দানবাকার এক প্রসেসর রাতভর কাজ করে যাচ্ছে। অবশ্য সেই প্রসেসরের দরকার প্রচন্ড শক্তি, এবং একটু একটু পর যখন গরম হয়ে যাবে তখন ঠান্ডা রাখার জন্য কুলিং সিস্টেম। কিন্তু আমরা যদি কোন জায়গায় অনেকগুলো কম্পিউটার কিংবা প্রসেসর বসিয়ে সেগুলোকে কোন লোকাল নেটওয়ার্কের মাধ্যমে যুক্ত করে দেই? Parallel computing সুপার কম্পিউটার বানানোর নতুন উপায় আমাদের বের করে দিয়েছে।

আচ্ছা এবার আরও বড় পরিসরে চিন্তা করা যাক। ধরা যাক হাজার হাজার কম্পিউটারের কথা যারা একে অপরের সাথে কোন নেটওয়ার্কের মাধ্যমে যুক্ত। হতে পারে সেটা ইন্টারনেট, হতে পারে অন্য কোন নেটওয়ার্ক। সবগুলো কম্পিউটারের সারাদিন একসাথে চলারও প্রয়োজন নেই, যেটা যখন খুশি তখন চলতে পারে। সারা পৃথিবীতে ছড়িয়ে ছিটিয়ে থাকা হাজার হাজার “স্বেচ্ছাসেবক” কম্পিউটারকে যদি এভাবে এক করে ফেলা যায় তাহলে কী ভয়ানক ব্যাপার হতে পারে সেটা কল্পনা করতে পারেন? এই ভয়ানক ব্যাপারটির নাম হচ্ছে Quasi-opportunistic supercomputing।

পৃথিবীতে এই কম্পিউটিং ব্যবহার করে এমন বেশ কিছু সিস্টেম আছে। তাদের একটি হচ্ছে ক্যালিফোর্নিয়া ইউনিভার্সিটির BOINC। কিন্তু আমরা আজ যে সিস্টেমটির গল্প করবো তার নাম হচ্ছে GIMPS। প্রাইমনেট সার্ভারে চলা এই প্রোগ্রামটির নাম হয়তো আমরা অনেকেই শুনেছি। ছোট করে যে নামটিকে GIMPS ডাকা হয় সেটি হচ্ছে The Great Internet Mersenne Prime Search।


২.

মার্জেন নাম্বার, কিংবা আরও নির্দিষ্ট করে বলতে গেলে মার্জেন প্রাইম সংখ্যাদের জগতে মোটামুটি বিখ্যাত।

ম্যারিন মার্জেন ছিলেন একজন ফরাসী ধর্মযাজক কিন্তু তিনি পরিচিত মূলত মিউজিক থিওরিতে তার কাজের জন্য। তিনি একজন গণিতবিদও ছিলেন বটে, তার কাজের জন্যই মার্জেন নাম্বার এর নাম এমন হয়েছে। তবে সেই অর্থে মার্জেন সমসাময়িক গণিতবিদদের মত এতটা দক্ষ ছিলেন সেটা বলা যাবে না। তার অবদান অবশ্য সেজন্য কম নয়।

ম্যারিন মার্জেন
ষোলশ সালের প্রথমার্ধের বিজ্ঞান-গণিত বিশ্বের কেন্দ্র ছিলেন এক অর্থে মার্জেন। গণিতে বিশেষজ্ঞ না হওয়া সত্ত্বেও নিজের পরিচিতি এবং তার বন্ধু বিখ্যাত রেনে দেকার্তের সাহায্যে সে সময়ের গণিতবিদদের এক করে রেখেছিলেন মার্জেন। তার এই জালে ছিলেন দেকার্তে ছাড়াও প্যাস্কেল, হাইগেন, পেটিট, ফার্মার মত বড় বড় বিজ্ঞানী এবং গণিতবিদেরা। তিনি গ্যালিলিওর খুব বড় একজন সমর্থক ছিলেন। একথা বলা হয় যে মার্জেনের মৃত্যুর বিশ বছর পড় প্রতিষ্ঠিত হওয়া ফ্রান্সের সায়েন্স একাডেমি এবং ব্রিটেনের রয়্যাল একাডেমি মার্জেনের বংশধর। কাকতালীয় হোক কিংবা মজার ব্যাপারই হোক, সারা বিশ্বের ‘সুপার-কম্পিউটারদের’ মাঝখানের নেটওয়ার্ক ছিলেন ম্যারিন মার্জেন।

কিন্তু মার্জেন যত কিছুই করে যান না কেন, আজকে আলোচনার বিষয় মোটেও তিনি নন বরং তার নামে অলংকৃত মার্জেন সংখ্যা কিংবা আরও শুদ্ধ করে বলতে গেলে মার্জেন প্রাইম।

মার্জেন সংখ্যা সে সকল সংখ্যা যাদের \({2^p} - 1\) আকারে লিখা সম্ভব। যেমন 1, 3, 7, 15, 31। যদি মার্জেন সংখ্যাকে বাইনারি নাম্বার সিস্টেমে লেখা হয় তাহলে তারা হবে এমন সংখ্যাগুলো যাদের সবগুলো ডিজিটই 1। যেমন 1111111। যে সব মার্জেন সংখ্যা একইসাথে মৌলিক সংখ্যা, তাদেরকে বলা হয় মার্জেন প্রাইম। প্রথমদিকের মার্জেন প্রাইমগুলো হচ্ছে 3, 7, 31, 127। বিভিন্ন কারনে মার্জেন প্রাইমগুলো গুরুত্বপূর্ণ। একটা কারন হচ্ছে পারফেক্ট নাম্বারের সাথে তাদের গভীর সম্পর্ক। অন্য একটা কারন হচ্ছে, সাধারন কোন সংখ্যা থেকে একটা মার্জেন সংখ্যা মৌলিক কি না তা বের করা সহজ। এখানে একটা কথা জেনে রাখা যায় যে কোন সংখ্যা মৌলিক কিংবা প্রাইম কি না তা বের করাকে বলা হয় Primality Test।

মার্জেন প্রাইমের সংখ্যা অসীম কি না তা এখনও প্রমাণ করা সম্ভব হয় নি। অনেকে অবশ্য একটা মার্জেন প্রাইম ঠিক কখন পাওয়া যেতে পারে তা অনুমান করার চেষ্টা করেছেন।

মার্জেন প্রাইম বের করা তুলনামূলক ভাবে সহজ এর নানা কারন আছে। যেমন, \(p\) যদি একটা প্রাইম নাম্বার হয় কেবলমাত্র তবেই \({2^p} - 1\) প্রাইম নাম্বার হতে পারে। একটা মার্জেন নাম্বার প্রাইম কি না সেটা বের করার একটি অ্যালগরিদম বের করেন এডুয়ার্ড লুকাস যার নাম দেওয়া হয় Lucas Sequence। নবম থেকে বার নম্বর মার্জেন প্রাইম বের করা হয়েছে লুকাস সিকুয়েন্স ব্যবহার করে। পরে ১৯৩০ সালের দিকে হেনরি লেহমার এই পদ্ধতিটি আরও উন্নত করেন এবং এর নতুন নাম হয় লুকাস-লেহমার টেস্ট (LLT) । কিন্তু তখন মার্জেন সংখ্যাগুলো এত বড় আকার নিতে থাকে যে লুকাস লেহমার টেস্টও পরের প্রায় বাইশ বছরের জন্য কোন নতুন প্রাইম বের করতে পারেনি। শেষ মার্জেন প্রাইমটি বের করা হয় ১৯১৪ সালে, \({2^{107}} - 1\), যার ডিজিট ছিলো মাত্র তেত্রিশটি! মজার ব্যাপার হচ্ছে এটা এডওয়ার্ড লুকাস ১৮৭৬ সালেই এর চেয়ে বড় ঊনচল্লিশ ডিজিটের মার্জেন প্রাইম \({2^{127}} - 1\) খুঁজে বের করেছিলেন। নিজের বের করা প্রথম এবং একমাত্র মার্জেন প্রাইম।

এরপর বহুদিন চলে গেল, নতুন কোন মার্জেন প্রাইম আর পাওয়া যায় না। কিন্তু কম্পিউটারের উদ্ভাবন নতুন এক জগত খুলে দিলো পৃথিবীর সামনে। স্বয়ং অ্যালান টিউরিং ১৯৪৯ সালে কম্পিউটার ব্যবহার করে মার্জেন প্রাইম খোঁজা শুরু করেছিলেন। এবং পরবর্তী অর্থাৎ ১৩ নম্বর মার্জেন প্রাইমটি পাওয়া যায় তিন বছরের মধ্যেই, ১৯৫২ সালের ৩০ জানুয়ারি। ইউনিভার্সিটি অফ ক্যালিফোর্নিয়াতে হেনরি লেহমারের তত্ত্বাবধানে প্রফেসর রাফায়েল রবিনসন তার লেখা প্রোগ্রাম দিয়ে খুঁজে বের করেন ১৩ নম্বর মার্জেন প্রাইম, যাতে ডিজিট ছিল ১৫৭ টি। পরেরটি বের করা হয় দুই ঘন্টার মধ্যে।

১৯৫২ থেকে ২০১৩ পর্যন্ত বের করা মার্জেন প্রাইমের সংখ্যা হচ্ছে ৩৬। এদের প্রতিটিই বের হয়েছে কম্পিউটারের সাহায্যে এবং লুকাস লেহমার টেস্ট ব্যবহার করে।

কিন্তু একসময় অবস্থা আরও গুরুতর হতে থাকে। মার্জেন সংখ্যাগুলোর আকার হাতি থেকে ডাইনোসর আর ডাইনোসর থেকে ছোটখাট পর্বতের আকার নিতে শুরু করে। একসময় এমন অবস্থা হলো যে সুপার কম্পিউটার ছাড়া মার্জেন প্রাইম বের করার আর কোন উপায়ই রইলো না। একেকটা সুপার কম্পিউটার চালাতে কতটুকু খরচ হয় তা আমরা মোটামুটি অনুমান করতে পারি। মার্জেন প্রাইমের খোঁজ হয়তো একরকম থেমেই যেতো(অথবা বের করার গতি একেবারেই কমে যেত), যদি না এগিয়ে আসতেন জর্জ ওল্টম্যান এবং স্কট কারোস্কি তাদের GIMPS নিয়ে, এবং না থাকতেন সারা পৃথিবীর অসংখ্য স্বেচ্ছাসেবক।

৩.

জর্জ ওল্টম্যান MIT থেকে বের হওয়া একজন কম্পিউটার সায়েন্টিস্ট ছিলেন। ছয় বছর বয়সে তিনি নাম্বার থিওরির একটা বই পড়েন, প্রাইম নাম্বার নিয়ে কাজ করা হয়ে উঠে তার একরকমের শখ। অনেকদিন আগে থেকেই ওল্টম্যান প্রাইম নাম্বার বের করার নানা প্রজেক্টে কাজ করে গিয়েছেন। একসময় তার মাথায় আসে ডিস্ট্রিবিউটেড কম্পিউটিং ব্যবহার করে মার্জেন প্রাইম খোঁজার জন্য একটি প্রজেক্টের আইডিয়া। যেই ভাবা সেই কাজ। ১৯৯৬ সালের দিকে পথ চলা শুরু করে GIMPS। GIMPS বা Great Internet Mersenne Prime Search নামটি দিয়েছিলেন লুকাস ওয়েলশ, ২৯ তম মার্জেন প্রাইমটি যারা খুঁজে পেয়েছিলেন তাদের একজন।
 
জর্জ ওল্টম্যান
 
ওল্টম্যানের লিখা Prime95 প্রোগ্রাম দিয়ে কাজ শুরু করে GIMPS। চালু হওয়ার বছরই GIMPS খুঁজে বের করে তাদের প্রথম অর্থাৎ ৩৫ নম্বর মার্জেন প্রাইম। প্রথম দিকে খবর আদান প্রদান করা হতো ই-মেইলের মাধ্যমে। কিন্তু আস্তে আস্তে প্রজেক্টের আকার বড় হতে থাকে, হাজার হাজার মানুষ যোগ দিতে থাকে ওল্টম্যানের সাথে। ই-মেইল করে করে এত বড় একটা প্রজেক্ট চালানো আর সম্ভব হয় না।

তখন এগিয়ে এলেন স্কট কারোস্কি। নিজেরে কোম্পানি এন্ট্রোপিয়া থেকে কারোস্কি লিখে দিলেন PrimeNet নামের একটা সার্ভারের নেটওয়ার্ক সফটওয়্যার, এবং তখন থেকে GIMPS ব্যবহার করা হয়ে উঠল আরও সহজ। এক ঝামেলা শেষ হওয়ার পর ওল্টম্যান নিজের কাজে আরও মন দিলেন, Prime95 প্রোগ্রামটিকে আরও শক্তিশালী করে তুললেন তিনি। GIMPS এর জন্য লেখা ওল্টম্যানের বড় সংখ্যা গুণ করার যে লাইব্রেরিগুলো আছে সেগুলো বিশ্বে সবচেয়ে দ্রুতগতির এবং অন্যান্য প্রাইম নাম্বার বের করার প্রোগ্রামগুলোও এদের ব্যবহার করে।

আমরা আগেই বলেছি GIMPS ব্যবহার করে Quasi-opportunistic supercomputing। মোটামুটি একটা আধুনিক কম্পিউটার হলেই এই সফটওয়্যারটি ব্যবহার করা যায়। কম্পিউটার যত বেশি সময় চালু থাকবে তত ভালো, তবে কোন কারনে বন্ধ থাকলেও সমস্যা নেই। প্রোগ্রামটি খুব কম পরিমাণ মেমোরি ব্যবহার করে তাই কম্পিউটারের গতি কমে যাওয়ারও সম্ভাবনা নেই। মার্জেন রিসার্চ টিমের ভাষ্যমতে 60MB এর মত র‍্যাম ব্যবহার করে GIMPS।

GIMPS যে কাজটি করে সেটা হচ্ছে PrimeNet সার্ভারের সাথে নানারকম তথ্য আদান-প্রদান করে, এবং তার আকারও একেবারে কম। এমনকি নিরবিচ্ছিন্ন ইন্টারনেট সংযোগও প্রয়োজন নেই, প্রতিদিন কিংবা প্রতিসপ্তাহে একবার করে চালু করলেই যথেষ্ট। সার্ভার থেকে করার জন্য কিছু কাজ GIMPS কে পাঠানো হয়, আর GIMPS সেই কাজটা করতে থাকে এবং শেষ হলে ফলাফলটুকুক সার্ভারে আবার পাঠিয়ে দেয়। একেবারে সহজ উপায়।

কিন্তু এ তো গেল নেটওর্য়ার্কের ব্যাপার-স্যাপার। প্রোগ্রামটির পিছনের গণিতটুকু সম্ভবত সবচেয়ে গুরুত্বপূর্ণ।

আমরা আগেই বলেছি যে একটা মার্জেন সংখ্যা \({2^p} - 1\) প্রাইম হবে যদি \(p\) প্রাইম হয়। GIMPS প্রথমেই তাই \(p\) এর একটা লিস্ট করে ফেলে। ধরা যাক সেখান থেকে একটা মার্জেন সংখ্যা পাওয়া গেল। এখন সেই মার্জেন সংখ্যাটি প্র্রাইম কি না সেটা কয়েক ধাপে পরীক্ষা করা হয় যেন প্রোগ্রামটি যথেষ্ট পরিমাণ সময় বাঁচাতে পারে।

প্রথমেই দেখা হয় \({2^p} - 1\) তুলনামূলকভাবে ছোট কোন সংখ্যা দিয়ে বিভাজ্য কি না। যদি তেমন ছোট কোন সংখ্যা না পাওয়া যায়, তাহলে আরেকটু বড় সংখ্যা নিয়ে কাজ করা হয়। এক্ষেত্রে এগিয়ে আসে মার্জেন সংখ্যা নিয়ে আরেকটি গাণিতিক থিওরেম। যদি \(q\) এমন একটা সংখ্যা হয় যা \({2^p} - 1\) কে ভাগ করতে পারে, তবে অবশ্যই \(2kp + 1\) আকারের হবে। এ থেকে এরেটোস্থিনিসের সিভের মত একটা কিঞ্চিৎ পরিবর্তিত সিভ ব্যবহার করে 40000 এর নিচের সংখ্যাগুলোর জন্য উৎপাদক খুঁজে বের করার চেষ্টা চালানো হয়। এই কাজ করে মোটামুটি 95% সম্ভাব্য উৎপাদক বাদ দিয়ে দেওয়া যায়। তাতে কাজ না হলে একের পর এক উৎপাদক দিয়ে সংখ্যাটিকে ভাগ করা হয়। প্রোগ্রামটি এমনভাবে লেখা যে এই ভাগ করার প্রক্রিয়া ততক্ষন চলবে যতক্ষন না এই কাজ করতে কম্পিউটার খুব বেশি সময় নিতে থাকে। এই কাজটিকে আরও সহজ করা হয় পোলার্ড মেথড নামের একটি পদ্ধতি ব্যবহার করে।

যখন কোনটাতেই কাজ হয় না, তখন শেষ অস্ত্র লুকাস-লেহমার টেস্ট। লুকাস-লেহমার টেস্ট বড় বড় সংখ্যার জন্য অনেক সময় নেয় কাজ শেষ করতে। তাই শুধু সেসব সংখ্যাই লুকাস লেহমার টেস্ট পর্যন্ত পৌছুতে পারে যাদের মার্জেন প্রাইম হওয়ার সম্ভাবনা খুবই বেশি। কীভাবে কাজ করে তা বললেও কেন লুকাস-লেহমার টেস্ট কাজ করে সেটা এখানে বলা হচ্ছে না। আগ্রহীরা ইচ্ছা করলেই ইন্টারনেট থেকে দেখে নিতে পারেন।

ধরা যাক আমাদের কাছে একটা সিকুয়েন্স দেওয়া আছে এরকম,

S(1) = 4, S(2) = 14, S(3) = 194, S(4) = 37634 . . .

এই অনুক্রমটি একটা নিয়ম মেনে চলে আর সেটা হচ্ছে, \(S\left( {n + 1} \right) = S{\left( n \right)^2} - 2\) হবে। তাহলে লুকাস লেহমার নিয়ম বলে একটা মার্জেন সংখ্যা \({M_p}\) কিংবা ${{2}^{p}}-1$ প্রাইম হবে যদি সংখ্যাটা S(p-1) কে নিঃশেষ ভাগ করতে পারে। লুকাস-লেহমার টেস্ট করে \({2^7} - 1\) বা 127 প্রাইম কি না তা আমরা বের করতে পারি এভাবে।



S (1) = 4

S (2) = (4 × 4 - 2) (4 × 4 - 2) mod 127 = 14

S (3) = (14 × 14 - 2) (14 × 14 - 2) mod 127 = 67

S (4) = (67 × 67 - 2) (67 × 67 - 2) mod 127 = 42

S (5) = (42 × 42 - 2) (42 × 42 - 2) mod 127 = 111

S (6) = (111 × 111 - 2) (111 × 111 - 2) mod 127 = 0

এখানে বলে রাখা ভালো যে a mod b মানে হচ্ছে a কে b দিয়ে ভাগ করলে ভাগশেষ কত থাকবে।

যদি লুকাস লেহমার টেস্ট শেষ করার পর GIMPS কোন প্রাইম খুঁজে পায় তাহলে সেই প্রাইমটি সত্যিই প্রাইম কি না সেটা আবার পরীক্ষা করা হয়।

৪.

১৯৯৬ সালের নভেম্বর ১৩ থেকে ২০১৩ সালের জানুয়ারি ২৫ পর্যন্ত মার্জেন প্রাইম পাওয়া গেছে মোট ১৪টি। এদের মাঝে সবচেয়ে ছোটটি হচ্ছে \({2^{1,398,269}} - 1\) যার ডিজিট হচ্ছে 420,921 টি। সবচেয়ে বড়টি হচ্ছে \({2^{57,885,161}} - 1\) যার ডিজিট হচ্ছে 17,425,170 টি। প্রতি লাইনে ৭৫ ডিজিট এবং প্রতি পৃষ্ঠায় ৫০ লাইন লিখা যায় এমন কোন খাতায় আমরা যদি সংখ্যাটি লিখতে যাই তাহলে মোট পৃষ্ঠা প্রয়োজন হবে ৪৬৪৭ টি। এবং এটাই এখন পর্যন্ত খুঁজে পাওয়া সবচেয়ে বড় প্রাইম নাম্বার। এদের প্রতিটি GIMPS এর সাহায্যে।

সুকুমার রায়ের ‘লক্ষণের শক্তিশেলে’ একটা ছড়া আছে এমন-

অবাক কল্লে রাবণ বুড়ো-

যষ্ঠির বাড়ি সুগ্রীবে মারি

কল্লে যে তার মাথা গুঁড়ো,

অবাক কল্লে রাবণ বুড়ো।

ছড়াটিকে খুব জঘন্যভাবে বিকৃত করে আমরা এভাবে লিখতে পারি-

অবাক কল্লে ওল্টম্যান বুড়ো-

ডিস্ট্রিবিউটেড কম্পিউটিঙের বাড়ি মার্জেন প্রাইমে মারি

কল্লে যে তার মাথা গুঁড়ো,

অবাক কল্লে ওল্টম্যান বুড়ো।

এখন পর্যন্ত যতগুলো মার্জেন প্রাইম বের করা হয়েছে তাদের আটটিই পাওয়া গেছে ইউনাভার্সিটি অফ ক্যালিফোর্নিয়া কিংবা UCLA (University Of California, Los Angeles) তে। ২০০৮ সালে ১৩ অগাস্ট তারা একটি মার্জেন প্রাইম খুঁজে পায় যেটি কি না দশ মিলিয়ন ডিজিটের উপর প্রথম মার্জেন প্রাইম। এই কারনে Electronic Frontier Foundation এর ঘোষণা করা 100,000 ডলারের পুরষ্কারটি পায় GIMPS। পুরোপুরি ফ্রি এবং ওপেন-সোর্স হওয়া সত্ত্বেও GIMPS থেকে পাওয়া প্রাইম নাম্বারের জন্য ঘোষিত পুরষ্কারের উপর এর একটা লাইসেন্স আছে। এই টাকার অধিকাংশই অবশ্য UCLA তে দেওয়া হয়েছিল। বাকিটুকু নানারকম চ্যারিটি এবং প্রজেক্টের উন্নতিসাধনে ব্যবহার করা হয়।

গল্প কিন্তু এখানেই শেষ নয়। একশ মিলিয়ন ডিজিটের উপর প্রথম মার্জেন প্রাইমটি খুঁজে বের করার জন্য Electronic Frontier Foundation আগে থেকেই 150,000 ডলারের ঘোষনা দিয়ে রেখেছে। শেষ পর্যন্ত খুঁজে বের করা মার্জেন প্রাইমটির ডিজিট ১৮ মিলিয়নের নিচে তাই ১০০ পর্যন্ত যেতে যেতে বেশ সময় লাগার কথা। কিন্তু কম্পিউটিং এর আরও উন্নতি হলে একশ মিলিয়ন ডিজিটের মার্জেন প্রাইমের জন্য আমাদের খুব সম্ভবত বেশিদিন অপেক্ষা করতে হবে না।

কয়েকজন আগ্রহী মানুষ আর খুব সাধারন যন্ত্রপাতি(এক্ষেত্রে অতি সাধারন কিছু কম্পিউটার, যেগুলো হয়তো অধিকাংশ সময় চুপচাপ ঘুমিয়ে থাকে) দিয়ে যে কত অসাধারন কিছু করা যেতে পারে তার সবচেয়ে বড় প্রমাণ সম্ভবত GIMPS। ড. কার্টিস কুপার তাদের একজন, তিনি University of Central Missouri এর Mathematics and Computer Science বিভাগের একজন গণিতবিদ। একদিন তিনি লক্ষ্য করে দেখলেন তাদের ডিপার্টমেন্টের অসংখ্য কম্পিউটার রাতের বেলা শুধু শুধু অকেজো হয়ে পড়ে থাকে। কুপার ভাবলেন, “কী দরকার? এগুলো দিয়ে কোন কাজ করলেও তো চলে।“আর যেই ভাবা সেই কাজ, কয়েকটা কম্পিউটার নিয়ে কুপার লেগে গেলেন GIMPS দিয়ে মার্জেন প্রাইম খুঁজতে। আস্তে আস্তে আগ্রহী শিক্ষক থেকে শিক্ষার্থীরাও তার সাথে যোগ দিতে থাকলো ঘটনাটা কতদূর যায় দেখার জন্য। আর কুপারের সাফল্য নিঃসন্দেহে নজরকারা, কারন এখন পর্যন্ত কুপার এবং তার টিম খুঁজে বের করেছেন দানবাকারের কয়েকটি মার্জেন প্রাইম, যাদের মাঝে বর্তমানে বিশ্বের সবচেয়ে বড় মার্জেন প্রাইমটিও রয়েছে।

কার্টিস কুপার প্রাইম-শিকারীদের মাঝে একধরনের কিংবদন্তী বলা যেতে পারে, আর তাকে নিয়ে অনেকগুলো রজনীকান্ত ধরনের কৌতুক আছে। এদের বেশ কয়েকটি হচ্ছে এরকম-

1. কার্টিস কুপার এর Primality Test এর প্রয়োজন হয় না, তিনি একটা নাম্বারকে প্রাইম হতে হুকুম করেন।

2. ৪৯ নম্বর মার্জেন প্রাইমটা কার্টিস কুপার ইতোমধ্যেই জানেন। কিন্তু তিনি কাউকে বলছেন না অন্যদের বিখ্যাত হওয়ার সুযোগ দেওয়ার জন্য।

3. কার্টিস কুপার আশেপাশে থাকলে প্রাইমালিটি টেস্ট অ্যালগরিদম গুলো O(1) কমপ্লেক্সিটিত চলতে শুরু করে।

4. কার্টিস কুপারের একেকটা ভাগের সময় মাপার জন্য প্লাঙ্কের ধ্রুবক প্রয়োজন হয়।

5. (এটা একটু পরিবর্তিত) কার্টিস কুপার চা বানানোর সময় এরেটোস্থিনিসের ছাঁকনি ব্যবহার করে।

GIMPS দিয়ে খুঁজে বের করা এখন পর্যন্ত প্রাইম নাম্বারগুলো হচ্ছে এরকম-


ইচ্ছা করলে আমরা যে কেউ যোগ দিতে পারি GIMPS প্রজেক্টে। সফটওয়্যারটা নামিয়ে চালিয়ে দিয়ে শুধু ধৈর্য্য ধরে অপেক্ষা করা কাজ। আগেই বলা হয়েছে যে সফটওয়্যারটা কাজ করে চুপচাপ, টের পাওয়ার কোন উপায় নেই। আর মোটামুটি 1.7GHz এর একটা প্রসেসরকেই GIMPS প্রচন্ড শক্তিশালী বলে ধরে নেয়।

কে জানে, হয়তো ঠিক পরের মার্জেন প্রাইমটা পাওয়া যাবে বাংলাদেশের কোন এক ভাঙাচোরা কম্পিউটারে। আর তাতে হয়তো ডিজিট থাকবে একশ মিলিয়নের উপরে।

(শেষকথা: পরের মার্জেন প্রাইমটি বাংলাদেশে পাওয়া যায় নি। এই লেখাটি ২০১৫ সালে লিখা, ২০১৯ এর আগ পর্যন্ত আরও দু'টি মার্জেন প্রাইম পাওয়া গেছে। 49 তম মার্জেন প্রাইমটি পাওয়া গিয়েছিলো ২০১৬ সালের ৭ জানুয়ারি, সেটা খুঁজে বের করেছিলেন আবার সেই কার্টিস কুপারের দল। ৫০ তমটি পাওয়া গিয়েছে ২০১৮ সালের ৩ তারিখ, জোনাথন পেস নামের একজন ইলেকট্রিক্যাল ইঞ্জিনিয়ারের কম্পিউটারে।)


তথ্যসূত্র:
1. GIMPS ডাউনলোড করার জন্য: http://www.mersenne.org/download/
2. লুকাস-লেহমার টেস্টের প্রমাণ দেখার জন্য: https://primes.utm.edu/notes/proofs/LucasLehmer.html
3. http://en.wikipedia.org/wiki/Quasi-opportunistic_supercomputing
4. http://en.wikipedia.org/wiki/Mersenne_prime
5. http://en.wikipedia.org/wiki/Great_Internet_Mersenne_Prime_Search
6. http://www.mersenne.org/various/history.php
7. Prime Numbers – David Wells

 Cover Photo by Lennart kcotsttiw from Pexels 

মৃন্ময়

নিজের বিষয়ে কথা বলতে আমার অস্বস্তি লাগে। তাই আমি নিজের বিষয়ে কিছু বলব না।

0 comments: