You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The perf utility reported a bottleneck in this area, where it's waiting for the
'target' variable to be finalized. By computing the next value of target early,
overall performance is increased by about 3% on a small (128MB) training file.
add next_target next to target in the variable list.
Then in the two negative sampling blocks:
...
if (d == 0) {
target = word;
label = 1;
next_random = next_random * (unsigned long long)25214903917 + 11;
next_target = table[(next_random >> 16) % table_size];
} else {
target = next_target;
if (target == 0) target = next_random % (vocab_size - 1) + 1;
next_random = next_random * (unsigned long long)25214903917 + 11;
next_target = table[(next_random >> 16) % table_size];
if (target == word) continue;
label = 0;
}
...
Original issue reported on code.google.com by [email protected] on 22 Jul 2015 at 6:40
The text was updated successfully, but these errors were encountered:
Potentially disregard, might not be valid. But there are a ton of pipeline
stalls in word2vec.
One thing that might have similar effect is to move next_random's value-getting
after using the value for target.
Original issue reported on code.google.com by
[email protected]
on 22 Jul 2015 at 6:40The text was updated successfully, but these errors were encountered: