একটি এক্সটেনশান হিসাবে moyner এর উত্তর অন-চিপ sqrt
সাধারণত একটি হল rsqrt
, অর্থাত্ একটি পারস্পরিক বর্গমূল যে নির্ণয় । সুতরাং যদি আপনার কোডটিতে আপনি কেবল ব্যবহার করতে যাচ্ছেন (আপনি যদি অণু গতিবিদ্যা করছেন, তবে আপনি), আপনি সরাসরি গণনা করতে পারেন এবং নিজেকে বিভাগটি সংরক্ষণ করতে পারেন । এর পরিবর্তে গণনা করার কারণটি হ'ল এর নিউটনের পুনরাবৃত্তির কোনও বিভাগ নেই, কেবল সংযোজন এবং গুণ রয়েছে।a→1/a−−√1/rr = rsqrt(r2)
rsqrt
sqrt
পার্শ্ব-নোট হিসাবে বিভাগগুলিও পুনরাবৃত্তভাবে গণনা করা হয় rsqrt
এবং হার্ডওয়্যারের মতো প্রায় ধীর হয় । আপনি যদি দক্ষতার সন্ধান করছেন তবে অতিরিক্ত অতিরিক্ত বিভাগগুলি অপসারণ করার চেষ্টা করা ভাল।
আরও কিছু আধুনিক আর্কিটেকচার যেমন আইবিএমের পাওয়ার আর্কিটেকচারেrsqrt
প্রতি- সেয়ার সরবরাহ করা হয় না , তবে কয়েকটি বিটের জন্য নির্ভুল একটি অনুমান, যেমন এফআরএসকিউআরটিই । যখন কোনও ব্যবহারকারী কল করেন rsqrt
, এটি নিয়মিত গুণ এবং সংযোজন ব্যবহার করে নিউটন বা গোল্ডশ্মিড্টের অ্যালগরিদমের এক বা দুটি (প্রয়োজনীয় হিসাবে অনেকগুলি) পুনরাবৃত্তি তৈরি করে an এই পদ্ধতির সুবিধাটি হ'ল পুনরাবৃত্তি পদক্ষেপগুলি এফপিইউকে ব্লক না করে অন্যান্য নির্দেশাবলীর সাথে পাইপলাইনযুক্ত এবং আন্তঃনির্মিত করা যেতে পারে (পুরানো আর্কিটেকচারের ক্ষেত্রে এই ধারণাটির খুব সুন্দর পর্যালোচনার জন্য, দেখুন রল্ফ স্ট্রবেলের পিএইচডি থিসিস )।
মিথস্ক্রিয়া সম্ভাবনার জন্য, সম্ভাব্য sqrt
ক্রিয়াকলাপের বহুপদী ইন্টারপোল্যান্ট ব্যবহার করে অপারেশন সম্পূর্ণভাবে এড়ানো যায়, তবে এই ক্ষেত্রে আমার নিজের কাজ (প্রয়োগ করা mdcore
) দেখায় যে, কমপক্ষে x86 ধরণের আর্কিটেকচারে, sqrt
নির্দেশটি যথেষ্ট দ্রুত ছিল।
হালনাগাদ
যেহেতু এই উত্তরটি বেশ খানিকটা মনোযোগ পেয়েছে বলে মনে হচ্ছে, আমি আপনার প্রশ্নের দ্বিতীয় অংশটিও সম্বোধন করতে চাই, অর্থাত্ বেসিক ক্রিয়াকলাপগুলি যেমন উন্নত / মুছে ফেলার চেষ্টা করা কি এটির পক্ষে উপযুক্ত sqrt
?
মলিকুলার ডায়নামিক্স সিমুলেশন বা কাটঅফ-সীমাবদ্ধ মিথস্ক্রিয়া সহ যে কোনও কণা-ভিত্তিক সিমুলেশন প্রসঙ্গে, প্রতিবেশী সন্ধানের জন্য আরও ভাল অ্যালগরিদম থেকে অনেক কিছু অর্জন করা যায়। আপনি যদি প্রতিবেশীদের সন্ধান করতে বা ভারলেট তালিকা তৈরির জন্য সেল তালিকাগুলি বা অনুরূপ অন্য কিছু ব্যবহার করেন তবে আপনি প্রচুর পরিমাণে জালিয়াতি জোড়ায় দূরত্ব গণনা করবেন। নিষ্পাপ ক্ষেত্রে, পরিদর্শন করা কেবলমাত্র 16% কণা জোড়া প্রকৃতপক্ষে একে অপরের কাট অফের মধ্যে থাকবে। যদিও এই জাতীয় জোড়গুলির জন্য কোনও মিথস্ক্রিয়া গণনা করা হয় না, কণা ডেটা অ্যাক্সেস করে এবং মজাদার জোড়যুক্ত দূরত্বের গণনা করা বড় ব্যয় বহন করে।
এই অঞ্চলে আমার নিজের কাজ ( এখানে , এখানে , এবং এখানে ) পাশাপাশি অন্যদের (যেমন এখানে ) দেখায় যে কীভাবে এই জালিয়াতিপূর্ণ গণনাগুলি এড়ানো যায়। এই প্রতিবেশী-সন্ধানকারী অ্যালগরিদমগুলি এখানে বর্ণিত হিসাবে ভারলেট তালিকাগুলিও সম্পাদন করে ।
আমি যে বিষয়টিটির উপরে জোর দিতে চাই তা হ'ল যদিও অন্তর্নিহিত হার্ডওয়্যার আর্কিটেকচারকে আরও ভালভাবে জানার / শোষণ করার জন্য কিছু উন্নতি হতে পারে তবে উচ্চ-স্তরের অ্যালগরিদমগুলি পুনরায় চিন্তা করার ক্ষেত্রে আরও বড় সম্ভাবনা রয়েছে।
rsqrtps
এবং এভিএক্সvrsqrtps
এছাড়াও অনুমান, তারা প্রথম 11 থেকে 12 বিট সঠিক পায় এবং আপনি আরও সঠিকতা চাইলে আপনার নিউটন পুনরাবৃত্তি বা দু'এর সাথে সংশোধন করা উচিত। এগুলি স্যান্ডি ব্রিজের উপর 5/1 এবং 7/1 (বিলম্ব / ইনভার্স থ্রুটপুট ) নির্দেশাবলী (ইন্টেল ডক্স বা অ্যাগ্রার ফগের নির্দেশ সারণীগুলি দেখুন যা গুণনের সাথে তুলনীয় contrast বিপরীতে, সম্পূর্ণ নির্ভুলতা(v)sqrtps
(বা ডাবল স্পষ্টতা(v)sqrtpd
) 10-43 / লাগে 10-43 (বিস্তারিত জানার জন্য নির্দেশ টেবিল দেখুন)।