সি # [বন্ধ] সহ জিপিইউ ব্যবহার করা হচ্ছে


135

আমি আমার গ্রিড থেকে আরও প্রসেসিং শক্তি পাওয়ার চেষ্টা করছি।

আমি সমস্ত সিপাস / কোর ব্যবহার করছি, সিপি দিয়ে জিপিইউ ব্যবহার করা কি সম্ভব?

যে কোনও গ্রন্থাগার জানেন বা কোনও নমুনা কোড পেয়েছেন?

উত্তর:


156

[ এমনকি এই উত্তরটি বেশ পুরানো হয়ে যাওয়ায় ওসিটি 2017 সম্পাদনা করুন ]

এই উত্তরগুলির বেশিরভাগই বেশ পুরানো, তাই আমি ভেবেছিলাম যে প্রতিটি প্রকল্প কোথায় আছে তার একটি আপডেট সংক্ষিপ্ত বিবরণ দেব:

  • জিপিইউ.নেট (টাইডপাওয়ার্ড) - আমি 6 মাস বা তার আগেও এটি চেষ্টা করেছি এবং এটি কিছুটা কাজ নিলেও এটি কাজ করে চলেছে। সংকলনের সময় সি # কার্নেল কোডকে চুদাতে রূপান্তর করে। দুর্ভাগ্যক্রমে তাদের ওয়েবসাইটটি ডাউন ছিল এবং কয়েক বছর ধরে তাদের গিথুব আপডেট হয়নি, যা সম্ভবত প্রকল্পটি মারা গেছে ...

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

  • Hybridizer । বাণিজ্যিক সমাধান সি # কে CUDA তে সংকলন করে। ভিজ্যুয়াল স্টুডিও মার্কেটপ্লেসে একটি বিনামূল্যে সম্প্রদায় সংস্করণ এবং গিথুবে নমুনা সরবরাহ করে ।

  • গ্রাহক জিপিএসের জন্য একটি বিনামূল্যে সম্প্রদায় সংস্করণ সহ আলেয়াজিপিইউ বাণিজ্যিক সমাধান। বিশদ জন্য ড্যানিয়েলের মন্তব্য দেখুন।

  • ব্রহ্মা - ওপেনসিএল মাধ্যমে লিনকিউ এক্সপ্রেশন চালায় (সুতরাং এটিএমডিও সমর্থন করে)। খুব বেশি ডকুমেন্টেশন / উদাহরণ নেই। ২০১১ সালে সর্বশেষ আপডেট।

  • সি $ - শেষ বিকাশ 10 বছর আগে শেষ হয়েছিল ...

  • মাইক্রোসফ্ট এক্সিলারেটর - একইভাবে এটির মতো আর সক্রিয়ভাবে বিকাশমান বলে মনে হচ্ছে না।

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

যেমনটি আমি বলেছি, আমি অন্য সকলের উপরে চুদাফিকে সুপারিশ করব - যদি এটি ওপেনসিএল পাশাপাশি চুদাতে চালানো যায় তবে এটি নিখুঁত হবে।

সম্পাদনা SEP 2013 চুদাফি এখন আপনাকে CUDA এবং ওপেনসিএল উভয়ের জন্যই সংকলন করতে দেয় , সুতরাং সমস্ত জিপিইউতে একই সি # কোড চালাবে। এটি দুর্দান্ত শোনায়, যদিও আমি এখনও ওপেনসিএল সংকলন পরীক্ষা করে দেখিনি।


31
এক ধরণের দ্রুত বিকাশকারী বিষয়ে দরকারী প্রশ্ন আপডেট করার জন্য +1।
ফিলোগলন

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

চুদাফিতে ওপেনসিএল সমর্থনটি বেশ খারাপ - আমার প্রকল্পটি বড় হওয়ার সাথে সাথে আমি কখনই সংকলন করতেও সক্ষম হই নি। সুতরাং আমি সরল ওপেনসিএল এর সাথে লেগে থাকব এবং সি # তে বাঁধাই করব।
Libor

ওপেনসিএল চুদাফি ব্যবহার করে আমার জন্য ভাল কাজ করে, এটি এখন বছরের পর বছর ধরে ব্যবহার করে
চলেছে

ভবিষ্যতে দর্শনার্থীদের সহায়তার জন্য প্রকল্পগুলিতে লিঙ্কগুলি যুক্ত করা হয়েছে।
ড্যান অ্যাটকিনসন

46

মাইক্রোসফ্ট রিসার্চ এক্সিলারেটর ছিল একটি নেট নেট জিপিইউ লাইব্রেরি।


