CUDA 2013 বনাম ওপেনসিএল বনাম


34

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

কিছুটা সুনির্দিষ্ট হওয়ার জন্য, নিম্নলিখিত অনুমানগুলি কি সঠিক?

  • চুডায় যা কিছু সম্ভব সম্ভব ওপেনসিএল-তেও সম্ভব

  • যতক্ষণ না আমরা লাইব্রেরি ব্যবহার করছি না, ততক্ষণ কোনও প্রদত্ত কাজ এগুলির মধ্যে দুটিতে করা তাত্পর্যপূর্ণভাবে সহজ (বা আরও বেশি কঠিন) নয়

  • CUDA এর প্রধান সুবিধা হ'ল গ্রন্থাগারগুলির সহজলভ্যতা

  • তিনটি প্রধান প্ল্যাটফর্মের জন্য উভয়েরই ভাল সমর্থন রয়েছে (উইন / ওএসএক্স / লিনাক্স)


1
আমি যদি প্রশ্নটি পর্যাপ্ত সুনির্দিষ্ট না হয় তবে আপডেট করার চেষ্টা করব ... আমরা এই ডোমেনে নতুন, এবং এটি উত্সাহিত এমন একটি প্রাথমিক প্রশ্ন, বিশেষত হার্ডওয়্যার নির্বাচনের কারণে। একটি বিষয় যা আমার দৃষ্টি আকর্ষণ করেছে এবং আমাকে ওপেনসিএল সম্পর্কে সাবধান করে তুলেছে তা এই থ্রেড । ওপেনসিএল যদি রাইট্রাকিংয়ের জন্য যথেষ্ট পরিমাণে ভাল না হয় (ব্লেন্ডার) তবে সম্ভবত এইচপিসির পক্ষে এটি যথেষ্ট ভাল নয় ...
Szabolcs

আমি ২০১১ সাল থেকে জিপিইউতে সক্রিয় ছিলাম না তাই আমি কাউকে আরও যুগোপযোগী উত্তর জানাতে পারি, তবে আপনার বক্তব্য "প্রদত্ত কাজটি তাদের মধ্যে দুটিতে করা গুরুত্বপূর্ণভাবে সহজ নয়" এমনটি ছিল যা আমি পাইনি। সত্যই। এখানে ব্যক্তিগত পক্ষপাত আছে, তবে আমি অনুভব করেছি যে উন্নয়নের স্বাচ্ছন্দ্যের দিক থেকে ওপিসিএল থেকে চুদা মাইল কয়েক মাইল এগিয়ে। আমাকে নিজেকে আপডেট করতে হবে, তবে আপনি যদি 2 বছর আগে আমাকে জিজ্ঞাসা করেছিলেন আমি বলেছি আমি 10 ফুটের খুঁটি দিয়ে ওপেনসিএল স্পর্শ করব না।
অরেলিয়াস

আমি এই প্রশ্নটি সম্পর্কে সচেতন: ওপেনসিএলের ভবিষ্যত , তবে এটি ঠিক একই প্রশ্ন নয় এবং এটি 2 বছরের পুরানো। আমি ধরে নিই যে দু'বছরের মধ্যে জিনিসগুলির পরিবর্তন হতে পারে।
কাজ Szabolcs

আমাদের জন্য ব্যবহারিক প্রশ্নগুলির মধ্যে একটি হ'ল যদি 2013 সালের এএমডি ফায়ারপ্রো কার্ড সহ ম্যাক প্রোটি জিপিইউ কম্পিউটিংয়ের পরিচিতি অর্জন এবং ব্যবহারের জন্য ভাল হয় (কোনও সিডিডিএ সমর্থন নয়)।
কাজ Szabolcs

আপনার রাডারটিতে সি ++ এএমপি রাখাও এটি উপযুক্ত। একটি এলএলভিএম বাস্তবায়ন কাজ চলছে। hsafoundation.com/bringing-camp-beyond-windows-via-clang-llvm । মাইক্রোসফ্ট ইতিমধ্যে এফএফটি, বিএলএএস এবং ল্যাপ্যাকের জন্য সি ++ এএমপি লাইব্রেরি তৈরি করেছে।
রজার ডাহল

