From 49ed422498205ed8d3adf95df4e2044428501bdf Mon Sep 17 00:00:00 2001 From: Carl Pearson Date: Thu, 17 Oct 2024 13:56:36 -0600 Subject: [PATCH 1/8] Initial 2025 site, mostly a copy of 2024 Signed-off-by: Carl Pearson --- 2025/.gitignore | 5 + 2025/_config.yml | 52 ++++++++ 2025/_includes/dates.html | 6 + 2025/_includes/instructions.html | 15 +++ 2025/_includes/journal.html | 4 + 2025/_layouts/default.html | 78 +++++++++++ 2025/cfp.html | 58 ++++++++ 2025/contact.html | 21 +++ 2025/index.html | 44 +++++++ 2025/organizers.html | 70 ++++++++++ 2025/pics/PhilippeTillet.jpeg | Bin 0 -> 45443 bytes 2025/pics/ipdps2025-logo-300.jpg | Bin 0 -> 19464 bytes 2025/program.html | 80 +++++++++++ 2025/reg.html | 12 ++ 2025/style/general.css | 219 +++++++++++++++++++++++++++++++ 2025/submission.html | 12 ++ Gemfile | 2 +- Gemfile.lock | 190 ++++++++++++++++++++------- README.md | 42 ++++++ maint/build.bash | 2 +- 20 files changed, 864 insertions(+), 48 deletions(-) create mode 100644 2025/.gitignore create mode 100644 2025/_config.yml create mode 100644 2025/_includes/dates.html create mode 100644 2025/_includes/instructions.html create mode 100644 2025/_includes/journal.html create mode 100644 2025/_layouts/default.html create mode 100644 2025/cfp.html create mode 100644 2025/contact.html create mode 100644 2025/index.html create mode 100644 2025/organizers.html create mode 100644 2025/pics/PhilippeTillet.jpeg create mode 100644 2025/pics/ipdps2025-logo-300.jpg create mode 100644 2025/program.html create mode 100644 2025/reg.html create mode 100644 2025/style/general.css create mode 100644 2025/submission.html diff --git a/2025/.gitignore b/2025/.gitignore new file mode 100644 index 0000000..f40fbd8 --- /dev/null +++ b/2025/.gitignore @@ -0,0 +1,5 @@ +_site +.sass-cache +.jekyll-cache +.jekyll-metadata +vendor diff --git a/2025/_config.yml b/2025/_config.yml new file mode 100644 index 0000000..5bd82ab --- /dev/null +++ b/2025/_config.yml @@ -0,0 +1,52 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. +# +# If you need help with YAML syntax, here are some quick references for you: +# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml +# https://learnxinyminutes.com/docs/yaml/ +# +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. + +title: AsHES 2025 Workshop +email: ashes@mcs.anl.gov +baseurl: "/2025" # the subpath of your site, e.g. /blog +url: "" # the base hostname & protocol for your site, e.g. http://example.com + +#twitter_username: jekyllrb +#github_username: jekyll + +# Build settings +#theme: minima +#plugins: +# - jekyll-feed + +# Exclude from processing. +# The following items will not be processed, by default. +# Any item listed under the `exclude:` key here will be automatically added to +# the internal "default list". +# +# Excluded items can be processed by explicitly listing the directories or +# their entries' file path in the `include:` list. +# +# exclude: +# - .sass-cache/ +# - .jekyll-cache/ +# - gemfiles/ +# - Gemfile +# - Gemfile.lock +# - node_modules/ +# - vendor/bundle/ +# - vendor/cache/ +# - vendor/gems/ +# - vendor/ruby/ diff --git a/2025/_includes/dates.html b/2025/_includes/dates.html new file mode 100644 index 0000000..eebb89c --- /dev/null +++ b/2025/_includes/dates.html @@ -0,0 +1,6 @@ +

Important Dates (AoE)

+
+

Paper Submission: TBD

+

Paper Notification: TBD

+

Camera-ready Deadline: TBD

+
diff --git a/2025/_includes/instructions.html b/2025/_includes/instructions.html new file mode 100644 index 0000000..04e9525 --- /dev/null +++ b/2025/_includes/instructions.html @@ -0,0 +1,15 @@ +

Papers Submission Instructions

+
+ +

Papers should present original research and should provide sufficient background material to make them accessible to the broader community.

+ +

Regular paper track submitted manuscripts may not exceed 10 single-spaced double-column pages using 10-point size font on 8.5x11 inch pages (IEEE conference style), including figures, tables, and references. See the style templates for latex or word for details.

+ +

Short paper track submitted manuscripts follow the same instructions as the regular manuscript but may not exceed 4 pages.

+ +

Submissions will be judged based on relevance, significance, originality, correctness, and clarity.

