ব্যবহারযোগ্য, দ্রুত সি ++ ম্যাট্রিক্স লাইব্রেরির জন্য প্রস্তাবনাগুলি?


158

ব্যবহারযোগ্য, দ্রুত সি ++ ম্যাট্রিক্স লাইব্রেরিতে কারও কি সুপারিশ রয়েছে?

ব্যবহারযোগ্য বলতে আমি যা বোঝাতে চাইছি তা হল:

  • ম্যাট্রিক্স অবজেক্টগুলির একটি স্বজ্ঞাত ইন্টারফেস রয়েছে (প্রাক্তন: আমি ইনডেক্স করার সময় সারি এবং কলামগুলি ব্যবহার করতে পারি)
  • আমি ম্যাট্রিক্স ক্লাসের সাথে ল্যাপ্যাক এবং বিএলএএস এর সাথে যা করতে পারি তা করতে পারি
  • এপিআই শিখতে এবং ব্যবহার করা সহজ
  • লিনাক্সে ইনস্টল করার জন্য তুলনামূলকভাবে বেদনাদায়ক (আমি এখনই উবুন্টু 11.04 ব্যবহার করি)

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

ঘন বনাম বিরল এখনও কিছু যায় আসে না; আমি যে কয়েকটি ম্যাট্রিকের সাথে কথা বলছি সেগুলির মধ্যে কয়েকটি অপ্রয়োজনীয়, তবে সেগুলি সবই নয়। তবে, যদি কোনও নির্দিষ্ট প্যাকেজ ঘন বা স্পার্স ম্যাট্রিক্সকে ভালভাবে পরিচালনা করে তবে তা উল্লেখ করার মতো।

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


1
চুদা ব্যবহার করা কি একটি বিকল্প?
ফ্লিপচার্ট

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

ইন্টেল এমকেএল এবং আইপিপি সম্পর্কে কী?
রায়

উত্তর:


146

আমি এখনও অবধি অনলাইন গবেষণা থেকে নিম্নলিখিতগুলি সংগ্রহ করেছি:

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

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

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

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

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

ব্লিটজ হ'ল একটি সি ++ অবজেক্ট-ভিত্তিক গ্রন্থাগার যার লিনাক্স বাইনারি রয়েছে। এটি সক্রিয়ভাবে রক্ষণাবেক্ষণের মতো বলে মনে হচ্ছে না (2012-06-29: একটি নতুন সংস্করণ গতকাল সবেমাত্র প্রকাশিত হয়েছে!), যদিও মেলিং তালিকাটি সক্রিয় রয়েছে, তাই কিছু সম্প্রদায় রয়েছে যা এটি ব্যবহার করে। এটি BLAS এর বাইরে সংখ্যার লিনিয়ার বীজগণিতের মতো খুব বেশি কিছু করে না বলে মনে হয় এবং এটি একটি ঘন ম্যাট্রিক্স লাইব্রেরির মতো দেখায়। এটি টেমপ্লেট ব্যবহার করে।

বুস্ট :: uBLAS একটি সি ++ অবজেক্ট-ভিত্তিক গ্রন্থাগার এবং বুস্ট প্রকল্পের অংশ project এটি টেম্প্লেটিং এবং ঘন সংখ্যাযুক্ত লিনিয়ার বীজগণিতকে সমর্থন করে। আমি শুনেছি এটি বিশেষভাবে দ্রুত নয়।

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

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

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

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

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


2
আমি মনে করি আপনি এলিজেনালকে নিয়ে বিভ্রান্ত করেছেন; আমি ইগেনের উপরে কাজ করি নি, যদিও আমি প্রকল্পটিতে খুব মুগ্ধ হয়েছি। উপাদান মূলত বিতরণ-মেমরি মেশিনগুলিকে লক্ষ্য করে।
জ্যাক পলসন

3
আমার ধারণা আমার প্রথম প্রশ্নটি হবে: আপনি কি কখনও সমান্তরালে কিছু চালাতে চান?
ম্যাট নিপলি

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

