সিমুলেশন জন্য জল্পনা. যাচাইকরণে উদ্ভাবন

সিমুলেশন জন্য জল্পনা. যাচাইকরণে উদ্ভাবন

উত্স নোড: 2547459

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

সিমুলেশন জন্য জল্পনা

উদ্ভাবন

এই মাসের বাছাই হয় ক্রোনোস: এক্সিলারেটরের জন্য দক্ষ অনুমানমূলক সমান্তরালতা. প্রোগ্রামিং ভাষা এবং অপারেটিং সিস্টেমের জন্য আর্কিটেকচারাল সাপোর্ট অন 2020 সম্মেলনে লেখকরা গবেষণাপত্রটি উপস্থাপন করেছেন এবং এমআইটি থেকে এসেছেন।

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

এখানে উল্লেখ্য আরেকটি পয়েন্ট. এই পদ্ধতিটি বিলম্ব-ভিত্তিক সিমুলেশন সমর্থন করে, বেশিরভাগ হার্ডওয়্যার ত্বরণ কৌশলগুলির বিপরীতে।

পলের দৃষ্টিভঙ্গি

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

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

সারিতে থাকা টাস্কগুলি সমান্তরালভাবে একাধিক প্রক্রিয়াকরণ উপাদান (PEs) এর জন্য তৈরি করা হয় - যার অর্থ বর্তমান টাস্ক সম্পূর্ণ হওয়ার আগে Chronos অনুমানমূলকভাবে ভবিষ্যতের কাজগুলি সম্পাদন করছে। যদি বর্তমান টাস্কটি অনুমানমূলকভাবে সম্পাদিত ভবিষ্যতের কাজগুলিকে বাতিল করে দেয় তবে সেই ভবিষ্যত কার্যগুলির ক্রিয়াগুলি "পূর্বাবস্থায় ফেরানো" হয় এবং সেগুলি পুনরায় সারিবদ্ধ হয়। হার্ডওয়্যারে এই ধারণাটি সঠিকভাবে বাস্তবায়ন করা সহজ নয়, তবে বাইরের ব্যবহারকারীর কাছে এটি সুন্দর: আপনি শুধু আপনার অ্যালগরিদম কোড করুন যেন টাস্ক সারিটি একটি একক পিইতে ধারাবাহিকভাবে চালানো হচ্ছে। কোন mutexes কোড বা অচলাবস্থা সম্পর্কে চিন্তা করার প্রয়োজন নেই.

লেখকরা SystemVerilog-এ Chronos প্রয়োগ করেন এবং এটি একটি FPGA-তে কম্পাইল করেন। কাগজের বেশিরভাগ অংশ ব্যাখ্যা করার জন্য নিবেদিত যে তারা কীভাবে টাস্ক কিউ বাস্তবায়ন করেছে এবং সর্বাধিক দক্ষতার জন্য হার্ডওয়্যারে প্রয়োজনীয় কোনো আনরোলিং করেছে। ক্রোনোস একটি টাস্ক-কিউ ভিত্তিক আর্কিটেকচারের জন্য উপযুক্ত চারটি অ্যালগরিদমের উপর বেঞ্চমার্ক করা হয়েছে। প্রতিটি অ্যালগরিদম দুটি উপায়ে প্রয়োগ করা হয়: প্রথমত একটি ডেডিকেটেড অ্যালগরিদম-নির্দিষ্ট PE ব্যবহার করে, এবং দ্বিতীয়টি PE হিসাবে 32-বিট এমবেডেড RISC-V CPU-কে অফ দ্য শেলফ ওপেন সোর্স ব্যবহার করে৷ Chronos পারফরম্যান্সের সাথে একটি Intel Xeon সার্ভারে চলমান অ্যালগরিদমগুলির মাল্টি-থ্রেডেড সফ্টওয়্যার বাস্তবায়নের সাথে তুলনা করা হয় যা Chronos-এর জন্য ব্যবহৃত FPGA-এর সমান মূল্য ট্যাগ সহ। ফলাফলগুলি চিত্তাকর্ষক - Xeon সার্ভার ব্যবহার করার চেয়ে Chronos 3x থেকে 15x ভাল স্কেল করে। যাইহোক, চিত্র 3 এর সাথে সারণি 14 এর তুলনা করা আমাকে কিছুটা উদ্বিগ্ন করে তোলে যে এই লাভগুলির বেশিরভাগই ক্রোনোস আর্কিটেকচারের পরিবর্তে অ্যালগরিদম-নির্দিষ্ট পিই থেকে এসেছে।

এটি একটি যাচাইকরণ ব্লগ বলে আমি স্বাভাবিকভাবেই গেট-লেভেল সিমুলেশন বেঞ্চমার্কে জুম করেছি। ইডিএ শিল্প লজিক সিমুলেশনকে সমান্তরাল করার জন্য প্রচুর পরিমাণে বিনিয়োগ করেছে এবং কয়েকটি নির্দিষ্ট ব্যবহারের ক্ষেত্রে বড় লাভ দেখতে পাওয়া কঠিন বলে প্রমাণিত হয়েছে। এটি প্রধানত L3-ক্যাশে অনুপস্থিত লোড/স্টোর নির্দেশাবলী দ্বারা আধিপত্য এবং DRAM-এ যাওয়ার কারণে বেশিরভাগ বাস্তব-বিশ্বের সিমুলেশনের কার্যকারিতা। এই কাগজে শুধুমাত্র একটি টেস্টকেস বেঞ্চমার্ক করা আছে এবং এটি একটি ছোট 32-বিট ক্যারি সেভ অ্যাডার। আপনি যদি এই ব্লগটি পড়ে থাকেন এবং আরও কিছু পুঙ্খানুপুঙ্খ বেঞ্চমার্কিং করতে আগ্রহী হন তাহলে অনুগ্রহ করে আমাকে জানান - যদি Chronos সত্যিকার অর্থে বাস্তব বিশ্বের সিমুলেশনে ভালভাবে স্কেল করতে পারে তবে এর বিশাল বাণিজ্যিক মূল্য থাকবে!

