হার্ডওয়্যার ছাড়াই সিইডিএ প্রোগ্রামিংয়ের জন্য জিপিইউ এমুলেটর [বন্ধ]


111

প্রশ্ন: এমন কোনও জেফোর্স কার্ডের জন্য এমন কোনও এমুলেটর রয়েছে যা আমাকে আসল হার্ডওয়্যার না করেই CUDA প্রোগ্রাম এবং পরীক্ষা করার অনুমতি দেয়?


তথ্য:

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

আমি উবুন্টু 10.04 এলটিএসে প্রোগ্রামিং করছি।


সম্পর্কিত: এএমডির জিপিইউ সঙ্গে stackoverflow.com/questions/12828268/... : ইন্টেল গ্রাফিক্স ইন্টিগ্রেটেড stackoverflow.com/questions/8193242/can-i-run-cuda-on-intel
সিরো Santilli郝海东冠状病六四事件法轮功

উত্তর:


39

যারা 2016 (এবং এমনকি 2017) এর উত্তর খুঁজছেন তাদের জন্য ...


দাবি পরিত্যাগী

  • আমি সর্বোপরি জিপিইউ অনুকরণ করতে ব্যর্থ হয়েছি।
  • gpuocelotআপনি যদি এর নির্ভরতাগুলির তালিকাটি সন্তুষ্ট করেন তবে এটি ব্যবহার করা সম্ভব ।

আমি বুনসেনল্যাবসের জন্য একটি এমুলেটর পাওয়ার চেষ্টা করেছি (লিনাক্স 3.16.0-4-686-pae 1 1 এসএমপি দেবিয়ান 3.16.7-সিকেট20-1 + দেবু 84 (2016-02-29) i686 জিএনইউ / লিনাক্স)।

