24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 556  |  回复: 0

xuanyz

木虫 (小有名气)

[求助] 多个.cu文件的工程怎样声明和使用常量内存(constant)?

(1)如下仅包含一个test.cu文件的cuda程序,使用了常量内存__constant__ float num1[40]  程序可以运行没有问题:
//*****************test.cu**********************************
#include<cuda_runtime.h>  
#include<windows.h>  
#include<iostream>  
using namespace std;  
const int nMax = 50;  
  
__constant__ float num1[40];  
__global__ void exchangeKernel(float *aaa)  
{  
    int offset = threadIdx.x + blockDim.x * blockIdx.x;  
    aaa[offset] = num1[offset];  
}  
  
int main(){  
    float *devA,tmp[40],res[40];  
    cudaMalloc((void**)&devA, 40*sizeof(float));  
    for (int i = 0; i < 40; i++)tmp = i*1.5f;  
    cudaMemcpyToSymbol(num1, tmp, 40 * sizeof(float));  
    exchangeKernel << <4, 10 >> >(devA);  
    cudaMemcpy(res, devA, 40 * sizeof(float), cudaMemcpyDeviceToHost);  
    for (int i = 0; i < 40; i++){  
        cout << res << " " << endl;  
    }  
    cin >> res[1];  
    return 0;  
}  
//********************test.cu*******************************
(2)如果想将上面的一个test.cu文件拆分为两个.cu文件(如test1.cu和test2.cu)怎样继续使用 常量内存__constant__ float num1[40]
  我的大致想想法如下:
                        test1.cu内容:
//********************test1.cu*******************************
__global__ void exchangeKernel(float *aaa)  
{  
    int offset = threadIdx.x + blockDim.x * blockIdx.x;  
    aaa[offset] = num1[offset];  
}  
//********************test1.cu*******************************

                              test2.cu内容:
//********************test2.cu*******************************
#include "cuda_runtime.h"  
#include "device_launch_parameters.h"
#include<windows.h>  
#include<iostream>  
using namespace std;  
const int nMax = 50;  

__device__ __constant__ float num1[40];  //常量内存

  __global__ void exchangeKernel(float *aaa);  //函数声明
int main(){  
    float *devA,tmp[40],res[40];  
    cudaMalloc((void**)&devA, 40*sizeof(float));  
    for (int i = 0; i < 40; i++)tmp = i*1.5f;  
    cudaMemcpyToSymbol(num1, tmp, 40 * sizeof(float));  
    exchangeKernel << <4, 10 >> >(devA);  
    cudaMemcpy(res, devA, 40 * sizeof(float), cudaMemcpyDeviceToHost);  
    for (int i = 0; i < 40; i++){  
        cout << res << " " << endl;  
    }  
    cin >> res[1];  
    return 0;  
}
//********************test2.cu*******************************
(3)但我的想法没有实现(提示错误为:error : identifier "num1" is undefined),求高人指点,如何在多个.cu文件的工程中声明和使用常量内存?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xuanyz 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 324求调剂 +6 想上学求调 2026-04-02 6/300 2026-04-02 13:48 by SZW_UJN
[考研] 337求调剂 +11 《树》 2026-03-29 11/550 2026-04-02 10:20 by 不吃魚的貓
[考研] 303求调剂 +8 DLkz1314. 2026-03-30 8/400 2026-04-02 09:08 by sanrepian
[考研] 生物学327,求调剂 +5 书上的梅子 2026-04-01 6/300 2026-04-02 06:47 by ilovexiaobin
[考研] 0817化工学硕调剂 +11 努力上岸中! 2026-03-31 11/550 2026-04-01 20:30 by 赖春艳
[考研] 0710生物学考研调剂 +3 李多米lee. 2026-03-27 4/200 2026-04-01 16:21 by zzchen2000
[考研] 调剂 +3 好好读书。 2026-04-01 5/250 2026-04-01 15:39 by 好好读书。
[考研] 348求调剂 +9 zzzzyk123 2026-04-01 9/450 2026-04-01 14:24 by w虫虫123
[考研] 283求调剂 +9 A child 2026-03-28 9/450 2026-04-01 14:20 by Jaylen.
[考研] 085600,321分求调剂 +13 大馋小子 2026-03-31 13/650 2026-04-01 12:35 by chemdavid
[考研] 生物学296求调剂 +10 汤圆包 2026-03-29 14/700 2026-04-01 10:44 by 求调剂zz
[考研] 一志愿北京科技大学085601材料工程英一数二初试总分335求调剂 +5 双马尾痞老板2 2026-03-31 5/250 2026-04-01 09:04 by oooqiao
[考研] 一志愿西交大080500材料学硕349 +6 jqx1258 2026-03-31 7/350 2026-03-31 21:08 by yuq
[考研] 本2一志愿C9-333分,材料科学与工程,求调剂 +9 升升不降 2026-03-31 9/450 2026-03-31 18:01 by 无际的草原
[考研] 329求调剂,一志愿西北工业大学,材料工程(085601) +6 小小机灵虫 2026-03-29 12/600 2026-03-31 16:58 by 记事本2026
[考研] 353求调剂 +3 江上枫_26 2026-03-28 3/150 2026-03-31 15:53 by jp9609
[考研] 11408总分309,一志愿东南大学求调剂,不挑专业 +5 天赋带到THU 2026-03-29 6/300 2026-03-30 20:49 by dick_runner
[考研] 279求调剂 +4 蝶舞轻绕 2026-03-29 4/200 2026-03-29 09:45 by laoshidan
[考研] 求调剂 +7 争取九点睡 2026-03-28 8/400 2026-03-28 21:07 by 争取九点睡
[考研] 304求调剂 +6 曼殊2266 2026-03-27 6/300 2026-03-28 14:10 by 唐沐儿
信息提示
请填处理意见