দুর্বল লাইসেন্সিং পলিসি সহ এটি দুর্দান্ত একটি প্রকল্প ছিল। দুর্ভাগ্যক্রমে, এমএস সাইটে আর উপলভ্য নয় ...
ফরএনভিউআর

25

আমি ব্রহ্মাকে পেয়েছি ... এটিতে একটি জিপিপিইউ সরবরাহকারীও রয়েছে যা জিপিইউতে পদ্ধতি চালানোর অনুমতি দেয় ... প্রশ্নের জন্য ধন্যবাদ ... আজ নতুন কিছু শিখেছে। :)


10

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

http://www.ziggyware.com/news.php?readmore=866

শেডার প্রোগ্রামিং শেখার ক্ষেত্রে আপনাকে কিছুটা চেষ্টা করতে হবে (এক্সএনএ এইচএলএসএল সমর্থন করে), তবে এটি এনভিডির সিউডিএর মতো কোনও বিক্রেতার-নির্দিষ্ট সমাধান শেখার চেয়ে সহজ পদ্ধতির হতে পারে। সুবিধাটি হ'ল আপনি একটি 100% পরিচালিত পরিবেশে প্রোগ্রাম করতে পারেন। এখানে কিছু এইচএলএসএল লিঙ্ক রয়েছে:

http://www.ziggyware.com/weblinks.php?cat_id=9

জিপিজিইউ সাইটটি সাধারণ উদ্দেশ্যে জিপিইউ প্রোগ্রামিংয়ের জন্য একটি প্রস্তাবিত গন্তব্য:

http://gpgpu.org/

ভাগ্য সুপ্রসন্ন হোক!


1
ভবিষ্যত থেকে শুভেচ্ছা। তর্কাতীতভাবে একটি উত্তম উত্তর যদিও (আমি এক্সএনএ নিয়ে বেশ খানিকটা
ছড়িয়ে ছিটিয়েছি

@ মিকিডি গ্রেট স্কট! যখন আমি আমার ডিওলরিয়ানে প্রবেশ করি এবং 2018 এর দিকে যাত্রা করেছি, তখন আমি এই উত্তরটি আপডেট করতে পুরোপুরি ভুলে গেছি! আপনি যদি এখনও এক্সএনএ-তে আগ্রহী হন, তবে আধ্যাত্মিক উত্তরসূরি সম্ভবত ক্রস-প্ল্যাটফর্ম মনোগেম: মনোগেম.নেট
ডেভ আর।

হাঃ হাঃ হাঃ. ধন্যবাদ আমি এটি পরীক্ষা করে
দেখব

9

Http://www.tidepowerd.com/ GPU.NET সম্পর্কে কীভাবে ?


2
আমি ধারণাটি পছন্দ করি তবে তারা প্রায় দু'বছর আগে প্রযুক্তিগত সহায়তার প্রশ্নগুলিতে প্রতিক্রিয়া দেওয়া বন্ধ করে দিয়েছিল এবং সাইটটি প্রায় এক বছর ধরে কম-বেশি ডাউন হয়েছে, তাই আমি মনে করি প্রকল্পটি মারা গেছে। দৃশ্যত লেখক তাই হয় , যদিও।
ব্লুরাজা - ড্যানি পিফ্লুঘুফ্ট

তিটেডপাওয়ার্ড জিপিইউ.এনইটের উন্নয়ন বন্ধ করে দিয়েছিল এবং তাদের ব্যবসা বন্ধ করে দিয়েছে closed
ড্যানিয়েল

9

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

জিপিইউ.নেটের কোনও বয়লারপ্লিট কোডের প্রয়োজন নেই, যদিও (তাদের ডক্স অনুসারে, এটি "বিল্ড-টুল দ্বারা স্বয়ংক্রিয়ভাবে ইনজেকশন দেওয়া হয়") , যখন সিডিডিএফ করে।


CUDAfy দিয়ে একটি অ্যাপ্লিকেশন তৈরির উদাহরণ এখানে


8

আচ্ছা এটি বেশ পুরানো প্রশ্ন, এবং যেহেতু এটি জিজ্ঞাসা করা হয়েছিল সেগুলি অনেক পরিবর্তন হয়ে গেছে।
জিপিইউ কোড লিখতে। নেট ব্যবহারের জন্য আরেকটি বিকল্প, যা আলেয়া জিপিইউতে উত্তরে কেউ উল্লেখ করেনি । এটি সি #, এফ # এবং ভিবি জুড়ে।

নেট এবং মনো এর জন্য পেশাদার জিপিইউ সফ্টওয়্যার বিকাশের পরিবেশ। সত্যই ক্রস প্ল্যাটফর্ম

এফ # অফিসিয়াল সাইটে, জিপিজিইউ প্রোগ্রামিংয়ে এফ # ব্যবহারের জন্য আলেয়া হ'ল প্রথম বিকল্প
এই কাঠামোটি জানার জন্য আমি উদাহরণের এর বিস্তৃত তালিকাটি একবার দেখে নিন ।


1
শুধু আপনার উত্তর দেখেছি, আমার পোস্ট মুছে ফেলবে। এখানে শেঠ জুয়ারেজের চ্যানেল 9 এর সাক্ষাত্কার এবং এসও ট্যাগটি এখানে দেখুন )
ডেভিড কচিয়া