+ +

Submission site: https://easychair.org/conferences/?conf=ashes2024

+ +
+ diff --git a/2025/_includes/journal.html b/2025/_includes/journal.html new file mode 100644 index 0000000..37c948c --- /dev/null +++ b/2025/_includes/journal.html @@ -0,0 +1,4 @@ +

Journal Special Issue

+
+

TBD

+
diff --git a/2025/_layouts/default.html b/2025/_layouts/default.html new file mode 100644 index 0000000..619c455 --- /dev/null +++ b/2025/_layouts/default.html @@ -0,0 +1,78 @@ + + + + + + {{ page.title }} + + + +
+ +
+
+ + + + + + + + + +
+
+ The Fifteenth International Workshop on +
Accelerators and Hybrid Emerging Systems +
(AsHES) +
+
+ +
+
To be held in conjunction with +
39th IEEE International Parallel and Distributed Processing Symposium +
Milan, Italy +
Date TBD, 2025
+
+
+

+ +
+
+ + {{ content }} + + +
+ + diff --git a/2025/cfp.html b/2025/cfp.html new file mode 100644 index 0000000..6fbaa52 --- /dev/null +++ b/2025/cfp.html @@ -0,0 +1,58 @@ +--- +layout: default +title: AsHES Workshop +--- +
Under Constrution
+
+

Workshop Scope and Goals

+
+ +

The current computing landscape has witnessed a rapid and ongoing surge of change and innovation. This change has been driven by the relentless need to improve the energy-efficiency, memory, and computational throughput across all levels of the architectural hierarchy. The mounting volume of data that today's systems need to organize poses new challenges to the architecture, which can no longer be solved with classical, homogeneous designs. Advancements in all these areas have led Heterogeneous systems to become the norm rather than the exception.

+ +

Heterogeneous computing leverages a diverse set of computing (CPU, GPU, FPGA, TPU, DPU, etc.) and Memory (HBM, Persistent Memory, Coherent PCI protocols, etc.), hierarchical systems, and units to accelerate the execution of a diverse set of applications. Emerging and existing areas such as AI, BigData, Cloud Computing, Edge-Computing, Real-time systems, High-Performance Computing, and others have seen a real benefit due to Heterogeneous computer architectures. In addition, a new wave of accelerators based on dataflow architecture instead of the traditional von Neumann is sure to bring additional challenges and opportunities.

+ +

These new heterogeneous architectures often also require the development of new applications and programming models, to satisfy these new architectures and to fully utilize their capabilities. This workshop focuses on understanding the implications of heterogeneous designs at all levels of the computing system stack, such as hardware, compiler optimizations, porting of applications, and developing programming environments for current and emerging systems in all the above-mentioned areas. It seeks to ground heterogeneous system design research through studies of application kernels and/or whole applications, as well as shed light on new tools, libraries, and runtime systems that improve the performance and productivity of applications on heterogeneous systems.

+ +

The goal of this workshop is to bring together researchers and practitioners who are at the forefront of Heterogeneous computing to learn the opportunities and challenges in future Heterogeneous system design trends and thus help influence the next trends in this area.

+ + +

Topics of interest include (but are not limited to):

+
    +
  • Applications for GPU-based systems, and hybrid/heterogeneous systems
  • +
  • Techniques for optimizing kernels for execution on GPUs, FPGAs, TPUs, DPUs, and new emerging heterogeneous platforms
  • +
  • Strategies for programming heterogeneous systems using high-level models such as OpenMP, OpenACC, SYCL, OneAPI, Kokkos, Raja, and low-level models such as OpenCL, CUDA
  • +
  • Methods and tools to tackle challenges from heterogeneity in AI/ML/DL, Big Data, Cloud Computing, Edge-Computing, Real-time Systems, and High-Performance Computing
  • +
  • Strategies for application behavior characterization and performance optimization for accelerators
  • +
  • Models of application performance on heterogeneous and accelerated HPC systems
  • +
  • Compiler Optimizations and tuning heterogeneous systems including parallelization, loop transformation, locality optimizations, vectorization
  • +
  • Implications of workload characterization in heterogeneous and accelerated architecture design
  • +
  • Benchmarking and performance evaluation for heterogeneous systems at all levels of the system stack
  • +
  • Tools and techniques to address both performance and correctness to assist application development for accelerators and heterogeneous processors
  • +
  • System software techniques to abstract application domain-specific functionalities for accelerators
  • +
  • Innovative use of heterogeneous computing in AI for science or optimizations for AI
  • +
  • Design and use of domain-specific functionalities on accelerators
  • +
+ +

Paper Tracks:

+ +

There are two paper tracks available for AsHES’24:

