শেয়ার্ড-মেমরি প্যারালাল প্রোগ্রামিংয়ের জন্য পাইথনে গাইড ides


11

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

সম্প্রতি, আমি আমার প্রকল্পগুলির জন্য পাইথনে স্থানান্তরিত করেছি এবং পাইথনের সাথে পরম বেসিকগুলির সাথে আমার কোনও অভিজ্ঞতা নেই।

আমার 2 টি প্রশ্ন রয়েছে:

  • পাইথনের জন্য ভাগ করা মেমরি সমান্তরাল কম্পিউটিং বর্ণনা করার জন্য কোনও ভাল গাইড (অনলাইন পিডিএফ) আছে?

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

উত্তর:


8

[এটি আমার প্রথম পোস্ট এবং আমি আশা করি আমি এসই ব্যবহারে পুরোপুরি ভুল বুঝিনি - যদি তাই হয় তবে আমি আগে থেকে ক্ষমা চাইছি]

আমি "bgschaid" এর সাথে একমত যে প্রদত্ত তথ্যের ভিত্তিতে প্রশ্নের উত্তর দেওয়া খুব কঠিন difficult আপনি যদি নিম্ন-স্তরের রুটিনগুলি কোনও বহু-কোর আর্কিটেকচারটি শোষণ করতে চান বা যদি আপনাকে বিব্রতকরভাবে সমান্তরাল সমস্যাগুলির জন্য - বা এর মধ্যে কিছু করার জন্য সমান্তরালতা কাজে লাগাতে চান তবে এটি একটি বিশাল পার্থক্য করে। পাইথনে বিভিন্ন সমান্তরাল কম্পিউটিং সম্ভাবনার একটি ওভারভিউ এখানে পাওয়া যাবে

পূর্ববর্তী ক্ষেত্রে আমি নিশ্চিতভাবে NumPy / SciPy এর মতো সরঞ্জামগুলি ব্যবহার করার পরামর্শ দিচ্ছি যা অন্তত এমকেএল সংকলিত সংস্করণে এনটওয়ট থেকে বহু-কোর আর্কিটেকচার সমর্থন করে। পরিবেশ পরিবর্তনশীল "MKL_NUM_THREADS" এর মাধ্যমে আপনি ব্যবহারের জন্য করের সংখ্যাটি নিয়ন্ত্রণ করতে পারেন। এটি অত্যন্ত অনুকূলিত লাইব্রেরিগুলির উপর নির্ভর করে যা পারফরম্যান্সের ভিত্তিতে আমরা খুব কমই আশা করতে পারি। আমি বিশ্বাস করি সাধারণত যখনই সম্ভব এই উচ্চ মানের এবং উচ্চতর অনুকূলিতকরণ গ্রন্থাগারগুলি ব্যবহার করার পরামর্শ দেওয়া হয়।

আপনি যদি মোটা স্তরে সমান্তরালতা কাজে লাগাতে চান তবে পাইথন স্ট্যান্ডার্ড টুল মাল্টিপ্রসেসিং ব্যবহার করা সহজ - এবং এটি ভাগ করা ডেটা অবজেক্টগুলিকে সমর্থন করে। মাল্টিপ্রসেসিং প্যাকেজের অংশ হিসাবে ব্যবহার করার জন্য বিভিন্ন সরঞ্জাম রয়েছে । আমি ভাল ফলাফল সহ বেশ কয়েকটি সমস্যার জন্য মানচিত্র_সায়েন্স (সিমড লাইক) এবং অ্যাপ্লিকেশন_সায়েন্স (এমআইএমডি লাইক) ব্যবহার করেছি। মাল্টিপ্রসেসিং প্যাকেজ বেশ সহজ ব্যবহার এবং পাইথন মানে আপনি সহজেই আপনার কোডের অন্যান্য সম্ভাব্য ব্যবহারকারীদের এটি ব্যবহার করতে পারবেন আশা করতে পারেন একটি প্রমিত অংশ হওয়ার নয়। মাল্টিপ্রসেসিং সরাসরি NumPy ডেটা অবজেক্টের সাথেও লিঙ্ক করে। মাল্টিপ্রসেসিং ব্যবহার করার সময় আমি আপনাকে পরিবেশের পরিবর্তনশীল "MKL_NUM_THREADS" এর জন্য 1 এর মতো সেট করার পরামর্শ দিচ্ছিNumPy কেবল প্রতিটি প্রক্রিয়া / কর্মীর জন্য একটি কোর অনুমোদিত - অন্যথায় আপনি NumPy সমান্তরাল এবং মাল্টিপ্রসেসিং এর মধ্যে একটি সংস্থান বিবাদে পৌঁছাতে পারেন যা কার্য সম্পাদনের অবনতির দিকে নিয়ে যায়। মাল্টিপ্রসেসিং একই অপারেটিং সিস্টেমের অধীনে মাল্টি-সিপিইউ / মাল্টি-কোর আর্কিটেকচারের জন্য সূক্ষ্মভাবে কাজ করে। আমি 4 x Xeon E7-4850 সিপিইউ (প্রতিটি 10 ​​কোর) এবং 512 গিগাবাইট মেমরির সাথে একটি ভাগ করা মেমরি কম্পিউটারে মাল্টিপ্রসেসিং ব্যবহার করেছি এবং এটি অত্যন্ত ভালভাবে কাজ করেছে। ভাগ করা অ্যারেগুলি মাল্টিপ্রসেসিংয়ের মাধ্যমে পরিচালনা করা যায় rআরাই বা শেয়ারডটাইপগুলি । আপনি পাইথন ডকুমেন্টেশন এখানে খুঁজে পেতে পারেন - পরীক্ষা করুনগ্রন্থাগার.পিডিএফ ফাইল। আমার এর কয়েকটি প্রাথমিক অংশ ব্যাখ্যা করে কিছু স্লাইড রয়েছে - আপনি যদি সেগুলি চান তবে আমাকে প্রধানমন্ত্রী করুন PM

যদি আপনার বিতরণ মেমরির সাথে একটি ক্লাস্টার কনফিগারেশন থাকে তবে আমি বিশ্বাস করি এমপিআই 4পি সম্ভবত পছন্দসই সরঞ্জাম। আমি নিজে এটি ব্যবহার করি নি তবে আমি জানি যে পাইথন সমান্তরাল প্রোগ্রামিংয়ে এটি প্রচুর ব্যবহৃত হচ্ছে।


3

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

এবং অবশ্যই এমপিআই প্রোগ্রাম করার জন্য এমপিআইপিপি রয়েছে (উপরের নিবন্ধে অন্তর্ভুক্ত)

আমার নীচের লাইনটি হ'ল: যদি আপনার প্রধান আগ্রহটি ভেক্টর / ম্যাট্রিক্স-অপারেশন হয় এবং সমান্তরালতা এমন কিছু হয় যা আপনার "কেবল" এটি দ্রুত করতে হয় তবে আপনার NumPy / SciPy-বাস্তুতন্ত্রের দিকে নজর রাখা উচিত এবং কেবল যদি আপনি এটি না পান তবে আপনার নিজের লাইব্রেরিগুলি লিখে রাখার জন্য আপনার প্রয়োজন এমন স্টাফগুলি

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