简介
在优化Kernel的时候,希望某些变量是常量,例如循环的次数相关的变量。如果次数限制是常量的话,编译器就可以将循环展开。展开的循环,会省掉一些判断,从而节省一些计算时间。
C++的模版中可以使用常量。但是我又不想所有的源代码都由nvcc
来编译(其实C++的代码还是调用的host compiler),故此,我写这篇博客来提供一种方法。
代码实例
实例中有三个文件:
main.cpp
用host compiler来编译。
cuda_interfaces.cu
用nvcc
来编译。
cuda_interfaces.h
是 cuda_interfaces.cu
的接口头文件。
// main.cpp
#include <iostream>
#include "cuda_interfaces.h"
int main(int argc, char** argv){
su::gpu_func<0>();
su::gpu_func<1>();
su