Комментировать

Нет, я предлагаю писать два

Нет, я предлагаю писать два массива
- один смещения начала строк. Назовем его offsets
- второй - в общей длинной строке - все строки подряд (возможно, с нужным выравниванием)

И обращаться к A[offsets[i]+j] вместо A[i][j]

В обоих случаях один индирект и особой разницы по производительности не будет. Но
1) offsets - общий на девайсе и на хосте а не два комплекта указателей.
2) оно, на самом деле, более явно.
3) Нет множества аллокаций-деаллокаций.

Естественно, если массив фиксированного размера с фиксированными длинами строк, то это все не нужно, мы обсуждаем именно переменную длину.