Pseudo polynomial DP solution to subset sum uses the DP state:
DP(n, s) = Number of ways of getting a sum of s using first n elements of the set
And takes O(ns) time. If I want to find all the multiples of d, I am only interested in remainders of subset sums with d. Remember modulo is distributive. Therefore, I change the DP state to
DP(n, m) = Number of subsets whose sum = m mod d using the first n elements
Space reduced to O(nd) and time also O(nd)
One convention followed in the actual pseudopolynomial solution is to traverse the DP array from the end, allowing you ro use only O(s) space. That cannot be done here. The best you can do is to use O(2m) memory to store previous and current DP arrays.