Altifigence Academy

7 / 20 · Konsep

Flag valid, tag, dan pengosongan

Bedakan nol numerik, gelembung, dan token dari pekerjaan lain.

Token membawa lebih dari sekadar angka

Token acuan kita berisi value, valid, job, dan k. Token tidak valid merupakan gelembung. Token valid dengan value nol adalah operand matriks nyata. Job mengidentifikasi transaksi; k mengidentifikasi suku reduksi. Pengawatan menetapkan baris A dan kolom B untuk setiap PE, sementara pembungkus mengingat koordinat tile.

Saat kedua masukan valid, verifikasi kesamaan tag job dan k sebelum mengalikan. A(0,1)=2 yang dipasangkan dengan B(0,0)=5 menghasilkan sepuluh, tetapi bukan suku yang sah. Pasangan k=1 yang sesuai adalah dua dan tujuh, yang menghasilkan empat belas. Perlakukan ketidakcocokan tag sebagai kesalahan verifikasi yang terlihat, alih-alih diam-diam membuangnya sebagai gelembung biasa.

Hitung suku, bukan clock

Clear memulai acc=0 dan count=0. Untuk setiap pasangan yang cocok, wajibkan k=count, lalu naikkan count. Konsumsi k=K−1 menyelesaikan hasil lokal tepat setelah tepi itu. Gelembung dan jeda tidak menaikkan count. Pengendali sederhana ini membutuhkan nilai k berurutan. Dukungan urutan sembarang memerlukan bitmap suku yang diterima serta deteksi duplikat.

Untuk K=2, konsumsi satu dan lima memberi acc=5, count=1. Gelembung membiarkan keduanya tidak berubah. Konsumsi dua dan tujuh dengan k=1 memberi acc=19, count=2, dan done. k=1 yang berulang merupakan kesalahan bahkan jika penerima di hilir sudah menerima hasil.

Pengurasan dan clear memiliki tujuan berbeda

Larik belum kosong ketika masukan batas terakhir masuk. Token masih berada dalam register penerusan internal. Terus lakukan advance dengan masukan batas tidak valid hingga PE terakhir mengonsumsi suku terakhirnya. Selama pengurasan ini, pertahankan akumulator yang selesai sampai hasilnya dikumpulkan. Memulai pekerjaan baru justru memerlukan pengosongan akumulator, count, valid, dan tag secara bersama.

Pembungkus dalam kursus ini menjalankan satu pekerjaan pada satu waktu. Ia menyelesaikan, mengumpulkan hasil, melakukan clear, lalu memulai lagi. Menumpangtindihkan pekerjaan memerlukan keadaan atau akumulator tambahan dan protokol keluaran; tag saja tidak menyediakan kemampuan itu. Pengujian harus mencakup tag tidak cocok, suku hilang dan berulang, status valid sisa setelah clear, serta operand nol valid yang tetap menaikkan hitungan suku.

Coba sendiri

PE dengan K=3 mengonsumsi pasangan k=0 (2,4), gelembung, pasangan k=1 (0,9), dan pasangan k=2 (−1,3). Cari acc dan count. Bagaimana jika tag job terakhir tidak cocok?

Baca penjelasan

Dengan tag yang cocok, acc=5 dan count=3, sehingga hasil selesai. Gelembung tidak dihitung; nol valid dihitung. Job yang tidak cocok harus menimbulkan kesalahan verifikasi dan tidak boleh dilaporkan sebagai penyelesaian yang berhasil.

Pilihan berlaku di peramban ini. Ubah kapan saja di bagian bawah halaman.