একটি ভাল সূচনা পয়েন্ট হ'ল রবার্ট এ। ভ্যান ডি গেইজন এবং এনরিক এস কুইন্টানা-অর্টির দ্য সায়েন্স অফ প্রোগ্রামিং ম্যাট্রিক্স কম্পিউটেশন book তারা বিনামূল্যে ডাউনলোড সংস্করণ সরবরাহ করে।
BLAS তিনটি স্তরে বিভক্ত:
স্তর 1 লিনিয়ার বীজগণিত ফাংশনগুলির একটি সেট সংজ্ঞা দেয় যা কেবল ভেক্টরগুলিতেই কাজ করে। এই ফাংশনগুলি ভেক্টরাইজেশন (যেমন এসএসই ব্যবহার করে) থেকে উপকৃত হয়।
স্তর 2 ফাংশন হ'ল ম্যাট্রিক্স-ভেক্টর অপারেশন, যেমন কিছু ম্যাট্রিক্স-ভেক্টর পণ্য। এই ফাংশনগুলি স্তর 1 এর ফাংশনগুলির ক্ষেত্রে প্রয়োগ করা যেতে পারে। যাইহোক, আপনি যদি এই ডেডিকেটেড বাস্তবায়ন সরবরাহ করতে পারেন যা কিছু মাল্টিপ্রসেসর আর্কিটেকচারকে ভাগ করে নেওয়া মেমরির সাথে ব্যবহার করে তবে আপনি এই ক্রিয়াকলাপগুলির কার্যকারিতা বাড়িয়ে তুলতে পারেন।
স্তর 3 ফাংশনগুলি ম্যাট্রিক্স-ম্যাট্রিক্স পণ্যের মতো ক্রিয়াকলাপ। আবার আপনি তাদের স্তর 2 এর পদক্ষেপে প্রয়োগ করতে পারেন। তবে লেভেল 3 ফাংশনগুলি ও (এন ^ 2) ডাটাতে ও (এন ^ 3) অপারেশন করে। সুতরাং যদি আপনার প্ল্যাটফর্মে ক্যাশে শ্রেণিবিন্যাস থাকে তবে আপনি যদি ক্যাশে অনুকূলিত / ক্যাশে বন্ধুত্বপূর্ণ একটি ডেডিকেটেড বাস্তবায়ন সরবরাহ করেন তবে আপনি কার্য সম্পাদন বাড়িয়ে তুলতে পারেন । এটি বইতে সুন্দরভাবে বর্ণনা করা হয়েছে। লেভেল 3 ফাংশনগুলির মূল উত্সাহটি ক্যাশে অপ্টিমাইজেশন থেকে আসে। এই বুস্টটি সমান্তরালতা এবং অন্যান্য হার্ডওয়্যার অপটিমাইজেশন থেকে দ্বিতীয় উত্সাহকে উল্লেখযোগ্যভাবে ছাড়িয়ে গেছে।
যাইহোক, বেশিরভাগ (বা সমস্ত) উচ্চ কার্যকারিতা বিএলএএস বাস্তবায়ন ফোর্টরানে প্রয়োগ করা হয় না। ATLAS সি তে প্রয়োগ করা হয় GotoBLAS / ওপেনবিএলএস সি তে প্রয়োগ করা হয় এবং এসেম্ব্লারগুলিতে এর কার্য সম্পাদনের গুরুতর অংশ। ফোর্টরানে কেবল বিএলএএস-এর রেফারেন্স প্রয়োগকরণ কার্যকর করা হয়। যাইহোক, এই সমস্ত BLAS বাস্তবায়ন একটি ফোর্টরান ইন্টারফেস সরবরাহ করে যাতে এটিকে ল্যাপাকের সাথে যুক্ত করা যেতে পারে (ল্যাপাক তার সমস্ত কর্মক্ষমতা BLAS থেকে লাভ করে)।
অনুকূলিত সংকলকগণ এই ক্ষেত্রে সামান্য ভূমিকা পালন করে (এবং গোটোব্ল্যাএস / ওপেনবিএলএসের জন্য সংকলকটি মোটেই গুরুত্বপূর্ণ নয়)।
আইএমএইচও-র কোনও বিএএলএস বাস্তবায়ন কপারস্মিথ-উইনোগ্রাদ অ্যালগরিদম বা স্ট্র্যাসেন অ্যালগরিদমের মতো অ্যালগরিদম ব্যবহার করে না। কারণ সম্পর্কে আমি ঠিক নিশ্চিত নই, তবে এটি আমার অনুমান:
- এই অ্যালগরিদমগুলির একটি ক্যাশে অনুকূলিতকরণ বাস্তবায়ন সরবরাহ করা সম্ভব নয় (যেমন আপনি আরও looseিলে থাকতেন তবে আপনি জিততেন)
- এই অ্যালগরিদমগুলি সংখ্যাগতভাবে স্থিতিশীল নয়। যেহেতু বিএলএএস হ'ল ল্যাপাকের গণনামূলক কার্নেল এটি কোনও অগ্রগতি নয়।
সম্পাদনা / আপডেট:
এই বিষয়ের জন্য নতুন এবং গ্রাউন্ড ব্রেকিং পেপার হলেন বিএলআইএসের কাগজপত্র । এগুলি ব্যতিক্রমীভাবে খুব ভাল লেখা আছে। আমার বক্তৃতাটির জন্য "হাই পারফরম্যান্স কম্পিউটিংয়ের জন্য সফটওয়্যার বেসিকস" আমি তাদের কাগজ অনুসরণ করে ম্যাট্রিক্স-ম্যাট্রিক্স পণ্যটি প্রয়োগ করেছি। আসলে আমি ম্যাট্রিক্স-ম্যাট্রিক্স পণ্যটির বেশ কয়েকটি রূপ প্রয়োগ করেছি implemented সহজতম রূপগুলি সম্পূর্ণ প্লেইন সিতে লিখিত এবং কোডের 450 এরও কম লাইনের রয়েছে। অন্যান্য সমস্ত রূপগুলি কেবল লুপগুলি অনুকূল করে তোলে
for (l=0; l<MR*NR; ++l) {
AB[l] = 0;
}
for (l=0; l<kc; ++l) {
for (j=0; j<NR; ++j) {
for (i=0; i<MR; ++i) {
AB[i+j*MR] += A[i]*B[j];
}
}
A += MR;
B += NR;
}
ম্যাট্রিক্স-ম্যাট্রিক্স পণ্যের সামগ্রিক কর্মক্ষমতা শুধুমাত্র এই লুপ উপর নির্ভর করে। প্রায় 99.9% সময় এখানে ব্যয় করা হয়। অন্যান্য ভেরিয়েন্টে আমি পারফরম্যান্সের উন্নতির জন্য ইন্টার্নিক এবং এসেম্বলার কোড ব্যবহার করেছি। আপনি টিউটোরিয়ালটি এখানে সমস্ত রূপের মধ্য দিয়ে যেতে দেখতে পারেন:
#BLAS: জিমের টিউটোরিয়াল (ম্যাট্রিক্স-ম্যাট্রিক্স পণ্য)
বিএলআইএসের কাগজপত্রগুলির সাথে একত্রে এটি বুঝতে মোটামুটি সহজ হয়ে যায় যে কীভাবে ইনটেল এমকেএল এর মতো লাইব্রেরিগুলি এই ধরনের পারফরম্যান্স অর্জন করতে পারে। এবং কেন আপনি সারি বা কলামের বড় স্টোরেজ ব্যবহার করেন তা বিবেচ্য নয়!
চূড়ান্ত মানদণ্ডগুলি এখানে রয়েছে (আমরা আমাদের প্রকল্পকে ulBLAS বলেছি):
#BLAS, BLIS, MKL, ওপেনবিএলএস এবং ইগেনের জন্য বেঞ্চমার্ক
অন্য সম্পাদনা / আপডেট:
আমি লিনিয়ার সমীকরণের সিস্টেম সমাধানের মতো সংখ্যাগত লিনিয়ার বীজগণিত সমস্যার জন্য কীভাবে বিএলএলএস ব্যবহার করা হয় সে সম্পর্কে কিছু টিউটোরিয়াল লিখেছিলাম:
উচ্চ পারফরম্যান্স এলইউ ফ্যাক্টরাইজেশন
(এই এলইউ অনুকরণটি উদাহরণস্বরূপ রৈখিক সমীকরণের একটি সিস্টেম সমাধান করার জন্য মতলব দ্বারা ব্যবহৃত))
আমি সময় খুঁজে আশা করি বর্ণনা প্রদর্শন কিভাবে মত এল ইউ গুণকনির্ণয় এর অতিমাত্রায় প্রসারণযোগ্য সমান্তরাল বাস্তবায়ন উপলব্ধি করা থেকে টিউটোরিয়াল প্রসারিত করতে রক্তরস ।
ঠিক আছে, আপনি এখানে যান: একটি ক্যাশে কোডিং অপ্টিমাইজড সমান্তরাল এলইউ ফ্যাক্টরাইজেশন
পিএস: আমি ইউবিএলএসের কর্মক্ষমতা উন্নত করতে কিছু পরীক্ষা-নিরীক্ষাও করেছি। ইউবিএলএসের পারফরম্যান্সকে উত্সাহিত করতে এটি বেশ সহজ (হ্যাঁ, কথায় কথায় খেলুন :))
ইউবিএলএস-এ পরীক্ষা-নিরীক্ষা ।
এখানে ব্লেজ সহ একই প্রকল্প :
ব্লাজে পরীক্ষা-নিরীক্ষা ।