এর গণনীয় খরচ কি মান গ্রন্থাগারে?


26

আণবিক সিমুলেশনের ক্ষেত্রে আমাদের যে প্রধান সমস্যাগুলি মোকাবেলা করতে হবে তার মধ্যে একটি হ'ল দূরত্ব নির্ভর শক্তিগুলির গণনা। আমরা বিচ্ছেদ দূরত্ব এমনকি ক্ষমতা আছে বল ও দুরত্ব ফাংশন সীমিত করতে পারে এমন , তাহলে আমরা শুধু দূরত্বের বর্গের গনা করতে এবং প্রায় চিন্তা করতে হবে না । বিজোড় ক্ষমতা থাকে তাহলে অবশ্য তারপর আমরা মোকাবেলা করার প্রয়োজন ।rr2=rrrr=r2

আমার প্রশ্ন: সাধারণ ভাষার লাইব্রেরিগুলিতে (সি / সি ++, ফোর্টরান, পাইথন) ইত্যাদি প্রয়োগ করা হিসাবে গণনা কত ব্যয়বহুল ? নির্দিষ্ট আর্কিটেকচারের জন্য কোডটি হ্যান্ড-টিউন করে কি কার্যত অনেক উন্নতি করতে হবে?x

উত্তর:


39

একটি এক্সটেনশান হিসাবে moyner এর উত্তর অন-চিপ sqrtসাধারণত একটি হল rsqrt, অর্থাত্ একটি পারস্পরিক বর্গমূল যে নির্ণয় । সুতরাং যদি আপনার কোডটিতে আপনি কেবল ব্যবহার করতে যাচ্ছেন (আপনি যদি অণু গতিবিদ্যা করছেন, তবে আপনি), আপনি সরাসরি গণনা করতে পারেন এবং নিজেকে বিভাগটি সংরক্ষণ করতে পারেন । এর পরিবর্তে গণনা করার কারণটি হ'ল এর নিউটনের পুনরাবৃত্তির কোনও বিভাগ নেই, কেবল সংযোজন এবং গুণ রয়েছে।a1/a1/rr = rsqrt(r2)rsqrtsqrt

পার্শ্ব-নোট হিসাবে বিভাগগুলিও পুনরাবৃত্তভাবে গণনা করা হয় rsqrtএবং হার্ডওয়্যারের মতো প্রায় ধীর হয় । আপনি যদি দক্ষতার সন্ধান করছেন তবে অতিরিক্ত অতিরিক্ত বিভাগগুলি অপসারণ করার চেষ্টা করা ভাল।

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

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

হালনাগাদ

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

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

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

আমি যে বিষয়টিটির উপরে জোর দিতে চাই তা হ'ল যদিও অন্তর্নিহিত হার্ডওয়্যার আর্কিটেকচারকে আরও ভালভাবে জানার / শোষণ করার জন্য কিছু উন্নতি হতে পারে তবে উচ্চ-স্তরের অ্যালগরিদমগুলি পুনরায় চিন্তা করার ক্ষেত্রে আরও বড় সম্ভাবনা রয়েছে।


6
এসএসই rsqrtpsএবং এভিএক্স vrsqrtpsএছাড়াও অনুমান, তারা প্রথম 11 থেকে 12 বিট সঠিক পায় এবং আপনি আরও সঠিকতা চাইলে আপনার নিউটন পুনরাবৃত্তি বা দু'এর সাথে সংশোধন করা উচিত। এগুলি স্যান্ডি ব্রিজের উপর 5/1 এবং 7/1 (বিলম্ব / ইনভার্স থ্রুটপুট ) নির্দেশাবলী (ইন্টেল ডক্স বা অ্যাগ্রার ফগের নির্দেশ সারণীগুলি দেখুন যা গুণনের সাথে তুলনীয় contrast বিপরীতে, সম্পূর্ণ নির্ভুলতা (v)sqrtps(বা ডাবল স্পষ্টতা (v)sqrtpd) 10-43 / লাগে 10-43 (বিস্তারিত জানার জন্য নির্দেশ টেবিল দেখুন)।
জেড ব্রাউন

@ জেডব্রাউন: এটি নির্দেশ করার জন্য ধন্যবাদ! আমি ভুলে গিয়েছিলাম যে এসএসই এবং এর এক্সটেনশানগুলি এটি সরবরাহ করে।
পেড্রো

16

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

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

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

যদি আপনার ভাষা পর্যাপ্ত পর্যায়ে থাকে তবে আপনি সর্বদা নিম্ন নির্ভুলতায় টাইপকাস্ট করতে পারেন বা আপনার স্থানাঙ্কগুলির জন্য একটি নিম্ন নির্ভুলতা নম্বর ব্যবহার করতে পারেন। একক নির্ভুলতা প্রায়শই যথেষ্ট ভালের চেয়ে বেশি হয় এবং আমি যা মনে করি তা থেকে বর্গীয় শিকড়গুলি গণনা করার সময় তত দ্রুত হবে যেহেতু পুনরাবৃত্তিগুলি আগে শেষ করা যায়।

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


0

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

গ্রোম্যাক্স এমডি প্রকল্পটি বর্গমূলের পারস্পরিক ক্রিয়াকলাপের জন্য একটি গ্রহণযোগ্য অনুমানের গণনা করার জন্য নিউটন-রাফসন পুনরাবৃত্তি প্রকল্পের বীজ আইইইই ফ্লোটিং-পয়েন্ট ফর্ম্যাটটির বিশদটি কাজে লাগানোর একটি ধারণার বাইরে এসেছিল ( http: / এর পরিশিষ্ট B.3 দেখুন) /www.gromacs.org/ ডকুমেন্টেশন / ম্যানুয়াল ), তবে এমন কোনও এইচপিসি সিপিইউ নেই যেখানে গ্রোম্যাকস এখনও এই ধারণাটি ব্যবহার করে।

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