[{"data":1,"prerenderedAt":509},["ShallowReactive",2],{"navigation_docs":3,"trending-repo-deepseek-ai\u002FDeepGEMM":239},[4,29,94,114,184],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Start",false,"\u002Fstart","1.start",[10,14,19,24],{"title":11,"path":7,"stem":12,"icon":13},"What jscpd finds","1.start\u002Findex","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fstart\u002Finstallation","1.start\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quickstart","\u002Fstart\u002Fquickstart","1.start\u002F3.quickstart","i-lucide-rocket",{"title":25,"path":26,"stem":27,"icon":28},"Configuration basics","\u002Fstart\u002Fconfiguration","1.start\u002F4.configuration","i-lucide-settings-2",{"title":30,"icon":6,"path":31,"stem":32,"children":33,"page":6},"Guides","\u002Fguides","2.guides",[34,39,44,49,54,59,64,69,74,79,84,89],{"title":35,"path":36,"stem":37,"icon":38},"Use jscpd in CI","\u002Fguides\u002Fci","2.guides\u002F01.ci","i-lucide-github",{"title":40,"path":41,"stem":42,"icon":43},"Pre-commit hooks","\u002Fguides\u002Fpre-commit","2.guides\u002F02.pre-commit","i-lucide-git-commit",{"title":45,"path":46,"stem":47,"icon":48},"Fail only on new duplication","\u002Fguides\u002Fbaseline","2.guides\u002F03.baseline","i-lucide-git-compare",{"title":50,"path":51,"stem":52,"icon":53},"Monorepos","\u002Fguides\u002Fmonorepos","2.guides\u002F04.monorepos","i-lucide-folder-tree",{"title":55,"path":56,"stem":57,"icon":58},"Cross-format detection","\u002Fguides\u002Fcross-format","2.guides\u002F05.cross-format","i-lucide-layers",{"title":60,"path":61,"stem":62,"icon":63},"Agents","\u002Fguides\u002Fagents","2.guides\u002F06.agents","i-lucide-cpu",{"title":65,"path":66,"stem":67,"icon":68},"Editors","\u002Fguides\u002Feditors","2.guides\u002F07.editors","i-lucide-code",{"title":70,"path":71,"stem":72,"icon":73},"Duplication over git history","\u002Fguides\u002Fhistory","2.guides\u002F08.history","i-lucide-chart-no-axes-combined",{"title":75,"path":76,"stem":77,"icon":78},"Dashboard and health score","\u002Fguides\u002Fdashboard","2.guides\u002F09.dashboard","i-lucide-layout-dashboard",{"title":80,"path":81,"stem":82,"icon":83},"Dead code","\u002Fguides\u002Fdead-code","2.guides\u002F10.dead-code","i-lucide-ghost",{"title":85,"path":86,"stem":87,"icon":88},"Comparing two codebases","\u002Fguides\u002Fcompare","2.guides\u002F11.compare","i-lucide-git-compare-arrows",{"title":90,"path":91,"stem":92,"icon":93},"Semantic clones","\u002Fguides\u002Fsemantic-clones","2.guides\u002F12.semantic-clones","i-lucide-brain-circuit",{"title":95,"icon":6,"path":96,"stem":97,"children":98,"page":6},"Concepts","\u002Fconcepts","3.concepts",[99,104,109],{"title":100,"path":101,"stem":102,"icon":103},"Types of code clones","\u002Fconcepts\u002Fclone-types","3.concepts\u002F1.clone-types","i-lucide-copy",{"title":105,"path":106,"stem":107,"icon":108},"How detection works","\u002Fconcepts\u002Fhow-detection-works","3.concepts\u002F2.how-detection-works","i-lucide-scan-search",{"title":110,"path":111,"stem":112,"icon":113},"The health score","\u002Fconcepts\u002Fhealth-score","3.concepts\u002F3.health-score","i-lucide-heart-pulse",{"title":115,"icon":6,"path":116,"stem":117,"children":118,"page":6},"Reference","\u002Freference","4.reference",[119,124,129,134,171,176,180],{"title":120,"path":121,"stem":122,"icon":123},"CLI options","\u002Freference\u002Fcli","4.reference\u002F1.cli","i-lucide-terminal",{"title":125,"path":126,"stem":127,"icon":128},"The config file","\u002Freference\u002Fconfig-file","4.reference\u002F2.config-file","i-lucide-settings",{"title":130,"path":131,"stem":132,"icon":133},"Exit codes","\u002Freference\u002Fexit-codes","4.reference\u002F3.exit-codes","i-lucide-log-out",{"title":135,"icon":6,"path":136,"stem":137,"children":138},"Reporters","\u002Freference\u002Freporters","4.reference\u002F4.reporters\u002Findex",[139,141,146,151,156,161,166],{"title":135,"path":136,"stem":137,"icon":140},"i-lucide-file-chart-column",{"title":142,"path":143,"stem":144,"icon":145},"HTML reporter","\u002Freference\u002Freporters\u002Fhtml","4.reference\u002F4.reporters\u002F2.html","i-lucide-file-code",{"title":147,"path":148,"stem":149,"icon":150},"JSON reporter","\u002Freference\u002Freporters\u002Fjson","4.reference\u002F4.reporters\u002F3.json","i-lucide-braces",{"title":152,"path":153,"stem":154,"icon":155},"Badge reporter","\u002Freference\u002Freporters\u002Fbadge","4.reference\u002F4.reporters\u002F4.badge","i-lucide-award",{"title":157,"path":158,"stem":159,"icon":160},"SARIF reporter","\u002Freference\u002Freporters\u002Fsarif","4.reference\u002F4.reporters\u002F5.sarif","i-lucide-shield-check",{"title":162,"path":163,"stem":164,"icon":165},"CodeClimate reporter","\u002Freference\u002Freporters\u002Fcodeclimate","4.reference\u002F4.reporters\u002F6.codeclimate","i-lucide-flag-triangle-right",{"title":167,"path":168,"stem":169,"icon":170},"OpenMetrics reporter","\u002Freference\u002Freporters\u002Fopenmetrics","4.reference\u002F4.reporters\u002F7.openmetrics","i-lucide-activity",{"title":172,"path":173,"stem":174,"icon":175},"Supported formats","\u002Freference\u002Fsupported-formats","4.reference\u002F5.supported-formats","i-lucide-languages",{"title":177,"path":178,"stem":179,"icon":38},"GitHub Action","\u002Freference\u002Fgithub-action","4.reference\u002F6.github-action",{"title":181,"path":182,"stem":183,"icon":68},"Rust crates","\u002Freference\u002Frust-crates","4.reference\u002F7.rust-crates",{"title":185,"icon":6,"path":186,"stem":187,"children":188,"page":6},"Project","\u002Fproject","5.project",[189,194,199,204,229,234],{"title":190,"path":191,"stem":192,"icon":193},"Changelog","\u002Fproject\u002Fchangelog","5.project\u002F1.changelog","i-lucide-scroll-text",{"title":195,"path":196,"stem":197,"icon":198},"Migrating from v4 to v5","\u002Fproject\u002Fmigration","5.project\u002F2.migration","i-lucide-arrow-right-left",{"title":200,"path":201,"stem":202,"icon":203},"jscpd v4 (TypeScript)","\u002Fproject\u002Fv4","5.project\u002F3.v4","i-simple-icons-typescript",{"title":205,"icon":6,"path":206,"stem":207,"children":208},"Benchmarks","\u002Fproject\u002Fbenchmarks","5.project\u002F4.benchmarks\u002Findex",[209,211,216,220,225],{"title":205,"path":206,"stem":207,"icon":210},"i-lucide-gauge",{"title":212,"path":213,"stem":214,"icon":215},"Detection Speed","\u002Fproject\u002Fbenchmarks\u002Fdetection-speed","5.project\u002F4.benchmarks\u002F2.detection-speed","i-lucide-zap",{"title":217,"path":218,"stem":219,"icon":58},"Multi-Format Detection","\u002Fproject\u002Fbenchmarks\u002Fcross-format","5.project\u002F4.benchmarks\u002F3.cross-format",{"title":221,"path":222,"stem":223,"icon":224},"AI Token Efficiency","\u002Fproject\u002Fbenchmarks\u002Fai-token-efficiency","5.project\u002F4.benchmarks\u002F4.ai-token-efficiency","i-lucide-sparkles",{"title":226,"path":227,"stem":228,"icon":93},"Embedding Models","\u002Fproject\u002Fbenchmarks\u002Fembedding-models","5.project\u002F4.benchmarks\u002F5.embedding-models",{"title":230,"path":231,"stem":232,"icon":233},"Research","\u002Fproject\u002Fresearch","5.project\u002F5.research","i-lucide-graduation-cap",{"title":235,"path":236,"stem":237,"icon":238},"Articles","\u002Fproject\u002Farticles","5.project\u002F6.articles","i-lucide-newspaper",{"name":240,"url":241,"appearances":242,"latest":256},"deepseek-ai\u002FDeepGEMM","https:\u002F\u002Fgithub.com\u002Fdeepseek-ai\u002FDeepGEMM",[243],{"date":244,"rank":245,"stars":246,"starsToday":247,"headSha":248,"sources":249,"lines":250,"clones":251,"duplicatedLines":252,"percentage":253,"healthScore":254,"healthGrade":255},"2026-10-07",6,8776,199,"057ca5964aae0879ff2e0eb71ee05a3cb0ba3df7",107,20006,252,2522,12.61,51.6,"D",{"date":244,"generatedAt":257,"name":240,"url":241,"description":258,"language":259,"stars":246,"starsToday":247,"defaultBranch":260,"headSha":248,"durationMs":261,"total":262,"formats":266,"topClones":309,"health":390,"complexity":423,"deadCode":475},"2026-10-07T05:32:04.506Z","DeepGEMM: clean and efficient BLAS kernel library on GPU","Cuda","main",970,{"sources":249,"lines":250,"tokens":263,"clones":251,"duplicatedLines":252,"duplicatedTokens":264,"percentage":253,"percentageTokens":265},166226,20616,12.4,[267,274,281,288,293,297,300,303,306],{"format":268,"sources":269,"lines":270,"clones":271,"duplicatedLines":272,"percentage":273},"cpp-header",48,10079,230,2311,22.93,{"format":275,"sources":276,"lines":277,"clones":278,"duplicatedLines":279,"percentage":280},"python",36,7760,21,195,2.51,{"format":282,"sources":283,"lines":284,"clones":285,"duplicatedLines":286,"percentage":287},"yaml",3,375,1,16,4.27,{"format":289,"sources":290,"lines":291,"clones":292,"duplicatedLines":292,"percentage":292},"bash",12,821,0,{"format":294,"sources":295,"lines":296,"clones":292,"duplicatedLines":292,"percentage":292},"markdown",2,684,{"format":298,"sources":285,"lines":299,"clones":292,"duplicatedLines":292,"percentage":292},"perl",168,{"format":301,"sources":295,"lines":302,"clones":292,"duplicatedLines":292,"percentage":292},"cpp",54,{"format":304,"sources":285,"lines":305,"clones":292,"duplicatedLines":292,"percentage":292},"txt",34,{"format":307,"sources":295,"lines":308,"clones":292,"duplicatedLines":292,"percentage":292},"text",31,[310,320,330,339,349,354,363,372,379,385],{"format":268,"lines":308,"tokens":311,"firstFile":312,"secondFile":316},327,{"name":313,"start":314,"end":315},"csrc\u002Fjit_kernels\u002Fimpls\u002Fsm100_tf32_hc_prenorm_gemm.hpp",28,58,{"name":317,"start":318,"end":319},"csrc\u002Fjit_kernels\u002Fimpls\u002Fsm90_tf32_hc_prenorm_gemm.hpp",30,60,{"format":268,"lines":321,"tokens":322,"firstFile":323,"secondFile":327},14,204,{"name":324,"start":325,"end":326},"csrc\u002Fjit_kernels\u002Fimpls\u002Fsm100_fp8_fp4_gemm_1d1d.hpp",370,383,{"name":324,"start":328,"end":329},528,541,{"format":268,"lines":331,"tokens":332,"firstFile":333,"secondFile":337},19,178,{"name":334,"start":335,"end":336},"csrc\u002Fjit_kernels\u002Fimpls\u002Fsm100_bf16_gemm.hpp",297,315,{"name":324,"start":338,"end":284},357,{"format":275,"lines":340,"tokens":332,"firstFile":341,"secondFile":345},10,{"name":342,"start":343,"end":344},"deep_gemm\u002Flegacy\u002Fa_fused_k_grouped_gemm.py",69,78,{"name":346,"start":347,"end":348},"deep_gemm\u002Flegacy\u002Fb_fused_k_grouped_gemm.py",68,77,{"format":275,"lines":278,"tokens":350,"firstFile":351,"secondFile":353},161,{"name":342,"start":290,"end":352},32,{"name":346,"start":290,"end":352},{"format":268,"lines":355,"tokens":356,"firstFile":357,"secondFile":360},17,154,{"name":334,"start":358,"end":359},92,108,{"name":324,"start":361,"end":362},112,128,{"format":268,"lines":355,"tokens":364,"firstFile":365,"secondFile":368},150,{"name":334,"start":366,"end":367},104,120,{"name":369,"start":370,"end":371},"csrc\u002Fjit_kernels\u002Fimpls\u002Fsm90_bf16_gemm.hpp",99,115,{"format":268,"lines":355,"tokens":364,"firstFile":373,"secondFile":376},{"name":334,"start":374,"end":375},234,250,{"name":369,"start":377,"end":378},231,247,{"format":268,"lines":290,"tokens":380,"firstFile":381,"secondFile":384},146,{"name":382,"start":383,"end":380},"csrc\u002Fapis\u002Fgemm.hpp",135,{"name":382,"start":364,"end":350},{"format":268,"lines":290,"tokens":380,"firstFile":386,"secondFile":387},{"name":382,"start":383,"end":380},{"name":382,"start":388,"end":389},166,177,{"score":254,"grade":255,"size":391,"dimensions":395},{"lines":392,"files":393,"class":394},18676,96,"M",[396,407,416],{"id":397,"source":398,"value":399,"adjusted":400,"lines":401,"halfLife":402,"formats":403,"excluded":404,"weight":285,"score":406},"duplication","jscpd",13.4,12.5,2506,8.5,[268,275,289,298,301],[307,405],"data",36.2,{"id":408,"source":398,"value":409,"adjusted":410,"lines":411,"halfLife":412,"coverage":413,"weight":414,"score":415},"dead-code",0.8,1.2,57,7.5,40.6,0.406,89.2,{"id":417,"source":398,"value":418,"adjusted":419,"lines":420,"halfLife":421,"weight":285,"score":422},"complexity",40,38.2,7476,50,58.9,{"total":424,"mean":425,"files":426},2835,29.5,[427,432,437,441,446,451,456,461,466,471],{"path":428,"complexity":429,"lines":430,"bytes":431},"scripts\u002Fgenerate_pyi.py",223,890,29335,{"path":433,"complexity":434,"lines":435,"bytes":436},"tests\u002Fgenerators.py",214,608,29383,{"path":382,"complexity":438,"lines":439,"bytes":440},173,997,53320,{"path":442,"complexity":443,"lines":444,"bytes":445},"tests\u002Ftest_attention.py",134,715,39797,{"path":447,"complexity":448,"lines":449,"bytes":450},"csrc\u002Fapis\u002Fattention.hpp",106,478,28921,{"path":452,"complexity":453,"lines":454,"bytes":455},"csrc\u002Fjit_kernels\u002Fimpls\u002Fruntime_utils.hpp",93,410,23087,{"path":457,"complexity":458,"lines":459,"bytes":460},"csrc\u002Fapis\u002Feinsum.hpp",88,311,15289,{"path":462,"complexity":463,"lines":464,"bytes":465},"tests\u002Ftest_fp8_fp4.py",87,406,24817,{"path":467,"complexity":468,"lines":469,"bytes":470},"csrc\u002Fjit_kernels\u002Fheuristics\u002Fsm100.hpp",72,304,14684,{"path":472,"complexity":468,"lines":473,"bytes":474},"tests\u002Ftest_bf16.py",341,18303,{"percentage":476,"findings":290,"files":418,"byCategory":477,"largest":480},0.75,[478],{"category":479,"count":290},"unused-import",[481,486,490,493,495,498,500,502,504,507],{"category":479,"path":482,"name":483,"line":484,"lines":485},"deep_gemm\u002Flocality_domain.py","get_granularity",5,9,{"category":479,"path":487,"name":488,"line":295,"lines":489},"deep_gemm\u002Futils\u002Flayout.py","get_tma_aligned_size",8,{"category":479,"path":482,"name":491,"line":492,"lines":492},"empty",7,{"category":479,"path":487,"name":494,"line":283,"lines":492},"get_mn_major_tma_aligned_tensor",{"category":479,"path":487,"name":496,"line":497,"lines":245},"get_mn_major_tma_aligned_packed_ue8m0_tensor",4,{"category":479,"path":487,"name":499,"line":484,"lines":484},"get_k_grouped_mn_major_tma_aligned_packed_ue8m0_tensor",{"category":479,"path":482,"name":501,"line":340,"lines":497},"get_sm_locality_domains",{"category":479,"path":487,"name":503,"line":245,"lines":497},"set_mk_alignment_for_contiguous_layout",{"category":479,"path":482,"name":505,"line":506,"lines":283},"get_balanced_sm_locality_domains",11,{"category":479,"path":487,"name":508,"line":489,"lines":295},"get_theoretical_mk_alignment_for_contiguous_layout",1791351208468]