উত্তর:


37

আমি ভিয়েনা সিএল বিকাশের সময়ে প্রাপ্ত আমার অভিজ্ঞতার সংক্ষিপ্তসারটি চেষ্টা করার চেষ্টা করব, যেখানে আমাদের প্রচুর পরিমাণে কম্পিউটারের কার্নেলগুলির 1: 1 অনুবাদ সহ সিউডিএ এবং ওপেনসিএল ব্যাকেন্ড রয়েছে। আপনার প্রশ্ন থেকে আমি এটিও ধরে নেব যে আমরা বেশিরভাগ এখানে জিপিইউ সম্পর্কে নিচ্ছি।

পারফরম্যান্স বহনযোগ্যতা।প্রথমত, পারফরম্যান্স-পোর্টেবল কার্নেলগুলির কোনও অর্থ এই অর্থে নেই যে আপনি একবার কার্নেল লিখেছেন এবং এটি প্রতিটি হার্ডওয়্যারে দক্ষতার সাথে চলবে। ওপেনসিএল-তে নয়, যেখানে সমর্থিত হার্ডওয়ারের বিস্তৃত পরিসরের কারণে এটি আরও স্পষ্ট, তবে সিআইডিএ-তেও নয়। CUDA এ হার্ডওয়্যার সমর্থিত ছোট পরিসরের কারণে এটি কম স্পষ্ট হয়েছে, তবে আমাদের এখানে ইতিমধ্যে কমপক্ষে তিনটি হার্ডওয়্যার আর্কিটেকচার (প্রাক-ফার্মি, ফার্মি, কেপলার) আলাদা করতে হবে। কার্নেলটি বাফার অনুলিপিটির মতো সহজ হলেও আপনি কীভাবে থ্রেডগুলি অর্কেস্টেট করেন এবং কোন ওয়ার্ক গ্রুপের আকার আপনি বেছে নেন তার উপর নির্ভর করে এই পারফরম্যান্সের ওঠানামা সহজেই 20 শতাংশের পারফরম্যান্স পরিবর্তনের ফলে ঘটতে পারে। সম্ভবত এটি উল্লেখ করারও দরকার যে প্রাক-ফার্মি এবং ফার্মি জিপিইউগুলিতে সরাসরি সিউডিএতে দ্রুত ম্যাট্রিক্স-ম্যাট্রিক্স গুণিত কার্নেলগুলি লেখা সম্ভব ছিল, যদিও সর্বশেষতম কেপলার জিপিইউগুলির জন্য মনে হচ্ছে চাবলাসের পারফরম্যান্সের ঘনিষ্ঠ হওয়ার জন্য কাউকে পিটিএক্স সিউডো-এসেম্বলি ভাষায় নেমে যেতে হবে। সুতরাং, এমনকি সিইউডিএ-র মতো বিক্রেতার-নিয়ন্ত্রিত ভাষারও হার্ডওয়্যার বিকাশের সাথে গতি বজায় রাখতে সমস্যা রয়েছে বলে মনে হয়। এছাড়াও, আপনি যখন এনভিসিসি চালান তখন সমস্ত সিইডিএ কোড স্থিতিশীলভাবে সংকলিত হয়, যার জন্য কিছুটা -আরচ ফ্ল্যাটের মাধ্যমে ব্যালেন্সিং অ্যাক্টের প্রয়োজন হয়, যখন ওপেনসিএল কার্নেলগুলি কেবলমাত্র ইন-টাইম সংকলক থেকে রান-টাইমে সংকলিত হয়, তাই আপনি নীতিগতভাবে টেইলার কার্নেলগুলি করতে পারেন একটি নির্দিষ্ট গণনা ডিভাইসের খুব স্পেসিফিকেশন ডাউন। পরবর্তীটি যদিও বেশ জড়িত এবং সাধারণত আপনার কোডটি পরিপক্ক হওয়ার সাথে সাথে আপনার অভিজ্ঞতা জমে যাওয়ার সাথে সাথে খুব আকর্ষণীয় বিকল্প হয়ে ওঠে। প্রদানের মূল্যটি হ'ল ইন-টাইম সংকলনের জন্য প্রয়োজনীয় ও (1) সময়, যা নির্দিষ্ট পরিস্থিতিতে সমস্যা হতে পারে। ওপেনসিএল 2।

