সমান্তরাল সসীম এলিমেন্ট কম্পিউটেশনে জাল পরিচালনা করার জন্য সেরা পদ্ধতি?


11

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

আমি এমন এক পর্যায়ে আছি যেখানে আমার সিরিয়াল সংস্করণগুলি চলছে এবং এখন আমি সেগুলি সমান্তরাল করতে চাই। সর্বোপরি, নীতিগতভাবে নীতিগতভাবে সমান্তরাল করা সহজ যে অ্যালগরিদমগুলি তৈরি করা এটি ডোমেন পচন কাঠামোর অন্যতম শক্তি। তবে বাস্তবে, অনেকগুলি বিবরণ অবশ্যই বিবেচনা করতে হবে। জাল ব্যবস্থাপনা তাদের মধ্যে একটি। যদি অনেক সিপিইউগুলিতে ভাল স্কেল করার সময় অ্যাপ্লিকেশনগুলি উচ্চ রেজোলিউশন অর্জন করতে হয় তবে প্রতিটি সিপিইউতে সম্পূর্ণ জালের প্রতিলিপিটি অক্ষম ine

আমি সেই বিকাশকারীদের জিজ্ঞাসা করতে চেয়েছিলাম যারা উচ্চ পারফরম্যান্স কম্পিউটিং পরিবেশে অনুরূপ অ্যাপ্লিকেশনগুলিতে কাজ করেন তারা কীভাবে এই সমস্যাটি মোকাবেলা করেন।

বিতরণ করা জাল পরিচালনার জন্য p4est গ্রন্থাগার রয়েছে। আমার এএমআর দরকার নেই তাই এটি ওভারকিল হতে পারে যেহেতু আমি কেবল অভিন্ন মেস ব্যবহার করতে আগ্রহী এবং আমি নিশ্চিত নই যে এটি ত্রিভুজাকার মেসগুলি পরিমার্জন করতে পারে কিনা I'm আমি সহজেই একটি অভিন্ন জাল তৈরি করতে পারতাম তারপরে এটিকে জাল বিভাজনকারীদের মধ্যে একটিতে খাওয়াতে পারি এবং আউটপুটটির কিছু পোস্ট প্রসেসিং করতে পারি।

সবচেয়ে সহজ পদ্ধতির দ্বারা প্রতিটি পার্টিশনের জন্য আলাদা আলাদা ফাইল তৈরি করা যায় যা কেবলমাত্র সেই বিশেষ পার্টিশনের সাথে সম্পর্কিত জাল সম্পর্কিত তথ্য। এই ফাইলটি একটি একক সিপিইউ দ্বারা পড়া হবে যা জালের that অংশে বিযুক্ত সিস্টেমের সমাবেশের জন্য দায়ী। অবশ্যই কিছু আন্তর্জাতিক পার্টিশন সংযোগ / পাড়া সম্পর্কিত তথ্য আন্তঃ প্রক্রিয়া যোগাযোগের জন্য সমস্ত সিপিইউ দ্বারা পড়া একটি ফাইলে সংরক্ষণ করা প্রয়োজন।

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

আগাম ধন্যবাদ!


আপনি যদি জাল বিভাজনের সন্ধান করছেন - মেটিস ভাল পছন্দ হবে। পারমেটিসও পরীক্ষা করে দেখুন। মেস পরিচালনা করা আলাদা গল্প, আইটিএপিএস আইমেশ আপনার পক্ষে সমাধান হতে পারে। দয়া করে এখানে আমার প্রশ্নের উত্তরগুলিও দেখুন: scicomp.stackexchange.com/questions/4750/…
Krzysztof Bzowski

