ওপেন এমপি বিভাগ ফাঁকা (রূপান্তর) রূপান্তর কিভাবে করবেন

আমি pthreads নতুন এবং আমি মত কিছু প্রকাশ করতে চান জিজ্ঞাসা করতে চাই:

while(imhappy())
{
 #pragma omp sections
 {
  #pragma omp section
  {
   dothis();
  }
  #pragma omp section
  {
   dothat();
  }
 }
}

সমতুল্য ink() বা vfork() ব্যবহার করে তৈরি করা? এগিয়ে ধন্যবাদ!

PS: আমি কিছু সম্পদ ক্লোনিং কারণে লুপ প্রবেশ করার আগে ফর্ক এটিরকমভাবে একরকম আরো চতুর হয় যদি বিভাগের কাছাকাছি সময় অন্তর্ভুক্ত।

0

2 উত্তর

OpenMP থ্রেড শুধুমাত্র spawning তুলনায় দৃশ্যের পিছনে অন্যান্য জিনিস অনেক আছে। এটি কোড সেগুলিকেও বিতরণ করে এবং বিভিন্ন থ্রেডকে সিঙ্ক্রোনাইজ করে। আপনি pthreads হিসাবে আপনার প্রশ্নটি ট্যাগ করেছেন যদিও আপনি ফর্ক() দিয়ে বাস্তবায়ন সম্পর্কে জিজ্ঞাসা করছেন যা বিভ্রান্তিকর। লিনাক্সে ফোর্ক() অত্যন্ত ভারী জিনিস, এটি নতুন প্রসেস তৈরি করে এবং পরিবর্তে ক্লোন() থ্রেড তৈরি করতে ব্যবহৃত হয়।

যাইহোক, দুটি থ্রেড দিয়ে তৈরি ওপেন এমপি বিভাগের রুক্ষ সমতুল্যটি কাঁটাগাছ হতে হবে, পরে যদি নির্মাণ করা হয় এবং মাস্টার প্রসেসটি theis() পাথটি চালানো হবে যখন সন্তানটি চালান() পথটি চালাবে ফর্ক() থেকে ফেরত পাওয়া মানটি পিতামাতার মধ্যে এবং চাইল্ড প্রসেসগুলির মধ্যে ভিন্ন এবং এটি শাখাটির সিদ্ধান্তের জন্য ব্যবহার করা যেতে পারে। </>> </>> </> কোড অঞ্চলের শেষে অন্তর্নিহিত বাধা সংকোচনকরণের অনুরূপ হবে যা waitpid() সঙ্গে শেষ করতে পিতামাতার প্রক্রিয়াটি অপেক্ষা করবে।

যদিও একটি সতর্কতা - ফরম() COW (কপি-অন-লিখিত) পৃষ্ঠাগুলি ব্যবহার করে প্রয়োগ করা হয়। এর মানে হল যে যদিও শুরুতে শিশুটির মেমরি কন্টেন্ট পিতামাতার মেমরি কন্টেন্টের সমতুল্য, কোনও পরিবর্তন করা হয় ব্যক্তিগত - শিশুটি তার মেমরিতে কি পরিবর্তন করে তা দেখতে পাবে না এবং তদ্বিপরীত। মেমরি স্পষ্টভাবে দুটি SysV ভাগ মেমরি primitives বা ভাগ ফাইল ম্যাপিং ব্যবহার করে মধ্যে ভাগ করা হয়েছে।

আপনি সত্যিই পরিবর্তে POSIX থ্রেড API ব্যবহার করে দেখতে চাই।

vfork() is a syscall designed for completely different purpose and is not suitable for process cloning at all.

0
যোগ
সুতরাং pthreads বিবেচনা করে এটি juist হবে: pthread_create (& tid1,0, theisis, 0); pthread_create (& tid2,0, dothat, 0); pthread_join (tid1,0); pthread_join (tid2,0); ? এটা অনেক সহজ হতে পারে, এবং যদি আমি এটি সঠিকভাবে দেখি ডিফল্টরূপে আমি জি মেগাবাইট? ধন্যবাদ এই অনেক সহজ হতে পারে থন কাঁটা!
যোগ লেখক litro, উৎস
কল করার প্রয়োজন নেই pthread_create দুবার - আপনার ইতিমধ্যে অন্য থ্রেড আছে :)
যোগ লেখক Hristo Iliev, উৎস

আমি মনে করি না যে কাঁটাচামচ ব্যবহার করে বিভাগের একটি সিমুলেশন আছে। যাইহোক, আপনি তাত্ত্বিকভাবে একটি messgae ক্ষণস্থায়ী প্রক্রিয়া ব্যবহার করে এটি অনুকরণ করতে পারেন যেখানে ভাগ ভেরিয়েবল একটি রুট মেশিন সঙ্গে রাখা হয়। সব openmp ফ্লাশ root ব্যবহার করে ঘটবে। (মনে রাখবেন যে খোলা পিএল দুর্বল সামঞ্জস্য মডেলের চেয়ে দুর্বল।)

0
যোগ