+
    +
  • 1) Full paper track (8 - 10 pages) including citations;
  • +
  • 2) Short paper track (maximum of 4 pages) including citations; meant to highlight early investigations of innovative ideas.
  • +
+ +

Submitted papers will undergo a single-blind review process, so the authors do not need to anonymize a submission.

+ +
+ +{% include dates.html %} + +

Proceedings

+
+ The proceedings of this workshop will be published electronically together with IPDPS proceedings via the IEEE Xplore Digital Library. Instructions for authors can be found on the IPDPS 2024 webpage. +
+ +{% include instructions.html %} +{% include journal.html %} + +
diff --git a/2025/contact.html b/2025/contact.html new file mode 100644 index 0000000..d0b09ac --- /dev/null +++ b/2025/contact.html @@ -0,0 +1,21 @@ +--- +layout: default +title: AsHES Workshop +--- +
Under Constrution
+
+ +

Contact Address

+
+

Please send any queries about the AsHES workshop + to ashes@mcs.anl.gov

+
+ +

Mailing Lists

+
+

To hear announcements about AsHES, please subscribe to the + announcement mailing + list here.

+
+ +
diff --git a/2025/index.html b/2025/index.html new file mode 100644 index 0000000..a5238cf --- /dev/null +++ b/2025/index.html @@ -0,0 +1,44 @@ +--- +layout: default +title: AsHES Workshop 2025 +--- + +
+

DESCRIPTION OF THE WORKSHOP

+
+ IPDPS 2025 Logo + +

The development of ever larger and more energy-efficient computer systems in recent years has led to more and more systems with heterogeneous computing units (CPUs, GPUs or FPGAS) and systems with heterogeneous storage systems (High Memory Bandwidth). With the rise of persistent memory, attached to the PCIe bus or to the memory DIMMs, the border between storage and memory becomes more and more fluid. Other systems offer different types of compute nodes, so that a group of nodes build the accelerator (modular supercomputing). Hierarchical storage architectures, for example using burst buffers, try to overcome the IO problems. Programming such a system can be a real challenge along with locality, scheduling, load balancing, concurrency and so on.

+ +

This workshop focuses on understanding the implications of accelerators and heterogeneous designs on the hardware systems, porting applications, performing compiler optimizations, and developing programming environments for current and emerging systems. It seeks to ground accelerator research through studies of application kernels or whole applications on such systems, as well as tools and libraries and runtime systems that improve the performance and productivity of applications on these systems.

+ +

The goal of this workshop is to bring together researchers and practitioners who are involved in application studies for accelerators and other heterogeneous systems, to learn the opportunities and challenges in future design trends for HPC applications and systems.

+ +
+
+ {% include dates.html %} +
+ {% include journal.html %} +
+ +

Previous Workshops

+
+

AsHES 2024 in San Fransisco, California, USA

+

AsHES 2023 in St.Petersburg, Florida, USA

+

AsHES 2022 Virtual

+

AsHES 2021 Virtual

+

AsHES 2020 in New Orleans, USA

+

AsHES 2019 in Rio de Janeiro, Brazil

+

AsHES 2018 in Vancouver, Canada

+

AsHES 2017 in Orlando, USA

+

AsHES 2016 in Chicago, USA

+

AsHES 2015, + PLC 2015 in Hyderabad, India

+

AsHES 2014, + PLC 2014 in Phoenix, USA

+

AsHES 2013, + PLC 2013 in Boston, USA

+

AsHES 2012 in Shanghai, China

+

CACHES 2011 in Tucson, Arizona

+
+
diff --git a/2025/organizers.html b/2025/organizers.html new file mode 100644 index 0000000..83c42fa --- /dev/null +++ b/2025/organizers.html @@ -0,0 +1,70 @@ +--- +layout: default +title: AsHES Workshop +--- +
Under Constrution
+
+ +

Steering Committee

+
+

Pavan Balaji, Meta AI, USA

+

Yunquan Zhang, Chinese Academy of Sciences, China

+

Satoshi Matsuoka, RIKEN CCS, Japan

+

Jiayuan Meng, Argonne National Laboratory, USA

+

Xiaosong Ma, Qatar Computing Research Institute, Qatar

+

Barbara Chapman, Stony Brook University, USA

+

Guang R. Gao, University of Delaware, USA

+

Xinmin Tian, Intel, USA

+

Michael Wong, Codeplay, UK

+

James Dinan, NVIDIA, USA

+

Sunita Chandrasekaran, University of Delaware, USA

+

Antonio J. Peña, Barcelona Supercomputing Center (BSC), Spain

+

Min Si, Meta AI, USA

+

Lena Oden, FernUni Hagen, Germany

+

Simon Garcia de Gonzalo, Sandia National Laboratories, USA

+
+ +

General Chair

+
+

