কোন পরিসংখ্যানগত পদ্ধতিগুলির জন্য সিপিইউগুলির তুলনায় জিপিইউ দ্রুত হয়?


18

আমি আমার ডেস্কটপে সবেমাত্র একটি এনভিডিয়া জিটি 660 গ্রাফিক কার্ড ইনস্টল করেছি এবং কিছু লড়াইয়ের পরে, আমি এটি আর এর সাথে ইন্টারফেস করার ব্যবস্থা করি

আমি বেশ কয়েকটি আর প্যাকেজ নিয়ে খেলছি যা জিপিইউ ব্যবহার করে, বিশেষত গিটপুলগুলি, এবং আমি আমার জিপিইউ এবং সিপিইউতে কিছু বেসিক ক্রিয়াকলাপ সম্পাদনের জন্য যে সময় নিয়েছি তা তুলনা করেছিলাম:

  • বিপরীত ম্যাট্রিকেস (সিপিইউ দ্রুত)
  • কিউআর পচন (সিপিইউ দ্রুত)
  • বড় পারস্পরিক সম্পর্ক ম্যাট্রিক্স (সিপিইউ দ্রুত)
  • ম্যাট্রিক্সের গুণ (GPU অনেক দ্রুত!)

লক্ষ্য করুন যে আমি প্রধানত গুটপুলগুলি নিয়ে পরীক্ষা করেছি তাই অন্যান্য প্যাকেজগুলি আরও ভাল পারফরম্যান্স করে।

বিস্তৃত ভাষায় আমার প্রশ্ন হ'ল এমন কোন রুটিন স্ট্যাটিস্টিকাল অপারেশন যা কোনও সিপিইউর পরিবর্তে জিপিইউতে কার্যকর করতে পারে?


1
প্রচুর ম্যাট্রিক্সের গুণকে জড়িত কিছু? :) জিপিইউ নিউরাল নেট সম্প্রদায়গুলিতে বেশ জনপ্রিয়।

আপনাকে জড়িত ম্যাট্রিকগুলির আকার সরবরাহ করতে হবে। উদাহরণস্বরূপ, সর্বশেষে আমি বড় ম্যাট্রিক্স (2 ^ 9 বার 2 ^ 9 এবং উপরে) থেকে শুরু হওয়া জিপিইউতে
বিবর্তন

1
আমি বিবর্তন, কিউআর এবং ম্যাট্রিক্স গুণনের জন্য প্রায় ম্যাট্রিক্স ব্যবহার করেছি, তবে পারস্পরিক সম্পর্কগুলির জন্য আমি 100 মাপের ভেক্টরগুলির প্রায় 10 ^ 4 পর্যবেক্ষণ ব্যবহার করেছি। ম্যাট্রিক্স বিপরীতে জিপিইউ অনেক ধীর ছিল, যখন কিউআর পচন ছিল ধীর হলেও সিপিইউয়ের সাথে তুলনীয়। 103×103
জুগুরথা

2
এটি একটি খুব ভাল প্রশ্ন তবে আমি মনে করি এটি স্ট্যাকওভারফ্লোতে স্থানান্তরিত করার মাধ্যমে আপনি আরও ভাল উত্তর পাবেন (আমার মনে হয় এর আগে একই ধরণের প্রশ্ন জিজ্ঞাসা করা হয়েছিল)
ব্যবহারকারী 189035

2
নিয়মিত সিপিইউর জিপিইউর সুবিধা হ'ল এটাই যে তারা "বৃহত্তর" সমান্তরাল হতে পারে, তা নয় যে তারা মূল প্রতি দ্রুত হয়। যেমন, যে চাকরিগুলির জন্য প্রচুর "গৃহকর্মী" দরকার যেমন কোলেস্কি ফ্যাক্টেরাইজেশন ইত্যাদির জন্য আপনাকে উল্লেখযোগ্য গতি অর্জনের জন্য ব্লক অ্যালগরিদম ব্যবহার করা উচিত এবং তাই; এটি তুচ্ছ নয় এবং আমি ধরে নিই যে জিপিইউ এর যেমন অপারেশনগুলি নেওয়ার আগে এটি কিছুটা সময় নেবে। অবশ্যই জিপিইউ পথে যাচ্ছেন তা হ'ল এমসিএমসি-ইনিং (এবং র্যান্ডম নম্বর প্রজন্ম)। কোনও পোস্টারিয়র থেকে নমুনা দেওয়ার জন্য এটি জুড়ে "সমান্তরালকরণ" লেখা আছে ... এবং স্পার্স ম্যাট্রিকেস গণনা; তারা ইতিমধ্যে যাইহোক "অবরুদ্ধ" আছে ...
usεr11852 বলেছেন রিইনস্টেট মনিক

