আমার কাছে কম্পিউটেশনাল মডেলের একটি সংগ্রহ রয়েছে যা অ্যাসিঙ্ক্রোনাস সেলুলার অটোমেটা হিসাবে বর্ণনা করা যেতে পারে। এই মডেলগুলি ইসিং মডেলের সাথে সাদৃশ্যযুক্ত তবে কিছুটা জটিল। দেখে মনে হচ্ছে এই জাতীয় মডেলগুলি কোনও সিপিইউয়ের পরিবর্তে জিপিইউতে চালিত হওয়ার মাধ্যমে উপকৃত হবে। দুর্ভাগ্যক্রমে এ জাতীয় মডেলটির সমান্তরাল করা একেবারেই সরল নয় এবং কীভাবে এটি করা যায় তা আমার কাছে মোটেও পরিষ্কার নয়। আমি সচেতন যে বিষয়টিতে সাহিত্য রয়েছে, তবে এগুলি আমার লক্ষ্য এমন যে কেউ প্রয়োগ করতে পারে তার বিবরণ চেয়ে আমার চেয়ে এমন ব্যক্তিদের চেয়ে, হার্ড কম্পিউটার কম্পিউটার বিজ্ঞানী যারা অ্যালগরিদমিক জটিলতার বিশদ সম্পর্কে আগ্রহী তাদের লক্ষ্য ছিল বলে মনে হয় এবং এবং ফলস্বরূপ আমি এটি বরং অপ্রয়োজনীয় বলে মনে করি।
স্পষ্টতার জন্য, আমি একটি অনুকূল অ্যালগরিদম এতটা খুঁজছি না যা আমি খুব দ্রুত CUDA তে বাস্তবায়িত করতে পারি যা সম্ভবত আমার সিপিইউ বাস্তবায়নের উপর একটি গুরুত্বপূর্ণ গতিবেগ দেবে। এই প্রকল্পের কম্পিউটার সময়ের চেয়ে প্রোগ্রামার সময় অনেকটা সীমাবদ্ধ ফ্যাক্টরের বেশি।
আমার এও স্পষ্ট করে বলা উচিত যে একটি অ্যাসিনক্রোনাস সেলুলার অটোমেটন একটি সিঙ্ক্রোনাসের চেয়ে বরং আলাদা জিনিস, এবং সমান্তরাল সিএ সি'র জন্য কৌশলগুলি (যেমন কনওয়ের জীবন) সহজেই এই সমস্যার সাথে খাপ খাইয়ে নিতে পারে না। পার্থক্যটি হ'ল একটি সিঙ্ক্রোনাস সিএ প্রতিটি কক্ষে প্রতিটি সময় একই সাথে আপডেট করে, যেখানে একটি অ্যাসিঙ্ক্রোনাস নীচে বর্ণিত হিসাবে প্রতিটি সময় ধাপে এলোমেলোভাবে বেছে নেওয়া স্থানীয় অঞ্চল আপডেট করে।
যে মডেলগুলির আমি সমান্তরাল করতে চাই সেগুলি la 100000 কোষ (যদিও আমি আরও বেশি ব্যবহার করতে চাই) সমন্বিত একটি জালিতে (সাধারণত একটি ষড়জাগরীয়) প্রয়োগ করা হয়, এবং এগুলি চালানোর জন্য অ-সমান্তরাল অ্যালগরিদমটি দেখতে এই জাতীয় দেখাচ্ছে:
এলোমেলোভাবে প্রতিবেশী জোড়া কোষ চয়ন করুন
এই ঘরগুলি ঘিরে স্থানীয় প্রতিবেশীর উপর ভিত্তি করে একটি "শক্তি" ফাংশন গণনা করুন
একটি সম্ভাব্যতা যে উপর নির্ভর করে দিয়ে (সঙ্গে β একটি প্যারামিটার), নয়তো দুই কোষের রাজ্যের অদলবদল অথবা কিছুই না।
উপরের পদক্ষেপগুলি অনির্দিষ্টকালের জন্য পুনরাবৃত্তি করুন।
সীমানা শর্তের সাথে করার জন্য কিছু জটিলতাও রয়েছে তবে আমি ধারণা করি এগুলি সমান্তরালে খুব বেশি অসুবিধা করবে না।
এটি উল্লেখ করার মতো যে আমি এই সিস্টেমগুলির ক্ষণস্থায়ী গতিবিদ্যায় আগ্রহী কেবলমাত্র সাম্যাবস্থার রাষ্ট্রের চেয়ে না, তাই আমার একই রকম ভারসাম্য বন্টনের কাছে পৌঁছানোর মতো কিছু না করে উপরের সাথে সমতুল্য গতিশীলতা থাকা দরকার need (সুতরাং চেকবোর্ড অ্যালগরিদমের বিভিন্নতা আমি যা খুঁজছি তা নয়))
উপরের অ্যালগরিদমের সমান্তরালে মূল অসুবিধা হ'ল সংঘর্ষ। যেহেতু সমস্ত গণনাগুলি কেবল জালাগুলির স্থানীয় অঞ্চলে নির্ভর করে, যতক্ষণ না তাদের আশেপাশের অঞ্চলগুলি ওভারল্যাপিং না করে ততক্ষণ জালির অনেকগুলি সাইট সমান্তরালভাবে আপডেট করা সম্ভব। প্রশ্ন হল কিভাবে এই ধরনের ওভারল্যাপগুলি এড়ানো যায়। আমি বেশ কয়েকটি উপায়ে চিন্তা করতে পারি, তবে আমি জানি না কোনটি কার্যকর করার জন্য সবচেয়ে ভাল কিনা। এগুলি নিম্নরূপ:
এলোমেলো গ্রিড সাইটের তালিকা তৈরি করতে এবং সংঘর্ষের জন্য চেক করতে সিপিইউ ব্যবহার করুন। যখন গ্রিড সাইটের সংখ্যা জিপিইউ প্রসেসরের সংখ্যার সমতুল্য হয়, বা যদি কোনও সংঘর্ষ সনাক্ত হয়, তখন সংশ্লিষ্ট গ্রিড সাইট আপডেট করার জন্য প্রতিটি সমন্বয়কের সেটকে একটি জিপিইউ ইউনিটে প্রেরণ করুন। এটি কার্যকর করা সহজ হবে তবে সম্ভবত খুব বেশি গতি বাড়বে না, কারণ সিপিইউতে সংঘর্ষের জন্য চেক করা সম্ভবত সিপিইউতে সম্পূর্ণ আপডেট করার চেয়ে এতটা সস্তা হবে না।
জালিকে অঞ্চলগুলিতে বিভক্ত করুন (প্রতি জিপিইউ ইউনিটে এক) এবং এ অঞ্চলের মধ্যে গ্রিড কোষগুলি এলোমেলোভাবে নির্বাচন এবং আপডেট করার জন্য দায়ী একটি জিপিইউ ইউনিট have তবে এই ধারণার সাথে অনেকগুলি সমস্যা রয়েছে যে আমি কীভাবে সমাধান করতে জানি না, যখন একটি ইউনিট তার অঞ্চলের প্রান্তকে ওভারল্যাপ করে কোনও প্রতিবেশকে বেছে নেয় তখন ঠিক কী হওয়া উচিত তা সর্বাধিক সুস্পষ্ট being
আনুমানিক সিস্টেমটি নিম্নরূপ: সময়টি পৃথক পদক্ষেপে এগিয়ে যেতে দিন। জালিকে আলাদা করে ভাগ করুনকিছু প্রাক-সংজ্ঞায়িত স্কিম অনুসারে প্রতিটি ধাপে অঞ্চলগুলির সেট করুন এবং প্রতিটি জিপিইউ ইউনিট এলোমেলোভাবে গ্রিড কোষগুলির একজোড়া নির্বাচন করুন এবং আপডেট করুন যার আশেপাশের অঞ্চলের সীমানাটি অতিক্রম করে না। যেহেতু অঞ্চলগুলি তুলনামূলকভাবে বড় হয় ততক্ষণ সীমানা প্রতিটি পদক্ষেপে পরিবর্তন হওয়ার সাথে সাথে এই সীমাবদ্ধতা গতিশীলতার উপর খুব বেশি প্রভাব ফেলতে পারে না। এটি বাস্তবায়ন করা সহজ এবং দ্রুত হতে পারে বলে মনে হয়, তবে এটি কতটা গতিবেগের অনুমান করবে বা প্রতিটি পদক্ষেপে এই অঞ্চলের সীমানা বেছে নেওয়ার জন্য সেরা পরিকল্পনা কী তা আমি জানি না। আমি "ব্লক-সিঙ্ক্রোনাস সেলুলার অটোমেটা" এর কিছু উল্লেখ পেয়েছি, যা এই ধারণার মতো হতে পারে বা নাও হতে পারে। (আমি জানি না কারণ মনে হয় যে পদ্ধতিটির সমস্ত বিবরণ হয় রাশিয়ান ভাষাতে বা এমন উত্সে রয়েছে যেগুলিতে আমার অ্যাক্সেস নেই))
আমার নির্দিষ্ট প্রশ্নগুলি নিম্নরূপ:
উপরোক্ত অ্যালগরিদমের কোনওটি কি অ্যাসিঙ্ক্রোনাস সিএ মডেলের জিপিইউ সমান্তরালের কাছে যাওয়ার কোনও বুদ্ধিমান উপায়?
একটি ভাল উপায় আছে কি?
এই ধরণের সমস্যার জন্য কি লাইব্রেরি কোড রয়েছে?
"ব্লক-সিঙ্ক্রোনাস" পদ্ধতির স্পষ্ট ইংরেজী ভাষার বিবরণ আমি কোথায় পাব?
উন্নতি
আমি বিশ্বাস করি যে উপযুক্ত হতে পারে এমন একটি অ্যাসিনক্রোনাস সিএকে সমান্তরাল করার একটি উপায় নিয়ে এসেছি। নীচে বর্ণিত অ্যালগরিদমটি একটি সাধারণ অ্যাসিনক্রোনাস সিএর জন্য যা খনি হিসাবে প্রতিবেশী জোড়া কোষের চেয়ে একবারে কেবলমাত্র একটি সেল আপডেট করে। এটি আমার নির্দিষ্ট ক্ষেত্রে সাধারণীকরণের সাথে কিছু সমস্যা রয়েছে তবে আমি মনে করি সেগুলি কীভাবে সমাধান করা যায় সে সম্পর্কে আমার ধারণা রয়েছে। তবে, নিচে আলোচিত কারণে এটি গতির কতটা উপকার দেবে তা আমি নিশ্চিত নই।
ধারণাটি হ'ল অ্যাসিনক্রোনাস সিএ (এখন থেকে এসিএ) কে স্টোকাস্টিক সিঙ্ক্রোনাস সিএ (এসসিএ) এর সাথে সমান আচরণ করে replace এটি করার জন্য আমরা প্রথমে ধারণা করি যে ACA একটি পয়সন প্রক্রিয়া। অর্থাত, সময় অবিচ্ছিন্নভাবে এগিয়ে যায় এবং প্রতিটি সেল পৃথকভাবে অন্য কোষের থেকে আলাদাভাবে তার আপডেট ফাংশন সম্পাদনের সময়কালে প্রতি ধ্রুবক সম্ভাবনা হিসাবে থাকে।
এমন একটি প্যারামিটার যার মান নির্বিচারে চয়ন করা যেতে পারে))
প্রতিটি যৌক্তিক সময় ধাপে, এসসিএর ঘরগুলি নিম্নরূপ আপডেট করা হয়:
আমি বিশ্বাস করি এটির গ্যারান্টি রয়েছে যে কোষগুলি এমন একটি ক্রমে আপডেট হবে যা মূল এসিএর সাথে সামঞ্জস্য করার জন্য "ডিকোডড" করা যেতে পারে, যখন সংঘর্ষগুলি এড়ানো এবং কিছু কোষকে সমান্তরালে আপডেট করার অনুমতি দেয়। তবে উপরের প্রথম বুলেট পয়েন্টের কারণে এর অর্থ হ'ল এসপিএর প্রতিটি সময় ধাপে বেশিরভাগ জিপিইউ প্রসেসর বেশিরভাগ ক্ষেত্রেই অলস থাকবেন, যা আদর্শের চেয়ে কম।
আমাকে এই অ্যালগরিদমের কার্যকারিতা আরও উন্নত করা যায় কিনা এবং এসিএতে একাধিক কোষ একযোগে আপডেট করা হয় সেই ক্ষেত্রে মোকাবেলা করার জন্য কীভাবে এই অ্যালগরিদমকে প্রসারিত করা যায় সে সম্পর্কে আমাকে আরও কিছু চিন্তা দিতে হবে। তবে এটি আশাব্যঞ্জক বলে মনে হচ্ছে তাই আমি ভেবেছিলাম যে এখানে যদি আমি (ক) সাহিত্যের অনুরূপ কিছু জেনে বা (খ) এই অবশিষ্ট বিষয়গুলির বিষয়ে কোনও অন্তর্দৃষ্টি দিতে পারি তবে আমি এখানে এটি বর্ণনা করব।
exp()
) এবং তাই আমি ভাবিনি যে এটি একাধিক থ্রেডে ছড়িয়ে দিতে খুব বেশি অর্থবোধ করে। আমি মনে করি যে প্রতি থ্রেডে এক জোড়া দিয়ে সমান্তরালভাবে একাধিক জুটি চেষ্টা এবং আপডেট করা ভাল (এবং আমার পক্ষে সহজ)।