আমি যা শিখেছি তা আপনাদের বলব।


  1. nvcc-deviceemuCUDA Toolkit 3.0 এ আবার কোনও বিকল্প ব্যবহার করা হয়েছিল

    আমি CUDA Toolkit 3.0 ডাউনলোড করেছি, এটি ইনস্টল করেছি এবং একটি সাধারণ প্রোগ্রাম চালানোর চেষ্টা করেছি:

    #include <stdio.h>
    
    __global__ void helloWorld() {
        printf("Hello world! I am %d (Warp %d) from %d.\n",
            threadIdx.x, threadIdx.x / warpSize, blockIdx.x);
    }
    
    int main() {
        int blocks, threads;
        scanf("%d%d", &blocks, &threads);
        helloWorld<<<blocks, threads>>>();
        cudaDeviceSynchronize();
        return 0;
    }

    মনে রাখবেন যে, CUDA মধ্যে টুলকিট 3.0 nvccছিলেন /usr/local/cuda/bin/

    দেখা গেল যে এটি সংকলন করতে আমার অসুবিধা হয়েছিল:

    NOTE: device emulation mode is deprecated in this release
          and will be removed in a future release.
    
    /usr/include/i386-linux-gnu/bits/byteswap.h(47): error: identifier "__builtin_bswap32" is undefined
    
    /usr/include/i386-linux-gnu/bits/byteswap.h(111): error: identifier "__builtin_bswap64" is undefined
    
    /home/user/Downloads/helloworld.cu(12): error: identifier "cudaDeviceSynchronize" is undefined
    
    3 errors detected in the compilation of "/tmp/tmpxft_000011c2_00000000-4_helloworld.cpp1.ii".

    আমি ইন্টারনেটে খুঁজে পেয়েছি যে আমি যদি ত্রুটিগুলির gcc-4.2পরিবর্তে বা একইভাবে প্রাচীন ব্যবহার করি তবে gcc-4.9.2অদৃশ্য হয়ে যেতে পারে। আমি ইস্তফা দিলাম.


  2. gpuocelot

    স্ট্রিংজারের উত্তরের একটি খুব পুরানো gpuocelotপ্রকল্পের ওয়েবসাইটে লিঙ্ক রয়েছে। তাই প্রথমে আমি ভেবেছিলাম যে প্রকল্পটি 2012 বা তারও মধ্যে ফেলে দেওয়া হয়েছিল। আসলে, কয়েক বছর পরে এটি পরিত্যক্ত হয়েছিল।

    এখানে কিছু আপ টু ডেট ওয়েবসাইট রয়েছে:

    আমি নিম্নলিখিতটি gpuocelot ইনস্টল করার চেষ্টা করেছি করে । যদিও ইনস্টলেশন করার সময় আমার বেশ কয়েকটি ত্রুটি হয়েছিল এবং আমি আবার হাল ছেড়ে দিয়েছি। gpuocelotআর সমর্থিত নয় এবং লাইব্রেরি এবং সফ্টওয়্যার এর খুব নির্দিষ্ট সংস্করণের একটি সেটের উপর নির্ভর করে।

    আপনি এই টিউটোরিয়ালটি জুলাই, ২০১৫ থেকে অনুসরণ করার চেষ্টা করতে পারেন তবে আমি গ্যারান্টি দিচ্ছি না এটি কাজ করবে। আমি এটি পরীক্ষা করিনি।


  3. MCUDA

    এমসিইউডিএ অনুবাদ কাঠামোটি একটি লিনাক্স-ভিত্তিক সরঞ্জাম যা সিউডিএ প্রোগ্রামিং মডেলকে সিপিইউ আর্কিটেকচারে কার্যকরভাবে সংকলন করার জন্য ডিজাইন করা হয়েছে।

    এটি দরকারী হতে পারে। এখানে ওয়েবসাইটের একটি লিঙ্ক দেওয়া আছে


  4. চুদা বর্জ্য

    এটি উইন্ডোজ and এবং ৮ এ ব্যবহার করার জন্য একটি এমুলেটর I've এটি আর বিকাশ বলে মনে হচ্ছে না (শেষ প্রতিশ্রুতি 4 জুলাই, 2013 তারিখে করা হয়েছে)।

    প্রকল্পের ওয়েবসাইটের লিঙ্কটি এখানে: https://code.google.com/archive/p/cuda-waste/


  1. CU2CL

    শেষ আপডেট: 12.03.2017

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

    লিঙ্ক:


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

3
সিইউ 2 সিএল সক্রিয় বলে মনে হচ্ছে এবং এটিও দেখার মতো is
ছদ্মবেশী

1
1. nvcc -deviceemu
নাথান

2
4. CUDA Wasteকাজ পেয়েছে
নাথান

2
5. CU2CLকাজ পেয়েছে
নাথান

41

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

এমুলেটরটি বিশ্বস্ততার সাথে পিটিএক্স 1.4 এবং পিটিএক্স 2.1 স্পেসিফিকেশনগুলি কার্যকর করতে চেষ্টা করে যা এতে পুরানো জিপিইউগুলি সমর্থন করে না এমন বৈশিষ্ট্যগুলি অন্তর্ভুক্ত থাকতে পারে। এলটিভিএম অনুবাদক পিটিএক্স থেকে x86 পর্যন্ত সঠিক এবং দক্ষ অনুবাদ করার জন্য প্রচেষ্টা করে যা আশা করে সিউডিএকে প্রোগ্রামিং মাল্টিকোর সিপিইউগুলির পাশাপাশি জিপিইউগুলির কার্যকর উপায় হিসাবে গড়ে তুলবে।-deviceemuবেশ কিছু সময়ের জন্য CUDA এর অবচিত বৈশিষ্ট্য, তবে এলএলভিএম অনুবাদক সর্বদা দ্রুততর ছিল faster