উত্তর:


6

জিপিইউ হ'ল সংবেদনশীল জন্তু। যদিও NVIDIA এর beefiest কার্ড তাত্ত্বিক অপারেশন আপনি তালিকাভুক্ত 100x দ্রুত দ্রুততম CPU- র চেয়ে কোন নির্বাহ করতে পারেন, সম্পর্কে একটি মিলিয়ন জিনিষ যে speedup পথে পেতে পারেন। প্রাসঙ্গিক অ্যালগরিদমের প্রতিটি অংশ এবং প্রোগ্রামটি যা এটি চালায়, তাত্ত্বিক সর্বাধিক দ্রুতগতির কাছাকাছি কোথাও পৌঁছানোর জন্য ব্যাপকভাবে টুইট করা এবং অনুকূলিত করতে হবে। আর সাধারণত একটি বিশেষত দ্রুত ভাষা হিসাবে পরিচিত হয় না এবং তাই এটি আমাকে অবাক করে দেয় না যে এর ডিফল্ট জিপিইউ বাস্তবায়ন কমপক্ষে কাঁচা পারফরম্যান্সের ক্ষেত্রে খুব ভাল নয়। যাইহোক, আর জিপিইউ ফাংশনগুলির মধ্যে অপ্টিমাইজেশন সেটিংস থাকতে পারে যা আপনি কিছু হারিয়ে যাওয়া পারফরম্যান্স পুনরুদ্ধার করতে টুইট করতে পারেন।

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

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


6

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

এটি বোঝানোর জন্য একটি সহজ উদাহরণ ম্যাট্রিক্স গুণনের সাথে।

মনে করুন আমরা ম্যাট্রিক্স গণনা করছি

একজন×বি=সি

একটি সাধারণ সিপিইউ অ্যালগরিদম এর মতো দেখতে লাগতে পারে

// সি = 0 দিয়ে শুরু হচ্ছে

for (int i = 0; i < C_Width; i++)
{
    for (int j = 0; j < C_Height; j++)
    {
        for (int k = 0; k < A_Width; k++)
        {
            for (int l = 0; l < B_Height; l++)
            {
                C[j, i] += A[j, k] * B[l, i];
            }
        }
    }
}

এখানে দেখার মূল বিষয়টি হ'ল লুপগুলির জন্য অনেকগুলি নেস্টেড রয়েছে এবং প্রতিটি পদক্ষেপ একের পর এক কার্যকর করতে হবে।

এর একটি চিত্র দেখুন

লক্ষ্য করুন যে সি এর প্রতিটি উপাদানের গণনা অন্যান্য উপাদানের কোনওটির উপর নির্ভর করে না। সুতরাং গণনাগুলি কী অর্ডারে করা হয়েছে তা বিবেচ্য নয়।

সুতরাং জিপিইউতে এই অপারেশনগুলি একই সাথে করা যেতে পারে।

ম্যাট্রিক্সের গুণনকে গণনা করার জন্য একটি জিপিইউ কার্নেল এর মতো দেখতে হবে

__kernel void Multiply
(
    __global float * A,
    __global float * B,
    __global float * C
)
{
     const int x = get_global_id(0);
     const int y = get_global_id(1);
     for (int k = 0; k < A_Width; k++)
     {
         for (int l = 0; l < B_Height; l++)
         {
             C[x, y] += A[x, k] * B[l, y];
         }
     }
}

এই কার্নেলের দুটি লুপের জন্য কেবল দুটি অভ্যন্তর রয়েছে। জিপিইউতে এই কাজটি প্রেরণকারী একটি প্রোগ্রাম জিপিইউকে সি এর প্রতিটি ডাটা পয়েন্টের জন্য এই কার্নেলটি চালিত করতে বলবে জিপিইউ এই নির্দেশাবলীর প্রতিটি একই সাথে বহু থ্রেডে করবে। পুরানো উক্তিটি যেমন "ডজন দ্বারা সস্তা" জিপিইউগুলি একইভাবে অনেক সময় একই কাজ করার জন্য ডিজাইন করা হয়েছিল।

