1.
__constant__和__device__ __constant__ 应该没什么区别
定义在主函数外面
2. 怎么在host上获取__constant__量:
注意 cudaMemcpyFromSymbol(&h_NX, NX, sizeof(int)); 中的第二个参数不要写&NX,否则会把NX的地址传递给 h_NX, 而不是 NX 的值。
cudaMemcpyFromSymbol | ( | void * | dst, | |
const char * | symbol, | |||
size_t | count, | |||
size_t | offset = 0 , | |||
enum cudaMemcpyKind | kind = cudaMemcpyDeviceToHost | |||
) |
注意:如果要写cudaMemcpyDeviceToHost这个参数的话,前面要写上offset这个参数,如下所示:
cudaMemcpyFromSymbol(&h_NX, NX, sizeof(int), 0, cudaMemcpyFromSymbol)
示例代码如下:(很多库不需要调用的)
#include "cuComplex.h"
#include <cufft.h>
#include <cuda_runtime.h>
#include <stdio.h>
#include<math.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <iostream>
#include <vector>
#include <cmath>
#include <iomanip>
__constant__ int NX = 16;
int main()
{
//Parameters
int h_NX;
cudaMemcpyFromSymbol(&h_NX, NX, sizeof(int));
std::cout << h_NX << " " << "\n";
return 0;
}