দীর্ঘ পোস্টের জন্য দুঃখিত তবে আমি প্রথমে প্রাসঙ্গিক বলে মনে করি এমন সমস্ত কিছু অন্তর্ভুক্ত করতে চেয়েছিলাম।
আমি যা চাই
আমি ঘন ম্যাট্রিক্সের জন্য ক্রিলোভ সাবস্পেস পদ্ধতিগুলির একটি সমান্তরাল সংস্করণ প্রয়োগ করছি । মূলত জিএমআরইএস, কিউএমআর এবং সিজি। আমি বুঝতে পেরেছি (প্রোফাইলিং করার পরে) আমার ডিজিএমভি রুটিনটি করুণাময়। তাই আমি এটিকে বিচ্ছিন্ন করে তাতে মনোনিবেশ করার সিদ্ধান্ত নিয়েছি। আমি এটি একটি 12 টি কোর মেশিনে চালানোর চেষ্টা করেছি তবে নীচের ফলাফলগুলি 4 কোর ইন্টেল আই 3 ল্যাপটপের জন্য। প্রবণতার মধ্যে খুব বেশি পার্থক্য নেই।
আমার KMP_AFFINITY=VERBOSE
আউটপুট এখানে উপলব্ধ ।
আমি একটি ছোট কোড লিখেছি:
size_N = 15000
A = randomly_generated_dense_matrix(size_N,size_N); %Condition Number is not bad
b = randomly_generated_dense_vector(size_N);
for it=1:n_times %n_times I kept at 50
x = Matrix_Vector_Multi(A,b);
end
আমি বিশ্বাস করি এটি 50 টি পুনরাবৃত্তির জন্য সিজির আচরণের অনুকরণ করে।
আমি যা চেষ্টা করেছি:
অনুবাদ
আমি মূলত ফরট্রানে কোডটি লিখেছিলাম। আমি এটি সি, ম্যাটল্যাব এবং পাইথন (নম্পি) তে অনুবাদ করেছি। বলা বাহুল্য, ম্যাটল্যাব এবং পাইথন ছিল ভয়াবহ। আশ্চর্যের বিষয়, উপরের মানগুলির জন্য সি একটি বা দুটি দ্বারা ফরট্রেনের চেয়ে ভাল ছিল। ধারাবাহিকভাবে।
প্রোফাইলিং
আমি চালানোর জন্য আমার কোডটির প্রোফাইল দিয়েছি এবং এটি 46.075
কয়েক সেকেন্ড ধরে চলে। এটি তখন ছিল যখন এমকেএল_ডায়ামামিক সেট করা হয়েছিলFALSE
এবং সমস্ত কোর ব্যবহার করা হয়েছিল। যদি আমি এমকেএল_ডায়ামমিককে সত্য হিসাবে ব্যবহার করি তবে কেবলমাত্র (প্রায়) প্রায় অর্ধেক সংখ্যক কোর ব্যবহৃত যে কোনও সময় ব্যবহৃত হতে পারে। এখানে কয়েকটি বিবরণ দেওয়া হল:
Address Line Assembly CPU Time
0x5cb51c mulpd %xmm9, %xmm14 36.591s
সর্বাধিক সময় গ্রহণের প্রক্রিয়াটি মনে হয়:
Call Stack LAX16_N4_Loop_M16gas_1
CPU Time by Utilization 157.926s
CPU Time:Total by Utilization 94.1%
Overhead Time 0us
Overhead Time:Total 0.0%
Module libmkl_mc3.so
এখানে কয়েকটি ছবি আছে:
উপসংহার:
আমি প্রোফাইলিংয়ের একজন সত্যিকারের শিক্ষানবিশ কিন্তু আমি বুঝতে পারি যে গতি বাড়ানো এখনও ভাল নয়। ক্রমিক (1 কোর) কোডটি 53 সেকেন্ডের মধ্যে শেষ হয় । তাও ১.১ এরও কম গতি!
আসল প্রশ্ন: আমার গতি বাড়ানোর জন্য আমার কী করা উচিত?
আমার মনে হয় যে স্টাফগুলি সাহায্য করতে পারে তবে আমি নিশ্চিত হতে পারি না:
- পাথ্রেডস বাস্তবায়ন
- এমপিআই (স্কালাপ্যাক) বাস্তবায়ন
- ম্যানুয়াল টিউনিং (কীভাবে আমি জানি না Please আপনি যদি এটির পরামর্শ দেন তবে কোনও উত্সের প্রস্তাব দিন)
কারও যদি আরও বেশি (বিশেষত স্মৃতি সম্পর্কে) বিশদ প্রয়োজন হয় তবে দয়া করে আমাকে কীভাবে চালানো উচিত এবং কীভাবে তা আমাকে জানান। আমি এর আগে কখনও মেমরির প্রোফাইল করিনি।