Skip to content

Commit 2901312

Browse files
committed
feat: Add software_tags to content types
Adds software_tags field to archetypes and content. This allows associating events and blog posts with specific software pages, enabling the creation of related events/content listings on software pages. Includes Spyx tag for relevant content.
1 parent 2de8c99 commit 2901312

File tree

7 files changed

+49
-64
lines changed

7 files changed

+49
-64
lines changed

archetypes/hacking-hours.md

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,27 @@
11
---
2-
title: "Workshop: {{ replace .Name "-" " " | title }}" # Workshop Title: Clear & concise (50-60 chars). Include speaker/topic if possible for SEO.
2+
title: "Hacking Hours: {{ replace .Name "-" " " | title }}" # Hacking Hours Title: Clear & concise (50-60 chars). Include speaker/topic if possible for SEO.
33
author:
44
- "Speaker Name or Slug" # Match with a contributor profile title/slug. Add more authors if needed.
5-
date: {{ .Date }} # Date of the workshop (YYYY-MM-DD).
5+
date: {{ .Date }} # Date of the hacking hours (YYYY-MM-DD).
66
start_time: "18:00" # Event start time (24-hour format HH:MM).
77
end_time: "19:30" # Event end time (24-hour format HH:MM).
88
time_zone: "CET" # Timezone (e.g., CET, CEST, EST, PST).
9-
# Meta Description (SEO): 120-160 characters.
10-
# This is crucial for search results! It's your "ad copy."
11-
# - Briefly state what the workshop is about.
12-
# - Mention key topics or speakers.
13-
# - Highlight the value/benefit for attendees.
14-
# - Include relevant keywords naturally.
15-
description: "Join us for an insightful workshop on [Topic] by [Speaker Name]. Discover [Key Takeaway 1] and explore [Key Takeaway 2] in neuromorphic computing."
9+
description: "Join us for an insightful hacking hours on [Topic] by [Speaker Name]. Discover [Key Takeaway 1] and explore [Key Takeaway 2] in neuromorphic computing."
1610
upcoming: true # Set to 'true' for future events. Change to 'false' after the event.
1711
video: "" # After the event, add the YouTube video ID (e.g., "dQw4w9WgXcQ").
18-
image: "workshop-banner.png" # Main banner image (1200x630px ideal for sharing). Place in this workshop's folder.
19-
speaker_photo: "speaker-photo.jpg" # Speaker's photo. Place in this workshop's folder.
20-
type: "hacking-hours" # IMPORTANT: Do not change this line for hacking hour events.
21-
# For Student Talks, set type: "student-talks"
22-
speaker_bio: "A brief biography of the speaker. Highlight their expertise relevant to the workshop topic."
23-
# Optional: Add links to slides, code, or notebooks if available after the workshop.
24-
# Place these files in this workshop's folder and link them:
12+
image: "hacking-hours-banner.png" # Main banner image (1200x630px ideal for sharing). Place in this hacking hours's folder.
13+
speaker_photo: "speaker-photo.jpg" # Speaker's photo. Place in this hacking hours's folder.
14+
type: "hacking-hours" # IMPORTANT: Do not change this line for hacking hours events.
15+
speaker_bio: "A brief biography of the speaker. Highlight their expertise relevant to the hacking hours topic."
16+
# Optional: Add the file name (slug) of any software pages this event is related to.
17+
# e.g., ["spyx", "snntorch"]
18+
software_tags: []
19+
# Optional: Add links to slides, code, or notebooks if available after the hacking hours.
20+
# Place these files in this hacking hours's folder and link them:
2521
# speaker_slides: "slides.pdf"
2622
# speaker_code: "https://github.com/example/repo" # External link
2723
# speaker_notebook: "my-notebook.ipynb" # Place in folder
2824
---
2925

30-
Detailed workshop abstract or information goes here.
26+
Detailed hacking hours abstract or information goes here.
3127
Explain what attendees will learn, the agenda, and any prerequisites.

