@@ -32,6 +32,7 @@ impl Build {
3232 self . kernels
3333 . values ( )
3434 . map ( |kernel| match kernel {
35+ Kernel :: Cpu { .. } => Backend :: Cpu ,
3536 Kernel :: Cuda { .. } => Backend :: Cuda ,
3637 Kernel :: Metal { .. } => Backend :: Metal ,
3738 Kernel :: Rocm { .. } => Backend :: Rocm ,
@@ -96,6 +97,13 @@ impl Torch {
9697#[ derive( Debug , Deserialize , Serialize ) ]
9798#[ serde( deny_unknown_fields, rename_all = "kebab-case" , tag = "backend" ) ]
9899pub enum Kernel {
100+ #[ serde( rename_all = "kebab-case" ) ]
101+ Cpu {
102+ cxx_flags : Option < Vec < String > > ,
103+ depends : Vec < Dependencies > ,
104+ include : Option < Vec < String > > ,
105+ src : Vec < String > ,
106+ } ,
99107 #[ serde( rename_all = "kebab-case" ) ]
100108 Cuda {
101109 cuda_capabilities : Option < Vec < String > > ,
@@ -135,7 +143,8 @@ pub enum Kernel {
135143impl Kernel {
136144 pub fn cxx_flags ( & self ) -> Option < & [ String ] > {
137145 match self {
138- Kernel :: Cuda { cxx_flags, .. }
146+ Kernel :: Cpu { cxx_flags, .. }
147+ | Kernel :: Cuda { cxx_flags, .. }
139148 | Kernel :: Metal { cxx_flags, .. }
140149 | Kernel :: Rocm { cxx_flags, .. }
141150 | Kernel :: Xpu { cxx_flags, .. } => cxx_flags. as_deref ( ) ,
@@ -144,7 +153,8 @@ impl Kernel {
144153
145154 pub fn include ( & self ) -> Option < & [ String ] > {
146155 match self {
147- Kernel :: Cuda { include, .. }
156+ Kernel :: Cpu { include, .. }
157+ | Kernel :: Cuda { include, .. }
148158 | Kernel :: Metal { include, .. }
149159 | Kernel :: Rocm { include, .. }
150160 | Kernel :: Xpu { include, .. } => include. as_deref ( ) ,
@@ -153,6 +163,7 @@ impl Kernel {
153163
154164 pub fn backend ( & self ) -> Backend {
155165 match self {
166+ Kernel :: Cpu { .. } => Backend :: Cpu ,
156167 Kernel :: Cuda { .. } => Backend :: Cuda ,
157168 Kernel :: Metal { .. } => Backend :: Metal ,
158169 Kernel :: Rocm { .. } => Backend :: Rocm ,
@@ -162,7 +173,8 @@ impl Kernel {
162173
163174 pub fn depends ( & self ) -> & [ Dependencies ] {
164175 match self {
165- Kernel :: Cuda { depends, .. }
176+ Kernel :: Cpu { depends, .. }
177+ | Kernel :: Cuda { depends, .. }
166178 | Kernel :: Metal { depends, .. }
167179 | Kernel :: Rocm { depends, .. }
168180 | Kernel :: Xpu { depends, .. } => depends,
@@ -171,7 +183,8 @@ impl Kernel {
171183
172184 pub fn src ( & self ) -> & [ String ] {
173185 match self {
174- Kernel :: Cuda { src, .. }
186+ Kernel :: Cpu { src, .. }
187+ | Kernel :: Cuda { src, .. }
175188 | Kernel :: Metal { src, .. }
176189 | Kernel :: Rocm { src, .. }
177190 | Kernel :: Xpu { src, .. } => src,
@@ -182,6 +195,7 @@ impl Kernel {
182195#[ derive( Clone , Copy , Debug , Deserialize , Eq , Ord , PartialEq , PartialOrd , Serialize ) ]
183196#[ serde( deny_unknown_fields, rename_all = "kebab-case" ) ]
184197pub enum Backend {
198+ Cpu ,
185199 Cuda ,
186200 Metal ,
187201 Rocm ,
@@ -191,6 +205,7 @@ pub enum Backend {
191205impl Display for Backend {
192206 fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
193207 match self {
208+ Backend :: Cpu => write ! ( f, "cpu" ) ,
194209 Backend :: Cuda => write ! ( f, "cuda" ) ,
195210 Backend :: Metal => write ! ( f, "metal" ) ,
196211 Backend :: Rocm => write ! ( f, "rocm" ) ,
@@ -204,6 +219,7 @@ impl FromStr for Backend {
204219
205220 fn from_str ( s : & str ) -> Result < Self , Self :: Err > {
206221 match s. to_lowercase ( ) . as_str ( ) {
222+ "cpu" => Ok ( Backend :: Cpu ) ,
207223 "cuda" => Ok ( Backend :: Cuda ) ,
208224 "metal" => Ok ( Backend :: Metal ) ,
209225 "rocm" => Ok ( Backend :: Rocm ) ,
0 commit comments