লাইব্রেরি ফাংশন জন্য FLOP গণনা


13

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

বিশেষ ফাংশন দ্বারা, আমরা এই জাতীয় জিনিসগুলি বোঝাতে চাই:

  • মেপুঃ ()
  • বর্গমূল ()
  • পাপ / কোসাইন্ / কষা ()

যা সাধারণত সিস্টেম লাইব্রেরি দ্বারা সরবরাহ করা হয়।

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

এই পুরো আলোচনাটি অবশ্যই আর্কিটেকচারের উপর অত্যন্ত নির্ভরশীল। এই আলোচনার জন্য আমরা আমাদের traditionalতিহ্যবাহী সাধারণ উদ্দেশ্যে আর্কিটেকচারের মধ্যে সীমাবদ্ধ রাখতে পারি এবং বিশেষ ফাংশন ইউনিট (জিপিইউ ইত্যাদি) সহ তাদের বাদ দিতে পারি

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


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

ধন্যবাদ! আমি যথেষ্ট পরিষ্কার ছিল না। আমি আরও ভাল বিপরীতে সরবরাহ করার জন্য সম্পাদনা করেছি।
পিটার ব্রুনে

আমি অবাক হয়ে জানতে পারি যে পাপ, কোস এবং স্কয়ার্টগুলি আসলে x86 নির্দেশাবলীর x87 এর ভাসমান-পয়েন্ট সাবসেটে বাস্তবায়িত হয়েছে। আমি মনে করি আমি আপনার বক্তব্যটি পেয়েছি, তবে আমি মনে করি গ্রহণযোগ্য অনুশীলনটি কেবল এগুলিকে কিছুটা বড়
ধাপের

@ অ্যারোনআহমাদিয়া এক দশকেরও বেশি সময় ধরে x87 ব্যবহারের কারণ নেই। ভাগ করুন এবং sqrt()এসএসই / এভিএক্স এ আছেন তবে এগুলি সংযোজন এবং গুণনের চেয়ে অনেক বেশি সময় নেয়। এছাড়াও, তারা স্যান্ডি ব্রিজ এভিএক্স-তে দুর্বলভাবে ভেক্টরাইজড রয়েছে, এসএসই নির্দেশের দ্বিগুণ সময় নেওয়ার পরে (অর্ধ প্রস্থের সাথে)। উদাহরণস্বরূপ, ডাবল নির্ভুলতা এভিএক্স (4 ডাবল প্রশস্ত) একটি প্যাকড গুণিত এবং প্যাকযুক্ত প্রতিটি চক্র (মেমরির কোনও নির্ভরতা বা স্টলগুলি ধরে না রেখে) যোগ করতে পারে যা চক্র প্রতি 8 ফ্লপ। এই "4 ফ্লপ" করতে এই বিভাজনের জন্য 20 থেকে 44 চক্র লাগে।
জেড ব্রাউন

স্কয়ার্ট () পাওয়ারপিসিতে alচ্ছিক। এই আর্কিটেকচারের অনেকগুলি এম্বেড করা চিপ নির্দেশনা কার্যকর করে না, উদাহরণস্বরূপ ফ্রিস্কেল MPC5xxx সিরিজ।
দামিয়েন

উত্তর:


10

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

হার্ডওয়্যার-সমর্থিত ভাসমান পয়েন্ট ক্রিয়াকলাপ

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

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

  • vaddpd: প্যাকড সংযোজন, 1 চক্রের জন্য একক দখল, বিলম্ব / বিপরীত থ্রুটপুট 3/1
  • vmulpd: প্যাকযুক্ত গুণ, একক এম, 5/1
  • vmaxpd: প্যাকড সিলেকড পেয়ারওয়াই সর্বাধিক, ইউনিট এ, 3/1
  • vdivpd: ইনপুট উপর নির্ভর করে প্যাকড ডিভাইড, ইউনিট এম (এবং কিছু এ), 21/20 থেকে 45/44
  • vsqrtpd: ইনপুটটির উপর নির্ভর করে স্কোয়ার রুট, কিছু A এবং M, 21/21 থেকে 43/43 প্যাক করে
  • vrsqrtps: একক নির্ভুলতা ইনপুট জন্য স্বল্প-যথার্থ পারস্পরিক স্কোয়ার রুট প্যাক করা (8 floats)

কী দিয়ে ওভারল্যাপ হতে পারে vdivpdএবং vsqrtpdস্পষ্টতই সূক্ষ্ম এবং এএফআইকে, কোথাও নথিভুক্ত নয় সেগুলির সুনির্দিষ্ট শব্দার্থবিজ্ঞান । বেশিরভাগ ব্যবহারে, আমি মনে করি যে ওভারল্যাপের জন্য খুব কম সম্ভাবনা রয়েছে, যদিও ম্যানুয়ালটিতে বর্ণিত পরামর্শ দেয় যে একাধিক থ্রেড এই নির্দেশিকায় ওভারল্যাপের জন্য আরও সম্ভাবনা সরবরাহ করতে পারে। আমরা প্রতি চক্রটিতে মোট চক্রের জন্য মোট 8 টি ফ্লপের জন্য vaddpdএবং যদি vmulpdপ্রতিটি চক্রটি শুরু করি তবে আমরা পিক ফ্লপগুলিকে আঘাত করতে পারি । ঘন ম্যাট্রিক্স-ম্যাট্রিক্স গুণমান ( dgemm) এই শীর্ষে যথাযথভাবে পেতে পারে can

