আমাকে আপনার প্রয়োজনীয়তাগুলি চেষ্টা করার চেষ্টা করুন:
- Maintainability
- পাঠ্য ডেটা পড়া / লেখা
- শক্তিশালী ইন্টারফেস / এলইউ অনুকরণের জন্য ক্ষমতা
- বিচ্ছিন্ন রৈখিক solvers
- পারফরম্যান্স এবং বড় ডেটা স্কেলিবিলিটি
এই তালিকা থেকে, আমি নিম্নলিখিত ভাষাগুলি বিবেচনা করব:
সি, সি ++, ফোর্টরান, পাইথন, ম্যাটল্যাব, জাভা
জুলিয়া একটি প্রতিশ্রুতিবদ্ধ নতুন ভাষা, তবে সম্প্রদায়টি এখনও এর চারপাশে গঠন করছে এবং এটি কোনও বড় নতুন কোডে স্থাপন করা হয়নি।
পাঠ্য ডেটা পড়া / লেখা
যে কোনও প্রোগ্রামিং ভাষায় ডান পাওয়া সহজ। নিশ্চিত হয়ে নিন যে আপনি যথাযথভাবে বাফার করছেন এবং আপনার আই / ও অ্যাক্সেসকে কোলেস করছেন, এবং আপনার বিবেচনার মতো যে কোনও ভাষা থেকে আপনি ভাল পারফরম্যান্স পাবেন। C ++ এ স্ট্রিম অবজেক্টগুলি এড়িয়ে চলুন যতক্ষণ না আপনি সেগুলি পারফরম্যান্সভাবে ব্যবহার করতে জানেন।
শক্তিশালী ইন্টারফেস / এলইউ অনুকরণের জন্য ক্ষমতা
আপনি যদি ঘন এলইউ অনুশীলন সম্পাদন করে থাকেন তবে সমান্তরাল কার্যকারিতার জন্য আপনি ল্যাপাক বা স্ক্যালাপ্যাক / এলিমেন্টালটি ব্যবহার করতে চাইবেন। ল্যাপাক এবং স্কেল্যাপ্যাক ফরট্রানে লেখা আছে, এলিমেন্টাল সি ++ তে লেখা আছে। তিনটি লাইব্রেরিই পারফরম্যান্ট এবং ভাল-সমর্থিত এবং ডকুমেন্টেড। আপনার বিবেচনা করা উচিত যে কোনও ভাষা থেকে আপনি এগুলিতে ইন্টারফেস করতে পারেন।
বিচ্ছিন্ন রৈখিক solvers
প্রিমিয়ার অবাধে উপলভ্য স্পারস লিনিয়ার সল্ভারগুলি সিতে লিখিত পিইটিএসসি-র মাধ্যমে প্রায় সমস্ত উপলভ্য , যা ভালভাবে নথিভুক্ত এবং সমর্থিত। আপনার বিবেচনা করা উচিত যে কোনও ভাষা থেকে আপনি পিইটিএসসি তে ইন্টারফেস করতে পারেন।
পারফরম্যান্স এবং বড় ডেটা স্কেলিবিলিটি
আপনার উল্লেখ করা একমাত্র সমান্তরাল প্রোগ্রামিং দৃষ্টান্তগুলি শেয়ার্ড মেমোরি ভিত্তিক, যার অর্থ আপনি কোনও এমপিআই-ভিত্তিক (বার্তা-পাসিং), বিতরণ-মেমরি কম্পিউটারিং পদ্ধতির বিবেচনা করছেন না। আমার অভিজ্ঞতার সাথে, কোডটি লেখা আরও সহজ যে বিতরণযোগ্য-মেমরির সমাধান ব্যবহার করে এক ডজন কোর ছাড়িয়ে ভাল স্কেল করে। আজকাল প্রায় সমস্ত বিশ্ববিদ্যালয়ের "ক্লাস্টারগুলি" এমপিআই-ভিত্তিক, বড় ভাগ করা মেমরির মেশিনগুলি ব্যয়বহুল, এবং একই সাথে বিরল। আপনার পদ্ধতির জন্য আপনার এমপিআই বিবেচনা করা উচিত, তবে আমার পরামর্শ আপনি যে প্রোগ্রামিং প্যারাডিয়ামটি চয়ন করেন তা নির্বিশেষে প্রযোজ্য।
অন-নোড পারফরম্যান্সের সাথে, আপনি যদি নিজেই সংখ্যার রুটিনগুলি লিখছেন তবে ফোর্টরানে ভাল সিরিয়াল অভিনয় করা সবচেয়ে সহজ। সি, সি ++, বা পাইথনে আপনার যদি কিছুটা অভিজ্ঞতা থাকে তবে আপনি খুব তুলনামূলক পারফরম্যান্স পেতে পারেন (সি এবং সি ++ মারা গেছে-এমনকি ফোর্টরান, পাইথন এবং ম্যাটল্যাব প্রায় 25% সময় ওভারহেডের মধ্যে অনেক প্রচেষ্টা ছাড়াই আসে)। ম্যাটল্যাব এটি একটি জেআইটি সংকলক এবং খুব ভাল লিনিয়ার বীজগণিতের এক্সপ্রেসিভিটির মাধ্যমে করে। পাইথন থেকে দাবি করা পারফরম্যান্স পাওয়ার জন্য আপনার সম্ভবত সাইথন, নম্পি, নিউমেক্সপ্র বা সংখ্যাসূচক কার্নেলগুলি এম্বেড করতে হবে। আমি জাভার অভিনয় সম্পর্কে মন্তব্য করতে পারি না, কারণ আমি ভাষাটি খুব ভাল জানি না, তবে আমি সন্দেহ করি যে এটি কোনও বিশেষজ্ঞের দ্বারা লিখিত থাকলে পাইথনের কাজটি খুব বেশি দূরে নয়।
ইন্টারফেস উপর একটি নোট
আমি আশা করি যে আমি আপনাকে নিশ্চিত করেছি যে আপনি যে কোনও প্রোগ্রামিং ভাষা বিবেচনা করছেন তাতে আপনি যা করতে চান তা করতে সক্ষম হবেন। আপনি যদি জাভা ব্যবহার করছেন তবে সি ইন্টারফেসগুলি কিছুটা চ্যালেঞ্জিং হবে। পাইথনের সিটিপস, সিথন এবং এফ 2 পিপি এর মাধ্যমে দুর্দান্ত সি এবং ফোর্টরান ইন্টারফেস সমর্থন রয়েছে। ল্যাপাক ইতিমধ্যে মোড়ানো এবং স্কিপির মাধ্যমে উপলব্ধ। ম্যাটল্যাব এর মূল গ্রন্থাগারে আপনার প্রয়োজনীয় সমস্ত কার্যকারিতা রয়েছে তবে সহজেই স্কেলযোগ্য বা ক্লাস্টারগুলিতে চালানো বিশেষত সহজ নয়। জাভা জেএনআই-এর সাথে সি এবং ফোর্টরান ইন্টারফেস সমর্থন করতে পারে , তবে সাধারণত ক্লাস্টারগুলিতে এবং বৈজ্ঞানিক কম্পিউটিংয়ের জন্য সমান্তরাল সফ্টওয়্যারটিতে পাওয়া যায় না।
Maintainability
এর অনেকগুলি ব্যক্তিগত স্বাদে নেমে আসছে, তবে রক্ষণাবেক্ষণের বিষয়ে সাধারণ sensক্যমত্যটি হল আপনি নিজের সফ্টওয়্যারটিতে কোডের রেখার সংখ্যা হ্রাস করতে চান, সংজ্ঞায়িত ইন্টারফেসগুলি সহ মডুলার কোড লিখতে চান এবং গণনীয় সফ্টওয়্যার সরবরাহ করতে পারেন provide পরীক্ষাগুলি যা বাস্তবায়নের যথার্থতা এবং কার্যকারিতা যাচাই করে।
সুপারিশ
পাইথনের সাথে আমি ব্যক্তিগতভাবে অনেক ভাগ্যবান হয়েছিলাম এবং আমি এটির অনেকগুলি কম্পিউটারের প্রকল্পের জন্য সুপারিশ করি। আমি মনে করি আপনার প্রকল্পের জন্য আপনার এটি দৃ strongly়ভাবে বিবেচনা করা উচিত। পাইথন এবং ম্যাটল্যাব সম্ভবত বৈজ্ঞানিক কম্পিউটিংয়ের জন্য উপলব্ধ ভাষাগুলির মধ্যে সর্বাধিক অভিব্যক্তিপূর্ণ। আপনি পাইথনকে অন্য কোনও প্রোগ্রামিং ল্যাঙ্গুয়েজে সহজেই ইন্টারফেস করতে পারেন, আপনি আপনার বর্তমান ফোর্টরান বাস্তবায়ন এবং প্যাথ টু-পিস পুনর্লিখনের জন্য পিথনটিতে যে কোনও অংশে পুনরায় লেখার জন্য আপনার কার্যকারিতা বজায় রেখেছেন তা যাচাই করতে f2py ব্যবহার করতে পারেন। এই মুহুর্তে, আমি স্কিপি সহ অফিসিয়াল পাইথন ২.7 প্রয়োগের সংমিশ্রণের পরামর্শ দেব । আপনি এই স্ট্যাকটি অবাধে উপলভ্য এনটচয়েড পাইথন বিতরণ থেকে খুব সহজেই শুরু করতে পারেন ।
আপনি এর বেশিরভাগ সি, সি ++ বা ফোর্টরানেও করতে পারেন। সি এবং সি ++ প্রচুর অভিজ্ঞতার সাথে পেশাদার বিকাশকারীদের কাছে খুব আবেদনময়ী ভাষা, তবে প্রায়শই নতুন বিকাশকারীদের ভ্রমণ করে এবং এই অর্থে সম্ভবত আরও একাডেমিক কোডের জন্য দুর্দান্ত ধারণা নয়। ফোর্টরান এবং ম্যাটল্যাব একাডেমিক গণনায় জনপ্রিয়, তবে উন্নত ডেটা স্ট্রাকচার এবং এক্সপ্রেটিভিটি পাইথন অফারগুলিতে দুর্বল (উদাহরণস্বরূপ পাইথন ডিক অবজেক্টের কথা ভাবেন)।
সম্পর্কিত প্রশ্নাবলী: