আমি (হাঁফ!) সি # তে কয়েকটি ভীষণ গণনা-নিবিড় কোড নিয়ে কাজ করছি।
আমি একটি GPGPU বাস্তবায়ন নির্মাণ করছি FDTD অপটিক্যাল মডেলিংয়ের জন্য র । একটি ছোট (128 প্রসেসর) ক্লাস্টারে, আমাদের সিমুলেশনগুলির বেশিরভাগটি চলতে কয়েক সপ্তাহ সময় নেয়। জিপিইউ বাস্তবায়নগুলি প্রায় 50x দ্রুত চালানোর প্রবণতা রয়েছে - এবং এটি গ্রাহক-গ্রেড এনভিডিয়া কার্ডে রয়েছে। আমাদের কাছে এখন দুটি জিটিএক্স 295 ডুয়াল-প্রসেসর কার্ড (কয়েকশো কোড়) সহ একটি সার্ভার রয়েছে এবং শিগগিরই কিছু টেসলাস পাচ্ছি।
এটি কীভাবে আপনার ভাষার সাথে সম্পর্কিত? আমরা যে সি ++ এফডিটিডি কোডটি আগে ব্যবহার করছিলাম সেভাবে সিপিইউ-আবদ্ধ ছিল, এগুলি জিপিইউ-আবদ্ধ, সুতরাং পরিচালিত বনাম স্থানীয় কোডের ( খুব ছোট) অশ্বশক্তি পার্থক্যটি কখনই কার্যকর হয় না। সি # অ্যাপটি কন্ডাক্টর হিসাবে কাজ করে - ওপেনসিএল কার্নেলগুলি লোড করা, জিপিইউগুলিতে এবং এর থেকে ডেটা প্রেরণ করা, ইউজার ইন্টারফেস সরবরাহ করা, প্রতিবেদন করা ইত্যাদি - সি ++ এর পাছায় ব্যথা হওয়া সমস্ত কাজ।
বিগত বছরগুলিতে, পরিচালিত এবং পরিচালনা ব্যবস্থাবিহীন কোডের মধ্যে পারফরম্যান্সের পার্থক্য যথেষ্ট তাৎপর্যপূর্ণ ছিল যে গতির অতিরিক্ত কয়েক শতাংশ পাওয়ার জন্য এটি কখনও কখনও সি ++ এর ভয়াবহ অবজেক্ট মডেলটির সাথে রাখে। এই দিনগুলিতে, সি ++ বনাম সি # এর বর্ধিত ব্যয় বেশিরভাগ অ্যাপ্লিকেশনের সুবিধাকে ছাড়িয়ে যায়।
এছাড়াও, আপনার পারফরম্যান্সের বেশিরভাগ পার্থক্য আপনার ভাষা পছন্দ থেকে আসে না, তবে আপনার বিকাশকারীর দক্ষতা থেকে আসে। কয়েক সপ্তাহ আগে, আমি ট্রিপল-নেস্টেড (3 ডি অ্যারে ট্র্যাভারসাল) লুপের অভ্যন্তর থেকে একটি একক বিভাগের অপারেশনটি সরিয়ে নিয়েছি, যা প্রদত্ত কম্পিউটেশনাল ডোমেনের জন্য কার্যকর সময়কে 15% হ্রাস করেছে by এটি প্রসেসরের আর্কিটেকচারের একটি ফলাফল: বিভাগটি ধীর গতির, যা আপনার মুখের প্রয়োজনের মধ্যে একটি যা কোথাও বাছাই করা উচিত।