Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 2 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Existing visible maintainer team with repository maintain access.
* @uxlfoundation/sig-leaders
29 changes: 29 additions & 0 deletions .github/ISSUE_TEMPLATE/work-item.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Work item or documentation issue
description: Track a concrete foundation or Working Group task.
labels: [needs-triage]
body:
- type: textarea
id: problem
attributes:
label: Problem and affected area
description: Include the affected project, page or work package.
validations:
required: true
- type: textarea
id: evidence
attributes:
label: Evidence or reproduction steps
description: Link existing work, decisions or affected pages.
validations:
required: true
- type: textarea
id: completion
attributes:
label: Completion criteria
validations:
required: true
- type: input
id: owner
attributes:
label: Agreed owner or team to consult
description: Do not assign an owner without their agreement.
28 changes: 28 additions & 0 deletions .github/meeting-notes-template.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
Meeting title
=============

Date: YYYY-MM-DD

Attendees
---------

Agenda
------

Discussion
----------

Decisions
---------

Record approved decisions separately from proposals and open questions.

Actions
-------

For each action, record the agreed owner, next step and target date or issue.

Materials and recording
----------------------

Add presentation links and recording access details. Update the meeting index.
13 changes: 13 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
## Change

Describe the problem and resulting behavior. Link related issues or decisions.

## Validation

- [ ] Local documentation links checked.
- [ ] Meeting/SIG index updated where applicable.
- [ ] Relevant chair or maintainer identified for content review.

## Decisions or follow-up

Separate proposed decisions from approved ones; note any remaining owner action.
60 changes: 60 additions & 0 deletions .github/scripts/check_local_links.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
"""Check local file targets in Markdown and reStructuredText (not URL/anchors)."""

from pathlib import Path
import posixpath
import re
import sys
from urllib.parse import unquote, urlsplit

TARGETS = re.compile(
r"(?m)^\.\. _[^\n]+?:[ \t]+([^\n]+)$"
r"|<([^<>\n]+)>`_{1,2}"
r'|\]\((<[^>]+>|[^)\n]+)\)'
r"|(?m:^\[[^\]\n]+\]:[ \t]+([^\n]+)$)"
)


def check(root):
root = root.resolve()
entries = [p for p in root.rglob('*') if '.git' not in p.relative_to(root).parts]
paths = {p.relative_to(root).as_posix() for p in entries}
errors = []
for source in entries:
if source.suffix.lower() not in {'.md', '.rst'} or not source.is_file():
continue
content = source.read_text(encoding='utf-8')
for match in TARGETS.finditer(content):
target = next(g for g in match.groups() if g is not None).strip()
if target.startswith('<'):
target = target[1:target.index('>')]
else:
target = re.split(r'\s+[\"\']', target, maxsplit=1)[0]
if not target or target.startswith(('#', '//')):
continue
parsed = urlsplit(target)
if parsed.scheme:
continue
local = unquote(parsed.path)
if not local:
continue
base = root if local.startswith('/') else source.parent
candidate = (base / local.lstrip('/')).resolve()
try:
candidate.relative_to(root)
# Keep the written case: Windows resolve() can canonicalize it.
prefix = '' if local.startswith('/') else source.parent.relative_to(root).as_posix()
normalized = posixpath.normpath(posixpath.join(prefix, local.lstrip('/')))
except ValueError:
normalized = None
if normalized not in paths and candidate != root:
line = content.count('\n', 0, match.start()) + 1
errors.append(f'{source.relative_to(root).as_posix()}:{line}: missing local target: {target}')
return errors


if __name__ == '__main__':
errors = check(Path.cwd())
for error in errors:
print(error)
print(f'Local documentation links: {len(errors)} error(s). External URLs and anchors are not checked.')
sys.exit(bool(errors))
35 changes: 35 additions & 0 deletions .github/scripts/test_local_links.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
from pathlib import Path
import tempfile
import unittest
from check_local_links import check


class LocalLinkTests(unittest.TestCase):
def test_local_targets_and_external_links(self):
with tempfile.TemporaryDirectory() as directory:
root = Path(directory)
(root / 'docs').mkdir()
(root / 'slides with spaces.pdf').touch()
(root / 'docs' / 'notes.rst').write_text(
'.. _slides: ../slides%20with%20spaces.pdf\n'
'`slides <../slides with spaces.pdf>`__\n'
'.. _site: https://example.org/missing\n', encoding='utf-8')
(root / 'README.md').write_text(
'[multi\nline](docs/notes.rst#agenda)\n'
'[slides](<slides with spaces.pdf>)\n'
'[root](/docs/notes.rst)\n'
'[anchor](#agenda)\n[mail](mailto:test@example.org)\n', encoding='utf-8')
self.assertEqual(check(root), [])