ডিবাগিং এবং প্রোফাইলিং। সিপিডিএ ডিবাগিং এবং প্রোফাইলিং সরঞ্জামগুলি জিপিজিইউ-র জন্য সর্বোত্তম উপলব্ধ। এএমডি-র সরঞ্জামগুলিও খারাপ নয়, তবে সেগুলিতে চুদা-জিডিবি বা চুদা-মেমকেকের মতো রত্ন অন্তর্ভুক্ত নয়। এছাড়াও, আজও এনভিআইডিএ জিপিপিইউ-র জন্য সবচেয়ে শক্তিশালী ড্রাইভার এবং এসডিকে সরবরাহ করে, বগি কার্নেলের কারণে সিস্টেম হিমশীতল ব্যতিক্রম, নিয়ম নয়, ওপেনসিএল এবং সিইউডিএ উভয়ই। কারণগুলির জন্য আমাকে সম্ভবত এখানে ব্যাখ্যা করার দরকার নেই, এনভিআইডিএ আর CUDA 5.0 এবং তদুর্ধের ওপেনসিএল এর জন্য ডিবাগিং এবং প্রোফাইলিং সরবরাহ করে না।

অ্যাক্সেসযোগ্যতা এবং সুবিধা। প্রথম CUDA কোডগুলি আপ এবং চলমান পাওয়া খুব সহজ, বিশেষত যেহেতু CUDA কোডটি হোস্ট কোডের সাথে সুন্দরভাবে সংহত করে। (আমি পরে প্রদানের মূল্যটি নিয়ে আলোচনা করব)) ওয়েবে প্রচুর পরিমাণে টিউটোরিয়াল পাশাপাশি অপ্টিমাইজেশন গাইড এবং কিছু লাইব্রেরি রয়েছে। ওপেনসিএল দিয়ে আপনাকে বেশ কিছুটা প্রারম্ভিককরণ কোডটি দিয়ে যেতে হবে এবং আপনার কার্নেলগুলি স্ট্রিংয়ে লিখতে হবে, সুতরাং জিট-সংকলককে উত্সগুলি খাওয়ানোর সময় আপনি কেবল মৃত্যুদন্ড কার্যকর করার সময় সংকলন ত্রুটিগুলি খুঁজে পান। সুতরাং, ওপেনসিএল এর সাথে একটি কোড / সংকলন / ডিবাগ চক্রটি যেতে বেশি সময় নেয়, তাই প্রাথমিকভাবে এই প্রাথমিক পর্যায়ে আপনার উত্পাদনশীলতা কম থাকে।

