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

Совершенно согласен по сути

Однако - я не очень понимаю, как это бороть.

1. Не-coalesced чтение в EvaluateTestCase. Да - оно в цикле, который проходит по всему выражению int-by-int, но я хоть убей не могу понять, как от этого избавиться. По thread id я считаю номер выражения для вычисления и номер тест кейса для подстановки, как в это втиснуть ещё и сам обсчёт - просто не знаю.

2. Читать в shared mem я не могу - она почти всё занята стеками (я запускаю максимально возможное кол-во потоков (кратное 32) на блок в зависимости от ожидаемой макс глубины стека, вот почему я где-то выше сетовал про 32K памяти в shared mem.

Тут видимо имеет место быть сложность алгоритмическая, мой подход неоптимален в контексте GPU, но пока не понимаю, как это изменить.

Кстати, я вылизал кернел настолько, что он стал примерно в полтора раза быстрее моего атлона (был в два раза медленнее), но это всё суть ловля блох, не глобальный прорыв, а рытьё инета пока не дало результатов по параллельному обсчёту постфиксных выражений.