CuPy - atomicAdd error

18 views
Skip to first unread message

Hari Haran

unread,
Nov 6, 2023, 8:27:32 AM11/6/23
to CuPy User Group
Hi, I tried to use atomic add, but encountered an error. Given below is my CuPy and kernel code.


import cupy as cp
kernel_code = '''
extern "C" __global__
void form_duty_network_adjacency_list_kernel(int *input, int *output, int size, int ct) {
     
    int dp=threadIdx.x + blockIdx.x*blockDim.x;

    if(dp<size && input[dp]==true)
    {
        output[ct]=dp;
        atomicAdd(&ct,1);
    }
    __syncthreads();
}
'''


dn_adj_kernel = cp.RawKernel(kernel_code, 'form_duty_network_adjacency_list_kernel')
adj_list=[]
for i in range(len(duty_network_matrix)):
    print("Currently processing DP = ",i)
    output_array=cp.empty(len(duty_network_matrix[i]),dtype=cp.int32)
    input_array = cp.array(np.array(duty_network_matrix[i]),dtype=cp.int32)
    block=(1,)
    grid=(len(duty_network_matrix),)
    local_ctr=0
    dn_adj_kernel(grid,block,(input_array,output_array,len(duty_network_matrix),local_ctr))

    output_array_cpu = output_array.get()
    output_array=None
    adj_list.append(output_array_cpu)




Please do help.

Thanks



Reply all
Reply to author
Forward
0 new messages