Shintaro Iwasaki, Meta AI, USA

+
+ +

Program Co-Chairs

+
+

Nikela Papadopoulou, University of Glasgow, UK

+

Carl Pearson, Sandia National Laboratories, USA

+
+ +

Web & Publicity Chair

+
+

Chloe Alverti, UIUC, USA

+
+ +

Technical Program Committee

+
+

Eishi Arima, Technical University of Munich, Germany

+

Paul F Baumeister, Forschungszentrum Julich GmbH, Germany

+

Rocio Carratala-Saez, Universidad de Valladolid, Spain

+

Adrian Castello, Universitat Politècnica de València, Spain

+

Ching-Hsiang Chu, Meta, USA

+

Christina Giannoula, University of Toronto, Canada

+

Bhavishya Goel, Chalmers University of Technology, Sweden

+

Juan Gomez-Luna, ETH Zurich, Switzerland

+

Gaurav Mitra, Meta, USA

+

Hiroyuki Ootomo, NVIDIA, USA

+

Guray Ozen, Google, USA

+

Sarunya Pumma, Meta

+

Michael Robson, Smith College, USA

+

Leonardo Solis-Vasquez, Technical University of Darmstadt, Germany

+

Pedro Valero-Lara, Oak Ridge National Laboratory, USA

+

Kun Wu, University of Illinois at Urbana-Champaign, USA

+

Felix Zahn, Max-Planck Institute, Germany