@ ডেভিডকুশিয়া আপনার পুরানো উত্তরগুলি পরীক্ষা করার জন্য দুর্দান্ত কাজ। এবং চ্যানেল 9 লিঙ্কের জন্য ধন্যবাদ (2016 সালের ডিসেম্বর!)
রাশ


@ ড্যানিয়েল আমার অর্থ "চ্যানেল 9 রেকর্ডিংয়ের লিঙ্ক"। অস্পষ্ট ছিল? যাইহোক, নির্দেশ করার জন্য ধন্যবাদ।
Rsh

@ ডেভিডকুচিয়া বিভ্রান্তির জন্য দুঃখিত, লিঙ্কটি দেখতে খুব কঠিন ছিল
ড্যানিয়েল

7

ব্রহ্মা ছাড়াও সি $ (উচ্চারণ করা "সি বাক্স") দেখুন। তাদের কোডপ্লেক্স সাইট থেকে :

[সি $] এর লক্ষ্যটি আধুনিক জিপিইউ এবং সিপিইউতে বিরামবিহীন সমান্তরাল প্রোগ্রামিংয়ের জন্য একটি সংহত ভাষা এবং সিস্টেম তৈরি করছে।

এটি সি # এর উপর ভিত্তি করে, অলসভাবে মূল্যায়ন করা হয়েছে এবং একাধিক ত্বকের মডেলকে লক্ষ্য করে:

বর্তমানে উদ্দেশ্যে করা আর্কিটেকচারের তালিকায় জিপিইউ, মাল্টি-কোর সিপিইউ, মাল্টি-জিপিইউ (এস এল এল, ক্রসফায়ার) এবং মাল্টি-জিপিইউ + মাল্টি-সিপিইউ হাইব্রিড আর্কিটেকচার অন্তর্ভুক্ত রয়েছে।


7

শহরে মাইক্রোসফ্টের একটি নতুন সমাধান রয়েছে - সি ++ এএমপি (অন্তর্ভুক্তি এখানে )।

সি # থেকে ব্যবহার পি / ইনভোকের মাধ্যমে হবে, এখানে ডেস্কটপ অ্যাপ্লিকেশনগুলির জন্য ডেমোড করা হয়েছে , এবং এখানে (কল করবেন না) মেট্রো অ্যাপ্লিকেশনগুলির জন্য।

সম্পাদনা: আমার নোট করা উচিত যে সি ++ এএমপির একটি খোলার স্পেসিফিকেশন রয়েছে যার অর্থ এটি কেবলমাত্র এমএস সংকলক বা উইন্ডোজের জন্য নয়।

সম্পাদনা: আপাতদৃষ্টিতে, প্রযুক্তিটি এখন "রক্ষণাবেক্ষণ মোডে" রয়েছে যার অর্থ তারা বাগগুলি ঠিক করছে তবে সক্রিয়ভাবে বিকাশ করছে না।


2

পরিচালিত ডাইরেক্টএক্স একরকম, কাজ করতে পারে


2
ভবিষ্যত থেকে শুভেচ্ছা। তর্কত যুক্তিযুক্ত সময়ে একটি দুর্দান্ত উত্তর যদিও, দুর্ভাগ্যক্রমে MDX এখন এক্সএনএ সঙ্গে প্রতিস্থাপিত হয়েছে যা এছাড়াও অকার্যকর।
মিকিড

2

যদি আপনার জিপিইউগুলি একই ব্র্যান্ড হয় তবে আপনি এনভিডিয়ার সিডিডিএ বা এটিআইয়ের স্ট্রিমের মাধ্যমে বিক্রেতার কাছ থেকে জিপিপিইউ সমর্থন পেতে সক্ষম হতে পারেন। আফাইক, তারা ডিএলএল সরবরাহ করে, যা আপনি পি / ইনভোকের মাধ্যমে ব্যবহার করতে পারেন।


