make number of compute threads configurable
All checks were successful
Build / build (push) Successful in 1m15s

This commit is contained in:
2025-06-06 21:24:18 +02:00
parent b4b332bdbb
commit d44538b749

View File

@ -1,4 +1,7 @@
use std::env; use std::{
env,
sync::atomic::{AtomicUsize, Ordering},
};
use axum::{ use axum::{
Router, Router,
@ -21,6 +24,8 @@ use tokio::{
time::{Duration, Instant}, time::{Duration, Instant},
}; };
static THREADS: AtomicUsize = AtomicUsize::new(1);
#[tokio::main] #[tokio::main]
async fn main() { async fn main() {
env_logger::init(); env_logger::init();
@ -32,6 +37,17 @@ async fn main() {
.route("/move", post(get_move)) .route("/move", post(get_move))
.route("/end", post(end)); .route("/end", post(end));
let threads = env::var("THREADS")
.ok()
.and_then(|threads| {
threads
.parse()
.inspect_err(|err| error!("Unable to parse number of threads: {err}"))
.ok()
})
.unwrap_or(1);
THREADS.store(threads, Ordering::Relaxed);
debug!("Creating listener"); debug!("Creating listener");
let port = env::var("PORT").unwrap_or_else(|_| "8000".into()); let port = env::var("PORT").unwrap_or_else(|_| "8000".into());
let listener = TcpListener::bind(format!("0.0.0.0:{port}")).await.unwrap(); let listener = TcpListener::bind(format!("0.0.0.0:{port}")).await.unwrap();
@ -104,7 +120,7 @@ async fn get_move(request: Json<Request>) -> response::Json<Response> {
_ => score_standard, _ => score_standard,
}; };
let action_futures = (0..3).map(|_| { let action_futures = (0..THREADS.load(Ordering::Relaxed)).map(|_| {
let request = request.clone(); let request = request.clone();
let board = board.clone(); let board = board.clone();
let mut rng = SmallRng::from_os_rng(); let mut rng = SmallRng::from_os_rng();