+
+ + +
diff --git a/2025/pics/PhilippeTillet.jpeg b/2025/pics/PhilippeTillet.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..ece293b91d5657ebd4ed5504e43d1a42314fbbb2 GIT binary patch literal 45443 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�$!&qna(Qeck|9#>@{p>XR8Sh6DEfKW|pwr$P90p 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%0AWup&p#KIny~NN^ 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 Constrution +
+
+

Opening Remarks

+

10:30 am - 10:40 am

+ +

Session 1: High-Performance Computing

+

10:40 am - 12:00 pm

+

Session Chair: Shintaro Iwasaki, Meta

+
    +
  • + 10:40 am - 11:00 am
    + Performance Versus Maintainability: A Case Study of Scream on Frontier
    + James White +
  • +
  • + 11:00 am - 11:30 am
    + ParaGraph: Weighted Graph Representation for Performance Optimization of HPC Kernels
    + Ali Tehranijamsaz, Alok Mishra, Akash Dutta, Abid M. Malik, Barbara Chapman, and Ali Jannesari +
  • +
  • + 11:30 am - 12:00 pm
    + Alternative Quadrant Representations with Morton Index and AVX2 Vectorization for AMR Algorithms within the p4rest Software Library
    + Mikhail Kirilin and Carsten Burstedde +
  • +
+ +

Lunch Break

+

12:00 pm - 1:00 pm

+
    +
  • + Lunch will not be provided by the conference. +
  • +
+ +

Keynote

+

1:00 pm - 2:00 pm

+

Block-based GPU Programming with Triton

+

Philippe Tillet, OpenAI

+

Abstract: + Philippe Tillet + Traditional single instruction, multiple threads (SIMT) programming with CUDA can be daunting to machine learning researchers in need of fast custom kernels. This can significantly slow down the evaluation of novel research ideas that cannot be neatly decomposed into a set of pre-built, vendor-optimized primitives. In this talk, we will shed light on an alternative programming model which -- while relatively high-level -- aims to be more expressive than common graph-compilers (e.g., XLA, Torch-Inductor) and enable the use of custom data-structures (e.g., linked list, block-sparse tensors, etc.). We will specifically discuss the design and implementation of Triton, a mid-level programming language that uses block-based abstractions to simplify kernel development for researchers without deep GPU programming expertise. +

+

Bio: + Philippe Tillet first began working with GPUs in 2011 as a contributor to the ViennaCL library. He then received his B.S. from Telecom SudParis (France) in 2012, his M.S. from NCTU (Taiwan) in 2014, and his Ph.D. from Harvard University in 2020. He joined OpenAI full time in 2020 to pursue his work on the Triton compiler — a project he started in 2018 after being frustrated by the difficulty of writing auto-tuners for matrix multiplications in CUDA. Since then, he grew the Triton language into a reference for block-based programming model, and used it to write all the training kernels that were used by GPT4. +

+ +

Session 2: Accelerating AI/ML Workloads

+

2:00 pm - 3:10 pm

+

Session Chair: Carl Pearson, Sandia National Laboratories

+
    +
  • + 2:00 pm - 2:30 pm
    + Avoiding Training in the Platform-Aware Optimization Process for Faster DNN Latency Reduction
    + Raúl Marichal, Ernesto Dufrechou, and Pablo Ezzatti +
  • +
  • + 2:30 pm - 2:50 pm
    + A Comparative Study on Simulation Frameworks for AI Accelerator Evaluation
    + Christoffer Åleskog, Håkan Grahn, and Anton Borg +
  • +
  • + 2:50 pm - 3:10 pm
    + Extending the SYCL Joint Matrix for Binarized Neural Networks
    + Zheming Jin +
  • +
+ +

Closing Remarks

+

3:10 pm - 3:20 pm

+ +

Presentation

+ All presentations will be in-person. + Presenters are expected to target 25 minutes (full papers) or 15 minutes (short papers) for the talks with 5 minutes for questions. +
+
diff --git a/2025/reg.html b/2025/reg.html new file mode 100644 index 0000000..c95c6fb --- /dev/null +++ b/2025/reg.html @@ -0,0 +1,12 @@ +--- +layout: default +title: AsHES Workshop +--- + +
+

Workshop Registration

+
+

The AsHES workshop does not have a separate registration. All attendees need to register with the main +conference. Details can be found on the conference website.

+
+
diff --git a/2025/style/general.css b/2025/style/general.css new file mode 100644 index 0000000..c8567eb --- /dev/null +++ b/2025/style/general.css @@ -0,0 +1,219 @@ +/* Generic Settings */ +body { + font-family: Verdana, Arial, Helvetica, sans-serif; + color: #000000; + font-size: 13px; + text-align: justify; + background-color:#fff; + background-position: left top; +} + +div.midBox1 { + margin: 20px 8px 10px 8px; + padding: 8px 8px 0px 10px; +} + +img { + margin-top: 0px; + margin-bottom: 0px; + margin-right: 20px; + margin-left: 0px; +} + +img.right { + margin-top: 0px; + margin-bottom: 10px; + margin-right: 0px; + margin-left: 20px; +} + +h1 { + font-size: 14px; + color: white; + + /* 2024 color */ + background-color: #31328b; + + margin: 20px 0px 10px 0px; + padding: 8px 0px 0px 10px; + height: 25px; +} + +h2 { + font-size: 14px; + color: #FFF; + background-color:rgb(103, 107, 104); + margin: 20px 0px 10px 0px; + padding: 8px 0px 0px 10px; + height: 25px; +} + +h3 { + font-size: 14px; + padding-left: 8px; +} + +h4 { + padding-left: 8px; + font-weight: normal; +} + +li { + line-height:22px; + text-align:justify; +} + +p { + line-height:19px; +} + +a { + color:#E96F35; +} + +bold { + font-weight: bold; +} + + +/* Frames for content */ + +#main-frame { + width:1100px; + margin:auto; + background-color:white; + font-size:14px; +} + +#sub-frame { + width:968px; + margin:auto; + background-color:white; +} + + +/* Top-level title */ + +#title { + color:white; + margin: 8px 0px 8px 0px; + padding:0px; + line-height:30px; + font-size:20px; + font-weight:bold; + text-align:center; +} + +#subtitle { + color:white; + margin:8px 0px 8px 0px; + padding:0px; + line-height:30px; + font-size:12px; + font-weight: bold; + text-align:center; +} + +#subsubtitle { + color:black; + line-height:18px; + font-size:14px; + font-weight:bold; + text-align:center; +} + +#heading { + background-image: url(../pics/ipdps2025-logo-300.jpg); + background-position: 3% 40%; + background-repeat: no-repeat; + background-size: 25%; + + /* 2024 color */ + background-color: #31328b; +} + + +/* Top navigation bar */ + +#topnavigation { + height:35px; + + /* 2024 color */ + background-color: #c3584e; + + color:#ffffff; + font-size:12px; + line-height:18px; +} + +#topnavigation li { + list-style:none; + float:left; + text-align:center; +} + +#topnavigation a { + display:block; + text-decoration:none; + color:#ffffff; + padding:6px 35px 6px 35px; +} + +#topnavigation a:hover { + background-color:#754255; +} + +#topnavigation .rborder { + border-right:1px solid #754255; +} + +#topnavigation .lborder { + border-left:1px solid #754255; +} + + +/* Bottom navigation bar */ + +#bottomnavigation { + clear:both; + height:24px; + + /* 2024 color */ + background-color: #31328b; + + color:#fff; + text-align:center; + line-height:24px; +} + +#bottomnavigation a { + color:#fff; + text-decoration:none; +} + + +/* Generic description */ + +#description { + width:900px; + margin:auto; +} + + +/* Bottom copyright */ + +#copyright p { + text-align: center; + padding:0px 0px 10px 14px; +} + +/* Links */ +a { + color: #5672C1; + text-decoration: none; +} + +a:hover { + color: #445C88; + text-decoration: underline; +} diff --git a/2025/submission.html b/2025/submission.html new file mode 100644 index 0000000..ab577ea --- /dev/null +++ b/2025/submission.html @@ -0,0 +1,12 @@ +--- +layout: default +title: AsHES Workshop +--- +
Under Constrution
+
+ + {% include instructions.html %} + +
+ + diff --git a/Gemfile b/Gemfile index 4f78efa..3c83f5c 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ source "https://rubygems.org" # # This will help ensure the proper Jekyll version is running. # Happy Jekylling! -gem "jekyll", "~> 4.1.1" +gem "jekyll", "~> 4.3.4" # This is the default theme for new Jekyll sites. You may change this to anything you like. # gem "minima", "~> 2.5" # If you want to use GitHub Pages, remove the "gem "jekyll"" above and diff --git a/Gemfile.lock b/Gemfile.lock index 43cdcb3..9bae56c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,88 +1,186 @@ GEM remote: https://rubygems.org/ specs: - addressable (2.7.0) - public_suffix (>= 2.0.2, < 5.0) + Ascii85 (1.1.1) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + afm (0.2.2) + async (2.17.0) + console (~> 1.26) + fiber-annotation + io-event (~> 1.6, >= 1.6.5) + bigdecimal (3.1.8) colorator (1.1.0) - concurrent-ruby (1.1.7) - em-websocket (0.5.2) + concurrent-ruby (1.3.4) + console (1.27.0) + fiber-annotation + fiber-local (~> 1.1) + json + em-websocket (0.5.3) eventmachine (>= 0.12.9) - http_parser.rb (~> 0.6.0) - ethon (0.12.0) - ffi (>= 1.3.0) + http_parser.rb (~> 0) + ethon (0.16.0) + ffi (>= 1.15.0) eventmachine (1.2.7) - ffi (1.13.1) + ffi (1.17.0-aarch64-linux-gnu) + ffi (1.17.0-aarch64-linux-musl) + ffi (1.17.0-arm-linux-gnu) + ffi (1.17.0-arm-linux-musl) + ffi (1.17.0-arm64-darwin) + ffi (1.17.0-x86-linux-gnu) + ffi (1.17.0-x86-linux-musl) + ffi (1.17.0-x86_64-darwin) + ffi (1.17.0-x86_64-linux-gnu) + ffi (1.17.0-x86_64-linux-musl) + fiber-annotation (0.2.0) + fiber-local (1.1.0) + fiber-storage + fiber-storage (1.0.0) forwardable-extended (2.6.0) - html-proofer (3.16.0) + google-protobuf (4.28.2) + bigdecimal + rake (>= 13) + google-protobuf (4.28.2-aarch64-linux) + bigdecimal + rake (>= 13) + google-protobuf (4.28.2-arm64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.28.2-x86-linux) + bigdecimal + rake (>= 13) + google-protobuf (4.28.2-x86_64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.28.2-x86_64-linux) + bigdecimal + rake (>= 13) + hashery (2.1.2) + html-proofer (5.0.9) addressable (~> 2.3) - mercenary (~> 0.3) - nokogumbo (~> 2.0) - parallel (~> 1.3) + async (~> 2.1) + nokogiri (~> 1.13) + pdf-reader (~> 2.11) rainbow (~> 3.0) typhoeus (~> 1.3) yell (~> 2.0) - http_parser.rb (0.6.0) - i18n (1.8.5) + zeitwerk (~> 2.5) + http_parser.rb (0.8.0) + i18n (1.14.6) concurrent-ruby (~> 1.0) - jekyll (4.1.1) + io-event (1.7.2) + jekyll (4.3.4) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) i18n (~> 1.0) - jekyll-sass-converter (~> 2.0) + jekyll-sass-converter (>= 2.0, < 4.0) jekyll-watch (~> 2.0) - kramdown (~> 2.1) + kramdown (~> 2.3, >= 2.3.1) kramdown-parser-gfm (~> 1.0) liquid (~> 4.0) - mercenary (~> 0.4.0) + mercenary (>= 0.3.6, < 0.5) pathutil (~> 0.9) - rouge (~> 3.0) + rouge (>= 3.0, < 5.0) safe_yaml (~> 1.0) - terminal-table (~> 1.8) - jekyll-sass-converter (2.1.0) - sassc (> 2.0.1, < 3.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-sass-converter (3.0.0) + sass-embedded (~> 1.54) jekyll-watch (2.2.1) listen (~> 3.0) - kramdown (2.3.0) + json (2.7.2) + kramdown (2.4.0) rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) - liquid (4.0.3) - listen (3.2.1) + liquid (4.0.4) + listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.4.0) - mini_portile2 (2.4.0) - nokogiri (1.10.10) - mini_portile2 (~> 2.4.0) - nokogumbo (2.0.2) - nokogiri (~> 1.8, >= 1.8.4) - parallel (1.19.2) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-arm-linux) + racc (~> 1.4) + nokogiri (1.16.7-arm64-darwin) + racc (~> 1.4) + nokogiri (1.16.7-x86-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (4.0.6) - rainbow (3.0.0) - rb-fsevent (0.10.4) - rb-inotify (0.10.1) + pdf-reader (2.12.0) + Ascii85 (~> 1.0) + afm (~> 0.2.1) + hashery (~> 2.0) + ruby-rc4 + ttfunk + public_suffix (6.0.1) + racc (1.8.1) + rainbow (3.1.1) + rake (13.2.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) ffi (~> 1.0) - rexml (3.2.4) - rouge (3.24.0) + rexml (3.3.8) + rouge (4.4.0) + ruby-rc4 (0.1.5) safe_yaml (1.0.5) - sassc (2.4.0) - ffi (~> 1.9) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) - typhoeus (1.4.0) + sass-embedded (1.80.1-aarch64-linux-gnu) + google-protobuf (~> 4.28) + sass-embedded (1.80.1-aarch64-linux-musl) + google-protobuf (~> 4.28) + sass-embedded (1.80.1-arm-linux-gnueabihf) + google-protobuf (~> 4.28) + sass-embedded (1.80.1-arm-linux-musleabihf) + google-protobuf (~> 4.28) + sass-embedded (1.80.1-arm64-darwin) + google-protobuf (~> 4.28) + sass-embedded (1.80.1-x86-linux-gnu) + google-protobuf (~> 4.28) + sass-embedded (1.80.1-x86-linux-musl) + google-protobuf (~> 4.28) + sass-embedded (1.80.1-x86_64-darwin) + google-protobuf (~> 4.28) + sass-embedded (1.80.1-x86_64-linux-gnu) + google-protobuf (~> 4.28) + sass-embedded (1.80.1-x86_64-linux-musl) + google-protobuf (~> 4.28) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + ttfunk (1.8.0) + bigdecimal (~> 3.1) + typhoeus (1.4.1) ethon (>= 0.9.0) - unicode-display_width (1.7.0) + unicode-display_width (2.6.0) + webrick (1.8.2) yell (2.2.2) + zeitwerk (2.7.0) PLATFORMS - ruby + aarch64-linux + aarch64-linux-gnu + aarch64-linux-musl + arm-linux + arm-linux-gnu + arm-linux-gnueabihf + arm-linux-musl + arm-linux-musleabihf + arm64-darwin + x86-linux + x86-linux-gnu + x86-linux-musl + x86_64-darwin + x86_64-linux-gnu + x86_64-linux-musl DEPENDENCIES html-proofer - jekyll (~> 4.1.1) + jekyll (~> 4.3.4) BUNDLED WITH - 2.1.4 + 2.5.22 diff --git a/README.md b/README.md index 1a133b3..2901ab0 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,46 @@ If you need permisison to access [gitlab](https://gitlab.com/pmodels/websites/as ## How to Modify The following steps use the 2021 edition as the example. +This is a Jekyll site, so you need ruby. + +### Setting up a ruby environment (Ubuntu 22.04 LTS) + +```bash +git clone https://github.com/rbenv/rbenv.git ~/.rbenv + +# This will modify your .bashrc! +~/.rbenv/bin/rbenv init +``` + +get a new shell so rbenv works + +```bash +# install this plugin so `rbenv install` works +git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build + +# install prerequisite build libraries +apt-get install autoconf patch build-essential rustc libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev uuid-dev + +#install a ruby +rbenv install 3.3.5 + +# set the ruby to be the one used for this project +rbenv local 3.3.5 +``` + +get a new shell + +```bash +ruby --version + +# this may give an error about things not being installed. Follow the directions to install the missing packages +cd 2025 +bundle exec jekyll serve +``` + +navigate to localhost:4000/2025/index.html in your browser and you should see the site + +### Getting Jekyll - `git clone git@github.com:pmodels/ashes-www.git ashes-www/` - Follow **quickstart** at https://jekyllrb.com/docs/ to create a local Jekyll environment under `ashes-www/2021` @@ -24,3 +64,5 @@ at [./maint/build.bash](https://github.com/pmodels/ashes-www/blob/master/maint/b and builds the static html files for each of them. For every newly added subsite, please add the folder name in `build.bash`. + +## Setting \ No newline at end of file diff --git a/maint/build.bash b/maint/build.bash index 8b53aaf..77b0050 100755 --- a/maint/build.bash +++ b/maint/build.bash @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -e # halt script on error -subsites="2021 2022 2023 2024" +subsites="2021 2022 2023 2024 2025" maindest=./_site rm -rf $maindest From fb06fae9551e78594ae458518073c401f0cff374 Mon Sep 17 00:00:00 2001 From: Carl Pearson Date: Thu, 17 Oct 2024 14:01:06 -0600 Subject: [PATCH 2/8] ci: update deploy to ruby 3.3 Signed-off-by: Carl Pearson --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 85f82eb..4c16fc4 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -27,7 +27,7 @@ jobs: uses: ruby/setup-ruby@v1 # uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0 with: - ruby-version: 2.6 + ruby-version: 3.3 - name: Install dependencies run: bundle install From 5af71f7e766095bb5935e041d2f43aefedc3e8b4 Mon Sep 17 00:00:00 2001 From: Carl Pearson Date: Thu, 17 Oct 2024 14:01:25 -0600 Subject: [PATCH 3/8] ci: use actions/checkout@v4 Signed-off-by: Carl Pearson --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 4c16fc4..eedaee1 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Set up Ruby # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby, From 54b43bd910a8c5c5c7b88851265778de9cf84fe8 Mon Sep 17 00:00:00 2001 From: Carl Pearson Date: Thu, 17 Oct 2024 14:01:42 -0600 Subject: [PATCH 4/8] ci: only deploy from master Signed-off-by: Carl Pearson --- .github/workflows/deploy.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index eedaee1..9706c69 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -39,6 +39,7 @@ jobs: uses: rlespinasse/git-commit-data-action@v1.x - name: Deploy site + if: github.ref == 'refs/heads/master' uses: JamesIves/github-pages-deploy-action@3.7.1 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 137704779eb76fccf4c9b00b3d76c91908415154 Mon Sep 17 00:00:00 2001 From: Carl Pearson Date: Thu, 17 Oct 2024 14:08:41 -0600 Subject: [PATCH 5/8] _config.yml: ignore 2025 Signed-off-by: Carl Pearson --- _config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/_config.yml b/_config.yml index e4a0282..e60d241 100644 --- a/_config.yml +++ b/_config.yml @@ -56,6 +56,7 @@ exclude: - 2022/ - 2023/ - 2024/ + - 2025/ - maint/ - README.md - index.html From f75ca3f7b9af9dbb61911400cb730fe036304d27 Mon Sep 17 00:00:00 2001 From: Carl Pearson Date: Thu, 17 Oct 2024 14:16:38 -0600 Subject: [PATCH 6/8] remove empty anchor Signed-off-by: Carl Pearson --- 2024/organizers.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2024/organizers.html b/2024/organizers.html index 87ae6da..85daea0 100644 --- a/2024/organizers.html +++ b/2024/organizers.html @@ -53,7 +53,7 @@

Technical Program Committee

Gaurav Mitra, Meta, USA

Hiroyuki Ootomo, NVIDIA, USA

Guray Ozen, Google, USA

-

Sarunya Pumma, Meta

+

Sarunya Pumma, Meta

Michael Robson, Smith College, USA

Leonardo Solis-Vasquez, Technical University of Darmstadt, Germany

Pedro Valero-Lara, Oak Ridge National Laboratory, USA

From bf9d3969c02bf51fff6b7c80096e51b76157226c Mon Sep 17 00:00:00 2001 From: Carl Pearson Date: Thu, 17 Oct 2024 14:16:47 -0600 Subject: [PATCH 7/8] remove empty anchor Signed-off-by: Carl Pearson --- 2025/organizers.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2025/organizers.html b/2025/organizers.html index 83c42fa..4f01c20 100644 --- a/2025/organizers.html +++ b/2025/organizers.html @@ -53,7 +53,7 @@

Technical Program Committee

Gaurav Mitra, Meta, USA

Hiroyuki Ootomo, NVIDIA, USA

Guray Ozen, Google, USA

-

Sarunya Pumma, Meta

+

Sarunya Pumma, Meta

Michael Robson, Smith College, USA

Leonardo Solis-Vasquez, Technical University of Darmstadt, Germany

Pedro Valero-Lara, Oak Ridge National Laboratory, USA

From 83e14049a58ee7486c9de6f21d2e73f095aadbbc Mon Sep 17 00:00:00 2001 From: Carl Pearson Date: Thu, 17 Oct 2024 14:17:05 -0600 Subject: [PATCH 8/8] don't require HTTPS links Signed-off-by: Carl Pearson --- maint/build.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maint/build.bash b/maint/build.bash index 77b0050..1f0218c 100755 --- a/maint/build.bash +++ b/maint/build.bash @@ -17,4 +17,4 @@ for ss in $subsites; do popd cp -rf $ss/_site/* $subdest done -bundle exec htmlproofer $maindest --disable-external +bundle exec htmlproofer $maindest --disable-external --no-enforce_https