archetypes/student-talks.md

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,27 @@
11
---
2-
title: "Workshop: {{ replace .Name "-" " " | title }}" # Workshop Title: Clear & concise (50-60 chars). Include speaker/topic if possible for SEO.
2+
title: "Student Talk: {{ replace .Name "-" " " | title }}" # Student Talk Title: Clear & concise (50-60 chars). Include speaker/topic if possible for SEO.
33
author:
44
- "Speaker Name or Slug" # Match with a contributor profile title/slug. Add more authors if needed.
5-
date: {{ .Date }} # Date of the workshop (YYYY-MM-DD).
5+
date: {{ .Date }} # Date of the student talk (YYYY-MM-DD).
66
start_time: "18:00" # Event start time (24-hour format HH:MM).
77
end_time: "19:30" # Event end time (24-hour format HH:MM).
88
time_zone: "CET" # Timezone (e.g., CET, CEST, EST, PST).
9-
# Meta Description (SEO): 120-160 characters.
10-
# This is crucial for search results! It's your "ad copy."
11-
# - Briefly state what the workshop is about.
12-
# - Mention key topics or speakers.
13-
# - Highlight the value/benefit for attendees.
14-
# - Include relevant keywords naturally.
15-
description: "Join us for an insightful workshop on [Topic] by [Speaker Name]. Discover [Key Takeaway 1] and explore [Key Takeaway 2] in neuromorphic computing."
9+
description: "Join us for an insightful student talk on [Topic] by [Speaker Name]. Discover [Key Takeaway 1] and explore [Key Takeaway 2] in neuromorphic computing."
1610
upcoming: true # Set to 'true' for future events. Change to 'false' after the event.
1711
video: "" # After the event, add the YouTube video ID (e.g., "dQw4w9WgXcQ").
18-
image: "workshop-banner.png" # Main banner image (1200x630px ideal for sharing). Place in this workshop's folder.
19-
speaker_photo: "speaker-photo.jpg" # Speaker's photo. Place in this workshop's folder.
12+
image: "student-talk-banner.png" # Main banner image (1200x630px ideal for sharing). Place in this student talk's folder.
13+
speaker_photo: "speaker-photo.jpg" # Speaker's photo. Place in this student talk's folder.
2014
type: "student-talks" # IMPORTANT: Do not change this line for student talk events.
21-
# For Hacking Hours, set type: "hacking-hours"
22-
speaker_bio: "A brief biography of the speaker. Highlight their expertise relevant to the workshop topic."
23-
# Optional: Add links to slides, code, or notebooks if available after the workshop.
24-
# Place these files in this workshop's folder and link them:
15+
speaker_bio: "A brief biography of the speaker. Highlight their expertise relevant to the student talk topic."
16+
# Optional: Add the file name (slug) of any software pages this event is related to.
17+
# e.g., ["spyx", "snntorch"]
18+
software_tags: []
19+
# Optional: Add links to slides, code, or notebooks if available after the student talk.
20+
# Place these files in this student talk's folder and link them:
2521
# speaker_slides: "slides.pdf"
2622
# speaker_code: "https://github.com/example/repo" # External link
2723
# speaker_notebook: "my-notebook.ipynb" # Place in folder
2824
---
2925

30-
Detailed workshop abstract or information goes here.
26+
Detailed student talk abstract or information goes here.
3127
Explain what attendees will learn, the agenda, and any prerequisites.

archetypes/workshops.md

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,16 @@ date: {{ .Date }} # Date of the workshop (YYYY-MM-DD).
66
start_time: "18:00" # Event start time (24-hour format HH:MM).
77
end_time: "19:30" # Event end time (24-hour format HH:MM).
88
time_zone: "CET" # Timezone (e.g., CET, CEST, EST, PST).
9-
# Meta Description (SEO): 120-160 characters.
10-
# This is crucial for search results! It's your "ad copy."
11-
# - Briefly state what the workshop is about.
12-
# - Mention key topics or speakers.
13-
# - Highlight the value/benefit for attendees.
14-
# - Include relevant keywords naturally.
159
description: "Join us for an insightful workshop on [Topic] by [Speaker Name]. Discover [Key Takeaway 1] and explore [Key Takeaway 2] in neuromorphic computing."
1610
upcoming: true # Set to 'true' for future events. Change to 'false' after the event.
1711
video: "" # After the event, add the YouTube video ID (e.g., "dQw4w9WgXcQ").
1812
image: "workshop-banner.png" # Main banner image (1200x630px ideal for sharing). Place in this workshop's folder.
1913
speaker_photo: "speaker-photo.jpg" # Speaker's photo. Place in this workshop's folder.
2014
type: "workshops" # IMPORTANT: Do not change this line for workshop events.
21-
# For Student Talks, set type: "student-talks"
22-
# For Hacking Hours, set type: "hacking-hours"
2315
speaker_bio: "A brief biography of the speaker. Highlight their expertise relevant to the workshop topic."
16+
# Optional: Add the file name (slug) of any software pages this event is related to.
17+
# e.g., ["spyx", "snntorch"]
18+
software_tags: []
2419
# Optional: Add links to slides, code, or notebooks if available after the workshop.
2520
# Place these files in this workshop's folder and link them:
2621
# speaker_slides: "slides.pdf"