1
আইগেন দুর্দান্ত মনে হচ্ছে - আমার একজন সহকর্মী এটি পেশাদার প্রসঙ্গে ব্যবহার করেছেন এবং এটি আপনাকে পারফরম্যান্সের ত্যাগ ছাড়াই দ্রুত পর্যাপ্তভাবে চালাতে পারে।
qdot

7
আমি আপনার উত্তরে নিম্নলিখিত গ্রন্থাগারগুলিও যুক্ত করব: ভিয়েনা সিএল - ওপেনসিএল-ভিত্তিক সি ++ শিরোনামের গ্রন্থাগার যা ইগেন এবং এমটিএল-এ ইন্টারফেস করতে পারে। প্লাজমা - টাইল-ভিত্তিক পচে যাওয়া বৈশিষ্ট্যযুক্ত বিএলএএস এবং ল্যাপাক লাইব্রেরির একটি ইউটিকে ভিত্তিক পুনরায় নকশা। ম্যাগমা - অন্য UTK প্রকল্পে LAPACK / Blas কর্মক্ষমতা উন্নত উপর গুরুত্ত্ব দেয়।
অ্যারন আহমদিয়া

24

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


17

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


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

@ অ্যারোনআহমাদিয়া: এই মুহুর্তে, আমি মনে করি যে উত্তরটি একটি সম্প্রদায়ের উইকি সংস্থার বেশিরভাগ অংশে ছড়িয়ে পড়েছে, এ কারণেই আমি মন্তব্যকারীদের অনুরোধে প্যাকেজ যুক্ত করেছি been
জেফ অক্সবেরি

3
@ ওল্ফগ্যাংবাংয়ের্থ: আমি মনে করি ডিজাইনের লক্ষ্য উল্লেখ করা জরুরী। যদি লক্ষ্যটি এমন একটি সফ্টওয়্যার লেখা থাকে যা দীর্ঘস্থায়ী হয় এবং অন্যরা এটি ব্যবহার করে বোঝায় এবং লিনিয়ার বীজগণিত সেই সফ্টওয়্যারটির একটি অবিচ্ছেদ্য অঙ্গ হয়, তবে পিইটিএসসি এবং ট্রিলিনোস ভাল পছন্দ are তবে এমন কিছু ক্ষেত্রে রয়েছে যেখানে আরও বেশি হালকা ওজনের বিকল্প পছন্দনীয় এবং কার্যকর, কারণ তাদের সহজ এপিআই রয়েছে এবং কোডের কম লাইনে প্রায় একই কাজটি সম্পাদন করতে পারে। পরিশেষে, নির্বাচন পক্ষপাত কোডগুলি টিকে থাকার ক্ষেত্রে একটি ভূমিকা পালন করে। যদি কেউ ছোট কোড ব্যবহার না করে তবে তারা পিইটিএসসি এবং ট্রিলিনোসের মতো বেস তৈরি করবে না বা তৈরি করবে না।
জেফ অক্সবেরি

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

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

11

তুমি যদি চাও

  • একটি স্বজ্ঞাত ইন্টারফেস সহ ম্যাট্রিক্স ক্লাস
  • সমস্ত ল্যাপাক এবং বিএলএএস বৈশিষ্ট্য
  • এপিআই শিখতে এবং ব্যবহার করা সহজ
  • ইনস্টল করা সহজ

তারপরে আমি আপনাকে আমার লাইব্রেরি FLENS এ একবার দেখার পরামর্শ দিই । আমি ঠিক এই ধরণের কাজের জন্য এটি ডিজাইন করেছি। তবে এর জন্য একটি সি ++ 11 কনফর্ম সংকলক প্রয়োজন (যেমন জিসিসি 4.7 বা ঝনঝন)।

FLENS আপনাকে অন্তর্নিহিত BLAS বাস্তবায়ন হিসাবে ঠিক একই কর্মক্ষমতা দেয়। এটি দেখানো কিছু (বরং পুরানো) মানদণ্ড রয়েছে