1

সেন্টারস্পেস সফ্টওয়্যারটির তাদের এনএমথ লাইব্রেরিতে জিপিইউ চালিত গণনা রয়েছে যা আপনি সি # প্রকল্পে যুক্ত করতে পারেন। এটি বাণিজ্যিক পণ্য।


0

আপনি যদি নিজস্ব নিজস্ব অ্যালগরিটিম প্রয়োগ করতে চলেছেন তবে কাস্টম কার্নেলগুলির প্রয়োজন:

আমি সম্প্রতি এই গিথুব সংগ্রহস্থলে আমার একটি ওপেন-সোর্স প্রকল্প আপলোড করেছি যা ওপেনসিএল ব্যবহার করে।

এটি কী করে (আপনি তার উইকি পৃষ্ঠা থেকেও এটি পরীক্ষা করতে পারেন) হ'ল, একাধিক ওপেনসিএল-সক্ষম ডিভাইস এবং ব্যবহারকারীর কাছ থেকে একটি কার্নেল স্ট্রিং নির্বাচন করে সি # বা সি ++ অ্যারে মোড়ক তৈরি করুন এবং তারপরে একটি অটো-লোড-ব্যালেন্সারের সাহায্যে সমস্ত গণনা করুন এবং একটি পিসি থেকে ভাল দক্ষতা পেতে পাইপলাইনার (বিলম্বগুলি আড়াল করতে)

এটির ব্যবহারের উদাহরণ এখানে রয়েছে (1024 ওয়ার্কাইটেম সমস্ত ডিভাইসে বিভক্ত, প্রতিটি কোড একই চলমান তবে বিভিন্ন ডেটা এবং থ্রেডআইড ব্যবহার করে):

// select all GPUs and all CPUs in same pc
ClNumberCruncher gpuCpu = new ClNumberCruncher(AcceleratorType.GPU | AcceleratorType.CPU, @"
    __kernel void distributeTanh(__global float * data,__global int * data2)
    {
         int threadId=get_global_id(0);
         data[threadId]=tanh(data[threadId]);
         data2[threadId]=threadId;
    }    
");

// a wrapper that can hold C# or C++ arrays
ClArray<float> data = new ClArray<float>(1024);
ClArray<int> data2 = new int[1024];

// load-balances "distributeTanh" on all devices more fairly 
// at each repeatation of this line with same compute-id(1 here)
data.nextParam(data2).compute(gpuCpu, 1, "distributeTanh", 1024);
// threadId in kernel receives unique continuous id value for all work
// either it is in cpu or gpu doesn't matter
// compute method also has parameters to enable pipelining to 
// elliminate buffer copy latencies or compute latencies

যখন সমস্ত আর ব্যবহার করা হয় না, তারা তাদের ধ্বংসকারীদের সাথে সমস্ত সি ++ সংস্থান ছেড়ে দেয় release

তবে এটি পরিপক্ক নয়, তাই গিথুব সমস্যা ট্যাবে কোনও "সমস্যা" যুক্ত করতে নির্দ্বিধায় মনে করুন। মাল্টি-পিসি-ক্লাস্টার প্রাসঙ্গিক ক্লাসগুলি এখনও কাজ করছে না এবং এখনও ইংরেজিতে অনুবাদ করা হয়নি তবে এটি কমপক্ষে একক পিসিতে সমস্ত ডিভাইস ব্যবহার করতে পারে।


-2

ডাব্লুপিএফ এছাড়াও জিপিইউ ব্যবহার করে এবং আপনি এইচএলএসএল ব্যবহার করে কাস্টম শেডার যুক্ত করতে পারেন।


আমার জ্ঞানের সাথে ডাব্লুপিএফের জিপি জিপিউ কম্পিউটিং অ্যাক্সেস নেই। WPF System.Windows.Media গ্রাফিক্স সম্পর্কে কথা বলার সময়, এটি আসল ডাইরেক্টএক্স নয়। শার্পডিএক্স বা স্লিমডিএক্সের সাথে নিম্ন-স্তরের ভার্টেক্স প্রোগ্রামিংয়ের সাথে তুলনা করলে খুব ধীর।
পসি তুওমেনেন

আমি ডাব্লুপিএফ-তে জিপিইউ-এক্সিলারেটড কাস্টম এফেক্টগুলির উপর ধারাবাহিক নিবন্ধের লিঙ্ক যুক্ত করেছি।
মার্ক সিডেড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.