From 29d224c73aa6c9dbf56a955323e446f18932c21a Mon Sep 17 00:00:00 2001 From: Christian Legnitto Date: Wed, 20 Nov 2024 21:01:59 -0400 Subject: [PATCH] Remove "simd" from tiling_2d_simd --- .../2024-11-21-optimizing-matrix-mul/code/Cargo.lock | 6 +++--- .../2024-11-21-optimizing-matrix-mul/code/Cargo.toml | 5 +++-- .../code/benches/gpu_bench.rs | 12 +++--------- .../code/bin/blog/src/bin.rs | 2 +- .../crates/cpu/compiled_for_gpu/isomorphic/build.rs | 2 +- .../{tiling_2d_simd => tiling_2d}/Cargo.toml | 2 +- .../{tiling_2d_simd => tiling_2d}/build.rs | 2 +- .../{tiling_2d_simd => tiling_2d}/src/lib.rs | 0 .../code/crates/cpu/matmul/Cargo.toml | 2 +- .../code/crates/cpu/matmul/src/lib.rs | 2 +- .../code/crates/cpu/matmul/src/variants.rs | 4 ++-- .../gpu/{tiling_2d_simd => tiling_2d}/Cargo.lock | 0 .../gpu/{tiling_2d_simd => tiling_2d}/Cargo.toml | 2 +- .../gpu/{tiling_2d_simd => tiling_2d}/src/lib.rs | 0 blog/2024-11-21-optimizing-matrix-mul/index.md | 2 +- .../snippets/{tiling_2d_simd.tsx => tiling_2d.tsx} | 2 +- 16 files changed, 20 insertions(+), 25 deletions(-) rename blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/{tiling_2d_simd => tiling_2d}/Cargo.toml (86%) rename blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/{tiling_2d_simd => tiling_2d}/build.rs (94%) rename blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/{tiling_2d_simd => tiling_2d}/src/lib.rs (100%) rename blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/{tiling_2d_simd => tiling_2d}/Cargo.lock (100%) rename blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/{tiling_2d_simd => tiling_2d}/Cargo.toml (87%) rename blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/{tiling_2d_simd => tiling_2d}/src/lib.rs (100%) rename blog/2024-11-21-optimizing-matrix-mul/snippets/{tiling_2d_simd.tsx => tiling_2d.tsx} (92%) diff --git a/blog/2024-11-21-optimizing-matrix-mul/code/Cargo.lock b/blog/2024-11-21-optimizing-matrix-mul/code/Cargo.lock index c42f6f1..efb5fd6 100644 --- a/blog/2024-11-21-optimizing-matrix-mul/code/Cargo.lock +++ b/blog/2024-11-21-optimizing-matrix-mul/code/Cargo.lock @@ -303,7 +303,7 @@ dependencies = [ ] [[package]] -name = "compiled_tiling_2d_simd" +name = "compiled_tiling_2d" version = "0.1.0" dependencies = [ "spirv-builder", @@ -942,7 +942,7 @@ dependencies = [ "compiled_naive", "compiled_tiling_1d", "compiled_tiling_1d_loop", - "compiled_tiling_2d_simd", + "compiled_tiling_2d", "compiled_workgroup_256", "compiled_workgroup_2d", "futures", @@ -1676,7 +1676,7 @@ dependencies = [ ] [[package]] -name = "tiling_2d_simd" +name = "tiling_2d" version = "0.1.0" dependencies = [ "settings", diff --git a/blog/2024-11-21-optimizing-matrix-mul/code/Cargo.toml b/blog/2024-11-21-optimizing-matrix-mul/code/Cargo.toml index f519f31..8f8a0ac 100644 --- a/blog/2024-11-21-optimizing-matrix-mul/code/Cargo.toml +++ b/blog/2024-11-21-optimizing-matrix-mul/code/Cargo.toml @@ -9,7 +9,7 @@ members = [ "crates/gpu/workgroup_2d", "crates/gpu/tiling_1d", "crates/gpu/tiling_1d_loop", - "crates/gpu/tiling_2d_simd", + "crates/gpu/tiling_2d", # # ---- The rust code that runs both on the GPU and the CPU. ---- # It "knows" what platform it is being compiled for and can conditionally change @@ -31,7 +31,8 @@ members = [ "crates/cpu/compiled_for_gpu/workgroup_256", "crates/cpu/compiled_for_gpu/workgroup_2d", "crates/cpu/compiled_for_gpu/tiling_1d", - "crates/cpu/compiled_for_gpu/tiling_2d_simd", + "crates/cpu/compiled_for_gpu/tiling_1d_loop", + "crates/cpu/compiled_for_gpu/tiling_2d", "crates/cpu/compiled_for_gpu/isomorphic", # 3) A binary that runs on the CPU. It configures the `matmul` library on the CPU # and then tells it to run the matrix multiplication. diff --git a/blog/2024-11-21-optimizing-matrix-mul/code/benches/gpu_bench.rs b/blog/2024-11-21-optimizing-matrix-mul/code/benches/gpu_bench.rs index b109f1c..1f688f5 100644 --- a/blog/2024-11-21-optimizing-matrix-mul/code/benches/gpu_bench.rs +++ b/blog/2024-11-21-optimizing-matrix-mul/code/benches/gpu_bench.rs @@ -38,7 +38,7 @@ fn bench_all_variants(c: &mut Criterion) { let multiplier_workgroup_2d = matmul::workgroup_2d::wgpu(); let multiplier_tiling_1d = matmul::tiling_1d::wgpu(); let multiplier_tiling_1d_loop = matmul::tiling_1d_loop::wgpu(); - let multiplier_tiling_2d_simd = matmul::tiling_2d_simd::wgpu(); + let multiplier_tiling_2d = matmul::tiling_2d::wgpu(); let multiplier_isomorphic_gpu = matmul::isomorphic::wgpu(); for &(m, k, n) in SIZES { @@ -126,17 +126,11 @@ fn bench_all_variants(c: &mut Criterion) { ); group.bench_with_input( - BenchmarkId::new("tiling_2d_simd:wgpu", format!("{}x{}x{}", m, k, n)), + BenchmarkId::new("tiling_2d:wgpu", format!("{}x{}x{}", m, k, n)), &(m, k, n), |bench, &(m, k, n)| { bench.iter(|| { - black_box(multiplier_tiling_2d_simd.multiply( - black_box(&a), - black_box(&b), - m, - k, - n, - )) + black_box(multiplier_tiling_2d.multiply(black_box(&a), black_box(&b), m, k, n)) }); }, ); diff --git a/blog/2024-11-21-optimizing-matrix-mul/code/bin/blog/src/bin.rs b/blog/2024-11-21-optimizing-matrix-mul/code/bin/blog/src/bin.rs index 862bf9f..7f8f78f 100644 --- a/blog/2024-11-21-optimizing-matrix-mul/code/bin/blog/src/bin.rs +++ b/blog/2024-11-21-optimizing-matrix-mul/code/bin/blog/src/bin.rs @@ -32,7 +32,7 @@ fn main() { run_tests(matmul::workgroup_2d::wgpu(), &sizes); run_tests(matmul::tiling_1d::wgpu(), &sizes); run_tests(matmul::tiling_1d_loop::wgpu(), &sizes); - run_tests(matmul::tiling_2d_simd::wgpu(), &sizes); + run_tests(matmul::tiling_2d::wgpu(), &sizes); run_tests(matmul::isomorphic::wgpu(), &sizes); run_tests(matmul::isomorphic::cpu::single_threaded(), &sizes); diff --git a/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/isomorphic/build.rs b/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/isomorphic/build.rs index 4d016e8..8da04be 100644 --- a/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/isomorphic/build.rs +++ b/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/isomorphic/build.rs @@ -4,7 +4,7 @@ use std::fs; use std::path::{Path, PathBuf}; fn main() -> Result<(), Box> { - let gpu_crate_path = Path::new("../../../gpu/tiling_2d_simd"); + let gpu_crate_path = Path::new("../../../gpu/tiling_2d"); // Compile the shader crate with SpirvBuilder. let result = SpirvBuilder::new(gpu_crate_path, "spirv-unknown-vulkan1.2") diff --git a/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d_simd/Cargo.toml b/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d/Cargo.toml similarity index 86% rename from blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d_simd/Cargo.toml rename to blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d/Cargo.toml index 12809ac..16a96e6 100644 --- a/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d_simd/Cargo.toml +++ b/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "compiled_tiling_2d_simd" +name = "compiled_tiling_2d" version = "0.1.0" edition = "2021" diff --git a/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d_simd/build.rs b/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d/build.rs similarity index 94% rename from blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d_simd/build.rs rename to blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d/build.rs index 4d016e8..8da04be 100644 --- a/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d_simd/build.rs +++ b/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d/build.rs @@ -4,7 +4,7 @@ use std::fs; use std::path::{Path, PathBuf}; fn main() -> Result<(), Box> { - let gpu_crate_path = Path::new("../../../gpu/tiling_2d_simd"); + let gpu_crate_path = Path::new("../../../gpu/tiling_2d"); // Compile the shader crate with SpirvBuilder. let result = SpirvBuilder::new(gpu_crate_path, "spirv-unknown-vulkan1.2") diff --git a/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d_simd/src/lib.rs b/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d/src/lib.rs similarity index 100% rename from blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d_simd/src/lib.rs rename to blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/compiled_for_gpu/tiling_2d/src/lib.rs diff --git a/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/matmul/Cargo.toml b/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/matmul/Cargo.toml index ef79b6e..e4da59d 100644 --- a/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/matmul/Cargo.toml +++ b/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/matmul/Cargo.toml @@ -22,7 +22,7 @@ compiled_workgroup_256 = { path = "../compiled_for_gpu/workgroup_256" } compiled_workgroup_2d = { path = "../compiled_for_gpu/workgroup_2d" } compiled_tiling_1d = { path = "../compiled_for_gpu/tiling_1d" } compiled_tiling_1d_loop = { path = "../compiled_for_gpu/tiling_1d_loop" } -compiled_tiling_2d_simd = { path = "../compiled_for_gpu/tiling_2d_simd" } +compiled_tiling_2d = { path = "../compiled_for_gpu/tiling_2d" } compiled_isomorphic = { path = "../compiled_for_gpu/isomorphic" } # The CPU side of the isomophic implementation. isomorphic = { path = "../../shared/isomorphic" } diff --git a/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/matmul/src/lib.rs b/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/matmul/src/lib.rs index 8018479..192b2dc 100644 --- a/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/matmul/src/lib.rs +++ b/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/matmul/src/lib.rs @@ -86,7 +86,7 @@ pub mod tiling_1d_loop { } } -pub mod tiling_2d_simd { +pub mod tiling_2d { use super::*; use crate::backends::wgpu::MatrixMultiplier; diff --git a/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/matmul/src/variants.rs b/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/matmul/src/variants.rs index a2b0c33..9fd3159 100644 --- a/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/matmul/src/variants.rs +++ b/blog/2024-11-21-optimizing-matrix-mul/code/crates/cpu/matmul/src/variants.rs @@ -158,13 +158,13 @@ pub struct Tiling2dSimd; impl Display for Tiling2dSimd { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { - write!(f, "tiling_2d_simd") + write!(f, "tiling_2d") } } impl Gpu for Tiling2dSimd { fn compiled_shader(&self) -> &[u8] { - compiled_tiling_2d_simd::SHADER_BINARY + compiled_tiling_2d::SHADER_BINARY } } diff --git a/blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/tiling_2d_simd/Cargo.lock b/blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/tiling_2d/Cargo.lock similarity index 100% rename from blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/tiling_2d_simd/Cargo.lock rename to blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/tiling_2d/Cargo.lock diff --git a/blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/tiling_2d_simd/Cargo.toml b/blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/tiling_2d/Cargo.toml similarity index 87% rename from blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/tiling_2d_simd/Cargo.toml rename to blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/tiling_2d/Cargo.toml index 6ea7ef4..1bad0da 100644 --- a/blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/tiling_2d_simd/Cargo.toml +++ b/blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/tiling_2d/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "tiling_2d_simd" +name = "tiling_2d" version = "0.1.0" edition = "2021" diff --git a/blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/tiling_2d_simd/src/lib.rs b/blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/tiling_2d/src/lib.rs similarity index 100% rename from blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/tiling_2d_simd/src/lib.rs rename to blog/2024-11-21-optimizing-matrix-mul/code/crates/gpu/tiling_2d/src/lib.rs diff --git a/blog/2024-11-21-optimizing-matrix-mul/index.md b/blog/2024-11-21-optimizing-matrix-mul/index.md index 577c750..2a7d660 100644 --- a/blog/2024-11-21-optimizing-matrix-mul/index.md +++ b/blog/2024-11-21-optimizing-matrix-mul/index.md @@ -291,7 +291,7 @@ We can take this a step further and calculate 2D results per thread! Instead of calculating 4 elements per single row, we can calculate 4 elements for 4 rows (e.g. a 2D tile). -import { RustTiling2dSimd } from './snippets/tiling_2d_simd.tsx'; +import { RustTiling2d } from './snippets/tiling_2d.tsx'; diff --git a/blog/2024-11-21-optimizing-matrix-mul/snippets/tiling_2d_simd.tsx b/blog/2024-11-21-optimizing-matrix-mul/snippets/tiling_2d.tsx similarity index 92% rename from blog/2024-11-21-optimizing-matrix-mul/snippets/tiling_2d_simd.tsx rename to blog/2024-11-21-optimizing-matrix-mul/snippets/tiling_2d.tsx index 9732d6b..83732d8 100644 --- a/blog/2024-11-21-optimizing-matrix-mul/snippets/tiling_2d_simd.tsx +++ b/blog/2024-11-21-optimizing-matrix-mul/snippets/tiling_2d.tsx @@ -1,6 +1,6 @@ import React from "react"; import Snippet from "@site/src/components/Snippet"; -import RustKernelSource from "!!raw-loader!../code/crates/gpu/tiling_2d_simd/src/lib.rs"; +import RustKernelSource from "!!raw-loader!../code/crates/gpu/tiling_2d/src/lib.rs"; export const RustTiling2dSimd: React.FC = () => (