//TEST:SIMPLE(filecheck=CUDA): -target cuda -line-directive-mode none //TEST:SIMPLE(filecheck=TORCH): -target torch -line-directive-mode none [PyExport("Foo")] struct Foo { TensorView inValues1; TensorView inValues2; } // CUDA: __global__ void __kernel__myKernel(Foo_[[#]] {{[[:alnum:]_]+}}, TensorView {{[[:alnum:]_]+}}) [AutoPyBindCUDA] [CudaKernel] void myKernel(Foo foo, TensorView outValues) { if (cudaThreadIdx().x > 0) return; outValues.store( cudaThreadIdx().x, sin(foo.inValues1.load(cudaThreadIdx().x)) * cos(foo.inValues2.load(cudaThreadIdx().x))); } // TORCH: {{^SLANG_PRELUDE_EXPORT$}} // TORCH-NEXT: __kernel__myKernel(Foo_[[#]] {{[[:alnum:]_]+}}, TensorView {{[[:alnum:]_]+}}); // // // TORCH: {{^SLANG_PRELUDE_EXPORT$}} // TORCH-NEXT: void myKernel(std::tuple {{[[:alnum:]_]+}}, std::tuple {{[[:alnum:]_]+}}, std::tuple {{[[:alnum:]_]+}}, torch::Tensor {{[[:alnum:]_]+}}) // // TORCH: {{^SLANG_PRELUDE_EXPORT$}} // TORCH-NEXT: std::tuple, std::tuple, const char*, const char*> __funcinfo__myKernel() // // TORCH: {{^SLANG_PRELUDE_EXPORT$}} // TORCH-NEXT: std::tuple, std::tuple> __typeinfo__Foo()