ইন্টেল ফোর্টরান সংকলক: সংকলনটিতে অপ্টিমাইজেশান সম্পর্কিত টিপস


21

আমি আমাদের ল্যাবে আমার ব্যক্তিগত অভিজ্ঞতা দিয়ে শুরু করব। আইফোোর্ট 9 এবং 10 দিনের মধ্যে, আমরা অপ্টিমাইজেশানগুলির সাথে বেশ আক্রমণাত্মক হয়ে থাকতাম, -O3 এবং প্রসেসরের নির্দিষ্ট পতাকাগুলি (উদাহরণস্বরূপ -xW -xSSE4.2) দিয়ে সংকলন করি। তবে ifort 11 দিয়ে শুরু করে, আমরা লক্ষ্য করতে শুরু করেছি:
1. ফলাফলগুলিতে কিছু অসঙ্গতি (কারণ শব্দার্থবিজ্ঞানগুলি সংরক্ষণ করা হয়নি)
2. -O2 এর তুলনায় ছোট লাভ।

সুতরাং বর্তমানে, আমরা সাধারণত -O2 এবং -শোস্ট দিয়ে সংকলন করি। আপনার যদি আইফোর্ট 11 এর সাথে আরও ভাল পরামর্শ থাকে? আমরা 12 ইফোর্টে স্থানান্তরিত হওয়ার সাথে সাথে আবার কি এই পরিবর্তন হবে? আগাম ধন্যবাদ.


7
অপ্টিমাইজেশানগুলি সমস্ত কোডকে সমানভাবে উপকৃত করে না। সুতরাং, আমি মনে করি এর থেকে আরও ভাল প্রশ্ন হবে "কীভাবে আমার সংকলনটি অপ্টিমাইজেশান কার্যকর তা বলতে আমি কীভাবে আমার কোডটিকে প্রোফাইল করব?"
ম্যাট নিপলি

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

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

উত্তর:


16

আমরা আমাদের সমস্ত ব্যবহারকারীদের কঠোরভাবে -O3 -xHost -ipoifort 11 এবং ifort 12 উভয়ের জন্যই শুরু করার পরামর্শ দিচ্ছি যদি ও 3 দ্বারা সুনির্দিষ্ট কোনও ফ্লোটিং পয়েন্ট ট্রান্সফর্মেশনগুলি থাকে যা আপনার কিছু সংখ্যার যথার্থতাকে প্রভাবিত করে তবে আপনি সেগুলি বিশেষভাবে বন্ধ করতে পারেন -fp-model precise -fp-model except(বা আরও তীব্রভাবে, -fp-model strict) অন্যান্য অপ্টিমাইজেশানগুলি ধরে রাখার সময় ও 3 সক্ষম করে যেমন ক্যাশের জন্য লুপ ব্লক করা, লুপ ফিউশন এবং আনরোলিং, এবং মেমরি অ্যাক্সেস অপ্টিমাইজেশন।

আমি পৃথক ফাইলগুলিতে ভাসমান বিন্দু মডেল স্টাফ চেষ্টা করে দেখার চেষ্টা করব এবং বিশ্বব্যাপী এটি বন্ধ করার পরিবর্তে এটি কোথায় কোনও পার্থক্যের সন্ধান করবে; এটি একটি ~ 15% স্পিড বাম্প হতে পারে এবং আপনি যেখানে এটি আপনার গণনাগুলিকে প্রভাবিত করে না সেখানে রাখতে সক্ষম হতে চান। যথার্থতা কোথায় প্রভাবিত হচ্ছে তা আপনি যদি নিশ্চিত না হন তবে আপনি সেই ফাইলগুলির জন্য ভাসমান পয়েন্ট মডেল পতাকাগুলি চালু এবং বন্ধ করে বা গোলাকার মোডগুলি নিয়ে খেলতে খেলতে পারেন

আমরা সম্প্রতি x86 এর জন্য gnu এবং ইন্টেল সংকলকগুলিতে ফোকাস করে, অপ্টিমাইজেশন পতাকাগুলি সম্পর্কে আমাদের ব্যবহারকারীদের কাছে একটি সংক্ষিপ্ত আলোচনা করেছি; আপনি এখানে আলাপ থেকে স্লাইড দেখতে পারেন ।

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


আমি আপনার উত্তরটি পছন্দ করি তবে আমি আমাদের টেস্টকেসগুলির সাথে এটি আবার চেষ্টা করেছি এবং -O3 -xhost -fp-model precise -fp-model exceptফলস্বরূপ 30% হ্রাস পেয়েছে । আমি আবার প্রোফাইলিং এবং -vec-reportকী হচ্ছে তা দেখার চেষ্টা করার জন্য আবার
তাকাব

2
ওভার -O2 -শোস্ট? এটি চমৎকার; এটি খুব অস্বাভাবিক তবে এটি ঘটতে পারে। এই জাতীয় ক্ষেত্রে, অপটিমাইজার এমন কিছু করছে যা এটি ভাবার পক্ষে যুক্তিযুক্ত কারণটি গতি বাড়িয়ে তুলবে, তবে দেখা যাচ্ছে যে বিষয়গুলি আরও খারাপ করে। সাধারণত বৈজ্ঞানিক কোডের জন্য, যা মোটামুটি সোজা কাঠামোযুক্ত, এটি ঘটে না। এর মতো ক্ষেত্রে, প্রোফাইল গাইডেড অপটিমাইজেশন - সফটওয়্যার.ইনটেল.টাইল.সাইটস / প্রোডাক্টস / ডকুমেন্টেশন / এইচপিসি / কমপিলারপ্রো / প্রায়ই সহায়তা করতে পারে।

5

আমি এমন একটি সংস্থার জন্য কাজ করি যা IFort সহ ফোর্টরানে বৃহত, অত্যন্ত প্রযুক্তিগত অ্যাপ্লিকেশন তৈরি করে - অ্যাপ্লিকেশনগুলি খুব কার্য সম্পাদন সমালোচনামূলক, যেহেতু গতি (যথাযথতা বজায় রাখার সময়) মূল বিক্রয়কেন্দ্র।

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

আশা করি এটা কাজে লাগবে.


4

আমি বুঝতে পেরেছি যে এই উত্তরটি সম্ভবত অনেক দেরিতে, তবে আক্রমণাত্মক অপ্টিমাইজেশনের জন্য, "-ফাস্ট" বিকল্পটি সহজ সমাধান হিসাবে মনে হচ্ছে। ম্যান পৃষ্ঠা থেকে উদ্ধৃতিগুলি:

-fast
    Maximizes speed across the entire program.
    Description:
    This option maximizes speed across the entire program.

    It sets the following options:
     - On Linux* systems: -ipo, -O3, -no-prec-div, -static, and -xHost
     - On OS X* systems: -ipo, -mdynamic-no-pic, -O3, -no-prec-div, and -xHost
     - On Windows*  systems:  /O3,  /Qipo,  /Qprec-div-,  and /QxHost

    NOTE: Option fast sets some aggressive optimizations that may not be appropriate for all
    applications. The resulting executable may not run on processor types different from the
    one on which you compile. You should make sure that you understand the individual optimi-
    zation options that are enabled by option fast.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.