The constant memory declaration like that is normally a global declaration. That means that:
It is instantiated on every device visible to the CUDA runtime
It must be individually populated/initialized, on each device. Static initialization works as you expect - all device copies receive the same static initialization. For dynamic initialization, the implication here is that you need a cudaSetDevice()...cudaMemcpyToSymbol() sequence for each device in your system, that you intend to access that constant memory from.