আমি সি ++ তে সমান্তরাল গতিশীল গ্রাফ লাইব্রেরি খুঁজছি


11

হ্যালো স্কাইকম্প সম্প্রদায়,

আমি গ্রাফ আলগোরিদিম এলাকায় কাজ করেছি যেমন অবকাঠামো ব্যবহার NetworkX (পাইথন), জং এবং YFiles (জাভা)। আমি এখন সমান্তরাল এবং উচ্চ পারফ্লোমেন্স কম্পিউটিংয়ের অঞ্চলে প্রবেশ করছি। একটি নতুন প্রকল্পের জন্য, আমি নিম্নলিখিত বৈশিষ্ট্যগুলি সহ একটি সি ++ গ্রাফ লাইব্রেরি খুঁজছি:

  • একটি স্বজ্ঞাত ইন্টারফেস রয়েছে যা অ্যালগরিদম বিকাশকে সক্ষম করে
  • গতিশীল অপারেশনগুলিকে সমর্থন করে: যেমন স্বেচ্ছাসেবী নোড / প্রান্ত সন্নিবেশ এবং মোছা
  • সমান্তরালতা সমর্থন করে: যেমন মাল্টিথ্রেডিংয়ের সাথে উত্থাপিত সমস্যাগুলি থেকে প্রোগ্রামারকে .াল দেয়
  • একটি স্বল্প স্মৃতি ওভারহেড এবং উচ্চ পারফরম্যান্স কম্পিউটিং জন্য উপযুক্ত

দয়া করে কিছু গ্রন্থাগার পরামর্শ দিন এবং এই মানদণ্ডগুলি পাশাপাশি উপকারিতা এবং কনস সম্পর্কে আলোচনা করুন।

উত্তর:


11

গ্রাফ লাইব্রেরি এবং লেমন বুস্ট করুন

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

আপনি যদি বেসিক এইচপিসি গ্রাফের কাজটি করে থাকেন তবে আপনি বুস্ট গ্রাফ লাইব্রেরিটি দিয়ে শুরু করতে চাইতে পারেন তবে সচেতন থাকবেন যে অনেকগুলি এইচপিসি সি ++ সংকলক বুস্টের সাথে অসুবিধা বোধ করে (সি ++ মানের সাথে এটির কঠোরভাবে মেনে চলা সত্ত্বেও) এবং আপনাকে একটি ব্যবহারের প্রয়োজন হতে পারে বুস্টের পুরানো সংস্করণ বা এইচপিসি সিস্টেমে এটির কাজ করতে জিসিসির মতো একটি নন-বিক্রেতা সংকলক।

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

লোড-ব্যালেন্সিং এবং ডায়নামিক গ্রাফ (পুনরায়) -বিশেষকরণ

আপনি যদি লোড-ব্যালেন্সিং এবং গতিশীল গ্রাফ বিভাজনে আগ্রহী হন তবে আপনার আরও কয়েকটি বিকল্প রয়েছে। সম্ভবত সবচেয়ে সুপরিচিত গ্রন্থাগারটি পারমেটিস , যা গত বছর সংস্করণ 4 এ আপডেট হয়েছিল। পারমেটিস ভার্টেক্স-ভিত্তিক ওজনকে বৈশিষ্ট্যযুক্ত, যা বহু-পদার্থবিজ্ঞানের সিমুলেশনের জন্য গুরুত্বপূর্ণ।

পারমেটিসের ইউরোপীয় প্রতিযোগী হলেন পিটি-স্কচ , যা নির্দিষ্ট ধরণের সমস্যার জন্য আরও ভাল পারফরম্যান্স পেয়েছে, তবে পারমেটিসের মতো এটিও প্রায়শই আপডেট হয় না।

আপনি জোল্টান সম্পর্কেও আগ্রহী হতে পারেন , যা সি ++ তে বৈজ্ঞানিক কম্পিউটিংয়ের জন্য স্যান্ডিয়া ন্যাশনাল ল্যাবরেটরিজ ট্রিলিনোস মেটা-প্যাকেজের অংশ is জোলটান পারমেটিস এবং পিটি-স্কচ উভয়ের মধ্যে নিজস্ব শ্রেণিবদ্ধ এবং ইন্টারফেস বৈশিষ্ট্যযুক্ত features

Graph500

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


