You should contact your cruise line. There are some special provision for US/Canada cruises (also depending on type of cruise [number of stops, start and end point]).
Usually at embarkation port your passport is checked. As far I know, on worst case, you may not be able to go on land in Canada, so you will just enjoy that half day just the ship. [On some countries, just being in a ship one must have the correct document, also without going on land, Canada, as far I remember, Canada is not one of such country].
If you have Canadian visa and no PR, you can use such visa, so you should have no problems.
I do not see problems for your case. Again: you can ask the cruise line: for US there are some relaxed rules (often US citizen do not have passports, so for US departing cruises it is allowed to use other documents).
[Note: the stop on Canada is done just for taxation/operational reason: a non US-flag ship must have one foreign port. Note: "ship flag", not the country of the cruise line]