+ for (uint device_id = 0; device_id < data.devices_cnt; device_id++)
+ {
+ hc_device_param_t *device_param = &devices_param[device_id];
+
+ hc_thread_create (c_threads[device_id], thread_autotune, device_param);
+ }
+
+ hc_thread_wait (data.devices_cnt, c_threads);
+
+ /*
+ * Inform user about possible slow speeds
+ */
+
+ uint kernel_power_all = 0;
+
+ for (uint device_id = 0; device_id < data.devices_cnt; device_id++)
+ {
+ hc_device_param_t *device_param = &devices_param[device_id];
+
+ kernel_power_all += device_param->kernel_power;
+ }
+
+ data.kernel_power_all = kernel_power_all;
+
+ if ((wordlist_mode == WL_MODE_FILE) || (wordlist_mode == WL_MODE_MASK))
+ {
+ if (data.words_base < kernel_power_all)
+ {
+ if (quiet == 0)
+ {
+ log_info ("ATTENTION!");
+ log_info (" The wordlist or mask you are using is too small.");
+ log_info (" Therefore, hashcat is unable to utilize the full parallelization power of your device(s).");
+ log_info (" The cracking speed will drop.");
+ log_info (" Workaround: https://hashcat.net/wiki/doku.php?id=frequently_asked_questions#how_to_create_more_work_for_full_speed");
+ log_info ("");
+ }
+ }
+ }