1
প্রশ্ন: সমান্তরাল বুস্ট গ্রাফ লাইব্রেরি বিতরণ-মেমরি সমান্তরালতার জন্য। সাধারণ বুস্ট গ্রাফ লাইব্রেরি কি ওপেনএমপি-এর সাথে ভাগ করা-স্মৃতি সমান্তরালের জন্য উপযুক্ত?
clstaudt

@ ক্লাস্টাউড্ট - এটি সমস্যা-নির্দিষ্ট হতে চলেছে। আরও ভাল উত্তরের জন্য আপনাকে আপনার অ্যালগরিদমের বিশদটি আরও গভীরভাবে পেতে হবে (এবং এটি সম্ভবত একটি নতুন প্রশ্ন হবে)।
আরন আহমদিয়া

5

সম্ভবত, বুস্ট গ্রাফ লাইব্রেরি যা আপনি সন্ধান করছেন। গ্রাফভিজের ডট ফর্ম্যাটে বর্ণিত গ্রাফগুলি পড়ার পার্সার রয়েছে। যদিও আমি মেমরির ওভারহেড সম্পর্কে সত্যই জানি না, এটি সমান্তরালতার জন্য বৈকল্পিক সরবরাহ করে ।

আর একটি গ্রাফ লাইব্রেরি হ'ল লেমন তবে আমি এটি সত্যই জানি না এবং যদি এর সমান্তরালনের পক্ষে সমর্থন থাকে তবে এটি বিজ্ঞাপন দেওয়া হয় না। যদিও এটির ওয়েবসাইটটি ভাল ছাপ দেয়;)


লেমনও আমার কাছে দেখতে খুব সুন্দর, তবে আমি এটি ভাগ করে নেওয়া মেমরির সমান্তরাল কোড (ওপেনএমপি) এর জন্য ব্যবহার করতে পারি কিনা সে সম্পর্কে আমার কোনও ধারণা নেই।
clstaudt

আমিও না, সত্যি বলতে। তবে সম্ভবত আপনি এটি আপনার সমস্যার জন্য ভাগ করা ডেটা স্ট্রাকচার ঘোষণা করতে এবং বিভিন্ন থ্রেডে এটির অ্যালগরিদম চালাতে পারেন। হতে পারে আপনি আপনার সমস্যাটিকে উপযুক্ত সাব-প্রবলেমে ভাগ করতে পারেন।
ড্যানিয়েল এবার্টস

5

আমি স্টিংয়ের উল্লেখ করতে চাই , সমান্তরালতার জন্য ডিজাইন করা একটি গতিশীল গ্রাফ ডেটা স্ট্রাকচার। ওয়েবসাইট অনুসারে, এটি নিম্নলিখিত উদ্দেশ্যগুলির জন্য ডিজাইন করা হয়েছে:

বহনযোগ্যতা: স্টিংয়ের জন্য রচিত অ্যালগরিদমগুলি একাধিক ভাষা এবং ফ্রেমওয়ার্কের মধ্যে সহজেই অনুবাদ / পোর্ট করা যায়

উত্পাদনশীলতা: স্টিংয়ের একটি সাধারণ বিমূর্ত ডেটা কাঠামো সরবরাহ করা উচিত যাতে বৃহত গ্রাফ সম্প্রদায়টি একে অপরের গবেষণা বিকাশগুলি দ্রুত লাভ করতে পারে। এটি দর্শনের ক্ষেত্রে সংখ্যাসূচক অ্যালগরিদম সম্প্রদায়কে স্পার এবং ঘন ম্যাট্রিক্সের অন্তর্নিহিত ব্যবহারের সাথে একই similar

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

এটি লেমন বা বুস্ট গ্রাফ লাইব্রেরির মতো এবং বিকাশের আগের পর্যায়ে জেনেরিক নয়। আপনি যদি এটি পরীক্ষা করে দেখেন তবে আমি আপনার মন্তব্যে আগ্রহী।


স্টারিং জর্জিয়া টেকের ডেভিড বাডারের ল্যাব থেকে বেরিয়ে এসেছেন। তিনি এইচপিসি সম্প্রদায়ের গ্রাফ 500 তে তাঁর কাজের জন্য সুপরিচিত, এটি উল্লেখ করার জন্য ধন্যবাদ!
আরন আহমদিয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.