Your question is rather general and I think you would be better of reading some tutorials and programming guides, they are usually more work put into those kinds of texts compared to replies in a forum like this. If you already have read such documents but still have questions, then you might want to rephase them into something more specific. Are you asking about memory access patterns, problem domain setup, kernel launching or something else?
Lets clarify some terminology. You say you have a multidimensional array and the pseduo-code snippet in your first post indicates that it is a two-dimensional array. Lets call it a matrix for short and to avoid ambiguity. Your latest post states that you want to create a separate buffer for every line in the array. This is most often a bad idea. Instead create a large buffer holding the entire matrix and use addressing expressions to find a specific row and column. The below kernel is an example of how one might let each thread of a kernel launch walk across a matrix row. Not tested so assume errors somewhere, but the idea should be correct.