সমস্যাটি ইতিমধ্যে 'এক্সপ্রেশন টেম্পলেট (ইটি)' শব্দটি দিয়ে শুরু হয়। আমি জানি না এর সুনির্দিষ্ট সংজ্ঞা আছে কিনা। তবে এর সাধারণ ব্যবহারে এটি কোনওভাবে দম্পতিদের 'কীভাবে আপনি লিনিয়ার বীজগণিত এক্সপ্রেশনগুলি কোড করেন' এবং 'এটি কীভাবে গণনা করা হয়'। উদাহরণ স্বরূপ:
আপনি ভেক্টর অপারেশন কোড
v = 2*x + 3*y + 4*z; // (1)
এবং এটি একটি লুপ দ্বারা গণনা করা হয়
for (int i=0; i<n; ++i) // (2)
v(i) = 2*x(i) + 3*y(i) + 4*z(i);
আমার মতে এটি দুটি ভিন্ন জিনিস এবং ডিকপল করা দরকার: (1) একটি ইন্টারফেস এবং (2) একটি সম্ভাব্য বাস্তবায়ন। মানে প্রোগ্রামিংয়ে এটি প্রচলিত অনুশীলন। অবশ্যই (2) একটি ভাল ডিফল্ট বাস্তবায়ন হতে পারে তবে সাধারণভাবে আমি একটি বিশেষায়িত, নিবেদিত বাস্তবায়ন কাজে লাগাতে সক্ষম হতে চাই। উদাহরণস্বরূপ, আমি চাই যে একটি ফাংশন মত
myGreatVecSum(alpha, x, beta, y, gamma, z, result); // (3)
যখন আমি কোডিং করছি তখন ফোন করুন (1)। হতে পারে (3) কেবল অভ্যন্তরীণভাবে একটি লুপ (2) এর মতো ব্যবহার করে। তবে ভেক্টরের আকারের উপর নির্ভর করে অন্যান্য প্রয়োগগুলি আরও কার্যকর হতে পারে। যাইহোক, উচ্চ পারফরম্যান্সের কিছু বিশেষজ্ঞ যথাসম্ভব বাস্তবায়ন এবং টিউন করতে পারেন (3)। সুতরাং যদি (1) (3) এর কলটিতে ম্যাপ করা যায় না তবে আমি বরং (1) এর সিনট্যাকটিক চিনি এড়াতে এবং সরাসরি (3) সরাসরি কল করুন।
আমি যা বর্ণনা করি তা নতুন কিছু নয়। বিপরীতে, এটি BLAS / এলপ্যাকের পিছনে ধারণা:
- LAPACK- এ সমস্ত পারফরম্যান্সের সমালোচনামূলক ক্রিয়াকলাপগুলি BLAS ফাংশনগুলিতে কল করে সম্পন্ন হয়।
- BLAS কেবল সেই লিনিয়ার বীজগণিত এক্সপ্রেশনগুলির জন্য একটি ইন্টারফেস সংজ্ঞায়িত করে যা সাধারণত প্রয়োজন হয়।
- BLAS এর জন্য বিভিন্ন অপ্টিমাইজড বাস্তবায়ন বিদ্যমান।
যদি বিএলএএস এর পরিধি পর্যাপ্ত না হয় (যেমন এটি (3) এর মতো কোনও ফাংশন সরবরাহ করে না) তবে বিএলএএস এর পরিধি বাড়ানো যেতে পারে। সুতরাং 60 এবং 70 এর দশকের এই ডাইনোসরটি তার প্রস্তর যুগের সরঞ্জামের সাথে উপলব্ধি করে যে ইন্টারফেস এবং বাস্তবায়নের একটি পরিষ্কার এবং অরথোগোনাল পৃথকীকরণ। এটি মজার একটি ধরণের যে (সর্বাধিক) সংখ্যার সি ++ গ্রন্থাগারগুলি সফ্টওয়্যার মানের এই স্তরটি অর্জন করে না। যদিও প্রোগ্রামিং ভাষা নিজেই অনেক বেশি পরিশীলিত। সুতরাং বিএলএএস / ল্যাপাক এখনও জীবিত এবং সক্রিয়ভাবে বিকাশিত হওয়ার জন্য অবাক হওয়ার কিছু নেই।
সুতরাং আমার মতে ETs প্রতি খারাপ নয়। তবে কীভাবে তারা সংখ্যাসূচক সি ++ লাইব্রেরিতে সাধারণত ব্যবহৃত হয় সেগুলি বৈজ্ঞানিক কম্পিউটিং চেনাশোনাগুলিতে খুব খারাপ খ্যাতি অর্জন করেছিল।