তবে কিছু অ্যালগরিদম রয়েছে যা জিপিইউকে ধীর করবে। কিছু জিপিইউর জন্য উপযুক্ত নয়।

উদাহরণস্বরূপ, সেখানে ডেটা নির্ভরতা ছিল, যেমন: সি এর প্রতিটি উপাদানগুলির গণনা পূর্ববর্তী উপাদানগুলির উপর নির্ভর করে কল্পনা করুন। প্রোগ্রামারটিকে প্রতিটি পূর্ববর্তী গণনা শেষ হওয়ার জন্য অপেক্ষা করতে কার্নেলে একটি বাধা রাখতে হবে। এটি একটি বড় ধীর গতি হবে।

এছাড়াও, অ্যালগরিদমগুলিতে প্রচুর শাখার যুক্তি রয়েছে যেমন:

__kernel Foo()
{
    if (somecondition)
    {
        do something
    }
    else
    {
        do something completely different
    }
}

জিপিইউতে ধীর গতিতে প্রবণতা রয়েছে কারণ প্রতিটি থ্রেডে জিপিইউ আর একই কাজ করছে না।

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

অনেকগুলি আধুনিক সিপিইউ এখন হাইপারথ্রেডেড মাল্টিকোর প্রসেসরের সাথে সামঞ্জস্য সমর্থন করে।

জিপিইউ এর পুনরাবৃত্তির জন্য খুব ভাল বলে মনে হচ্ছে না, এখানে দেখুন যা সম্ভবত কিউআর অ্যালগরিদমের সাথে কিছু সমস্যা ব্যাখ্যা করে। আমি বিশ্বাস করি যে একটির কিছু পুনরাবৃত্ত ডেটা নির্ভরতা রয়েছে।


2
এটি সরকারীভাবে এসএক্স-দুষ্টু একটি উত্তরে মন্তব্য করা ঠিক যে এটি একটি ভয়ঙ্কর উত্তর, তবে আমি নেগস সম্পর্কে একটি ইঁদুরের পেরিনাম দিই না: এটি একটি আনন্দদায়ক এবং তথ্যবহুল উত্তর is এসএক্সের অন্যতম বড় অন্যায় হ'ল 'পুরাতন' (ইন্টারনেট সময়ে) প্রশ্নগুলিতে সূক্ষ্ম-তথ্যমূলক উত্তর দেয় এমন লোকদের কাছে কুডোর অভাব। (প্লাস, আমি একটি 'পুরাতন' (ইন্টারনেট সময়ে) উত্তরটি দিতে থাম্বস আপ দিচ্ছি: আমি জানি, ঠিক? মেটা)
জিটি

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

4

আপনি উল্লিখিত সমস্ত অ্যাপ্লিকেশনগুলির জন্য, পর্যাপ্ত বড় ম্যাট্রিকের জন্য সিপিইউগুলির তুলনায় জিপিইউগুলি আরও বেশি সক্ষম (একটি হার্ডওয়্যার দৃষ্টিভঙ্গি থেকে) হওয়া উচিত। আর এর বাস্তবায়ন সম্পর্কে আমি কিছুই জানি না, তবে আমি আশেপাশের বিবর্তনের জন্য বড় সাফল্যের সাথে কিউবিএলএস এবং ম্যাগমা ব্যবহার করেছি এবং সংযোগএন=210এন,মি210,214। এটি আমার জন্য বিশেষত বড় অবাক হওয়ার বিষয় যে সিপিইউতে আর ব্যবহার করে বড় পারস্পরিক সম্পর্ক ম্যাট্রিকগুলি আরও দ্রুত হবে be

আরও বিস্তৃতভাবে আমার সন্দেহ হয় যে বেশিরভাগ পরিসংখ্যানমূলক ক্রিয়াকলাপ যা বেশিরভাগ সময় ঘন লিনিয়ার বীজগণিত (বিএলএএস, ল্যাপের কার্যকারিতা) এ ব্যয় করে জিপিইউতে দক্ষতার সাথে প্রয়োগ করা যেতে পারে।


0

হারিয়ে যাওয়া ডেটার জন্য একাধিক ইমপুটেশন পদ্ধতি? অ্যালিস -2 (আর) এর মতো।

আমি মনে করি সেগুলি প্রায়শই বিব্রতকরভাবে সমান্তরাল হয় এবং তাই এটি একটি জিপিইউ আর্কিটেকচারের জন্য উপযুক্ত। যদিও নিজে চেষ্টা করে দেখিনি কখনও।

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