সফ্টওয়্যার লাইব্রেরি দিকগুলি। পূর্ববর্তী আইটেমগুলি চুডার পক্ষে ছিল, অন্য সফ্টওয়্যারের সাথে সংহতকরণ ওপেনসিএল-এর জন্য একটি বড় প্লাস। আপনি কেবল ভাগ করা ওপেনসিএল লাইব্রেরির সাথে লিঙ্ক করে ওপেনসিএল ব্যবহার করতে পারেন এবং এটি হ'ল সিউডিএর সাথে আপনার পুরো সিউডিএ সরঞ্জামচেন উপলব্ধ থাকা প্রয়োজন। আরও খারাপ, এনভিসিসি কাজের জন্য আপনাকে সঠিক হোস্ট সংকলকগুলি ব্যবহার করতে হবে। আপনি যদি কখনও জিডিসি ৪. or বা আরও নতুন উদাহরণস্বরূপ চুদা ৪.২ ব্যবহার করার চেষ্টা করে থাকেন তবে আপনার কাজ করতে জিনিস পেতে খুব অসুবিধা হবে। সাধারণত, আপনার যদি এমন কোনও সংকলক ব্যবহারের প্রয়োজন হয় যা CUDA এসডিকে তুলনায় নতুন, তবে সমস্যাগুলি সম্ভবত ঘটে। সিএমকেকের মতো বিল্ড সিস্টেমে একীকরণ হ'ল মাথা ব্যথার অন্য একটি উত্স (আপনি উদাহরণস্বরূপ পিইটিএসসি এর প্রচুর প্রমাণও পেতে পারেন )ডাক তালিকা). এটি আপনার নিজের মেশিনে কোনও সমস্যা নাও হতে পারে যেখানে আপনার সম্পূর্ণ নিয়ন্ত্রণ রয়েছে তবে আপনি আপনার কোডটি বিতরণ করার সাথে সাথে আপনি এমন পরিস্থিতিতে চলে যাবেন যেখানে ব্যবহারকারীরা তাদের সফ্টওয়্যার স্ট্যাকের ক্ষেত্রে কিছুটা সীমাবদ্ধ রয়েছে। অন্য কথায়, সিউডিএর সাহায্যে আপনি আপনার প্রিয় হোস্ট সংকলকটি চয়ন করতে পারবেন না, তবে এনভিআইডিএ নির্দেশ দেয় যে কোন সংকলক আপনাকে ব্যবহারের অনুমতিপ্রাপ্ত।

অন্যান্য দিকগুলি। CUDA হার্ডওয়্যার (যেমন ওয়ার্পস) এর কিছুটা কাছাকাছি, তবে লিনিয়ার বীজগণিতের সাথে আমার অভিজ্ঞতা হ'ল আপনি খুব কমই এর থেকে উল্লেখযোগ্য সুবিধা পান। CUDA এর জন্য আরও কয়েকটি সফ্টওয়্যার লাইব্রেরি রয়েছে, তবে আরও বেশি সংখ্যক গ্রন্থাগার একাধিক গণনা ব্যাককেন্ড ব্যবহার করে। ভিয়েনাএল সিএল , ভেক্সসিএল , বা প্যারালিউশন সকলেই ওপেনসিএল এবং সিইউডিএ ব্যাকএন্ড সমর্থন করে, অন্যদিকে লাইব্রেরিগুলির সাথে একই ধরণের প্রবণতা দেখা যায়।

জিপিজিইউ কোনও রূপালী বুলেট নয়। কাঠামোগত ক্রিয়াকলাপ এবং গণনা-সীমাবদ্ধ কাজের জন্য জিপিজিপিউতে ভাল পারফরম্যান্স সরবরাহ করতে দেখানো হয়েছে। তবে সিক্যুয়াল প্রসেসিংয়ের অ-নগদ অংশ সহ অ্যালগরিদমগুলির জন্য, জিপিজিপিউ জাদুকরভাবে আমদাহের আইনকে কাটিয়ে উঠতে পারে না । এই পরিস্থিতিতে আপনি আপনার সমস্যার সমান্তরাল, তবে কম উপযুক্ত অ্যালগরিদম নিক্ষেপ করার চেয়ে উপলভ্য সেরা অ্যালগরিদমের একটি ভাল সিপিইউ বাস্তবায়ন ব্যবহারের চেয়ে ভাল। এছাড়াও, পিসিআই-এক্সপ্রেস একটি মারাত্মক বাধা, তাই আপনাকে জিপিইউ থেকে প্রাপ্ত সঞ্চয়টি পিছনে পিছনে সরানো ডেটার ওভারহেডকে ক্ষতিপূরণ দিতে পারে কিনা তা আগে থেকেই পরীক্ষা করা উচিত।

