ভিএইচডিএলে এই ম্যাট্রিক্স-ভেক্টর গুণ গুণটি কি সমান্তরাল?


9

আমার নীচের ভিএইচডিএল ফাংশন রয়েছে যা প্রদত্ত এমএক্সএন ম্যাট্রিক্সকে aএকটি এনএক্স 1 ভেক্টর দিয়ে গুণ করে b:

function matrix_multiply_by_vector(a: integer_matrix; b: integer_vector; m: integer; n: integer)
return integer_vector is variable c : integer_vector(m-1 downto 0) := (others => 0);
begin
    for i in 0 to m-1 loop
        for j in 0 to n-1 loop
            c(i) := c(i) + (a(i,j) * b(j));
        end loop;
    end loop;
    return c;
end matrix_multiply_by_vector;

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


1
যদি এটি না হয়, আপনার কিছুটা মেমরি থাকতে হবে এবং সিরিয়ালি সমস্ত মানগুলি লোড করতে হবে এবং সেগুলি পাইপলাইনের শৈলীতে "চালিত" করতে হবে
ভোল্টেজ স্পাইক

উত্তর:


9

'হার্ডওয়্যার' (ভিএইচডিএল বা ভেরিলোগ) এ সমস্ত লুপগুলি সমান্তরালভাবে নিবন্ধভুক্ত এবং সম্পাদিত হয়।

সুতরাং কেবল আপনার অভ্যন্তরীণ লুপটিই নয়, আপনার বাইরের লুপটিও অনিয়ন্ত্রিত।

লুপের আকারটি সঙ্কলন করার সময় অবশ্যই জানা উচিত। যখন লুপের দৈর্ঘ্য অজানা থাকে তখন সংশ্লেষণের সরঞ্জামটি অভিযোগ করবে।


এটি একটি এসডাব্লু ভাষা থেকে আগত নতুনদের জন্য একটি সুপরিচিত ফাঁদ। তারা রূপান্তর করার চেষ্টা করে:

int a,b,c;
   c = 0;
   while (a--)
     c +=  b;

ভিএইচডিএল / ভেরিলগ হার্ডওয়্যার থেকে। সমস্যাটি হ'ল এটি সমস্ত সিমুলেশনে সূক্ষ্মভাবে কাজ করে। তবে সংশ্লেষণের সরঞ্জামটির জন্য অ্যাডারগুলি তৈরি করা দরকার: c = b+b+b+b...b;

তার জন্য কতটি সংযোজক তৈরি করতে হবে তা সরঞ্জামটি জানতে হবে। যদি aএকটানা জরিমানা হয়! (এটি ৪,০০০,০০০ হলেও এটি গেটগুলির বাইরে চলে যাবে তবে এটি চেষ্টা করবে!)

তবে aভেরিয়েবল হলে তা নষ্ট হয়ে যায়।


এক্ষেত্রে এটি কেবলমাত্র গুণ, সুতরাং একটি কেবল গুণক হতে পারে এবং তাই পরিবর্তনশীল হতে পারে ...
হ্যারি সুইভেনসন

1

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

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

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