জাভাতে জিপিপিইউ / চুদা / ওপেনসিএল-এর জন্য সেরা পদ্ধতির?


94

গ্রাফিক্স প্রসেসিং ইউনিটগুলিতে জেনারেল- পারপেজ কম্পিউটিং ( জিপিপিইউ ) কোনও ধরণের কম্পিউটারের জন্য জিপিইউর শক্তি অর্জনের জন্য খুব আকর্ষণীয় ধারণা।

আমি ইমেজ প্রসেসিং, কণা এবং দ্রুত জ্যামিতিক ক্রিয়াকলাপের জন্য GPGPU ব্যবহার করতে পছন্দ করি।

এই মুহুর্তে, মনে হচ্ছে এই স্পেসের দু'জন প্রার্থী হলেন কুডিএ এবং ওপেনসিএল। আমি জানতে চাই:

  • উইন্ডোজ / ম্যাকের জাভা থেকে ওপেনসিএল এখনও ব্যবহারযোগ্য?
  • ওপেনসিএল / সিইউডিএ-তে ইন্টারফেস করার লাইব্রেরিগুলি কী কী?
  • জেএনএ কি সরাসরি ব্যবহার করা যায়?
  • আমি কি কিছু ভুলে যাচ্ছি?

যে কোনও বাস্তব-বিশ্বের অভিজ্ঞতা / উদাহরণ / যুদ্ধের কাহিনী প্রশংসা করা হয়।


4
আমি কল্পনা করব জাভাতে জিপিইউ প্রোগ্রামিং করা শক্ত হয়ে যাবে, বিবেচনা করে আমি চুদা প্রোগ্রামিংয়ে পয়েন্টার ব্যবহার করি কতটা। আমি জানি না যে ডিভাইস প্রোগ্রামিংয়ে জাভা ব্যবহার করে খুব বেশি উপকার হবে কি না, যেহেতু আপনার জাভা সি ++ থেকে আলাদা করে
কোনও

4
আমি কিছু চিত্তাকর্ষক জাভা ডেমো দেখেছি যা জিএলএসএল এবং সম্ভবত চুদা ব্যবহার করেছে, সুতরাং এটি অবশ্যই সম্ভব।
ফ্রেডেরিক

4
আপনি jcuda.org এবং jocl.org চেক করেছেন?
বাক্কাল

4
আমি তাদের সম্পর্কে জানি, তবে আমি গুণমানটি বিচার করতে পারি না। তাদের সাথে আপনার কোনও অভিজ্ঞতা আছে?
ফ্রেডেরিক

4
@ নীলস: এবং এই কারণেই তিনি জিপিইউতে ক্র্যাঞ্চিংয়ের সমস্ত সংখ্যাকে চাপ দিতে চান ... যাইহোক, এমনকি প্লেইন সি বা x86 এএসএমকে জিপিইউর মতো বিশাল ডেটা সমান্তরাল প্রসেসরের বিরুদ্ধে প্রতিযোগিতা করার জন্য একটি কঠিন কাজ করতে হবে।
স্ট্রিংগার

উত্তর:


62

আফাইক , জাভাসিএল / ওপেনসিএল 4 জাভা হ'ল একমাত্র ওপেনসিএল বাঁধাই যা এই মুহূর্তে সমস্ত প্ল্যাটফর্মে উপলব্ধ (ম্যাকোস এক্স, ফ্রিবিএসডি, লিনাক্স, উইন্ডোজ, সোলারিস সহ, সমস্ত ইন্টেল 32, 64 বিট এবং পিপিসি ভেরিয়েন্টে, জেএনএর ব্যবহারের জন্য ধন্যবাদ )।

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

এটি কয়েকটি ইউটিলিটি (জিপিপিইউ র্যান্ডম সংখ্যার উত্পাদন, বেসিক প্যারালাল হ্রাস, লিনিয়ার বীজগণিত) এবং একটি স্কালা ডিএসএল নিয়ে আসে

অবশেষে, এটি প্রাচীনতম বাইন্ডিংগুলি উপলভ্য (জুন ২০০৯ থেকে) এবং এটিতে একটি সক্রিয় ব্যবহারকারী সম্প্রদায় রয়েছে

(অস্বীকৃতি: আমি জাভাসিএল এর লেখক :-))


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

