I am not an OpenCL expert but looking at your code I suspect it is because you are passing a local address to a function that expects a global:
inline float Euclidean_distance(__global int* restrict array_point_A, __global int* restrict array_point_B) {
}
However, in your call to this function you have:
array_dist[i] = Euclidean_distance(X_train, mydatapoint);