@ ক্রিজিসটফবজোস্কি: আপনি কি স্কচ লাইব্রেরি সম্ভবত ব্যবহার করেছেন? আমি ভাবছিলাম যে সীমাবদ্ধ উপাদানগুলির ক্ষেত্রে স্কচ এবং মেটিসের মধ্যে পার্থক্য কী। আইমেশ প্রকল্পটি খুব আকর্ষণীয় বলে মনে হচ্ছে। আগামী কয়েক দিনের মধ্যে আমি এটি সম্পর্কে আরও পড়ব। আমি চুক্তি সম্পর্কে জানি I আমার মনে আছে কিছুক্ষণ আগে ওপেনমিশে সন্ধান করা তবে বুঝতে পেরেছিলাম যে স্ক্র্যাচ থেকে আমার প্রয়োজনীয় কার্যকারিতা কার্যকর করা সহজ হবে। অনুক্রমিক জালিয়াতির জন্য, মূলত আমি এই কাগজের লিঙ্কে উপস্থাপিত অর্ধ প্রান্ত / ফেস ডেটার কাঠামোটি অভিযোজিত করেছি ধন্যবাদ!
মিডুরাড

উত্তর:


7

আপনি যদি এএমআর ব্যবহার না করে থাকেন এবং 1K-4K কোর ছাড়িয়ে স্কেল করতে না চান তবে কেবল এটি করুন।

  1. মাপ 0 পুরো জালটি পড়ে এবং এটি এমটিআইএস / স্কচ ইত্যাদি ব্যবহার করে পার্টিশনগুলি পড়ে (দ্রষ্টব্য: এটি একটি সিরিয়াল অপারেশন)।

  2. র‌্যাঙ্ক 0 অন্যান্য সমস্ত পদে উপাদান / নোড বিভাজন সম্পর্কিত তথ্য সম্প্রচার করে এবং মেমরিটি মুক্ত করে (জাল সংরক্ষণ করার জন্য ব্যবহৃত হয়)

  3. সমস্ত পদক্ষেপগুলি তাদের নিজস্ব নোড / উপাদানগুলি একই ইনপুট ফাইল থেকে (ভুত নোড সহ) পড়ে থাকে (দ্রষ্টব্য: একই ইনপুট ফাইলটিতে অ্যাক্সেস করা 2000 র্যাঙ্কগুলি ধীর শোনায় তবে বাস্তবে নয়, যদিও এটি ফাইল সিস্টেমের পক্ষে খারাপ হতে পারে তবে আমরা আমাদের এটি একবারেই করছে)।

  4. বিসিগুলিতে প্রয়োগের জন্য এবং ম্যাট্রিকগুলি জমায়েত করতে এবং নোডগুলি পুনর্নির্মাণের জন্য সমস্ত স্তরের স্থানীয় থেকে গ্লোবাল নোড / এলিমেন্ট / ডফ ম্যাপিং তৈরি করতে হবে।

সমস্ত কিছু বলা এবং সম্পন্ন করার পরে একটি র‌্যাঙ্কের সমস্ত ডেটা স্থানীয় হবে তাই আপনার ভাল স্কেল করতে সক্ষম হওয়া উচিত (স্মৃতি অনুসারে)। আমি আমার 100 টি লাইনে এগুলি করি (আমার এখানে একটি ছোট কোডে 35-132 লাইন দেখুন )।

এখন যদি আপনার জালটি খুব বেশি বড় (যেমন,> 100-250 মিলিয়ন উপাদান) যা আপনি একক নোডে মেটিস ব্যবহার করে এটি বিভাজন করতে পারবেন না এবং পারমেটিস / পিটি-স্কচ দরকার হয় তবে সমস্ত কোরের আগে সমান্তরালে এটি বিভাজন করার অতিরিক্ত কাজ আপনার রয়েছে / র‌্যাঙ্কগুলি এটি পড়তে পারে। এই জাতীয় পরিস্থিতিতে লজিস্টিক্যাল কারণে মূল কোড থেকে পার্টিশন পর্বকে আলাদা রাখা সহজ হতে পারে।

