ওপেনসিএল প্রোগ্রামিং দৃষ্টান্তটি একটি রয়্যালটি ফ্রি হওয়ার প্রতিশ্রুতি দেয় হিজড়াজনিত কম্পিউটিংয়ের জন্য স্ট্যান্ডার্ড খোলে। ওপেনসিএল ভিত্তিক সফ্টওয়্যার বিকাশে আমাদের কি সময় ব্যয় করা উচিত? পেশাদাররা / কনস?
ওপেনসিএল প্রোগ্রামিং দৃষ্টান্তটি একটি রয়্যালটি ফ্রি হওয়ার প্রতিশ্রুতি দেয় হিজড়াজনিত কম্পিউটিংয়ের জন্য স্ট্যান্ডার্ড খোলে। ওপেনসিএল ভিত্তিক সফ্টওয়্যার বিকাশে আমাদের কি সময় ব্যয় করা উচিত? পেশাদাররা / কনস?
উত্তর:
প্রশ্নটি খুব বিস্তৃত এবং সত্যই উত্তর দেওয়া অস্পষ্ট। যাইহোক, আমি ওপেনসিএল এর বিরুদ্ধে একটি উল্লেখযোগ্য বিষয় দেখতে পাই, বৈজ্ঞানিক কম্পিউটিংয়ের দৃষ্টিকোণ থেকে, যা খুব কমই জোর দেওয়া হয়। এখনও অবধি ওপেন সোর্স, ওপেনসিএল-এর জন্য অবকাঠামোগত গ্রন্থাগার তৈরির চেষ্টা করা হয়নি, যেখানে সিইউডিএর কাছে বেশ কয়েকটি দুর্দান্ত বিকল্প রয়েছে:
আমি বিশ্বাস করি এটি ওপেনসিএলকে সত্যই ক্ষতিগ্রস্থ করবে যেহেতু গ্রহণের একটি বড় সুবিধা প্রদানকারী উচ্চমানের, উন্মুক্ত গ্রন্থাগারগুলি।
ওপেনসিএল বনাম কী?
যদি প্রশ্নটি ওপেনসিএল বনাম চুদা হয়, তবে আমি এই প্রশ্নটিতে অনেকগুলি হাত ঘষছি এবং এটি আমার কাছে পাগল বলে মনে হচ্ছে। এটা কোন ব্যাপার না। সৎ। কার্নেলগুলি - যেখানে সমস্ত কঠোর চিন্তাভাবনা যেতে হবে - দুটি ভাষার মধ্যে কার্যত অভিন্ন; ওপেনসিএল এবং চুদা-র মধ্যে বাউন্স করার জন্য 99% কাজ করার জন্য আপনি আপনার প্রিয় সম্পাদককে ম্যাক্রোগুলি লিখতে পারেন। এটি সেভাবে হতে হবে; তারা চূড়ান্তভাবে একই ধরণের হার্ডওয়ারের নিম্ন-স্তরের নিয়ন্ত্রণ। একবার আপনি কীভাবে আপনার গুরুত্বপূর্ণ কার্নেলগুলি {ওপেনসিএল, সিইউডিএ write এ লিখবেন তা অনুগ্রহ করে এগুলি {CUDA, ওপেনসিএল port এ পোর্ট করা তুচ্ছ}
আপনার লিখতে হবে এমন বয়লারপ্লেট হোস্ট কোডটিও একই রকম, তবে সিইউডিএ সাধারণ কেসগুলি সহজ রাখে। এজন্য আমরা আমাদের কেন্দ্রে সিইউডিএ পড়াই; আপনি সরাসরি কার্নেল কোডটি লেখার ক্ষেত্রে ঝাঁপিয়ে পড়তে পারেন, যেখানে আমাদের ওপেনসিএল-এর জন্য কার্নেল প্রবর্তনকারী জিনিসগুলি ব্যাখ্যা করে আমাদের সারা দিনের কোর্সের 1-2 ঘন্টা ব্যয় করতে হবে।
তবে সেখানে পার্থক্যও তেমন গুরুত্বপূর্ণ নয়; আপনি একবার আরও জটিল জিনিস (একাধিক জিপিএসে অ্যাসিনক্রোনাস কার্নেলগুলি) করা শুরু করলে, তারা উভয়ই সমান জটিল এবং আবার আপনি এক থেকে অন্যটিতে লাইন-লাইন অনুবাদ করতে পারবেন।
যদি এটি ওপেনসিএল বনাম নির্দেশ-ভিত্তিক পদ্ধতিগুলি - ওপেনএসিসি বা এইচএমপিপি বা কিছু - সম্ভবত এটি ( আশাবাদী ?) ভবিষ্যতে এই ধরণের আর্কিটেকচারের প্রোগ্রামিংয়ের ভাল উপায় হতে চলেছে, যেখানে আপনি 90% পারফরম্যান্স পেতে পারেন 10% কাজ। তবে কোন পছন্দটি "জিতবে" তা দেখার বাকি রয়েছে এবং আমি এখনও তাদের সাথে কাজ করার জন্য অনেক সময় ব্যয় করার পরামর্শ দেব না।
সুতরাং আমি বলব, CUDA বা ওপেনসিএল এর মধ্যে এমন একটি ভাষা বেছে নিন যা আপনার পক্ষে উপযুক্ত এবং এটি ব্যবহার করুন এবং এটি সম্পর্কে খুব বেশি চিন্তা করবেন না। মূল্যবান অংশ - খুব অল্প স্মৃতিযুক্ত ছোট কোরগুলির জন্য কীভাবে আপনার সমস্যাটিকে বৃহত্তর-সমান্তরাল সিমডি কোডে দ্রবীভূত করা যায় তা নির্ধারণ করে - প্রোগ্রামিং মডেলগুলির মধ্যে বেশ সহজেই বহনযোগ্য হতে চলেছে।
যদি আপনি এনভিআইডিএ হার্ডওয়্যার ব্যবহার করেন - এবং আপনি সম্ভবত - তবে আমি সাধারণত সিউডিএর প্রস্তাব দিই - লাইব্রেরিগুলি সম্পর্কে ম্যাট নিপলির পয়েন্টটি মারা গেছে। আপনি যদি না হন তবে ওপেনসিএল।
ওপেনসিএল ভিত্তিক সফ্টওয়্যার বিকাশে আপনার সময় বিনিয়োগ করা উচিত কিনা তা কেবল আপনি উত্তর দিতে পারেন। যদি মনে হয় যে এখনই আপনি যে সমস্যার মুখোমুখি হচ্ছেন এটির সমাধানের সম্ভাবনা রয়েছে এবং অন্য কোনও মুক্ত সমাধান তা না করে, তবে আপনার সবচেয়ে ভাল কাজটি সম্ভবত এটি একটি ছোট প্রকল্প বাস্তবায়নের ঝুঁকি গ্রহণ করা উচিত।
যদি এটি ঠিকভাবে চলে যায় তবে আপনি বড় আকারের প্রকল্পগুলির সাহায্যে এটি চেষ্টা করতে পারেন যতক্ষণ না আপনি এটির মানিক মান দেওয়ার জন্য যথেষ্ট আত্মবিশ্বাস তৈরি করেন, বা এটি অন্য কোনও সমাধানের পক্ষে বাতিল করেন (যা আপনার নিজস্ব মালিকানা সমাধান হতে পারে, অন্য কোনও মুক্ত সমাধান বা এমনকি অন্য মালিকানা সমাধান)।
ওপেন সোর্স চলাচল সম্পর্কে দুর্দান্ত জিনিসটি হ'ল কারণ আপনার কাছে উত্সটি রয়েছে কারণ আপনার প্রয়োজনে প্রকল্পটি কাঁটাচামচ করা দরকার everything এমনকি সম্প্রদায় নিজেই আপনার প্রয়োজনীয় সুবিধাগুলি না দিলেও, নিজেরাই সেই সুবিধাগুলি বাস্তবায়িত করতে আপনার কিছুই থামছে না। এছাড়াও, যদি আপনি এই সুবিধাগুলি চেয়েছিলেন, তবে অন্য ব্যবহারকারীরা তাদের চাইবে এমন একটি স্বতন্ত্র সম্ভাবনা রয়েছে, তাই যদি আপনি মূল প্রকল্পে এই পরিবর্তনগুলি অবদান রাখেন তবে এটি প্রশংসা করবে।
কেবল তা-ই নয়, তবে আপনি যদি নিজের দৃষ্টিকোণ থেকে এটি আরও ভাল করেন তবে এটি অন্যের পক্ষে এটি আরও ভালতর হতে পারে, তাদের নিজস্ব বর্ধন জমা দেওয়ার জন্য উত্সাহিত করে এবং শেষ পর্যন্ত সকলের জন্য সফ্টওয়্যারটি আরও ভাল করে তুলতে পারে।
অবশেষে, হ্যাঁ এটি একটি সাধারণ প্রশ্নের পরিবর্তে সাধারণ জবাব gener আরও সম্পূর্ণরূপে উত্তর দেওয়ার জন্য, ওপেনসিএল নিয়ে আপনার উদ্বেগগুলি কী তা আমাদের জানতে হবে। এটা কি পরিপক্কতা? সম্প্রদায় সমর্থন? ব্যবহারে সহজ? সময় শেখার দরকার? বিকাশের সময়? আপনার পদ্ধতি পরিবর্তন? আপনি যখন প্রস এবং কনস সম্পর্কে জিজ্ঞাসা করেন, আপনি অন্য কোন পণ্যগুলি ওপেনসিএল এর সাথে তুলনা করার চেষ্টা করছেন ? আপনি ইতিমধ্যে কি গবেষণা করেছেন? আপনার ভিন্নজাতীয় কম্পিউটিং পরিবেশকে সমর্থন করার জন্য আপনার কোন বৈশিষ্ট্যগুলির প্রয়োজন?
একটি বড় পিআরও হ'ল ওপেনসিএল এর পিছনে বিক্রেতাদের সংখ্যা। এনভিআইডিএ চালিত সিস্টেমের জন্য মোটামুটি জটিল সিউডিএ কোড বিকাশের জন্য একটি প্রচুর সময় এবং প্রচেষ্টা ব্যয় করে এমন একটি গবেষণা দলের সাথে দেখা করে আমি এই সম্পর্কে কিছু কৌতুকপূর্ণ অভিজ্ঞতা পেয়েছি। কোডটি বিকশিত হওয়ার এক বছর পরে, গবেষণা গ্রুপটি একটি বৃহত এবং দ্রুত এএমডি ভিত্তিক সিস্টেমে অ্যাক্সেস পেয়েছিল তবে কোডটি পোর্ট করার জন্য তাদের (মানব) সংস্থান না থাকায় তারা এটি ব্যবহার করতে পারেনি।
এমনকি যদি সিইউডিএ এবং ওপেনসিএল বৈশিষ্ট্যগুলির মূল সেটটি প্রায় অভিন্ন হয় (তবে @ জোনাথনদুরসি ভালভাবে উল্লেখ করেছেন), যদি কোডটি রূপান্তর করার কাজটি মূল বিকাশকারীকে দেওয়া হয় না তবে পুরো পোর্টিং প্রকল্পটি বেশ সময় সাশ্রয়ী হতে পারে।
তবে চুদা এবং ওপেনসিএল-এর মধ্যে কিছু সরকারী অসঙ্গতি রয়েছে। সর্বাধিক লক্ষণীয়ভাবে CUDA সি ++ টেম্পলেটগুলি সমর্থন করে যখন ওপেনসিএল এখনও আনুষ্ঠানিকভাবে তাদের সমর্থন করে না। যাইহোক, টেমপ্লেট এবং অন্যান্য সি ++ বৈশিষ্ট্যগুলির জন্য এএমডি দেব কেন্দ্রীয় থেকে এই পোস্টে আরও তথ্য সহ ওপেনসিএল-তে একটি এক্সটেনশান বিকাশের জন্য এএমডি-র একটি প্রচেষ্টা রয়েছে । আমি আশা করি ভবিষ্যতে ওপেনসিএল সংশোধন এই কাজটি যুক্ত করতে পারে।
এই মুহুর্তে (২০১২ শুরুর দিকে), @ ম্যাটক্ন্পলে লিঙ্কযুক্ত যে দুর্দান্ত লাইব্রেরিগুলি বন্ধ উত্স বা টেমপ্লেটগুলি ব্যবহার করে, সেগুলি কমপক্ষে গড় সময়ে NVIDIA ব্যতীত অন্য হার্ডওয়্যারের জন্য উপলব্ধ হবে না।
জিপিইউ-কম্পিউটিং শিখছে এমন কারও জন্য আমি বলব যে ওপেনসিএল সি বেশ কঠিন হতে পারে, কারণ প্রচুর বিবরণ রয়েছে যা শিক্ষানবিশকে মৌলিক ধারণাগুলি থেকে বিভ্রান্ত করে, যেখানে সিডিডিএ সহজ এবং সোজা এগিয়ে রয়েছে। যাইহোক, এমন সরঞ্জাম রয়েছে যা পাইপোপেনসিএল (ওপেনক্লিসের জন্য পাইথন মোড়ক) এর মতো ওপেনসিএলকে শিখতে ও ব্যবহার করতে আরও সহজ করে তোলে যা সমস্ত পাইথন চিনিকে ওপেনসিএল এনে দেয় (নোট করুন যে সেখানে পাইকুডিএও রয়েছে)। উদাহরণস্বরূপ, দুটি অ্যারে যুক্ত করার জন্য পাইপোপেনসিএল ডেমোটি কেবল 25 লাইনের নীচে রয়েছে এবং এর মধ্যে রয়েছে: হোস্ট এবং ডিভাইসে অ্যারে তৈরি করা, ডেটা স্থানান্তর করা, প্রসঙ্গ এবং সারি তৈরি করা, কার্নেল, কীভাবে কার্নেলটি তৈরি এবং কার্যকর করা যায় , জিপিইউ থেকে ফলাফল প্রাপ্ত এবং তাদের সাথে নাম্পির তুলনা করা (নীচের লিঙ্কগুলি দেখুন)।
পাইওপেনসিএল - http://mathema.tician.de/software/pyopencl
পাইকুডা - http://mathema.tician.de/software/pycuda
অভিজ্ঞ জিপিইউ-প্রগ্রেমারদের জন্য, আমি এখানে @ জোনাথনদুরসির সাথে একমত, সিইউডিএ এবং ওপেনসিএল মৌলিকভাবে একই এবং মেয়রের কোনও পার্থক্য নেই। তদুপরি, জিপিইউগুলির জন্য একটি দক্ষ অ্যালগরিদম বিকাশের কঠোর পরিশ্রম অনেক ভাষা স্বাধীন, এবং বিক্রেতাদের ওপেনসিএল সমর্থন এবং ডকুমেন্টেশন এখন 2 বছর আগের কথাটির চেয়ে অনেক বেশি পরিপক্ক। এখনও কেবল একটি তাত্পর্য তৈরি করে যে, NVIDIA সত্যই CUDA সম্প্রদায়ের তাদের সমর্থন নিয়ে কিছু দুর্দান্ত কাজ করছে।
ওপেনসিএলের একটি অতিরিক্ত সুবিধা রয়েছে যা এটি সিপিইউতে চলতে পারে এবং ইতোমধ্যে ইন্টেল এবং এএমডি দ্বারা সমর্থিত। সুতরাং আপনি যদি কোনও উপলব্ধ সিপিইউ কোরের সুবিধা নিতে চান তবে আপনার অ্যালগরিদমিক কাঠামো পরিবর্তন করার দরকার নেই। আমার মতামত নয় যে সিপিইউ অপ্টিমাইজড কার্নেল হিসাবে কোনও সিপিইউ / মাল্টিকোর ওরিয়েন্টেড অ্যাপ্লিকেশনটির জন্য ওপেনসিএল সেরা সমাধান হ'ল একটি জিপিইউ অপ্টিমাইজড কার্নেলের চেয়ে উল্লেখযোগ্যভাবে আলাদা দেখাচ্ছে। যাইহোক, আমার অভিজ্ঞতায় সিডিইউতে চালনা করতে সক্ষম হয়ে সিওডি বিকাশ উপকৃত হয়।
আমি মনে করি ওপেনসিএল বর্তমানে একটি "চ্যাম্পিয়ন" এর অভাবে ভুগছে। উদাহরণস্বরূপ, আপনি যদি এখনই এনভিআইডিআইএ সাইটটি যান (12/16/2011), আপনি জিপিইউ কম্পিউটিংয়ের বৈজ্ঞানিক / শিল্প দিকে মনোনিবেশ করে স্প্ল্যাশ পৃষ্ঠায় বেশ কয়েকটি "কেন বার্নস এফেক্ট" স্টাইল শট পেয়েছেন, এবং ~ 1 / আপনার চতুর্থ নেভিগেশন বিকল্পগুলির 4 র্থ বিষয়গুলি আপনাকে নির্দেশ করবে যা সম্ভবত CUDA এ শেষ হবে। "জিপিইউ কম্পিউটিং" সার্ভার এবং ওয়ার্কস্টেশনগুলি বিক্রয়কারীরা এনভিআইডিএ সমাধানগুলি বিক্রি করছে।
এটিআইয়ের প্রতিযোগিতামূলক অফারগুলি সাধারণ এএমডি সাইটের সাথে মিশ্রিত হয়, এটি পাওয়া শক্ত and এই সমাধানগুলি এবং ওপেনসিএল ভিত্তিক প্রোগ্রামিং করার দক্ষতা অবশ্যই বিদ্যমান আছে তবে এটি একটি ধারণা রেখে গেছে - অন্তত আমার মনে, তবে আমি অন্য কিছু লোকের মনে যে কথা বললাম - যে ওপেনসিএল প্ল্যাটফর্মের বড় বড় কর্পোরেট স্পনসররা ইতিমধ্যে " ক্ষেত্রটি ছেড়ে দিন "। উদাহরণস্বরূপ ওএস এক্স ব্যবহার করা লোকেরা, ওপেনসিএল জিপিইউ কম্পিউটিংয়ের দিকে ঠেলাঠেলি করে তাদের উপর বিশ্বাস রাখার জন্য একটি অ্যাপল ওয়ার্কস্টেশন এমনকি এক বছরেও থাকবে কিনা তা নিয়ে জল্পনা-কল্পনা খুব ব্যস্ত।
সর্বাধিক গুরুত্বপূর্ণ বিষয়টি হ'ল চুদা কেবল এনভিআইডিএ হার্ডওয়্যার দ্বারা সমর্থিত থাকবে।
সুতরাং, আপনি যদি শক্ত এবং পোর্টেবল সফ্টওয়্যার তৈরি করতে চান তবে ওপেনসিএলই একমাত্র বিকল্প। সর্বাধিক আপনি বর্তমানে কয়েকটি কুডা-চালিত লাইব্রেরিগুলি প্রায় তৈরি করতে পারেন এবং আশা করেন যে ভবিষ্যতে আপনার কোডটি এটির সাথে টানলে তারা ওপেনসিএল-এর মাধ্যমে প্রসারিত হবে।