আমি এই প্রশ্নে আমার দুটি সেন্ট নিক্ষেপ করতে যাচ্ছি এবং ইলিয়াসের উত্তরটির আরও কিছুটা ভার্বোস বর্ধনের পরামর্শ দেব। জিসিসি ৪.। হিসাবে, দৌড়াদৌড়কপূর্ণ gcc -march=native -v -E - < /dev/null
অতিরিক্ত -mno-*
পতাকা হিসাবে স্প্যামের ক্রমবর্ধমান পরিমাণ নির্গত করে । নিম্নলিখিতগুলি এগুলি ছিটিয়ে দেবে:
gcc -march=native -v -E - < /dev/null 2>&1 | grep cc1 | perl -pe 's/ -mno-\S+//g; s/^.* - //g;'
যাইহোক, আমি কেবল দুটি পৃথক সিপিইউতে (একটি ইনটেল কোর 2 এবং এএমডি ফেনোম) এর যথার্থতা যাচাই করেছি, সুতরাং এই জাতীয় -mno-*
পতাকাগুলি নিরাপদে ছড়িয়ে দেওয়া যেতে পারে তা নিশ্চিত করার জন্য আমি নিম্নলিখিত স্ক্রিপ্টটি চালানোর পরামর্শ দিই ।
#!/bin/bash
gcc_cmd="gcc"
# Optionally supply path to gcc as first argument
if (($#)); then
gcc_cmd="$1"
fi
with_mno=$(
"${gcc_cmd}" -march=native -mtune=native -v -E - < /dev/null 2>&1 |
grep cc1 |
perl -pe 's/^.* - //g;'
)
without_mno=$(echo "${with_mno}" | perl -pe 's/ -mno-\S+//g;')
"${gcc_cmd}" ${with_mno} -dM -E - < /dev/null > /tmp/gcctest.a.$$
"${gcc_cmd}" ${without_mno} -dM -E - < /dev/null > /tmp/gcctest.b.$$
if diff -u /tmp/gcctest.{a,b}.$$; then
echo "Safe to strip -mno-* options."
else
echo
echo "WARNING! Some -mno-* options are needed!"
exit 1
fi
rm /tmp/gcctest.{a,b}.$$
আমি মধ্যে একটি পার্থক্য খুঁজে পেলাম না gcc -march=native -v -E - < /dev/null
এবং gcc -march=native -### -E - < /dev/null
কিছু প্যারামিটার উদ্ধৃত করা হচ্ছে অন্য চেয়ে - এবং প্যারামিটার কোন বিশেষ অক্ষর থাকতে, তাই আমি নিশ্চিত কি পরিস্থিতিতে এই কোনো বাস্তব পার্থক্য তোলে অধীনে নই।
অবশেষে, নোট করুন যেটি --march=native
জিসিসি ৪.২ এ প্রবর্তিত হয়েছিল, এর আগে এটি কেবল একটি অজ্ঞাত যুক্তি।
--param l1-cache-size=64 --param l1-cache-line-size=64 --param l2-cache-size=512