content/blog/spiking-neural-network-framework-benchmarking/index.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ author:
1212
- "Jens E. Pedersen"
1313
image: neurons-race.png
1414
tags: ["snn", "framework", "library", "pytorch", "JAX"]
15+
software_tags: ["spyx"]
1516
show_author_bios: true
1617
---
1718

@@ -40,7 +41,7 @@ Striking a balance between flexibility/extensibility and efficiency from compila
4041

4142
The second figure shows the maximum memory usage during forward and backward pass for the same networks. The compiled Norse model comes out on top, which is interesting because it is being built in pure Python.
4243
This is most likely due to compiler techinques such as kernel fusion, where subsequent PyTorch layers are fused into single operations to avoid device bottleneck and to leverage the single instruction, multiple data (SIMD) architectures of GPUs.
43-
The memory usage benchmarks were collected using PyTorch's [max_memory_allocated()](https://pytorch.org/docs/stable/generated/torch.cuda.max_memory_allocated.html) function, unfortunately JAX does not have a similar function so for now Spyx is not included in the memory benchmark.
44+
The memory usage benchmarks were collected using PyTorch's [max_memory_allocated()](https://pytorch.org/docs/stable/generated/torch.cuda.max_memory_allocated.html) function, unfortunately JAX does not have a similar function so for now [Spyx](/neuromorphic-computing/software/snn-frameworks/spyx/) is not included in the memory benchmark.
4445

4546
## Summary
4647
The ideal library will often depend on a multitude of factors, such as accessible documentation, usability of the API or pre-trained models. Generally speaking, PyTorch offers good support when custom neuron models (that have additional states, recurrence) are to be explored. For larger networks, it will likely pay off to rely on CUDA-accelerated existing implementations, or ensure your model is compatible with the recent compilation techniques to leverage the backend-specific JIT optimizations. The development of Spyx offers an interesting new framework as it enables the flexible neuron definitions of PyTorch frameworks while also enabling the speed of libraries which utilize custom CUDA backends. One more note on the accuracy of gradient computation: In order to speed up computation, some frameworks will approximate this calculation over time. Networks will still manage to *learn* in most cases, but EXODUS, correcting an approximation in SLAYER and therefore calculating gradients that are equivalent to BPTT, showed that it can make a substantial difference in certain experiments. So while speed is extremely important, other factors such as memory consumption and quality of gradient calculation matter as well.

content/neuromorphic-computing/software/hacking-hours/kade-heckel-jax-pallas-optimization/index.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ speaker_photo: "images/speakers/kade-heckel-placeholder.png" # Placeholder, plea
1414
image: "kade-heckel-jax-pallas-optimization.jpg" # Placeholder, please create
1515
type: "hacking-hours"
1616
speaker_bio: "Kade Heckel is a researcher and developer focusing on high-performance computing for neural networks, with expertise in JAX and related optimization tools like Pallas. He is the creator of Spyx, a JAX-based spiking neural network library."
17+
software_tags: ["spyx"]
1718
---
1819