রাউলের ​​দৃষ্টিভঙ্গি

এই কাগজের প্রধান অবদান হল স্থানিকভাবে অবস্থানকৃত অর্ডারকৃত টাস্ক (SLOT) এক্সিকিউশন মডেল যা হার্ডওয়্যার এক্সিলারেটরদের জন্য দক্ষ যেগুলি সমান্তরালতা এবং অনুমানকে কাজে লাগায় এবং এমন অ্যাপ্লিকেশনগুলির জন্য যা রানটাইমে গতিশীলভাবে কাজগুলি তৈরি করে৷ সিমুলেশনের জন্য গতিশীল সমান্তরাল সমর্থন অনিবার্য এবং অনুমানমূলক সিঙ্ক্রোনাইজেশন একটি আকর্ষণীয় বিকল্প, কিন্তু সুসংগত ওভারহেড খুব বেশি।

স্লট প্রতিটি টাস্ককে একটি একক অবজেক্টে অপারেট করার (লিখতে) সীমাবদ্ধ করে সমন্বয়ের প্রয়োজনীয়তা এড়ায় এবং বহু-বস্তুর পারমাণবিকতা সক্ষম করতে আদেশকৃত কাজগুলিকে সমর্থন করে। স্লট অ্যাপ্লিকেশনগুলি অর্ডার করা হয়, গতিশীলভাবে তৈরি করা কাজগুলি একটি টাইমস্ট্যাম্প এবং একটি অবজেক্ট আইডি দ্বারা চিহ্নিত করা হয়। টাইমস্ট্যাম্প অর্ডার সীমাবদ্ধতা নির্দিষ্ট করে; অবজেক্ট আইডি ডেটা নির্ভরতা নির্দিষ্ট করে, অর্থাৎ, কাজগুলি ডেটা-নির্ভর হয় যদি এবং শুধুমাত্র যদি তাদের একই অবজেক্ট আইডি থাকে। (যদি পঠিত নির্ভরতা থাকে তবে কাজটি অনুমানমূলকভাবে চালানো যেতে পারে)। কোর বা টাইলগুলিতে অবজেক্ট আইডি ম্যাপ করে এবং যেখানে অবজেক্ট আইডি ম্যাপ করা হয়েছে সেখানে প্রতিটি টাস্ক পাঠানোর মাধ্যমে দ্বন্দ্ব সনাক্তকরণ স্থানীয় হয়ে যায় (জটিল ট্র্যাকিং কাঠামো ছাড়াই)।

সার্জারির CHRONOS সিস্টেমটি AWS FPGA ফ্রেমওয়ার্কে 16টি টাইল সহ একটি সিস্টেম হিসাবে প্রয়োগ করা হয়েছিল, প্রতিটিতে 4টি অ্যাপ্লিকেশন নির্দিষ্ট প্রক্রিয়াকরণ উপাদান (PE), 125MHz এ চলমান। এই সিস্টেমটি 20-core/40-থ্রেড 2.4 GHz Intel Xeon E5-2676v3 সমন্বিত একটি বেসলাইনের সাথে তুলনা করা হয়েছে, বিশেষভাবে বেছে নেওয়া হয়েছে কারণ এর দাম FPGA ওয়ানের (প্রায় $2/ঘন্টা) সাথে তুলনীয়। একটি PE-তে একটি একক কাজ চালানো, Chronos বেসলাইনের চেয়ে 2.45x দ্রুত। সমসাময়িক কাজের সংখ্যা বাড়ার সাথে সাথে, ক্রোনোস বাস্তবায়ন 44.9টি টাইলে 8x এর স্ব-আপেক্ষিক গতিতে স্কেল করে, যা CPU বাস্তবায়নের তুলনায় 15.3x গতির অনুরূপ। তারা সাধারণ উদ্দেশ্য RISC-V এর উপর ভিত্তি করে প্রয়োগের নির্দিষ্ট PE-এর পরিবর্তে একটি বাস্তবায়ন তুলনা করেছে; PEs RISC-V এর চেয়ে 5x দ্রুত ছিল।

আমি কাগজটিকে চিত্তাকর্ষক বলে মনে করেছি কারণ এটি একটি ধারণা থেকে শুরু করে SLOT এক্সিকিউশন মডেলের সংজ্ঞা থেকে হার্ডওয়্যার বাস্তবায়ন এবং 4টি অ্যাপ্লিকেশনের জন্য একটি ঐতিহ্যবাহী Xeon CPU-এর সাথে বিশদ তুলনা সবই কভার করে। প্রচেষ্টা যথেষ্ট, Chronos সিস্টেম ভেরিলগের 20,000 লাইনের বেশি। ফলাফল হল সফ্টওয়্যার-সমান্তরাল সংস্করণগুলির তুলনায় একটি 5.4x গড় (4টি অ্যাপ্লিকেশনের) গতি, আরও সমান্তরালতা এবং অনুমানমূলক সম্পাদনের বেশি ব্যবহারের কারণে। কাগজটি অ-সিমুলেশন কাজগুলিতে প্রয়োগের জন্যও পড়ার যোগ্য; কাগজ তিনটি উদাহরণ অন্তর্ভুক্ত.

এর মাধ্যমে এই পোস্টটি ভাগ করুন:

সময় স্ট্যাম্প:

থেকে আরো সেমিউইকি