FLENS-LAPACK সম্পর্কে একই কথা বলা যেতে পারে, যদি একই বিএলএএস বাস্তবায়ন ব্যবহার করা হয় তবে এটি আপনাকে নেটলিবের ল্যাপাকের মতো ঠিক পারফরম্যান্স দেয়।

নতুন মানদণ্ডগুলি সম্পর্কে আমাকে আরও বিশদে যেতে দিন ...

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

নোট করুন যে ঘন সংখ্যাসূচক লিনিয়ার বীজগণিতের জন্য ম্যাট্রিক্স-ম্যাট্রিক্স পণ্য সর্বাধিক প্রাসঙ্গিক। ব্যক্তিগতভাবে আমি ইগেন বা এটিএসএলএস দ্রুততর কিনা তা যত্নশীল নই। যদি ইজিগান এটিএলএলএসের চেয়ে দ্রুত ছিল তবে আমি ইগেনকে বিএলএএস-ব্যাকএন্ড হিসাবে ব্যবহার করব।

দাবি অস্বীকার: হ্যাঁ, FLENS আমার বাচ্চা! এর অর্থ আমি এর প্রায় 95% কোড করেছি এবং কোডের প্রতিটি লাইনই এর মূল্যবান ছিল :-)


হাই মাইকেল, স্কাইকম্পে আপনাকে স্বাগতম। আপনার ইউআরএল আমার জন্য কাজ করছে না, আপনার সার্ভারে কিছু ভুল আছে?
অ্যারন আহমদিয়া

ইঙ্গিতটির জন্য ধন্যবাদ। ইউআরএলটি সঠিক তবে মনে হচ্ছে ফাইল সার্ভার নিয়ে গণিত বিভাগে আমাদের সমস্যা হচ্ছে। উইকএন্ডের জন্য ঠিক সময় ...
মাইকেল লেহন

1
ঠিক আছে, আমি এখনই বর্তমান গিট রেপো থেকে নতুন ডকুমেন্টেশন তৈরি করেছি এবং এটি অন্য সার্ভারে অনুলিপি করেছি: apfel.mathematik.uni-ulm.de/~lehn/FLENS/index.html
মাইকেল লেহন


2

1

ছোট আকারের ম্যাট্রিক্সগুলি মোকাবেলার জন্য সর্বোত্তম ম্যাট্রিক্স গ্রন্থাগারটি কী হতে পারে, যা সাধারণত ব্যবহৃত হয়, উদাহরণস্বরূপ, সীমাবদ্ধ উপাদান ম্যাট্রিকগুলি একত্রিত করার সময়, টেনসর অপারেশন করার জন্য এবং এই জাতীয় কিছু।

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

PETSc এর সাথে দম্পতির সেরা পছন্দটি কী হতে পারে? Eigen? আরমাডিলো? বুস্ট :: uBlas? MTL4? আমি বুস্ট থেকে কিছু জিনিস ব্যবহার করি, সুতরাং, প্রথমে আমি বুস :: ইউব্লাস ব্যবহার করার কথা ভেবেছিলাম, তবে এখানে খুব বেশি ডকুমেন্টেশন, উদাহরণ এবং আরও কিছু নেই ...


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

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

1

আর্মাদিলো, বুস্ট এবং অন্যান্যরা এখন সিম্পলের অংশ হিসাবে অন্তর্ভুক্ত হয়েছে, একটি দ্রুত জেআইটি ভিত্তিক সি ++ প্রযুক্তিগত কম্পিউটিং পরিবেশ। Http://www.ceemple.com থেকে উপলব্ধ (বিনামূল্যে) ।


0

অবাক করা কেউ এখনও পর্যন্ত খুব বেশি উল্লেখ করেননি mentioned আনন্দের সাথে এটি প্রায় 3 বছর ধরে ব্যবহার করা হয়েছে।

এটি ইয়েজেনের সাথে অনেকটা সমান যদিও এটি ব্যাপক নয়। তবে আমি মনে করি এটির কিছু উপায়ে এর উত্তম বাক্য গঠন রয়েছে।

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


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