বিএলএএস, ল্যাপাক এবং আটলাসের মধ্যে কী সম্পর্ক?


143

আমি বুঝতে পারছি না যে কীভাবে BLAS, LAPACK এবং ATLAS সম্পর্কিত এবং কীভাবে আমি তাদের একসাথে ব্যবহার করব! আমি তাদের সমস্ত ম্যানুয়ালটি সন্ধান করেছি এবং আমার কাছে ব্লেস এবং ল্যাপাক সম্পর্কে সাধারণ ধারণা রয়েছে এবং আমি যে খুব কম উদাহরণ পেয়েছি সেগুলি দিয়ে কীভাবে সেগুলি ব্যবহার করব, তবে এটি কীভাবে সম্পর্কিত তা দেখার জন্য আমি কোনও প্রকৃত উদাহরণ খুঁজে পাচ্ছি না এই দুটি.

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


উত্তর:


156

বিএলএএস হ'ল নিম্ন-স্তরের ম্যাট্রিক্স এবং ভেক্টর গাণিতিক ক্রিয়াকলাপগুলির সংকলন ("একটি স্কেলারের সাহায্যে ভেক্টরকে গুণ করুন", "দুটি ম্যাট্রিককে গুণিত করুন এবং তৃতীয় ম্যাট্রিক্স যুক্ত করুন" ইত্যাদি) ...

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

অ্যাটলাস হ'ল বিএলএএস ইন্টারফেসের একটি বহনযোগ্য যুক্তিসঙ্গতভাবে কার্যকর প্রয়োগ, এটি বেশিরভাগ ব্যবহৃত ল্যাপ্যাক অপারেশনগুলির কয়েকটি প্রয়োগ করে।

"আপনার ব্যবহার করা উচিত" আপনি কী করার চেষ্টা করছেন এবং কোন প্ল্যাটফর্মটি ব্যবহার করছেন তার বিশদটির উপর কিছুটা নির্ভর করে। তবে আপনি "আটলাস + ল্যাপক ব্যবহার করুন" দিয়ে খুব বেশি ভুল করবেন না।


ব্যাখ্যার জন্য ধন্যবাদ। আপনি কীভাবে আটলাস + ল্যাপ্যাক ব্যবহার করবেন তার কোনও উদাহরণ জানেন? এগুলি কীভাবে ব্যবহার করতে হয় তা বুঝতে আমার কয়েকটি উদাহরণ দেখতে হবে! আমি তাদের জন্য এবং তারা কী করার তত্ত্বটি বুঝতে পেরেছি, তবে অনুশীলনে কীভাবে প্রয়োগ করা যায় সে সম্পর্কে আমি খুব কমই সি তে উদাহরণ খুঁজে পেতে পারি।
মাখলাঘি

1
@ এস্ট্রোবয়: আপনি আসলে যা করার চেষ্টা করছেন সে সম্পর্কে আমাকে কিছু তথ্য দিতে পারেন? ল্যাপাক বিশেষত একটি বিশাল গ্রন্থাগার।
স্টিফেন ক্যানন

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

BLAS, LAPACK বা MKL এর মতো কিছু কি মেমরির চেয়ে অনেক বড় অজবেটসিসের সাথে স্বচ্ছতার সাথে কাজ করতে সক্ষম?
স্ক্যান

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

40

কিছুক্ষণ আগে যখন আমি কিছু রৈখিক বীজগণিত শুরু করছেন C, আমার একটি আশ্চর্য জন্য তাই কয়েক টিউটোরিয়াল আছে দেখতে হিসেবে এসেছিলেন BLAS, LAPACKএবং অন্যান্য মৌলিক APIসত্য যে তারা একরকম অনেক অন্যান্য লাইব্রেরি ভিত্তিস্বরূপ সত্ত্বেও, এস। যে কারণে আমি ইন্টারনেটের মাধ্যমে সব উদাহরণ / টিউটোরিয়াল আমি সব খুঁজে পাইনি সংগ্রহ শুরু BLAS, CBLAS, LAPACK, CLAPACK, LAPACKE, ATLAS, OpenBLAS... মধ্যে এই গিটহাব রেপো