def test_missing_case_mismatch_and_escape(self):
with tempfile.TemporaryDirectory() as directory:
root = Path(directory)
(root / 'note.rst').touch()
(root / 'README.md').write_text(
'[missing](missing.pdf)\n[case](NOTE.rst)\n'
'[outside](../outside.md)\n[reference]: missing.rst\n', encoding='utf-8')
self.assertEqual(len(check(root)), 4)


if __name__ == '__main__':
unittest.main()
20 changes: 20 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Documentation
on:
pull_request:
push:
branches: [main]
permissions:
contents: read
jobs:
local-links:
name: Local documentation links
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
persist-credentials: false
- name: Test link checker
run: python3 -m unittest discover -s .github/scripts -p 'test_*.py'
- name: Check local links
run: python3 .github/scripts/check_local_links.py
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__pycache__/
44 changes: 44 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Contributing

Use this repository for foundation governance, SIG documentation and community infrastructure.
Use the [Working Group](https://github.com/uxlfoundation/open-source-working-group)
for cross-project work packages, and the relevant library repository for implementation bugs.

## Issues and work packages

Use an issue template to describe the problem, affected area, evidence and
completion criteria. Identify an owner when one has agreed to take the work.
Maintainers use `needs-triage` for items awaiting a decision and area labels for
routing. An old issue is not automatically obsolete: close it only with evidence
of completion, a duplicate reference or an explicit decision not to pursue it.
Reassign an open issue out of a closed milestone when agreeing its next target.

## Documentation and meeting notes

Make focused pull requests and explain what changed and how it was checked.
Use the [meeting-notes template](.github/meeting-notes-template.rst) for new notes.
Use YYYY-MM-DD in new filenames, update the relevant index, and check relative
links and presentation attachments. Preserve existing filenames and historical
decisions; correct broken links without rewriting the meeting's conclusions.
Link new large recordings from an approved stable host rather than adding video
binaries. State any membership requirement for recording access.

Run `python .github/scripts/check_local_links.py` from the repository root.
The check validates local file targets in Markdown and reStructuredText; it does
not check external websites or section anchors. Public links and meeting content
also need a human review.

## Review and repository maintenance

The existing `@uxlfoundation/sig-leaders` team routes repository reviews through
CODEOWNERS. Changes to meeting decisions or leadership need the relevant chairs'
confirmation. Prefer one approving review and passing documentation checks before
merging; keep proposed changes separate from approved decisions. Administrators
retain an exception path for urgent maintenance and should document any exception
in the PR. Do not treat an automated link check as approval of meeting content.

Use the existing foundation and project policies. This guide does not introduce
a new license or change governance or contribution terms. Ask foundation
operations to confirm applicable terms before importing third-party material.
Report security vulnerabilities through the affected project's private reporting
channel or security policy, rather than posting details in a public issue.
21 changes: 12 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ The Unified Acceleration (UXL) Foundation exists to define a standards-based,
cross-architecture open specification for accelerated computing and to foster
the open-source implementations of the specification.

More information can be found at http://www.uxlfoundation.org.
More information can be found at https://uxlfoundation.org.

You can also find out more about our mission, projects and how to contribute
in the [UXL Foundation Charter](/doc/uxl-foundation-charter.rst).
Expand All @@ -15,13 +15,13 @@ projects that implement the oneAPI Specification.

The community is invited to join the meetings, review the [oneAPI
Specification](https://spec.oneapi.io), and read the information in this
repo. Contributions can be made by joining the Working Groups, Special
repo. Contributions can be made by joining the Working Group, Special
Interest Groups (SIGs) or posting comments or questions as GitHub
issues. General questions can go to this repo, and issues specific to parts of
the specification can go to the [Specification
repo](https://github.com/oneapi-src/oneapi-spec).
repo](https://github.com/uxlfoundation/oneAPI-spec).

Sign up to the mailing lists for the Working Groups and Special Interest
Sign up to the mailing lists for the Working Group and Special Interest
Groups (SIGs) [here](https://lists.uxlfoundation.org/groups).

Join the [Slack
Expand All @@ -42,12 +42,10 @@ Working Group

The Working Group meets regularly to organize community proposals and
contributions to the specification and open source projects. This group
defines work packages for areas of development and collaboration. Each group
has a GitHub repository linked below.
defines work packages for areas of development and collaboration. Its repository is linked below.

* [Working Group](https://github.com/uxlfoundation/open-source-working-group) - This
group focuses on development of the open source projects that form part of
the foundation.
group coordinates the foundation's specifications and open source projects.

Special Interest Groups (SIGs)
------------------------------
Expand All @@ -67,6 +65,11 @@ minutes can be found in the relevant folder in this repository.
* [Hardware](/hardware) - This group covers topics related to the integration
of hardware and how this is defined in the oneAPI specification.

Contributing
------------

See [CONTRIBUTING.md](CONTRIBUTING.md) for issue routing, meeting notes and review expectations.

Upcoming Events
-------------

Expand All @@ -76,7 +79,7 @@ Calendar](https://zoom-lfx.platform.linuxfoundation.org/meetings/oneapi?view=lis
Stay Informed
-------------

[Join the relevant mailing list to receive an invite for the Working Groups
[Join the relevant mailing list to receive an invite for the Working Group
and SIGs](https://lists.uxlfoundation.org/g/main)

[Contact us](mailto:membership@uxlfoundation.org) with any questions about membership.
4 changes: 2 additions & 2 deletions ai-and-scientific-computing/2024-03-14-UXL-AI-SIG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ Attendees
Agenda -

* Enabling oneDAL on ARM target Chandan Sharma (`slides <presentations/20240314-UXL-oneDAL-ARM-SVE-Enablement_ChandanSharma.pdf>`__)
* oneDNN overview and update Mourad Gouicem (`slides <presentations/20240314-UXL-oneDNN-Overview-And-Developments_MouradGouicem.pptx>`__)
* oneDNN overview and update Mourad Gouicem (`slides <presentations/20240314-UXL-oneDNN-Overview-And-Developments_MouradGouicem.pdf>`__)
* Discussion (motivation, expectation, future topics)

Question: Fujitsu extended oneDAL to use OpenBLAS library to enable ARM target. oneDAL uses private MKL interface. Will oneDAL use public MKL interface?
Expand All @@ -69,4 +69,4 @@ Answer: Yes. oneDNN Graph is an official feature of oneDNN. oneDNN Graph API is

Question: What does it take to optimize oneDNN to other targets?

Answer: There are three levels. The first approach is to map the API to external library (e.g. ARM backend relies on ACL, Nvidia backend relies on cuDNN/cuBLAS, ...), the second one is to add C++/SYCL implementations with targeted optimizations (e.g. RISC-V RVV optimized Matmul), and the third one is to add jitting capabilites and jit kernel generators (e.g. x64 support contributed by Intel and SVE support contributed by Fujitsu).
Answer: There are three levels. The first approach is to map the API to external library (e.g. ARM backend relies on ACL, Nvidia backend relies on cuDNN/cuBLAS, ...), the second one is to add C++/SYCL implementations with targeted optimizations (e.g. RISC-V RVV optimized Matmul), and the third one is to add jitting capabilites and jit kernel generators (e.g. x64 support contributed by Intel and SVE support contributed by Fujitsu).
6 changes: 3 additions & 3 deletions ai-and-scientific-computing/2024-10-24-UXL-AI-SIG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ Attendees

Agenda

“oneDNN vision” Mourad Gouicem, Intel (`slides <ai/presentations/2024-10-24-UXL-AI-SIG-oneDNN-API-strategy-MouradGouicem.pdf>`__)
“oneDNN vision” Mourad Gouicem, Intel (`slides <presentations/2024-10-24-UXL-AI-SIG-oneDNN-API-strategy-MouradGouicem.pdf>`__)

“Adding Scikit-learn Intel extension to UXL” Nikolay Petrov, Intel (`slides <ai/presentations/2024-10-24-UXL-AI-SIG-scikit-learn-intelex-migration-to-UXL-NikolayPetrov.pdf>`__)
“Adding Scikit-learn Intel extension to UXL” Nikolay Petrov, Intel (`slides <presentations/2024-10-24-UXL-AI-SIG-scikit-learn-intelex-migration-to-UXL-NikolayPetrov.pdf>`__)


Question: As the uKernel API has specific block sizes, how should we write kernel for matrices that don’t fit these block dimensions, especially with fringe areas? Do we need new primitives for these cases?
Expand Down Expand Up @@ -81,4 +81,4 @@ Question:
Has there been any effort to work with scikit-learn developers to simplify plugin usage, perhaps by automatically loading plugins similar to TensorFlow’s approach?

Answer:
Yes, discussions are ongoing with scikit-learn maintainers to explore backend integration for estimator acceleration. Though not yet implemented, there’s interest in creating a plugin API that could automatically load extensions.
Yes, discussions are ongoing with scikit-learn maintainers to explore backend integration for estimator acceleration. Though not yet implemented, there’s interest in creating a plugin API that could automatically load extensions.
2 changes: 1 addition & 1 deletion ai-and-scientific-computing/2025-3-6-UXL-AI-SIG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Attendees
Agenda
======

Extend OneDNN Operators/APIs for AI Chips Leping Wang, En Saho, (`slides <presentations/2025-03-06-UXL-Extend_onednn_Operators_Apis_ For_AI_Chips_RFC_Bosc_LepingWang.pdf>`__)
Extend OneDNN Operators/APIs for AI Chips Leping Wang, En Saho, (`slides <presentations/2025-03-06-UXL-Extend_onednn_Operators_Apis_For_AI_Chips_RFC_Bosc_LepingWang.pdf>`__)

AI use cases with oneDNN on Arm Ashok Bhat, (`slides <presentations/2025-03-06-AI_use_cases_with_oneDNN_on_ARM_ARM_AshokBhat.pdf>`__)

Expand Down
Loading
Loading