এটি সুস্পষ্ট মনে হতে পারে, তবে কম্পিউটারগুলি সূত্রগুলি কার্যকর করে না , তারা কোড চালায় এবং কতক্ষণ সময় লাগবে তা সরাসরি কার্যকর করা কোডের উপর এবং কেবল পরোক্ষভাবে যে কোডটি প্রয়োগ করে তার উপর নির্ভর করে। কোডের দুটি লজিকালি অভিন্ন টুকরোতে খুব আলাদা পারফরম্যান্স বৈশিষ্ট্য থাকতে পারে। কিছু কারণ যা বিশেষত ম্যাট্রিক্সের গুণায় ক্রপ হওয়ার সম্ভাবনা রয়েছে:
- একাধিক থ্রেড ব্যবহার করা হচ্ছে। প্রায় কোনও আধুনিক সিপিইউ নেই যার একাধিক কোর নেই, অনেকের 8 টি পর্যন্ত রয়েছে এবং উচ্চ-পারফরম্যান্সের কম্পিউটিংয়ের জন্য বিশেষায়িত মেশিনগুলিতে বেশ কয়েকটি সকেট জুড়ে সহজেই 64 থাকতে পারে। স্পষ্ট উপায়ে কোড লেখার জন্য, সাধারণ প্রোগ্রামিং ভাষায়, এর মধ্যে একটির ব্যবহার করে। অন্য কথায়, এটি চলমান মেশিনের উপলব্ধ কম্পিউটিং সংস্থাগুলির 2% এরও কম ব্যবহার করতে পারে ।
- সিমডি নির্দেশাবলী ব্যবহার করে (বিভ্রান্তিমূলকভাবে এটিকে "ভেক্টরাইজেশন" বলা হয় তবে প্রশ্নের টেক্সট উদ্ধৃতিগুলির তুলনায় ভিন্ন অর্থে)। সংক্ষেপে, 4 বা 8 বা এর চেয়ে বেশি স্কেলার পাটিগণিত নির্দেশের পরিবর্তে, সিপিইউকে এমন একটি নির্দেশ দিন যা 4 বা 8 তে পাটিগণিত সম্পাদন করে বা সমান্তরালে রেজিস্ট্রেশন করে। এটি আক্ষরিকভাবে কিছু গণনা করতে পারে (যখন তারা নির্দেশের জন্য পুরোপুরি স্বতন্ত্র এবং ফিট হয়ে থাকে) 4 বা 8 বার দ্রুত হয়।
- ক্যাশে স্মার্ট ব্যবহার করা । মেমোরি অ্যাক্সেস দ্রুত হয় যদি তারা অস্থায়ীভাবে এবং স্থানিকভাবে সুসংগত হয়, অর্থাত্ ক্রমাগত প্রবেশাধিকারগুলি নিকটবর্তী ঠিকানাগুলিতে হয় এবং দু'বার কোনও ঠিকানা অ্যাক্সেস করার সময় আপনি দীর্ঘ বিরতি না দিয়ে দু'বার দ্রুত উত্তরাধিকারে দু'বার অ্যাক্সেস করেন।
- জিপিইউ-র মতো এক্সিলারেটর ব্যবহার করে। এই ডিভাইসগুলি সিপিইউগুলির থেকে একেবারেই আলাদা প্রাণী এবং তাদের দক্ষতার সাথে প্রোগ্রামিং করা এটির নিজস্ব একটি সম্পূর্ণ শিল্প ফর্ম। উদাহরণস্বরূপ, তাদের কয়েকশো কোর রয়েছে, যা কয়েক ডজন কোরের গ্রুপে বিভক্ত হয়েছে এবং এই গোষ্ঠীগুলি সংস্থানগুলি ভাগ করে নিচ্ছে - এগুলি কয়েক কিবি মেমরি শেয়ার করে যা সাধারণ স্মৃতির চেয়ে অনেক দ্রুত এবং যখন গ্রুপের কোনও কোর একটি কার্যকর করে
if
বিবৃতিতে group গোষ্ঠীর অন্যান্য সমস্ত ব্যক্তির এটির জন্য অপেক্ষা করতে হবে।
- বেশ কয়েকটি মেশিনের উপর কাজ বিতরণ করুন (সুপার কম্পিউটারগুলিতে অত্যন্ত গুরুত্বপূর্ণ!) যা নতুন মাথাব্যথার একটি বিশাল সংকলন প্রবর্তন করে তবে অবশ্যই, বৃহত্তর বৃহত কম্পিউটিং সংস্থানগুলিতে অ্যাক্সেস দিতে পারে।
- স্মার্ট আলগোরিদিম ম্যাট্রিক্স গুণনের জন্য সাধারণ ও (এন ^ 3) অ্যালগরিদম, উপরের কৌশলগুলি সাথে যথাযথভাবে অনুকূলিত করা যুক্তিসঙ্গত ম্যাট্রিক্স আকারের জন্য সাব-কিউবিকের চেয়ে প্রায়শই দ্রুত হয় তবে কখনও কখনও তারা জয়ী হয়। স্পারস ম্যাট্রিক্সের মতো বিশেষ ক্ষেত্রে আপনি বিশেষায়িত অ্যালগরিদম লিখতে পারেন।
প্রচুর স্মার্ট ব্যক্তি সাধারণ লিনিয়ার বীজগণিত ক্রিয়াকলাপগুলির জন্য খুব কার্যকর কোড লিখেছেন , উপরোক্ত কৌশলগুলি ব্যবহার করে এবং আরও অনেক কিছু এবং সাধারণত বোকা প্ল্যাটফর্ম-নির্দিষ্ট কৌশলগুলি সহ। অতএব, আপনার সূত্রকে ম্যাট্রিক্স গুণে রূপান্তরিত করুন এবং তারপরে পরিপক্ক লিনিয়ার বীজগণিত গ্রন্থাগারে কল করে সেই গণনাটি কার্যকর করে সেই অপ্টিমাইজেশন প্রচেষ্টা থেকে উপকার পাওয়া যাবে। বিপরীতে, যদি আপনি কেবল উচ্চ স্তরের ভাষায় সুস্পষ্ট উপায়ে সূত্রটি লিখেন তবে শেষ পর্যন্ত উত্পন্ন মেশিন কোডটি সেই কৌশলগুলি ব্যবহার করবে না এবং তত দ্রুত হবে না। আপনি ম্যাট্রিক্স সূত্রটি গ্রহণ করে এবং নিজেকে লিখেছেন এমন একটি নিষ্পাপ ম্যাট্রিক্স গুণন রুটিন কল করে এটি প্রয়োগ করা হলে এটিও সত্য (আবারও সুস্পষ্ট উপায়ে)।
দ্রুত কোড তৈরি করা কাজ লাগে , এবং প্রায়শই বেশিরভাগ কাজ আপনি যদি সেই শেষ আউন্সটির সম্পাদন করতে চান want যেহেতু অনেকগুলি গুরুত্বপূর্ণ গণনা লিনিয়ার বীজগণিত ক্রিয়াকলাপগুলির সংমিশ্রণ হিসাবে প্রকাশ করা যায়, এই ক্রিয়াকলাপগুলির জন্য অত্যন্ত অনুকূলিতকরণ কোড তৈরি করা অর্থনৈতিক। আপনার এক-বিশেষায়িত ব্যবহারের কেস, যদিও? আপনি ব্যতীত কেউ সে সম্পর্কে চিন্তা করে না, সুতরাং এটি থেকে হ্যাকটি অপ্টিমাইজ করা অর্থনৈতিক নয়।