1920
In this Hacking Hour, Kade Heckel, creator of the JAX-based spiking neural network (SNN) library "Spyx," joins host Jens E. Pedersen. They explore techniques for optimizing SNN code for GPUs and TPUs using JAX and the Pallas library, covering practical approaches to accelerate neuromorphic and machine learning computations.
@@ -92,7 +93,7 @@ In this Hacking Hour, Kade Heckel, creator of the JAX-based spiking neural netwo
9293
* JAX's automatic fusion matched Pallas performance for simple element-wise functions.
9394
* Pallas is particularly useful for TPUs, structured sparsity, and custom data loading.
9495
* Calling JAX functions with custom VJPs inside Pallas kernels is problematic.
95-
* Optimizing SNNs for TPUs with JAX/Pallas is a promising, largely unexplored area.
96+
* Optimizing SNNs for TPUs using Pallas is a key future direction.
9697

9798
## Conclusion
9899

content/workshops/spyx-hackathon-speeding-up-neuromorphic-computing/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ start_time: 18:00
77
end_time: 20:00
88
video: gKNegntASLI
99
speaker_photo: speaker.jpeg
10+
software_tags: ["spyx"]
1011
speaker_bio: "Kade studied Computer Science and Computer Engineering at the U.S. Naval Academy. Studying in the UK as a Marshall Scholar, Kade completed an MSc in A.I. and Adaptive Systems with distinction from the University of Sussex and is currently pursuing an MPhil in Machine Learning and Machine Intelligence at the University of Cambridge. His dissertation at Sussex focused on comparing surrogate gradient and large scale neuroevolutionary algorithms for optimizing spiking neural networks."
1112
speaker_code: https://github.com/kmheckel/spyx
1213
time_zone: CEST

layouts/neuromorphic-software/single.html

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,27 @@
33
<section class="section pt-6">
44
<div class="container">
55
<div class="row lg:gx-8 lg:items-stretch">
6-
{{/* Main Content Column */}}
76
<div class="lg:col-8">
87
<article class="content mb-10">
98
{{ .Content }}
109
</article>
11-
10+
11+
{{ $softwareSlug := .File.Dir | path.Base }}
12+
{{ $relatedContent := slice }}
13+
{{ range site.RegularPages }}
14+
{{ $contentPage := . }}
15+
{{ with .Params.software_tags }}
16+
{{ if in . $softwareSlug }}
17+
{{ $relatedContent = $relatedContent | append $contentPage }}
18+
{{ end }}
19+
{{ end }}
20+
{{ end }}
21+
{{ $relatedContent = sort $relatedContent "Date" "desc" }}
22+
{{ partial "software/related-events.html" $relatedContent }}
23+
1224
{{ partial "components/content-contribute-cta.html" (dict
1325
"icon" "solid code"
14-
"title" "Help Improve this <span class=\"gradient-text\">Software Guide</span>"
26+
"title" "Help Improve this <span class='gradient-text'>Software Guide</span>"
1527
"description" "Our software guide is maintained by the community. If you have updates, see an error, or want to suggest a new tool, please let us know by opening an issue on our GitHub repository."
1628
"link" "https://github.com/open-neuromorphic/open-neuromorphic.github.io/issues/new/choose"
1729
"link_text" "Suggest an Edit on GitHub"
@@ -21,8 +33,7 @@
2133
{{ partial "components/share-cta.html" . }}
2234
</div>
2335
</div>
24-
25-
{{/* Sidebar Column */}}
36+
2637
<aside class="lg:col-4">
2738
<div class="pb-4">
2839
{{ partial "components/og-preview.html" . }}
@@ -32,22 +43,6 @@
3243
</div>
3344
</aside>
3445
</div>
35-
36-
{{/* Related Posts Section (Optional, but good to keep) */}}
37-
{{ $related := where site.RegularPages "Section" "blog" | intersect (where site.RegularPages ".Title" "!=" .Title) | union (site.RegularPages.Related . ) }}
38-
{{ $related = $related | shuffle | first 3 }}
39-
{{ with $related }}
40-
<div class="section pb-0 mt-12">
41-
<h2 class="h3 mb-6 text-center">Related Blog Posts</h2>
42-
<div class="row">
43-
{{ range . }}
44-
<div class="lg:col-4">
45-
{{ partial "components/blog-card" . }}
46-
</div>
47-
{{ end }}
48-
</div>
49-
</div>
50-
{{ end }}
5146
</div>
5247
</section>
5348
{{ end }}

0 commit comments

Comments
 (0)