Altifigence Academy

19 / 20 · प्रयोग

समापन परियोजना: टाइल वाला N×N सत्यापन मॉडल

मनमाने N और K के साथ पैडिंग तथा विराम जोड़ें और स्वतंत्र संदर्भ से तुलना करें।

पूरा मॉडल जोड़ें

समापन परियोजना N×N ग्रिड पर M×K आकार का A और K×P का B स्वीकार करती है। हर स्थानिक टाइल खाली शुरू होती है, पैड ऑपरैंड वैध शून्य हैं और लेखन निर्देशांक से मास्क होता है। टाइल में एक ही जॉब है और वैश्विक विराम तार्किक समय रोकते हैं। चौड़े योग के बाद आउटपुट क्वांटाइज़ेशन अलग परीक्षण है।

इसे capstone-lab.mjs में सहेजें और node capstone-lab.mjs चलाएँ। पैकेज नहीं चाहिए। इनपुट छोटे पूर्णांक फ़िक्स्चर हैं जो JavaScript Number की सटीक सीमा में हैं; बड़ी सीमा में BigInt और स्पष्ट चौड़ाई जाँच चाहिए। यह RTL या DDS निष्पादन से स्वतंत्र Node अंकगणित/समयक्रम मॉडल जाँचता है।

javascript
import assert from 'node:assert/strict';
function golden(A,B){return A.map(r=>B[0].map((_,j)=>
 r.reduce((s,a,k)=>s+a*B[k][j],0)));}
function solve(A,B,N,pauses=new Set()){
 const M=A.length,K=A[0].length,P=B[0].length;
 assert.ok(N>=1&&Number.isInteger(N)&&K>=1);assert.equal(B.length,K);
 assert.ok(A.every(r=>r.length===K)&&B.every(r=>r.length===P));
 const C=Array.from({length:M},()=>Array(P).fill(null));
 let advances=0,physical=0;
 for(let r0=0;r0<M;r0+=N)for(let c0=0;c0<P;c0+=N){
  const job=r0*P+c0;
  let g=Array.from({length:N},()=>Array.from({length:N},()=>
   ({a:null,b:null,acc:0,count:0})));
  const token=(value,k)=>({value,k,job});let t=0,p=0;
  while(t<K+2*N-2){
   if(pauses.has(p)){p++;continue;}
   const next=g.map(r=>r.map(pe=>({...pe})));
   for(let i=0;i<N;i++)for(let j=0;j<N;j++){
    const ka=t-i,kb=t-j;
    const a=j?g[i][j-1].a:(ka>=0&&ka<K?
     token(r0+i<M?A[r0+i][ka]:0,ka):null);
    const b=i?g[i-1][j].b:(kb>=0&&kb<K?
     token(c0+j<P?B[kb][c0+j]:0,kb):null);
    const pe=next[i][j];pe.a=a;pe.b=b;
    if(a&&b){assert.equal(a.job,b.job);assert.equal(a.k,b.k);
     assert.equal(a.k,pe.count);pe.acc+=a.value*b.value;pe.count++;}}
   g=next;t++;p++;
  }
  for(let i=0;i<N;i++)for(let j=0;j<N;j++){
   assert.equal(g[i][j].count,K);
   if(r0+i<M&&c0+j<P){assert.equal(C[r0+i][c0+j],null);
    C[r0+i][c0+j]=g[i][j].acc;}}
  advances+=t;physical+=p;
 }
 return {C,advances,physical};
}
const A=[[1,2,3],[4,5,6],[7,8,9]],B=[[1,0,2],[0,1,0],[2,0,1]];
for(const N of [1,2,3])assert.deepEqual(
 solve(A,B,N,new Set([1,2])).C,golden(A,B));
const run=solve(A,B,2,new Set([1,2]));
assert.deepEqual(run.C,[[7,2,5],[16,5,14],[25,8,23]]);
assert.equal(run.advances,20);assert.equal(run.physical,28);
assert.deepEqual(solve([[2,-1],[0,3]],[[4,5],[-2,1]],2).C,
 [[10,9],[-6,3]]);
assert.deepEqual(solve([[-128]],[[-128]],1).C,[[16384]]);
console.log('Capstone lab passed');

गोल्डन फ़ंक्शन केवल मैट्रिक्स अंकगणित जानता है। हलकर्ता स्वतंत्र रूप से टैग वाले टोकन शिफ़्ट करता, क्रमबद्ध पद जाँचता और लेखन मास्क करता है। N=2 में चार टाइल बीस advance किनारे लेती हैं। हर टाइल में भौतिक किनारा एक और दो रोकने से आठ विराम जुड़ते हैं, कुल अट्ठाईस भौतिक किनारे। आरंभीकरण, मेमोरी लोड और क्रमिक आउटपुट स्थानांतरण शामिल नहीं।

लॉग, एक टाइल का उपयोग-k ट्रेस, चिह्नयुक्त चौड़ाई विश्लेषण और valid/ready परिणाम-रैपर डिज़ाइन जमा करें। RTL में बदलते समय किनारा अनुबंध रखें। बढ़ाने से पहले N=1,K=1 और 2×2 शुरू करें। नई स्पष्ट जाँचों के साथ क्वांटाइज़ेशन, रखे आंशिक योग या डबल बफ़रिंग एक-एक करके जोड़ें।

तीन ग्रिड आकार अलग मैपिंग परखते हैं:N=1 बिना समय विस्थापन डॉट प्रोडक्ट दोहराता है,N=2 चार पैड टाइल परखता है और N=3 एक पूरी टाइल लेता है। सभी को समान गणितीय मैट्रिक्स देना चाहिए। C को null से आरंभ करना वैध शून्य और अवितरित आउटपुट अलग करता तथा दोहराया लेखन पकड़ता है। टाइल से निकला job नंबर यहाँ अद्वितीय है;असली RTL टैग चौड़ाई और पुनः उपयोग नीति तय करे। विस्तार में हाथ से निकाले अपेक्षित मानों के साथ M=2,K=3,P=1 परखें। आंतरिक ग्रिड वर्गाकार और आउटपुट आयताकार है। हर टाइल पूरा K उपयोग करे और सीमा-बाहर लेखन रोके,जाँचें।

खुद आज़माएँ

N=3 वाले 3×3 उदाहरण में भौतिक किनारा एक और दो पर विराम हो तो advance और भौतिक किनारे गिनें। माप में पहले का एक clear किनारा हो तो क्या होगा?

व्याख्या पढ़ें

सात advance किनारे और दो विराम सहित गणना-अवधि में नौ भौतिक किनारे हैं। पहले का एक clear किनारा जोड़ने से दस; लोड और आउटपुट स्थानांतरण फिर भी शामिल नहीं।

Lesson files

capstone-lab.mjs ↓

आपका चयन इस ब्राउज़र पर लागू होता है। फ़ुटर से कभी भी बदलें।