বিটিডব্লিউ এএমআর সাধারণত সাধারণত টেট করবেন না এছাড়াও আপনার কোডের সমান্তরালকরণের জন্য পিইটিএসসি ভাল পছন্দ।

সম্পাদনা: এছাড়াও এখানে এবং এখানে দেখুন


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

@ মিদুরাদ আপনি যদি সি এর চেয়ে বেশি সি ++ পছন্দ করেন তবে আপনার ট্রিলিনোস বিবেচনা করা উচিত, এটি পিইটিএসসি এর সাথে তুলনীয় একটি সি ++ গ্রন্থাগার। তদ্ব্যতীত, ট্রিলিনোসের একটি প্যাকেজ (জোল্টান) রয়েছে যা আপনি জাল বিভাজন সম্পাদনের জন্য ব্যবহার করতে পারেন।
ডাঃ_সাম

@ মিডুরাড আপনি কেবলমাত্র পিইটিএসসি ব্যবহার করলে খুব কম এমপিআই কল প্রয়োজন। টিউনসকে পরিশোধন করা সহজ হওয়া উচিত তবে সম্পর্কিত গতিশীল ডেটা স্ট্রাকচারের সাথে দক্ষতার সাথে দক্ষতার সাথে কাজ করার জন্য কিছু চিন্তাভাবনা এবং কাজের প্রয়োজন হতে পারে। আপনি সি ++ দিয়ে পিইটিএসসি ব্যবহার করতে সক্ষম হবেন তবে আপনার প্রয়োজনীয়তাগুলি দেওয়া হলে লাইবমেশ একটি কার্যকর বিকল্প হতে পারে (আমার ধারণা এটি এএমআর এবং টিটসকে সমর্থন করে)।
stali

তথ্যের জন্য আপনাকে ধন্যবাদ। এটা খুব সহায়ক ছিল।
মিডুরাড

2

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

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

বিকল্পটি হ'ল আপনি এখন বিদ্যমান লাইব্রেরিগুলির একটি শিখতে 6 মাস ব্যয় করেছেন তবে তার পরে আপনার 2-3 বছর থাকবে যেখানে আপনি সত্যিই নতুন জিনিসগুলি করেন, এমন জিনিস যেখানে প্রতি সপ্তাহে আপনি আপনার উপদেষ্টার অফিসে যেতে পারেন এবং তাকে / দেখিয়ে দিতে পারেন তার এমন কিছু যা সত্যই নতুন, এটি প্রচুর পরিমাণে বড় আকারের স্কেলে চলেছে বা অন্য দিক থেকে খুব দুর্দান্ত। আমি মনে করি আপনি সম্ভবত দেখতে পাবেন যে আমি এখনই এটি নিয়ে কোথায় যাচ্ছি।


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

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

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

গ্রাইবার্ডস সম্পর্কে বিবৃতিটির সাথে আমি একমত নই (যদিও আজকাল আমারও ধূসর হয়ে আসছে ...)) তবে তারা এটিও দেখেন যে আপনি নতুন গ্রেডের ছাত্র থাকাকালীন আপনাকে ক্রুফটি লিগ্যাসি কোডগুলির মধ্যে বা চাকাটি পুনর্নির্মাণের মধ্যে বেছে নিতে হবে। খুব কম লোকই তারা যে সফ্টওয়্যারটি লিখেছেন (তাতে উপস্থিত লেখককে প্রতিরোধ না করে) দিয়ে সাফল্য উপভোগ করতে পারবেন এবং আপনি যদি জানেন না যে তারা কোনও কেরিয়ার তৈরি করতে পারে তবে আপনি যদি সেই প্রতিশ্রুতি সম্পন্ন গ্রেডের শিক্ষার্থীকে সেই রাস্তায় নামিয়ে দিতে চান না।
ওল্ফগ্যাং ব্যাঙ্গার্থ 21

0

এটি সম্পূর্ণ উত্তর নয়।

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

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