5
@ কার্ল ওহ দুঃখিত, আমি জেএনএলপি ভেঙে ফেলেছি (জেআর সম্প্রতি নাম বদলেছে)! এটি এখন স্থির হয়েছে, আশা করি আপনি আবার চেষ্টা করবেন ... (এবং ক্রস-প্ল্যাটফর্মের ভিত্তিতে: এটি সমস্ত প্ল্যাটফর্মে ধারাবাহিকভাবে ভেঙে দেওয়া হয়েছিল ;-))
zOlive

4
জাভা security সুরক্ষায় সাম্প্রতিক কড়া করার ফলে পার্টিকাল ডেমো ওয়েব স্টার্ট ব্যতিক্রম ব্যর্থ হতে পারে।
থোরবজর্ন রাভন অ্যান্ডারসন

@zOlive গুগল কোডের শেষ জাভাসিএল লিঙ্কটি আর উপলভ্য নয়।
ট্রাইম্যান

34

আপনি অপরপিকেও বিবেচনা করতে পারেন । এটি আপনাকে জাভাতে আপনার কোডটি লেখার অনুমতি দেয় এবং রানটাইমে বাইটোকড ওপেনসিএল-তে রূপান্তর করার চেষ্টা করবে।

সম্পূর্ণ প্রকাশ। আমি অপারপি ডেভেলপার।


অপরাপি কি এখনও রক্ষণাবেক্ষণ?
মিঃ জেদী

@ মিজেদী: আমার মনে হয়, গিথুব নিয়ে সর্বশেষ প্রতিশ্রুতি মাত্র কয়েক দিনের পুরানো: github.com/aparapi/aparapi
কে।

এটি "কিছুটা রক্ষণাবেক্ষণ করা";) আমি একজন রক্ষণাবেক্ষণকারী।
বার্নিপিট

12

আচ্ছা CUDA হ'ল সি এর একটি পরিবর্তন, CUDA কার্নেলটি লিখতে আপনাকে সিতে কোড লিখতে হবে, এবং তারপরে এনভিডিয়ার CUDA সংকলক সহ নির্বাহযোগ্য ফর্মটি সংকলন করতে হবে। উত্পাদিত নেটিভ কোডটি তখন জেএনআই ব্যবহার করে জাভার সাথে সংযুক্ত হতে পারে। প্রযুক্তিগতভাবে আপনি জাভা থেকে কার্নেল কোড লিখতে পারবেন না। জেসিইউডিএ http://www.jcuda.de/jcuda/JCuda.html রয়েছে , এটি আপনাকে সাধারণ মেমোরি / ডিভাইস ম্যানেজমেন্ট এবং কিছু জাভা পদ্ধতি যা CUDA এবং জেএনআই মোড়ানো (এফএফটি, কিছু লিনিয়ার বীজগণিত পদ্ধতিতে প্রয়োগ করা হয়) জন্য চুদা এর অ্যাপস সরবরাহ করে .. ইত্যাদি ইত্যাদি ..)।

অন্যদিকে ওপেনসিএল হ'ল একটি এপিআই। ওপেনসিএল কার্নেলগুলি এপিআইতে সরানো স্ট্রিং যা জাভা থেকে ওপেনসিএল ব্যবহার করে আপনার নিজের কার্নেল নির্দিষ্ট করতে সক্ষম হওয়া উচিত। জাভা জন্য ওপেনসিএল বাইন্ডিং এখানে পাওয়া যাবে http://www.jocl.org/


4
যদি আপনার প্ল্যাটফর্মে জেএনএ ( jna.dev.java.net ) সমর্থিত হয়, আমি নেটিভ কোডটি অনুরোধ করতে এটি ব্যবহার করব, কারণ এটি কোনও জেএনআই লাইব্রেরি কোড করার চেয়ে অনেক কম প্রচেষ্টা effort
mdma

11

আমি জোকিএল ব্যবহার করছি এবং এতে আমি খুব খুশি।

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


7

আমি জানি দেরি হয়েছে তবে এটি একবার দেখুন: https://github.com/pcpratts/rootbeer1

আমি এটি নিয়ে কাজ করি নি তবে অন্যান্য সমাধানের চেয়ে ব্যবহার করা অনেক সহজ বলে মনে হচ্ছে।

প্রকল্প পৃষ্ঠা থেকে:

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



1

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


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