আমার সুপারিশ। CUDA বা এর চেয়ে CUDA এবং ওপেনসিএল বিবেচনা করুনOpenCL। অকারণে নিজেকে একটি প্ল্যাটফর্মের মধ্যে সীমাবদ্ধ করার দরকার নেই, বরং উভয় জগতের থেকে সেরাটি গ্রহণ করুন। আমার পক্ষে যেটি ভাল কাজ করে তা হ'ল CUDA এ প্রাথমিক বাস্তবায়ন স্থাপন করা, এটি ডিবাগ করা, এটি প্রোফাইল করা এবং তারপরে সরল স্ট্রিং বিকল্পগুলি দ্বারা ওপেনসিএল-তে পোর্ট করা ( টার্গেট হার্ডওয়্যার টিউন করার ক্ষেত্রে।) এই পোর্টিং প্রচেষ্টাটি সাধারণত আপনার সময়ের 10 শতাংশেরও কম সময় খরচ করে তবে আপনাকে অন্যান্য হার্ডওয়্যারে চালানোর ক্ষমতাও দেয়। কিছু পরিস্থিতিতে এন-এনভিআইডিএ-র হার্ডওয়্যার কতটা ভাল পারফর্ম করতে পারে তা সম্পর্কে আপনি অবাক হতে পারেন। সর্বোপরি, সম্ভব লাইব্রেরিতে কার্যকারিতার পুনরায় ব্যবহার বিবেচনা করুন consider একটি দ্রুত এবং কিছু কার্যকারিতার নোংরা রিম্প্লেমিশন প্রায়শই সিপিইউতে একক থ্রেডযুক্ত মৃত্যুর জন্য গ্রহণযোগ্য কাজ করে, এটি প্রায়শই আপনাকে ব্যাপকভাবে সমান্তরাল হার্ডওয়্যারে খারাপ অভিনয় দেয় performance আদর্শভাবে আপনি এমনকি লাইব্রেরিতে সমস্ত কিছু অফলোড করতে পারেন এবং তারা CUDA, ওপেনসিএল বা উভয় অভ্যন্তরীণভাবে ব্যবহার করেন কিনা সে সম্পর্কে কখনও চিন্তা করার দরকার নেই। ব্যক্তিগতভাবে আমি এখন থেকে বেশ কয়েক বছর ধরে যে নির্ভর করতে চাই তার জন্য বিক্রেতা-লক কোডটি লেখার সাহস আমি কখনই করব না, তবে এই মতাদর্শিক দিকটি একটি পৃথক আলোচনায় যাওয়া উচিত।


আপনি উভয় প্ল্যাটফর্মে স্ট্যান্ডার্ড 1D, 2 ডি, 3 ডি এফএফটির বর্তমান কার্য সম্পাদন এবং ব্যবহারযোগ্যতা সম্পর্কে কী ভাবেন?
আনসিম

জেআইটি সংকলন সম্পর্কিত, চুদাও সেই সম্ভাবনাটি সরবরাহ করে তবে কিছুটা বাধা নিয়ে।
বেনসি

@ hwlau: এফএফটি হ'ল বিক্রেতাদের গ্রন্থাগারগুলির জন্য স্ট্যান্ডার্ড কার্যকারিতা, তাই CUDA বনাম ওপেনসিএল থেকে বেশ স্বতন্ত্র।
কার্ল রুপ

@ বেনসি: সীমাবদ্ধতাগুলি প্রকৃতপক্ষে খুব তীব্র, এটি কেবল অন্তর্নিহিত হার্ডওয়্যারটিতে প্রম্পম্পাইল্ড সিউডিএ-কার্নেলগুলির বিশেষীকরণ।
কার্ল রুপ

1
এই সম্ভাব্য সমস্যা সম্পর্কে আপনার কোনও মন্তব্য আছে ? এটি এএমডি হার্ডওয়্যার বা নিজেই ওপেনসিএল নিয়ে সমস্যা আছে কিনা তা আমার কাছে স্পষ্ট নয় (যেমন এনভিআইডিআইএ ওপেনসিএল-তে সমস্যাটি নেই কিনা)। সম্ভবত এটি বেশিরভাগ বৈজ্ঞানিক কম্পিউটিং অ্যাপ্লিকেশনগুলির ক্ষেত্রে সমস্যা নয় কারণ তারা একটি উন্নত রাইট্রেসরের তুলনায় ছোট এবং কম জটিল হয়ে থাকে? বিটিডব্লিউ আপনাকে দুর্দান্ত উত্তরের জন্য ধন্যবাদ!
কাজ Szabolcs
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.