ট্র্যাক
/
C++
C++
/
অনুশীলনী
/
প্যারালাল অক্ষর ফ্রিকোয়েন্সি
প্যারালাল অক্ষর ফ্রিকোয়েন্সি

প্যারালাল অক্ষর ফ্রিকোয়েন্সি

মধ্যম

নির্দেশনা

প্যারালেল কম্পিউটেশন ব্যবহার করে টেক্সটে অক্ষরের ফ্রিকোয়েন্সি গণনা করুন।

প্যারালেলিজম মানে হলো এমন কিছু কাজ প্যারালেলে করা, যেগুলো সিকোয়েন্সিয়ালিও করা যায়। এর একটি কমন উদাহরণ হলো অক্ষরের ফ্রিকোয়েন্সি গণনা করা। টেক্সটের একটি তালিকায় প্রতিটি অক্ষরের মোট ফ্রিকোয়েন্সি হিসাব করতে প্যারালেলিজম ব্যবহার করুন।

C++ ইমপ্লিমেন্টেশনের জন্য অতিরিক্ত নোট

C++-এ প্যারালেলিজম অর্জনের বেশ কয়েকটি উপায় আছে। Exercism-এর অনলাইন রানার C++17 সাপোর্ট করে, তাই আপনি অ্যালগরিদম লাইব্রেরি থেকে এক্সিকিউশন পলিসি ব্যবহার করতে পারেন। আরেকটি উপায় হলো থ্রেড নিজে ম্যানেজ করা। তবে মনে রাখবেন, একটি থ্রেড তৈরি করা বেশ ব্যয়বহুল (এখানে একটি থ্রেড পুল ব্যবহার করলে সুবিধা হবে)।

নিজের কম্পিউটারে কাজ করার সময় আপনি অবশ্যই যা চান ব্যবহার করতে পারেন। তবে নন-স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করা সমাধান Exercism-এর অনলাইন রানারে সম্ভবত কাজ করবে না।

বেঞ্চমার্ক

নিজের কম্পিউটারে কাজ করার সময় আপনি চাইলে একটি বেঞ্চমার্ক চালিয়ে বিভিন্ন ইমপ্লিমেন্টেশনে গতি কতটা বাড়ে তার একটা ধারণা পেতে পারেন। CMake ফ্ল্যাগ EXERCISM_INCLUDE_BENCHMARK চালু করলে বেঞ্চমার্কটি সক্রিয় হয়:

cmake -DEXERCISM_RUN_ALL_TESTS=1 -DEXERCISM_INCLUDE_BENCHMARK=1 .

প্যারালেল অ্যালগরিদমে কম্পাইলারের সাপোর্ট

C++ স্ট্যান্ডার্ড লাইব্রেরির (libstdc++) GCC-এর ইমপ্লিমেন্টেশন TBB-এর উপর নির্ভর করে। TBB না থাকলে সিকোয়েন্সিয়াল ভার্সনে ফলব্যাক করা হবে, এমনকি প্যারালেল এক্সিকিউশন চাইলেও।

Ubuntu-তে আপনাকে libtbb-dev প্যাকেজটি ইনস্টল করতে হবে:

apt-get install libtbb-dev

macOS-এ TBB ইনস্টল করতে আপনি Homebrew ব্যবহার করতে পারেন:

brew install tbb

Clang libc++-এর 17 নম্বর ভার্সনে প্যারালেল অ্যালগরিদমের পরীক্ষামূলক, আংশিক সাপোর্ট আছে। এটি চালু করতে -fexperimental-library কম্পাইলার ফ্ল্যাগটি দিতে হবে।

Apple Clang 15 ও তার আগের ভার্সনগুলো প্যারালেল অ্যালগরিদম সাপোর্ট করে না।

Linux ও macOS-এ এই অনুশীলনীর জন্য আমরা GCC (সাথে ডিফল্ট libstdc++) ব্যবহার করার পরামর্শ দিই।

Microsoft-এর MSVC কমপক্ষে VS 2017 15.7 থেকে কোনো অতিরিক্ত লাইব্রেরি ইনস্টল না করেই প্যারালেল অ্যালগরিদম সাপোর্ট করে।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
C++ Exercism

প্যারালাল অক্ষর ফ্রিকোয়েন্সি শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, C++ ট্র্যাকের 19টি কনসেপ্ট100টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।

ডিপ ডাইভ: প্যারালাল অক্ষর ফ্রিকোয়েন্সি!

আমরা কনকারেন্সি ও প্যারালালিজমের মধ্যে পার্থক্য নিয়ে আলোচনা করি এবং JavaScript, Go, Elixir ও Rust-এর মতো ভাষাগুলো যে বিভিন্ন পদ্ধতি অবলম্বন করে তা দেখি।