ঠিক আছে, আমার আপনাকে সতর্ক করা উচিত যে যান্ত্রিক প্রকৌশলী হিসাবে আমার এই জাতীয় গিটার সংগ্রহস্থল বা গিটহাব পরিচালনার সামান্য অভিজ্ঞতা আছে। এটি প্রথমে আপনার ছেলের কাছে সম্পূর্ণ জগাখিচুড়ি মনে হবে। তবে আপনি যদি অগোছালো কাঠামো কাটিয়ে ওঠার ব্যবস্থা করেন তবে আপনি সব ধরণের উদাহরণ এবং নির্দেশাবলীর সন্ধান পাবেন যা একটি সহায়ক হতে পারে। আমি তাদের বেশিরভাগ চেষ্টা করেছি, তারা নিশ্চিত করে যে তারা সংকলন করে। এবং যেগুলি সংকলন করে না আমি তা উল্লেখ করেছি। আমি তাদের অনেক সঙ্গে compilable হতে সংশোধন করেছেন GNU compilers( gcc, g++এবং gfortran)। আমি তৈরি করেছি MakeFileযা আপনি বা প্রোগ্রামে স্বতন্ত্র Fortran/FORTRANরুটিনগুলিকে কীভাবে কল করতে পারেন তা জানতে শিখতে পারেন । আমি ম্যাক এবং লিনাক্সের জন্য কিছু ইনস্টলেশন সংক্রান্ত নির্দেশাবলীও রেখেছি (দুঃখিত উইন্ডোজ বলছি!)। আমিও কিছু বানিয়েছিCC++bash .sh এর মধ্যে কয়েকটি লাইব্রেরির স্বয়ংক্রিয় সংকলনের জন্য ফাইল।

তবে আপনার অন্যান্য প্রশ্নে যাচ্ছেন: BLASএবং LAPACKএটি APIনির্দিষ্ট SDKএস নয়। এগুলি বাস্তবায়ন বা গ্রন্থাগারগুলির পরিবর্তে নির্দিষ্টকরণ বা ভাষার বর্ধনের তালিকা। সঙ্গে বলেন যে, সেখানে করে মূল বাস্তবায়নের হয় Netlib মধ্যে FORTRAN 77, যা অধিকাংশ লোক পড়ুন (confusingly!) যখন কথা বলছেন BLASএবং LAPACK। তাই আপনি যদি অদ্ভুত জিনিস অনেক যখন এই ব্যবহার দেখতে APIগুলি কারণ আপনি আসলে কলিং হয় FORTRANমধ্যে রুটিন Cবদলে Cলাইব্রেরি ও ফাংশন। ATLASএবং OpenBLASশ্রেষ্ঠ বাস্তবায়নের কিছু BLASএবং LACPACKযেমন যতদূর আমি জানি। তারা APIআমার জ্ঞানের সাথে মেনে চলে যদিও তারা প্রয়োগ করা হয়েছেC/C++স্ক্র্যাচ থেকে (নিশ্চিত নয়!)। সেখানে GPGPU বাস্তবায়নের হয় APIs ব্যবহার OpenCL: CLBlast , clBLAS , clMAGMA , ArrayFire এবং ViennaCL কিছু উল্লেখ নেই। নির্দিষ্ট হার্ডওয়্যার বা প্ল্যাটফর্মের জন্য অনুকূলিত বিক্রেতার নির্দিষ্ট প্রয়োগগুলিও রয়েছে, যা আমি কাউকে তাদের ব্যবহার করার জন্য দৃ strongly়ভাবে নিরুৎসাহিত করি।

