Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions Projects/Projects/Edge-AI-On-Mobile.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: "SME2 on vivo X300: Mobile Edge AI Projects for multi-modal inference, built on Arm Lumex"
description: "Leverage the latest SME2 (Scalable Matrix Extension 2) available on the newest vivo X300 smartphones (built on Arm Lumex CSS) for advanced image/video, audio and text processing edge AI. Explore how SME2, via KleidiAI, enables larger matrix workloads, higher throughput, and novel applications on device without cloud connectivity required."
title: "SME2 on vivo X300 and other devices: Mobile Edge AI Projects for multi-modal inference."
description: "Leverage the latest SME2 (Scalable Matrix Extension 2) available on the newest vivo X300 smartphones (built on Arm Lumex CSS) or other SME2-enabled devices for advanced image/video, audio and text processing edge AI. Explore how SME2, via KleidiAI, enables larger matrix workloads, higher throughput, and novel applications on device without cloud connectivity required."
subjects:
- "ML"
- "Performance and Architecture"
Expand All @@ -23,6 +23,7 @@ status:
badges:
- trending
- recently_added
donation:
---

## Description
Expand All @@ -37,6 +38,8 @@ The vivo X300 is built on Arm Lumex. SME2 now enables AI compute that previously

[vivo X300, built on Arm Lumex](https://www.arm.com/company/success-library/vivo-x300-smartphones)

Other devices also support SME2, including both Apple and Android - [see the full list here](https://learn.arm.com/learning-paths/cross-platform/multiplying-matrices-with-sme2/1-get-started#devices)

### Project Summary

Select a **mobile edge AI application** that benefits from large matrix operations, multi-modal fusion, or transformer-based processing enabled by SME2. Build and optimize a proof-of-concept application on a vivo X300 phone or other device supporting SME2.
Expand Down Expand Up @@ -71,9 +74,10 @@ This project is designed to be self-serve but comes with opportunity of some com

## Benefits

Standout project contributions to the community will earn digital badges. These badges can support CV or resumé building and demonstrate earned recognition.
Standout project contributions will result in digital badges for CV building, recognised by Arm Talent Acquisition. We are currently discussing with national agencies the potential for funding streams for Arm Developer Labs projects, which would flow to you, not us.


To receive the benefits, you must show us your project through our [online form](https://forms.office.com/e/VZnJQLeRhD). Please do not include any confidential information in your contribution. Additionally if you are affiliated with an academic institution, please ensure you have the right to share your material.

---

---
19 changes: 19 additions & 0 deletions docs/Challenge_Page.html
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,24 @@ <h1>Bharat AI-SoC Student Challenge</h1>
</div>
</header>

<div style="background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%); border-left: 4px solid #dc2626; padding: 20px 24px; margin: 24px 0; border-radius: 8px; box-shadow: 0 4px 12px rgba(220, 38, 38, 0.1);">
<div style="display: flex; align-items: flex-start; gap: 12px;">
<div style="flex-shrink: 0; margin-top: 2px;">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#dc2626" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="10"></circle>
<line x1="12" y1="8" x2="12" y2="12"></line>
<line x1="12" y1="16" x2="12.01" y2="16"></line>
</svg>
</div>
<div style="flex: 1;">
<h3 style="margin: 0 0 8px 0; color: #991b1b; font-size: 18px; font-weight: 600;">Registration Closed</h3>
<p style="margin: 0 0 8px 0; color: #7f1d1d; font-size: 15px; line-height: 1.5;">
The registration period for the Bharat AI-SoC Student Challenge has ended.
</p>
</div>
</div>
</div>

<main class="ch-main">
<!-- LEFT COLUMN -->
<div>
Expand Down Expand Up @@ -192,6 +210,7 @@ <h2>Frequently Asked Questions (FAQ)</h2>
</main>
</div>


<!-- FAQ Popup Modal -->
<div id="faqPopup" style="display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.6); z-index:1100; justify-content:center; align-items:center;">
<div style="background:#fff; padding:30px; border-radius:16px; max-width:700px; width:90%; max-height:85vh; overflow-y:auto; position:relative; box-shadow: 0 10px 40px rgba(0,0,0,0.2);">
Expand Down
8 changes: 4 additions & 4 deletions docs/_data/navigation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -343,10 +343,10 @@ projects:
- Published
- title: Edge-AI-On-Mobile
description: Leverage the latest SME2 (Scalable Matrix Extension 2) available
on the newest vivo X300 smartphones (built on Arm Lumex CSS) for advanced image/video,
audio and text processing edge AI. Explore how SME2, via KleidiAI, enables larger
matrix workloads, higher throughput, and novel applications on device without
cloud connectivity required.
on the newest vivo X300 smartphones (built on Arm Lumex CSS) or other SME2-enabled
devices for advanced image/video, audio and text processing edge AI. Explore
how SME2, via KleidiAI, enables larger matrix workloads, higher throughput,
and novel applications on device without cloud connectivity required.
url: /2025/11/27/Edge-AI-On-Mobile.html
subjects:
- ML
Expand Down
142 changes: 96 additions & 46 deletions docs/_layouts/article.html
Original file line number Diff line number Diff line change
Expand Up @@ -178,68 +178,115 @@ <h2 class="project-group-title">{{ category.title }}</h2>
{%- endfor -%}
</div>

<script>
// Put projects with badge key "recently_added" first (per category list)
function hasRecentlyAddedBadge(li) {
let badges = [];
<script>
(function () {
let isSorting = false;
let observer = null;
let debounceTimer = null;

function safeParseBadges(raw) {
raw = raw == null ? '' : String(raw).trim();
if (!raw) return [];
try {
badges = JSON.parse(li.dataset.badges || '[]');
} catch (e) {
badges = [];
}
return Array.isArray(badges) && badges.includes('recently_added');
const j = JSON.parse(raw);
if (Array.isArray(j)) return j.map(x => String(x).trim()).filter(Boolean);
} catch (e) {}
// comma-separated fallback
const cleaned = raw.replace(/^[\[\]'" ]+|[\[\]'" ]+$/g, '');
return cleaned.split(',').map(s => s.trim()).filter(Boolean);
}

function badgesFromDOM(li) {
const badgesEl = li.querySelector('.project-badges');
if (!badgesEl) return [];
// collect visible badge labels
return Array.from(badgesEl.querySelectorAll('*'))
.map(n => (n.textContent || '').trim())
.filter(Boolean);
}

function normalize(arr) {
return (arr || []).map(x => String(x).trim().toLowerCase());
}

function badgeRank(normed) {
const isTrending = normed.includes('trending');
const isRecent =
normed.includes('recently_added') ||
normed.includes('recently-added') ||
normed.includes('recentlyadded');

if (isTrending && isRecent) return 0; // Trending + Recently added
if (isRecent) return 1; // Recently added
if (isTrending) return 2; // Trending
return 3; // Neither
}

function sortProjectsRecentlyAddedFirst() {
function getBadgesForItem(li) {
const raw = li.getAttribute('data-badges') || li.dataset.badges || '';
let parsed = safeParseBadges(raw);
if (parsed.length === 0) parsed = badgesFromDOM(li);
return normalize(parsed);
}

function sortProjectLists() {
if (isSorting) return;
isSorting = true;

// Prevent observer loop while we move nodes
if (observer) observer.disconnect();

document.querySelectorAll('.project-list').forEach(ul => {
const items = Array.from(ul.querySelectorAll(':scope > .project-item'));

// stable sort: decorate with original index
const decorated = items.map((el, idx) => ({
el,
idx,
isRecent: hasRecentlyAddedBadge(el)
}));

decorated.sort((a, b) => {
if (a.isRecent !== b.isRecent) return a.isRecent ? -1 : 1; // recent first
return a.idx - b.idx; // preserve original order otherwise
const decorated = items.map((el, idx) => {
const badges = getBadgesForItem(el);
return { el, idx, rank: badgeRank(badges) };
});

decorated.sort((a, b) => (a.rank - b.rank) || (a.idx - b.idx));
decorated.forEach(d => ul.appendChild(d.el));
});

// Reconnect observer after we're done moving nodes
startObserving();

isSorting = false;
}

document.addEventListener('DOMContentLoaded', () => {
sortProjectsRecentlyAddedFirst();
});
function scheduleSort() {
if (debounceTimer) clearTimeout(debounceTimer);
debounceTimer = setTimeout(sortProjectLists, 100);
}

// --- Existing filtering (unchanged) ---
function filterProjects() {
const checks = Array.from(document.querySelectorAll('.filter-checkbox:checked'));
if (checks.length === 0) {
document.querySelectorAll('.project-item').forEach(el => el.style.display = '');
return;
}
const activeFilters = checks.map(cb => ({ cat: cb.dataset.category, val: cb.value }));
document.querySelectorAll('.project-item').forEach(li => {
const plats = JSON.parse(li.dataset.platforms || '[]');
const subs = JSON.parse(li.dataset.subjects || '[]');
const swhws = JSON.parse(li.dataset.swhw || '[]');
const levels = JSON.parse(li.dataset.supportLevel || '[]');
const ok = activeFilters.every(f => {
switch (f.cat) {
case 'platform': return plats.includes(f.val);
case 'subject': return subs.includes(f.val);
case 'sw-hw': return swhws.includes(f.val);
case 'support-level': return levels.includes(f.val);
default: return true;
}
function startObserving() {
const container = document.querySelector('.project-results');
if (!container) return;

if (!observer) {
observer = new MutationObserver(() => {
// Only schedule if we aren't already sorting
if (!isSorting) scheduleSort();
});
li.style.display = ok ? '' : 'none';
});
}

// IMPORTANT: only observe childList changes, not attributes on the whole subtree.
// Observing attributes widely can cause lots of extra triggers.
observer.observe(container, { childList: true, subtree: true });
}

document.addEventListener('DOMContentLoaded', () => {
sortProjectLists();
// Optional second pass for late-rendered badges
setTimeout(sortProjectLists, 300);
});

// Expose for manual debugging
window.__arm_sortProjectLists = sortProjectLists;
})();
</script>


{%- endif -%}
</div>

Expand All @@ -253,3 +300,6 @@ <h2 class="project-group-title">{{ category.title }}</h2>
</div>





17 changes: 13 additions & 4 deletions docs/_posts/2025-11-27-Edge-AI-On-Mobile.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: 'SME2 on vivo X300: Mobile Edge AI Projects for multi-modal inference, built on Arm Lumex'
description: Leverage the latest SME2 (Scalable Matrix Extension 2) available on the newest vivo X300 smartphones (built on Arm Lumex CSS) for advanced image/video, audio and text processing edge AI. Explore how SME2, via KleidiAI, enables larger matrix workloads, higher throughput, and novel applications on device without cloud connectivity required.
title: 'SME2 on vivo X300 and other devices: Mobile Edge AI Projects for multi-modal inference.'
description: Leverage the latest SME2 (Scalable Matrix Extension 2) available on the newest vivo X300 smartphones (built on Arm Lumex CSS) or other SME2-enabled devices for advanced image/video, audio and text processing edge AI. Explore how SME2, via KleidiAI, enables larger matrix workloads, higher throughput, and novel applications on device without cloud connectivity required.
subjects:
- ML
- Performance and Architecture
Expand All @@ -23,6 +23,7 @@ status:
badges:
- trending
- recently_added
donation:
layout: article
sidebar:
nav: projects
Expand All @@ -39,6 +40,8 @@ full_description: |-
[vivo X300, built on Arm Lumex](https://www.arm.com/company/success-library/vivo-x300-smartphones)
Other devices also support SME2, including both Apple and Android - [see the full list here](https://learn.arm.com/learning-paths/cross-platform/multiplying-matrices-with-sme2/1-get-started#devices)
### Project Summary
Select a **mobile edge AI application** that benefits from large matrix operations, multi-modal fusion, or transformer-based processing enabled by SME2. Build and optimize a proof-of-concept application on a vivo X300 phone or other device supporting SME2.
Expand Down Expand Up @@ -73,10 +76,12 @@ full_description: |-
## Benefits
Standout project contributions to the community will earn digital badges. These badges can support CV or resumé building and demonstrate earned recognition.
Standout project contributions will result in digital badges for CV building, recognised by Arm Talent Acquisition. We are currently discussing with national agencies the potential for funding streams for Arm Developer Labs projects, which would flow to you, not us.
To receive the benefits, you must show us your project through our [online form](https://forms.office.com/e/VZnJQLeRhD). Please do not include any confidential information in your contribution. Additionally if you are affiliated with an academic institution, please ensure you have the right to share your material.
---
---

Expand All @@ -92,6 +97,8 @@ The vivo X300 is built on Arm Lumex. SME2 now enables AI compute that previously

[vivo X300, built on Arm Lumex](https://www.arm.com/company/success-library/vivo-x300-smartphones)

Other devices also support SME2, including both Apple and Android - [see the full list here](https://learn.arm.com/learning-paths/cross-platform/multiplying-matrices-with-sme2/1-get-started#devices)

### Project Summary

Select a **mobile edge AI application** that benefits from large matrix operations, multi-modal fusion, or transformer-based processing enabled by SME2. Build and optimize a proof-of-concept application on a vivo X300 phone or other device supporting SME2.
Expand Down Expand Up @@ -126,8 +133,10 @@ This project is designed to be self-serve but comes with opportunity of some com

## Benefits

Standout project contributions to the community will earn digital badges. These badges can support CV or resumé building and demonstrate earned recognition.
Standout project contributions will result in digital badges for CV building, recognised by Arm Talent Acquisition. We are currently discussing with national agencies the potential for funding streams for Arm Developer Labs projects, which would flow to you, not us.


To receive the benefits, you must show us your project through our [online form](https://forms.office.com/e/VZnJQLeRhD). Please do not include any confidential information in your contribution. Additionally if you are affiliated with an academic institution, please ensure you have the right to share your material.


---