অতিরিক্তভাবে, যাচাইকরণের জন্য এমুলেটরটিতে বেশ কয়েকটি নির্ভুলতা চেকার তৈরি করা হয়: প্রান্তিক মেমরি অ্যাক্সেসগুলি, ভাগ করা মেমরিটিতে অ্যাক্সেসগুলি সঠিকভাবে সিঙ্ক্রোনাইজ করা হয় এবং গ্লোবাল মেমরির মেমরির বরাদ্দকৃত অঞ্চলগুলি অ্যাক্সেস করে de আমরা জিডিবি দ্বারা সিউডিএ কার্নেল, সেট ব্রেকপয়েন্ট এবং ওয়াচপয়েন্টস ইত্যাদির মাধ্যমে একক পদক্ষেপে প্রেরণা প্রাপ্ত একটি কমান্ড-লাইন ইন্টারেক্টিভ ডিবাগারও বাস্তবায়িত করেছি ... এই সরঞ্জামগুলি বিশেষত CUDA প্রোগ্রামগুলির ডিবাগিং ত্বরান্বিত করার জন্য তৈরি করা হয়েছিল; আপনি তাদের দরকারী মনে হতে পারে।

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

আশাকরি এটা সাহায্য করবে.


3
হাই - আপনি এখনও কাছাকাছি আছেন? বিদ্যমান সিউডিএ বিল্ড এনভায়রনমেন্টে কীভাবে কেউ ওসেলোটের সাথে একটি প্রোগ্রাম তৈরি করে তার কোনও ডকুমেন্টেশন রয়েছে? এছাড়াও, ওসেলোট থ্রাস্টের সাথে কাজ করে?
কেরেক এসবি

আরও সাম্প্রতিক জিপিইউ ওসেলোট উত্স কোডটি গিটহাব gtcasl / gpuocelot এর মাধ্যমে পাওয়া যাবে
l --marc l

36

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

একটি এলএলভিএম অনুবাদকও রয়েছে, এটি পরীক্ষা করা আকর্ষণীয় হবে-ডিভাইসেমু ব্যবহার করার চেয়ে এটি আরও দ্রুত কিনা।


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

14

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


4
সিইউডিএ এমুলেটর অবনতিহীন, আপনি সম্ভবত জিপিউসেলোটের দিকে চেয়ে ভাল better
টম

1
প্লাস সিউডিএ এমুলেটর লজিকাল সিইউডিএ থ্রেডের জন্য একটি নেটিভ ওএস থ্রেড ব্যবহার করে যা মারাত্মকভাবে অক্ষম।
দৃ

9

https://github.com/hughperkins/cuda-on-cl আপনাকে ওপেনসিএল 1.2 জিপিইউতে NVIDIA® CUDA DA প্রোগ্রাম চালাতে দেয় (সম্পূর্ণ প্রকাশ: আমি লেখক)


আমি কি এটি একটি সিপিইউতেও চালাতে পারি?
ম্যাটিউজ পিয়োত্রস্কি

কেবল জিপিইউ। ওপেনসিএল ১.২ জিপিইউ প্রয়োজন, বা আরও ভাল।
হিউ পারকিনস

1
আপনি সম্ভবত এটি সিপিইউতে চালাতে পারেন, jrprice.com/Oclgrind ব্যবহার করে , তবে আমি অনুমান করি যে সম্ভবত আপনি কী বোঝাতে চাইছেন না ;-)। আমার ধারণা ধনিয়া (নতুন নাম) সম্ভবত সিপিইউ ওপেনসিএল-তে চালানো যেতে পারে, তবে আমি কখনও এটি পরীক্ষা করে দেখিনি। কিছুটা প্রোডিং দরকার হতে পারে।
হিউ পার্কিনস

3

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

এবং যেমনটি আপনি উল্লেখ করেছেন, কিছুটা ধীর মৃত্যুদন্ড কার্যকর করার জন্য প্রস্তুত করুন।


0

জিপিজিইউ-সিম একটি জিপিইউ সিমুলেটর যা জিপিইউ ব্যবহার না করেই সিইউডিএ প্রোগ্রাম চালাতে পারে। আমি জিপিজিপিইউ-সিম সহ একটি ডকার ইমেজ তৈরি করেছি যাতে সহায়ক হয়।

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