পাইথনৰ কাৰ্যক্ষমতা: নেটিভ নাম্পাই লুপ, কলবেক আৰু ৰূপান্তৰৰ খৰচ
নিয়ন্ত্ৰিত চি.পি.ইউ.-কেৱল সাংখ্যিক পৰীক্ষাত চিপিথন লুপ, নাম্পাই এৰিথমেটিক, পাইথন কলবেক ৰেপাৰ আৰু এটা কম্পাইল্ড নাম্বা লুপৰ মাজেৰে একেটা মান অনুসৰণ কৰা হৈছে।
নিয়ন্ত্ৰিত চি.পি.ইউ.-কেৱল সাংখ্যিক পৰীক্ষাত চিপিথন লুপ, নাম্পাই এৰিথমেটিক, পাইথন কলবেক ৰেপাৰ আৰু এটা কম্পাইল্ড নাম্বা লুপৰ মাজেৰে একেটা মান অনুসৰণ কৰা হৈছে। ৰেডি-ইনপুট নাম্পায়ে এক বৃহৎ অগ্ৰগতি লাভ কৰিছিল, আনহাতে পাইথন তালিকাৰ পৰা আৰু উভতি অহাৰ ফলত এই সুবিধা প্ৰায় সমতুল্য হৈ পৰে। এই খণ্ডটোৱে এক্সিকিউচন বাউণ্ডেৰী আৰু এটা এপ্লিকেচনৰ প্ৰয়োজনীয় ফলাফল কেনেকৈ জুখিব লাগে সেই বিষয়ে বৰ্ণনা কৰিছে।
এই ভিডিঅ’টোত কি আছে
- চি.পাইথন উৎসক বাইটক’ডলৈ কম্পাইল কৰে। বাৰে বাৰে ইন্টাৰপ্ৰিটাৰ/অবজেক্টৰ কাম আৰু এটা টাইপ কৰা নেটিভ নিউমেৰিক লুপ বেলেগ এক্সিকিউচন ব্যৱস্থা।
- সংখ্যাত্মক নাম্পাই এৰিথমেটিকে কম্পাইল কৰা অপাৰেচনলৈ টাইপ কৰা বেচ প্ৰদান কৰিব পাৰে; এৰিথমেটিক লুপটো এতিয়াও আছে, আৰু ভিউবোৰৰ অসংলগ্ন লেআউট থাকিব পাৰে।
- ৰূপান্তৰ আৰু প্ৰয়োজনীয় আউটপুট প্ৰতিনিধিত্ব জুখক। এই ৰানত, পাইথনৰ তালিকাবোৰক এৰে'লৈ ৰূপান্তৰ কৰি আৰু ঘূৰাই অনাৰ ফলত বৃহৎ ৰেডি-এৰে'ৰ অগ্ৰগতি নোহোৱা হৈছিল।
- সৰু ৱৰ্কলোডে সাধাৰণ পাইথনক অগ্ৰাধিকাৰ দিব পাৰে কাৰণ নিৰ্দিষ্ট এৰে'-কলৰ খৰচ গুৰুত্বপূৰ্ণ। আঠ-মূল্যৰ কম্প্ৰিহেনচনে এই জোখা তুলনাত জিকিছিল।
- np.vectorize হৈছে এটা সুবিধাৰ ৰেপাৰ যিয়ে ক্ৰমিক উপাদানৰ বাবে পাইথনক কল কৰে; এটা বেচ ইন্টাৰফেচে অকলে নেটিভ সাংখ্যিক এক্সিকিউচন স্থাপন নকৰে।
- কম্পাইল কৰা পাইথন-চিনটেক্স লুপবোৰো দ্ৰুত হ’ব পাৰে। কলৰ বাবে গুৰুত্বপূৰ্ণ হ’লে ক’ল্ড কম্পাইলেচন/ছেটআপৰ খৰচ অন্তৰ্ভুক্ত কৰক।
- নেটিভ এক্সিকিউচন, চি.পি.ইউ. ছিমড, মাল্টিথ্ৰেডিং আৰু জি.পি.ইউ. বেকএণ্ডবোৰ পৃথক ধাৰণা। উপলব্ধ চি.পি.ইউ. বৈশিষ্ট্যবোৰে এটা বিশেষ ৰানত ব্যৱহৃত নিৰ্দেশনাসমূহ ট্ৰেচ নকৰে।
অনূদিত ট্ৰান্সক্ৰিপ্ট
মূল ইংৰাজী বৰ্ণনাৰ পৰা অনুবাদ কৰা হৈছে। উপলব্ধ অডিঅ’ আৰু কেপচন ইউটিউবে নিয়ন্ত্ৰণ কৰে।
একেটা চি.পি.ইউ. আগতে কিয় শেষ কৰিব পাৰে?
0:00 আপুনি ভাবে যে পাইথন দ্ৰুত হ'বলৈ এটা নতুন ভাষাৰ প্ৰয়োজন। লুপটো স্থানান্তৰ হোৱাৰ পিছত একেটা CPU এ আমাৰ বেচ দ্ৰুতগতিত চলাইছিল। কামটো ক'লৈ গ'ল? গতি কেতিয়া নোহোৱা হয়? কোনটো শ্বৰ্টকাটে পাইথনক ঘূৰাই আনে? এইটো The Daily Diff, আণ্ডাৰ দা হুড। সেই শ্বৰ্টকাটটোলৈ চকু ৰাখিব। চি.পাইথন হৈছে মানক পাইথন ইমপ্লিমেন্টেশ্বন।
0:17 ই আপোনাৰ উৎসক বাইটক’ডলৈ কম্পাইল কৰে, তাৰ পিছত সেই নিৰ্দেশনাবোৰ এটা ইন্টাৰপ্ৰিটাৰত চলায়। নাম্পাই হৈছে এটা সাংখ্যিক লাইব্ৰেৰী যাৰ এৰে'বোৰে এটা ঘোষিত ডেটা প্ৰকাৰৰ সৈতে মান ধৰি ৰাখে। ইয়াৰ বিল্ট ইন এৰিথমেটিকে এটা সম্পূৰ্ণ বেচ কম্পাইল কৰা অপাৰেচনলৈ হস্তান্তৰ কৰিব পাৰে। দহ লাখ ফ্লোটিং পইণ্ট মান লওক, প্ৰতিটোক বৰ্গ কৰক, তাৰ পিছত মূল মানটো যোগ কৰক। প্ৰতিটো সংস্কৰণে একেধৰণৰ মান পায় আৰু মিল থকা উত্তৰ দিয়ে। মানবোৰ ইমান সৰু যে ঘূৰণীয়া পাৰ্থক্যবোৰ দৌৰৰ পৰা বাহিৰত ৰাখিব পাৰি।
0:40 এই মেচিনত, কম্প্ৰিহেনচনে প্ৰায় তেত্ৰিশ মিলিছেকেণ্ড লৈছিল। নাম্পায়ে একতকৈ কম লৈছিল। দুয়োটাই চি.পি.ইউ.ত চলিছিল। এই ৱৰ্কলোডৰ বাবে এয়া এটা উপযোগী প্ৰমাণ, আৰু এটা প্ৰগ্ৰেমিং ভাষাৰ বাবে এটা ভয়ংকৰ শোকবাৰ্তা। সাধাৰণ লুপটোৰ পৰা আৰম্ভ কৰক।
এটা পাইথন লুপে কি কাম বাৰে বাৰে কৰে?
0:53 পাইথনে পৰৱৰ্তী মান পায়, এৰিথমেটিক কৰে, আৰু উত্তৰটো যোগ কৰে। তাৰ পিছত ই আকৌ সেইটো কৰে। গুণন সস্তা। পৰৱৰ্তী গুণনৰ ব্যৱস্থা কৰা, আৰু ইয়াৰ চাৰিওফালে পাইথন বস্তুসমূহৰ ব্যৱহাৰ কৰা, প্ৰতিবাৰে কাম যোগ কৰে। এইটো হৈছে পৰীক্ষা কৰা ফাংচনটোৰ আচল ডিচেচেম্বলি। পুনৰাবৃত্তি, গুণন আৰু যোগ বাইটক’ড নিৰ্দেশনা হিচাপে দেখা দিয়ে। পাইথন সংস্কৰণ আৰু ইন্টাৰপ্ৰিটাৰসমূহে বিভিন্ন পছন্দ কৰে।
1:14 এই সময়বোৰ পৰ্দাত থকা সংস্কৰণটোৰ বাবে, যিটো পাইথন তিনি দশমিক দহ। এটা পাইথন তালিকাই অবজেক্টৰ ৰেফাৰেন্স সঞ্চয় কৰে, গতিকে বিভিন্ন ধৰণৰ বস্তুই এটা তালিকা ভাগ বতৰা কৰিব পাৰে। আমাৰ এৰিথমেটিক কাৰ্যটোৱে সকলোতে সংখ্যা ব্যৱহাৰ কৰে। ই এটা সাধাৰণ ব্যৱস্থাৰ বাবে মূল্য দিয়ে যদিও এটা পুনৰাবৃত্তি সেৱাৰ বাবে অনুৰোধ কৰে। কল্পনা কৰক যে আপুনি একেটা কফি দহ লাখ বাৰ অৰ্ডাৰ কৰিছে আৰু প্ৰতিটো কাপৰ বাবে এটা নতুন ফৰ্ম পূৰণ কৰিছে। কফি মেচিনটো ঠিক আছে।
1:36 কাগজপত্ৰবোৰে নিজৰ কেৰিয়াৰ গঢ়ি তুলিছে।
নাম্পায়ে লুপ ক'লৈ স্থানান্তৰ কৰে?
1:38 নাম্পায়ে চুক্তি সলনি কৰে। এই এৰে'টোৱে এটা ঘোষিত প্ৰকাৰৰ সৈতে নিৰ্দিষ্ট আকাৰৰ ফ্লোটিং পইণ্ট মান ধৰি ৰাখে। আমাৰ এৰে'টো সংলগ্ন, গতিকে ইয়াৰ মানবোৰ মেমৰীত একেলগে থাকে। ভিউবোৰৰ অন্য লেআউট থাকিব পাৰে। এৰিথমেটিক অপাৰেচনে জানে যে ই কি ধৰণৰ ডেটা লাভ কৰিছে। কলে বেচটো এটা নেটিভ অপাৰেচনলৈ হস্তান্তৰ কৰে। এটা লুপে এতিয়াও কম্পাইল কৰা কোডৰ ভিতৰত মানবোৰ ভিজিট কৰে। ই সেই কামৰ মাজেৰে প্ৰকাৰৰ জ্ঞান পুনৰ ব্যৱহাৰ কৰিব পাৰে।
2:00 পাইথন এতিয়াও কামটো হস্তান্তৰ কৰা ব্যক্তি হৈয়েই আছে। ইটামাৰ টাৰ্ণাৰ ট্ৰাউৰিঙে পাইথন স্পীডত পাৰ্থক্যটো বৰ্ণনা কৰিছে। বেচ ইন্টাৰফেচ, নেটিভ ইমপ্লিমেন্টেশ্বন আৰু প্ৰচেছৰ ভেক্টৰ নিৰ্দেশনাসমূহ পৃথক বস্তু। ফাংচনৰ নামটোৱে অতি কম প্ৰমাণ যোগান ধৰে।
বেগ মানে জি.পি.ইউ. নে বহু চি.পি.ইউ. ক'ৰ?
2:13 এই ফলাফলটোৱে চি.পি.ইউ.ত নাম্পাই ব্যৱহাৰ কৰিছিল। CuPy ৰ দৰে এটা জি.পি.ইউ. বেকএণ্ডে এৰে' আৰু অপাৰেচনৰ বাবে এটা বেলেগ ঠাই বাছনি কৰে। এটা জি.পি.ইউ. কিনিলে এই সাধাৰণ পাইথন লুপটো ইতিমধ্যে চলি থকা ঠাইতে চলে। চি.পি.ইউ. ভেক্টৰ নিৰ্দেশনাসমূহে একেলগে কেইবাটাও মান প্ৰচেছ কৰিব পাৰে। NumPy ৰ সমৰ্থিত কাৰ্নেল বাছনি কৰাৰ বাবে যন্ত্ৰপাতি আছে। আমাৰ ৰাণটাইমে উপলব্ধ বৈশিষ্ট্যসমূহ প্ৰতিবেদন কৰে, কিন্তু এই এক্সপ্ৰেচনৰ নিৰ্দেশনাসমূহ ট্ৰেচ নকৰে। ভেক্টৰ নিৰ্দেশনাসমূহলৈ সমগ্ৰ জুখি উলিওৱা লাভ দিয়াটোৱে প্ৰমাণটোক অতিৰঞ্জিত কৰিব।
2:40 জি.পি.ইউ. শ্বপিং কাৰ্টটো বন্ধ হৈ থাকিব পাৰে। এটা পাৰফৰমেন্স ঠিক কৰাটোৱে এটা ক্ৰয়ও বাতিল কৰে বুলি জনাটো অতি সন্তোষজনক। দুৰ্ভাগ্যবশতঃ, বেঞ্চমাৰ্ক চলি আছে।
প্ৰভাৱশালী গতি কেতিয়া নোহোৱা হয়?
2:49 আঠটা মানৰ সৈতে, কম্প্ৰিহেনচনে জিকিছিল। এৰে' মেচিনাৰীক কল কৰাৰ খৰচ সৰু কামটোতকৈ বেছি আছিল। বৃহৎ ৰেডি এৰে'বোৰ আগবাঢ়ি গৈছিল। আমি পুনৰাবৃত্তি পৰীক্ষা আৰু এটা ৱাৰ্মড প্ৰচেছ ব্যৱহাৰ কৰিছিলোঁ। নতুন পাইথন নিৰ্মাণে ক্ৰছঅভাৰ সলনি কৰিব পাৰে। তাৰ পিছত এপ্লিকেচনটোৰ কি প্ৰয়োজন সলনি কৰক। এটা পাইথন তালিকাৰে আৰম্ভ কৰক আৰু এটা নতুন পাইথন তালিকাৰে শেষ কৰক। নাম্পায়ে ইনপুটক এটা এৰে'লৈ ৰূপান্তৰ কৰিব লাগিব আৰু উত্তৰটোক পুনৰ পাইথন
3:11 অবজেক্টলৈ ঘূৰাই আনিব লাগিব। আপোনাৰ এপ্লিকেচনৰ প্ৰয়োজন হ'লে সেই পদক্ষেপবোৰ বিলত থাকিব। দহ লাখ মানত, সেই সম্পূৰ্ণ পথটোৱে প্ৰায় আঠাইশ মিলিছেকেণ্ড লৈছিল। কম্প্ৰিহেনচনেও প্ৰায় আঠাইশ লৈছিল। আমাৰ নাটকীয় অগ্ৰগতি প্ৰায় সমতুল্য হৈ পৰিছিল। দ্ৰুত অংশটো আছিল বাস্তৱ। সুবিধাটো নিৰ্ভৰ কৰিছিল ডেটাক ইয়াৰ সাংখ্যিক ৰূপত থাকিবলৈ দিয়াত।
বেঞ্চমাৰ্কত কোনবোৰ সীমা অন্তৰ্ভুক্ত?
3:28 ডেটা অনুসৰণ কৰক। যদি পৰৱৰ্তী অপাৰেচনে এটা এৰে' গ্ৰহণ কৰে, তেন্তে এৰে'টো ৰাখক। যদি আপুনি তালিকা আৰু এৰে'ৰ মাজত বাৰে বাৰে ৰূপান্তৰ কৰে, সেই ক্ৰছিংবোৰ জুখক। এটা ব্যয়বহুল হস্তান্তৰৰ আগতে বন্ধ কৰিলে ভুল প্ৰশ্নৰ বাবে সঠিক সংখ্যা পোৱা যায়। এই এৰে'টো গুণন কৰিলে এটা অস্থায়ী ফলাফল সৃষ্টি হয়। মূল মানবোৰ যোগ কৰিলে আউটপুট সৃষ্টি হয়। নেটিভ এক্সিকিউচনৰ এতিয়াও মেমৰি আৰু ডেটা স্থানান্তৰৰ প্ৰয়োজন।
3:47 কিছুমান অপাৰেচনে এটা আউটপুট বাফাৰ গ্ৰহণ কৰে, যাৰ ফলত আপোনাৰ কোডে নিৰাপদে পুনৰ ব্যৱহাৰ কৰিব পাৰিলে এলকেচন হ্ৰাস পায়। এটা সুন্দৰ লাইনে কেইবাটাও ডাঙৰ বাফাৰ অৰ্ডাৰ কৰিব পাৰে। পাইথন স্পীডেও এই সমস্যাটো উল্লেখ কৰে। এলোকেটাৰ আপোনাৰ নান্দনিকতালৈ আচৰিত ধৰণে উদাসীন।
এটা কম্পাইল কৰা পাইথন লুপো দ্ৰুত হ'ব পাৰেনে?
4:00 আপুনি লুপ চিনটেক্সো ৰাখিব পাৰে আৰু ইয়াৰ এক্সিকিউচন সলনি কৰিব পাৰে। নাম্বাই সমৰ্থিত সাংখ্যিক পাইথন ফাংচনক নেটিভ কোডলৈ কম্পাইল কৰিব পাৰে। এইটো আমাৰ পৰীক্ষাৰ লুপটো ইয়াৰ কম্পাইলাৰ ডেকোৰেটৰৰ সৈতে। ই এতিয়াও 'ফৰ' বুলি কয়। ব্যয়বহুল ইন্টাৰপ্ৰিটাৰ পথ সলনি হৈছে। কম্পাইলেচনৰ পিছত, এই লুপটোৱে ৰেডি এৰে'ৰ সৈতে আধা মিলিছেকেণ্ডতকৈও কম সময় লৈছিল। এই ৰানত কম্পাইলেচনে নিজেই প্ৰায় এক ছেকেণ্ড লৈছিল। সেই ছেটআপৰ খৰচ পুনৰাবৃত্তি সময়ৰ পৰা বাদ দিয়া হৈছিল,
4:22 গতিকে এটা সৰু এককালীন কামে এটা বেলেগ তুলনা দাবী কৰে। নাম্বাৰ নিজা গাইডটোৱে স্পষ্ট লুপ দেখুৱাই সুখী। হট পাথ বিচাৰি নোপোৱাকৈ ভাষা স্থানান্তৰ আৰম্ভ কৰা এটা প্ৰফাইলৰ নুখুলাবলৈ এটা জটিল উপায়। প্ৰথমে কিহে সময় খায় সেইটো বিচাৰক। নেটৱৰ্ক ৱেইট, অবজেক্ট পাৰ্ছিং আৰু বাল্ক এৰিথমেটিকে বিভিন্ন ঠিক কৰাৰ বাবে আহ্বান কৰে। গণনা আৰু ডেটা মিলিলে নেটিভ এৰে' অপাৰেচনে সহায় কৰে।
4:43 আপোনাৰ কলৰ আচলতে কি ফলাফল লাগে সেইটো জুখক। এতিয়া সেই শ্বৰ্টকাটৰ বাবে। আপোনাৰ এটা পাইথন ফাংচন আছে আৰু আপুনি ইয়াক এটা এৰে' গ্ৰহণ কৰিব বিচাৰে। ভেক্টৰাইজ নামৰ এটা ৰেপাৰটো হেৰুৱা পাৰফৰমেন্স বুটামৰ দৰে শুনা যায়। ইয়াৰ ডকুমেণ্টেচনত এটা গুৰুত্বপূৰ্ণ বাক্য অপেক্ষা কৰি আছে।
np.vectorize এ আচলতে কি এক্সিকিউট কৰে?
4:56 নাম্পায়ে কয় যে ইয়াৰ ভেক্টৰাইজ ৰেপাৰটো প্ৰাথমিকভাৱে সুবিধাৰ বাবে প্ৰদান কৰা হৈছে। ইয়াৰ ইমপ্লিমেন্টেশ্বন আচলতে এটা ফৰ লুপ। ৰেপাৰটোৱে বেচ গ্ৰহণ কৰে, কিন্তু ক্ৰমিক উপাদানৰ বাবে আপোনাৰ পাইথন ফাংচনক কল কৰি থাকে। ইন্টাৰফেচটো চুটি হ'ল। এক্সিকিউচন বাউণ্ডেৰী ব্যস্ত হৈ থাকিল। পাইথন কলবেকৰ মাজেৰে একেটা মান ঘূৰি অহা চাওক। ৰেডি এৰে'ৰ সৈতে, এই সংস্কৰণটোৱে প্ৰায় সাতাশী মিলিছেকেণ্ড লৈছিল। এয়া আমাৰ কম্প্ৰিহেনচনতকৈ লেহেমীয়া আছিল।
5:18 এটা উপযোগী ব্ৰডকাষ্টিং ৰেপাৰে আপুনি আঁতৰাবলৈ চেষ্টা কৰি থকা সঠিক প্ৰতিটো উপাদানৰ কাম সংৰক্ষণ কৰিব পাৰে। এটা বেচ ইন্টাৰফেচৰ পিছফালে থকা ইমপ্লিমেন্টেশ্বন পৰীক্ষা কৰক, সামঞ্জস্যপূৰ্ণ ডেটাক ইয়াৰ উপযোগী ৰূপত ৰাখক, আৰু তুলনাত ৰূপান্তৰ অন্তৰ্ভুক্ত কৰক। কলৰৰ চকীৰ পৰা নেটিভ, কলবেক আৰু কম্পাইল কৰা লুপবোৰ একে যেন লাগিব পাৰে। ভেক্টৰাইজ নামটোৱে এটা প্ৰতিশ্ৰুতি দিছিল যিটো আপোনাৰ ষ্টপৱাচিয়ে কেতিয়াও চহী কৰা নাছিল। সুবিধা আপোনাৰ প্ৰয়োজন হ'লে সেয়া ৰাখক। কাৰ্যক্ষমতাৰ বাবে, চলি থকা লুপটো পৰীক্ষা কৰক।
আপোনাৰ কোডত কি সালসলনি কৰা উচিত?
5:41 এটা জোখা সাংখ্যিক হট পাথ বেচিং কৰাৰ বাবে মোৰ ৰায় হৈছে SHIP IT। সাধাৰণ লুপবোৰ ভালদৰে চলিলে সেইবোৰ ৰাখক। কাম ক'ত হয় আৰু পৰৱৰ্তী কলৰৰ কি প্ৰয়োজন সেইটো পৰীক্ষা কৰক। চাবস্ক্ৰাইব কৰক, বেল টো টিপক, আৰু আপুনি ইয়াত বেলেগ ধৰণে ষ্টাম্প মাৰিলেহেঁতেন নে নাই মোক মন্তব্যত জনাওক। আৰু এইটোৱেই আজিৰ বাবে diff। মই Axrisi ৰ পৰা নিকো। দায়িত্বশীলভাৱে একত্ৰিত কৰক।
উৎসসমূহ
- Universal functions (ufunc) basics — NumPy 2.2NumPy
- The N-dimensional array — NumPy 2.2NumPy
- numpy.vectorize — convenience and performance notesNumPy
- CPU/SIMD optimizations — NumPy 2.2NumPy
- dis — Disassembler for Python bytecodePython Software Foundation
- CPython 3.10.12 list representationCPython contributors
- The limits of Python vectorization as a performance techniqueItamar Turner-Trauring / Python⇒Speed
- Performance TipsNumba
- Basics of CuPyCuPy



