我想在cuda中啓動多個內核函數,所以我聲明瞭兩個單獨的網格集合,塊名稱和每個集合的值是不同的。 e.g:啓動多個內核cuda
dim3 gridDim_1(val_1,1);
dim3 blockDim_1(val_2,val_3);
dim3 gridDim_2(val_4,1);
dim3 blockDim_2(val_5,val_6);
for(i=0;i<somenum;i++)
{
kernel_1<<<gridDim_1,blockDim_1>>>(agr1,arg2);
kernel_2<<<gridDim_2,blockDim_2>>>(agr3,arg4);
}
但是,編譯器拋出錯誤說錯誤:gridDim_1是未知的,塊和電網的其他聲明類似。那我怎麼能用這些不同的網格和塊名來啓動這兩個內核?我需要在這裏提到網格中的塊數和塊中的線程數取決於用戶的輸入。感謝您的幫助。
其實主要的代碼是非常大的,我也改變飄飛擺脫errors.I的我張貼它的一部分只有當我認爲問題在於:
int k,sim_step;
int counter_top,counter_bottom;
............
...................
for(k=0;k<=sim_step;k++)
{
dim3 gridDim(1,1);
dim3 blockDim(counter_top,1,1);
agent_movement_top<<<gridDim,blockDim>>>(args..) ;
dim3 gridDim(1,1);
dim3 blockDim(counter_bottom,1,1);
agent_movement_bot<<<gridDim,blockDim>>>(args...);
}
的那我得到電流誤差是: 錯誤LNK2001:解析外部符號_gridDim 錯誤LNK2001:解析外部符號_blockDim
請後的實際代碼和實際錯誤消息。 –
嗨!我編輯了我的帖子,並提供了有用的信息。整個代碼很大,也分爲功能。所以我只發佈了一部分。我也發佈了錯誤。請告訴我,如果您需要我更多的信息。感謝 – duttasankha
再次,請張貼*實際*代碼或正確減少它的版本,它說明了問題。你發佈的內容甚至不會編譯,更不用說到鏈接錯誤可能發生的地步。 – talonmies