rtx-cfd legacy GPU modules: the launches that already sat in unsafe blocks are not wrapped twice
CI / Build (macos-latest) (push) Waiting to run
CI / Test (macos-latest) (push) Blocked by required conditions
CI / Test (ubuntu-latest) (push) Blocked by required conditions
CI / Python Bindings (maturin) (macos-latest) (push) Blocked by required conditions
CI / Python Bindings (maturin) (ubuntu-latest) (push) Blocked by required conditions
CI / WASM Build + Size Check (push) Blocked by required conditions
CI / Distributed Training Tests (push) Blocked by required conditions
CI / CI Success (push) Blocked by required conditions
CI / Format Check (push) Failing after 4s
Performance Benchmarks / Run Benchmarks (push) Failing after 6s
CI / Build (ubuntu-latest) (push) Failing after 6s
CI / Build CPU-Only (Explicit) (push) Failing after 4s
CI / Clippy Check (push) Failing after 10s
Documentation / Build API Documentation (push) Failing after 5s
Documentation / Build User Guide (push) Successful in 5s

This commit is contained in:
Omar Sobh
2026-09-16 07:20:51 -05:00
parent 7f4d437199
commit f429bdd415
4 changed files with 290 additions and 337 deletions
@@ -188,36 +188,31 @@ impl KEpsilonGpuModel {
};
unsafe {
unsafe {
self.kernel_manager
.stream()
.launch_builder(&func)
.arg(u)
.arg(v)
.arg(w)
.arg(&mut buffers.dudx)
.arg(&mut buffers.dudy)
.arg(&mut buffers.dudz)
.arg(&mut buffers.dvdx)
.arg(&mut buffers.dvdy)
.arg(&mut buffers.dvdz)
.arg(&mut buffers.dwdx)
.arg(&mut buffers.dwdy)
.arg(&mut buffers.dwdz)
.arg(&dx)
.arg(&dy)
.arg(&dz)
.arg(&(buffers.nx as i32))
.arg(&(buffers.ny as i32))
.arg(&(buffers.nz as i32))
.launch(config)
.map_err(|e| {
CfdError::gpu_error(&format!(
"Velocity gradients kernel launch failed: {}",
e
))
})?;
}
self.kernel_manager
.stream()
.launch_builder(&func)
.arg(u)
.arg(v)
.arg(w)
.arg(&mut buffers.dudx)
.arg(&mut buffers.dudy)
.arg(&mut buffers.dudz)
.arg(&mut buffers.dvdx)
.arg(&mut buffers.dvdy)
.arg(&mut buffers.dvdz)
.arg(&mut buffers.dwdx)
.arg(&mut buffers.dwdy)
.arg(&mut buffers.dwdz)
.arg(&dx)
.arg(&dy)
.arg(&dz)
.arg(&(buffers.nx as i32))
.arg(&(buffers.ny as i32))
.arg(&(buffers.nz as i32))
.launch(config)
.map_err(|e| {
CfdError::gpu_error(&format!("Velocity gradients kernel launch failed: {}", e))
})?;
}
self.kernel_manager.synchronize()?;
@@ -252,22 +247,20 @@ impl KEpsilonGpuModel {
};
unsafe {
unsafe {
self.kernel_manager
.stream()
.launch_builder(&func)
.arg(&buffers.k)
.arg(&buffers.epsilon)
.arg(&mut buffers.eddy_viscosity)
.arg(&self.constants.c_mu)
.arg(&(buffers.nx as i32))
.arg(&(buffers.ny as i32))
.arg(&(buffers.nz as i32))
.launch(config)
.map_err(|e| {
CfdError::gpu_error(&format!("Eddy viscosity kernel launch failed: {}", e))
})?;
}
self.kernel_manager
.stream()
.launch_builder(&func)
.arg(&buffers.k)
.arg(&buffers.epsilon)
.arg(&mut buffers.eddy_viscosity)
.arg(&self.constants.c_mu)
.arg(&(buffers.nx as i32))
.arg(&(buffers.ny as i32))
.arg(&(buffers.nz as i32))
.launch(config)
.map_err(|e| {
CfdError::gpu_error(&format!("Eddy viscosity kernel launch failed: {}", e))
})?;
}
self.kernel_manager.synchronize()?;
@@ -300,29 +293,27 @@ impl KEpsilonGpuModel {
};
unsafe {
unsafe {
self.kernel_manager
.stream()
.launch_builder(&func)
.arg(&buffers.eddy_viscosity)
.arg(&buffers.dudx)
.arg(&buffers.dudy)
.arg(&buffers.dudz)
.arg(&buffers.dvdx)
.arg(&buffers.dvdy)
.arg(&buffers.dvdz)
.arg(&buffers.dwdx)
.arg(&buffers.dwdy)
.arg(&buffers.dwdz)
.arg(&mut buffers.production)
.arg(&(buffers.nx as i32))
.arg(&(buffers.ny as i32))
.arg(&(buffers.nz as i32))
.launch(config)
.map_err(|e| {
CfdError::gpu_error(&format!("Production kernel launch failed: {}", e))
})?;
}
self.kernel_manager
.stream()
.launch_builder(&func)
.arg(&buffers.eddy_viscosity)
.arg(&buffers.dudx)
.arg(&buffers.dudy)
.arg(&buffers.dudz)
.arg(&buffers.dvdx)
.arg(&buffers.dvdy)
.arg(&buffers.dvdz)
.arg(&buffers.dwdx)
.arg(&buffers.dwdy)
.arg(&buffers.dwdz)
.arg(&mut buffers.production)
.arg(&(buffers.nx as i32))
.arg(&(buffers.ny as i32))
.arg(&(buffers.nz as i32))
.launch(config)
.map_err(|e| {
CfdError::gpu_error(&format!("Production kernel launch failed: {}", e))
})?;
}
self.kernel_manager.synchronize()?;
@@ -357,24 +348,22 @@ impl KEpsilonGpuModel {
};
unsafe {
unsafe {
self.kernel_manager
.stream()
.launch_builder(&func)
.arg(&buffers.k)
.arg(&buffers.epsilon)
.arg(&buffers.production)
.arg(&mut buffers.source_epsilon)
.arg(&self.constants.c1_epsilon)
.arg(&self.constants.c2_epsilon)
.arg(&(buffers.nx as i32))
.arg(&(buffers.ny as i32))
.arg(&(buffers.nz as i32))
.launch(config)
.map_err(|e| {
CfdError::gpu_error(&format!("Epsilon source kernel launch failed: {}", e))
})?;
}
self.kernel_manager
.stream()
.launch_builder(&func)
.arg(&buffers.k)
.arg(&buffers.epsilon)
.arg(&buffers.production)
.arg(&mut buffers.source_epsilon)
.arg(&self.constants.c1_epsilon)
.arg(&self.constants.c2_epsilon)
.arg(&(buffers.nx as i32))
.arg(&(buffers.ny as i32))
.arg(&(buffers.nz as i32))
.launch(config)
.map_err(|e| {
CfdError::gpu_error(&format!("Epsilon source kernel launch failed: {}", e))
})?;
}
self.kernel_manager.synchronize()?;
@@ -411,29 +400,25 @@ impl KEpsilonGpuModel {
};
unsafe {
unsafe {
self.kernel_manager
.stream()
.launch_builder(&func)
.arg(&mut buffers.k)
.arg(&mut buffers.epsilon)
.arg(&buffers.k_old)
.arg(&buffers.epsilon_old)
.arg(&buffers.production)
.arg(&buffers.source_epsilon)
.arg(&buffers.eddy_viscosity)
.arg(&dt)
.arg(&nu)
.arg(&self.constants.sigma_k)
.arg(&self.constants.sigma_epsilon)
.arg(&(buffers.nx as i32))
.arg(&(buffers.ny as i32))
.arg(&(buffers.nz as i32))
.launch(config)
.map_err(|e| {
CfdError::gpu_error(&format!("Update kernel launch failed: {}", e))
})?;
}
self.kernel_manager
.stream()
.launch_builder(&func)
.arg(&mut buffers.k)
.arg(&mut buffers.epsilon)
.arg(&buffers.k_old)
.arg(&buffers.epsilon_old)
.arg(&buffers.production)
.arg(&buffers.source_epsilon)
.arg(&buffers.eddy_viscosity)
.arg(&dt)
.arg(&nu)
.arg(&self.constants.sigma_k)
.arg(&self.constants.sigma_epsilon)
.arg(&(buffers.nx as i32))
.arg(&(buffers.ny as i32))
.arg(&(buffers.nz as i32))
.launch(config)
.map_err(|e| CfdError::gpu_error(&format!("Update kernel launch failed: {}", e)))?;
}
self.kernel_manager.synchronize()?;