জিপিইউ প্রোগ্রামিংয়ে কাজের দক্ষতা কেন চাওয়া হয়?


13

আমি CUDA তে কীভাবে একটি সমান্তরাল স্ক্যান করব সে সম্পর্কে নীচের নিবন্ধটি পড়ছি:

https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch39.html

নিবন্ধে, স্ক্যানটিকে "কার্যক্ষম করে তোলা" করার উপর জোর দেওয়া হয়েছে। অন্য কথায়, একটি জিপিইউ অ্যালগরিদমের সিপিইউ অ্যালগরিদম, ও (এন) এর চেয়ে বেশি সংযোজন করা উচিত নয়। লেখকরা দুটি অ্যালগরিদম উপস্থাপন করেন, একটি "নিষ্পাপ" যা O (nlogn) সংযোজন করে এবং একটি যা তারা "কাজের দক্ষ" হিসাবে বিবেচনা করে। তবে কাজের দক্ষ অ্যালগরিদম দ্বিগুণ লুপ পুনরাবৃত্তি করে।

আমার উপলব্ধি থেকে, জিপিইউগুলি কেবল দৈত্য সিমডি প্রসেসর এবং লক-স্টেপে পরিচালনা করা উচিত। "কার্যক্ষম দক্ষ" অ্যালগরিদমে দ্বিগুণ লুপ করলে বোঝা যাচ্ছে যে অনেকগুলি থ্রেড অলস হয়ে যাবে এবং দীর্ঘমেয়াদে কর্মক্ষমতা হ্রাস পাবে। আমি কী মিস করছি?

উত্তর:


21

প্রথমত, পুনরায়: "জিপিইউগুলি কেবল জায়ান্ট সিমডি প্রসেসর এবং লক-স্টেপে কাজ করা উচিত", এটি এর চেয়ে কিছুটা জটিল। সমগ্র জিপিইউ lockstep চালানোর নেই। শেডার থ্রেডগুলি "ওয়ারপস" নামে 32 টি গ্রুপে সংগঠিত করা হয় (এনভিআইডিআইএ; এএমডি তে তারা "তরঙ্গফ্রন্টস" নামে পরিচিত, তবে একই ধারণা) of৪ এর গ্রুপ're একটি ওয়ার্পের মধ্যে, সমস্ত থ্রেড সিমড অ্যারে হিসাবে লকস্টেপে চালিত হয়। তবে, বিভিন্ন ওয়ার্প একে অপরের সাথে লকস্টেপে নেই। এছাড়াও, কিছু ওয়ার্প সক্রিয়ভাবে চলমান থাকতে পারে অন্যগুলি স্থগিত করা হতে পারে, অনেকটা সিপিইউ থ্রেডের মতো। ওয়ার্পগুলি স্থগিত করা যেতে পারে কারণ তারা কোনও কিছুর জন্য অপেক্ষা করছে (যেমন মেমোরি লেনদেনগুলি ফিরে আসার জন্য বা বাধাগুলি পরিষ্কার করতে), বা না থাকায় '

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

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

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

    নিষ্পাপ অ্যালগরিদমে সক্রিয় থ্রেডগুলির সংখ্যা বিবেচনা করুন। প্রবন্ধে চিত্র 2 এ খুঁজছি, আপনি যে সকল লিপি সক্রিয় দেখতে পারেন ব্যতীত প্রথম 2 জন্য উপর ম পুনরাবৃত্তির। তাই সঙ্গে এন থ্রেড, সক্রিয় থ্রেডের সংখ্যা ভালো যায় এন - 2 । উদাহরণস্বরূপ, এন = 1024 এর সাথে, পুনরাবৃত্তির জন্য সক্রিয় থ্রেডগুলির সংখ্যা হ'ল:

    1023, 1022, 1020, 1016, 1008, 992, 960, 896, 768, 512
    

    যদি আমি এটিকে সক্রিয় ওয়ার্পের সংখ্যায় (৩২ দ্বারা ভাগ করে এবং বৃত্তাকারে) রূপান্তর করি তবে আমি পাই:

    32, 32, 32, 32, 32, 31, 30, 28, 24, 16
    

    অন্যদিকে 289 এর সমষ্টি হিসাবে, কার্য-দক্ষ অ্যালগরিদম অর্ধেক হিসাবে অনেক থ্রেড দিয়ে শুরু হয়, তারপরে এটি প্রতিটি পুনরাবৃত্তির উপরে সক্রিয় সংখ্যাগুলির সংখ্যা অর্ধেক করে 1 অবধি নীচে নেমে আসে, তারপরে এটি ফিরে না আসা পর্যন্ত দ্বিগুণ হওয়া শুরু করে আবার অ্যারের আকার অর্ধেক:

     512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512
    

    এটিকে সক্রিয় ওয়ার্পে রূপান্তর করা:

    16, 8, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 8, 16
    

    যোগফল 71, যা কেবলমাত্র এক চতুর্থাংশ। সুতরাং আপনি দেখতে পাবেন যে পুরো অপারেশন চলাকালীন, কার্যক্ষম দক্ষ অ্যালগরিদমের সাথে সক্রিয় ওয়ার্পসের সংখ্যা অনেক কম। (প্রকৃতপক্ষে, মাঝখানে দীর্ঘ রান করার জন্য কেবল কয়েকটি মুষ্টিমেয় অ্যাক্টিভ ওয়ার্পস রয়েছে যার অর্থ বেশিরভাগ চিপটি দখল করা হয়নি comp যদি অতিরিক্ত গণনার কাজগুলি চলমান থাকে, যেমন, অন্যান্য সিডিডিএ স্ট্রিম থেকে, তারা এটি পূর্ণ করতে প্রসারিত করতে পারে অচেতন স্থান)

যা যা বলা হচ্ছে, এটি দুর্ভাগ্য যে, জিপিইউ রত্ন নিবন্ধগুলি এগুলির কোনও পরিষ্কারভাবে ব্যাখ্যা করে না, পরিবর্তে বিগ-ও "সংখ্যার সংখ্যার" বিশ্লেষণের দিকে মনোনিবেশ করে যা সম্পূর্ণ অপ্রাসঙ্গিক না হলেও এই অ্যালগরিদমটি কেন সে সম্পর্কে বিশদ বিবরণ মিস করে that দ্রুত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.