এমন যে কেউ ব্যবহার শিখতে চায় আমার সুপারিশ BLASএবং LAPACKCশিখতে FORTRAN-Cমিশ্র প্রোগ্রামিং প্রথম। উল্লিখিত রেপোর প্রথম অধ্যায়টি এই বিষয়ে উত্সর্গীকৃত এবং সেখানে আমি বিভিন্ন ধরণের উদাহরণ সংগ্রহ করেছি।

পিএস আমি সময়ে সময়ে ভান্ডারের ডিভ শাখায় কাজ করছি । মনে হচ্ছে কিছুটা কম অগোছালো!


ল্যাপাকের উইকিপিডিয়া পৃষ্ঠাটি "ল্যাপাক (লিনিয়ার বীজগণিত প্যাকেজ) একটি স্ট্যান্ডার্ড সফ্টওয়্যার লাইব্রেরি" দিয়ে শুরু হয়। আপনি কি বলছেন যে এটি ভুল, কারণ এটি একটি এপিআই স্পেসিফিকেশন এবং বাস্তবায়ন নয়?
নোয়া_আগস্ট

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

1
@ নোয়া_এস আমি উইকিপিডিয়াকে "" রেফারেন্স হিসাবে ব্যবহার করতাম না, তবে আমার সীমিত জ্ঞানের জন্য, ল্যাপাকের বেশ কয়েকটি বাস্তবায়ন রয়েছে are আমি মনে করি এটিকে এপিআই বলা এখন আরও সঠিক। তবে দয়া করে আমি ভুল হলে আমাকে সংশোধন করুন।
17:48

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

1
@ নোহ_আস এখানে কোনও বৈপরীত্য নেই, প্রতিটি লাইব্রেরির একটি এপিআই রয়েছে, যা এপিআই সুসংগত থাকার সময় প্রকৃত কার্যকারিতা পুনরায় করা সম্ভব করে এবং ল্যাপকের সাথে এটি ঘটেছিল।
অ্যান্ড্রে

17

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

২০০০ এর দশকের গোড়ার দিকে, কাজুশিগ গোটো এসেছিলেন, যারা দেখিয়েছিলেন যে কীভাবে কার্যকর দক্ষতা প্রয়োগের হাত দিয়ে কোড করা যায়। আপনি নিউ ইয়র্ক টাইমসের একটি আকর্ষণীয় নিবন্ধ উপভোগ করতে পারেন: https://www.nytimes.com/2005/11/28/technology/writing-the-fastest-code-by-hand-for-fun-a-human- কম্পিউটার রাখে html

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

গোটোবিএলএসের পিছনে ধারণাগুলি একটি নতুন বাস্তবায়নে রিফ্যাক্ট করা হয়েছিল, বিএলএএস-এর মতো লাইব্রেরি ইনস্ট্যান্টেশন সফটওয়্যার (বিএলআইএস) ফ্রেমওয়ার্ক ( https://github.com/flame/blis ), যা একই অ্যালগরিদমগুলি কার্যকর করে, তবে কোডটি কাঠামো যাতে কম তৈরি করে একটি নতুন আর্কিটেকচারের জন্য কাস্টম প্রয়োগ করা দরকার। বিএলআইএস সি তে কোডড is

এই আলোচনাটি যা দেখায় তা হ'ল বিএলএএস এর অনেকগুলি বাস্তবায়ন রয়েছে। বিএলএএসগুলি নিজেরাই ইন্টারফেসের জন্য একটি মানসম্মত মান। আটলাস এক সময় শিল্পের রাজ্য ছিল। এখন আর নেই।


0

যতদূর আমি সচেতন, এবং এটি আটলাস সংগ্রহস্থলের মাধ্যমে কাজ করার পরে, মনে হয় এটি সিএতে BLAS এর পুনরায় বাস্তবায়ন অন্তর্ভুক্ত করেছে এর চেয়ে আরও কিছু আছে তবে আমি আশা করি এটি প্রশ্নের উত্তর দিয়েছে।

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