বিশেষ নির্দেশাবলীর জন্য ফ্লপগুলি গণনা করার সময়, আমি এফপিইউর কতটা দখল করে আছে তা দেখব। ধরুন যে আপনার ইনপুটটির পরিসরে vdivpd, সম্পূর্ণ ইউনিট এম দখল করে গড়ে গড়ে 24 টি চক্র নিয়েছে, তবে সংযোজনে অর্ধ চক্রের জন্য সংযোজন করা যেতে পারে (যদি এটি উপলব্ধ ছিল)। এফপিইউ সেই চক্রগুলির সময় 24 টি প্যাকড গুণক এবং 24 টি প্যাক সংযোজন সম্পাদন করতে সক্ষম (তবে নিখুঁতভাবে ইন্টারলিভড vaddpdএবং vmulpd), তবে vdivpdসর্বোত্তমভাবে আমরা যা করতে পারি তা হল 12 টি অতিরিক্ত প্যাক যুক্ত। যদি আমরা ধরে নিই যে বিভাগটি করার সর্বোত্তম সম্ভাব্য উপায়টি হ'ল হার্ডওয়্যার (যুক্তিসঙ্গত) ব্যবহার করা হয় তবে আমরা vdivpd36 টি প্যাকড "ফ্লপ" হিসাবে গণনা করতে পারি, এটি নির্দেশ করে যে প্রতিটি স্কেলার বিভাজনকে 36 "ফ্লপ" হিসাবে গণনা করা উচিত।

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

y *= (3 - x*y*y)*0.5;

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

গ্রন্থাগার-সরবরাহিত গণিত ফাংশন

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

আমি ভাল ভেক্টর ম্যাথ লাইব্রেরিটি বেসলাইন হিসাবে ব্যবহার করার পরামর্শ দিই (যেমন ইন্টেলের ভিএমএল, এমকেএল এর অংশ)। প্রতিটি কলের জন্য চক্রের সংখ্যা পরিমাপ করুন এবং সেই সংখ্যাটি থেকে চূড়া অর্জনযোগ্য ফ্লপগুলি দিয়ে গুণ করুন। সুতরাং যদি কোনও প্যাকযুক্ত ঘনিষ্ঠভাবে মূল্যায়ন করতে 50 টি চক্র লাগে, তবে এটি নিবন্ধের প্রস্থের 100 ফ্লপ গুণ হিসাবে গণনা করুন। দুর্ভাগ্যক্রমে, ভেক্টর ম্যাথ লাইব্রেরিগুলি কখনও কখনও কল করা শক্ত হয় এবং সমস্ত বিশেষ ফাংশন নেই, সুতরাং আপনি স্কেলার গণিতটি শেষ করতে পারেন, আপনি যদি আমাদের অনুমানীয় স্কেলার সূচককে 100 ফ্লপ হিসাবে গণনা করেন (যদিও এটি এখনও এখনও 50 লাগে) চক্র, সুতরাং আপনি কেবলমাত্র 25% "শিখর" পাচ্ছেন যদি সমস্ত সময় এই ক্ষতিকারকগুলির মূল্যায়ন করতে ব্যয় হয়)।

অন্যরা যেমন উল্লেখ করেছে, আপনি পিএপিআই বা বিভিন্ন ইন্টারফেস ব্যবহার করে চক্র এবং হার্ডওয়্যার ইভেন্টের কাউন্টার গণনা করতে পারেন। সাধারণ চক্র গণনার জন্য, আপনি rdtscইনলাইন সমাবেশের স্নিপেটের সাথে নির্দেশিকাটি ব্যবহার করে সরাসরি চক্র কাউন্টারটি পড়তে পারেন ।


7

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


4

আমি এই প্রশ্নের উত্তর দিতে যাচ্ছি যেমন আপনি জিজ্ঞাসা করেছেন:

"সংখ্যাগত রৈখিক বীজগণিত থেকে আসা traditionalতিহ্যবাহী মাল্টিপল-অ্যাড-ক্যারি এফএলওপি গণনার পরিবর্তে আমি কীভাবে অ্যালগরিদমগুলির কার্য সম্পাদনের ভারসাম্যপূর্ণভাবে তুলনা বা ভবিষ্যদ্বাণী করব?"

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

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

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

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

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


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

: Aron, এই উত্তর অধিকাংশ অন্য প্রশ্নের উত্তর পক্ষে পিটার্স প্রশ্ন পাশকাটিয়ে বলে মনে হয় scicomp.stackexchange.com/questions/114
জেড ব্রাউন

@ জেডব্রাউন, আমি একমত, আরও অনেক শক্ত উত্তর একসাথে দেওয়ার জন্য সময় দেওয়ার জন্য ধন্যবাদ।
অরন আহমদিয়া

0

গণনা ফ্লপ কেন বিরক্ত করবেন? প্রতিটি ক্রিয়াকলাপের জন্য কেবল চক্র গণনা করুন এবং আপনার কাছে এমন কিছু থাকবে যা সর্বজনীন।

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