Skip to content

Commit 93227f6

Browse files
committed
rife cpu mode
1 parent a767725 commit 93227f6

File tree

6 files changed

+618
-18
lines changed

6 files changed

+618
-18
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ Usage: rife-ncnn-vulkan -0 infile -1 infile1 -o outfile [options]...
7272
-i input-path input image directory (jpg/png/webp)
7373
-o output-path output image path (jpg/png/webp) or directory
7474
-m model-path rife model path (default=rife-HD)
75-
-g gpu-id gpu device to use (default=auto) can be 0,1,2 for multi-gpu
75+
-g gpu-id gpu device to use (-1=cpu, default=auto) can be 0,1,2 for multi-gpu
7676
-j load:proc:save thread count for load/proc/save (default=1:2:2) can be 1:2,2,2:2 for multi-gpu
7777
-x enable tta mode
7878
-u enable UHD mode

src/main.cpp

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ static void print_usage()
110110
fprintf(stderr, " -i input-path input image directory (jpg/png/webp)\n");
111111
fprintf(stderr, " -o output-path output image path (jpg/png/webp) or directory\n");
112112
fprintf(stderr, " -m model-path rife model path (default=rife-HD)\n");
113-
fprintf(stderr, " -g gpu-id gpu device to use (default=auto) can be 0,1,2 for multi-gpu\n");
113+
fprintf(stderr, " -g gpu-id gpu device to use (-1=cpu, default=auto) can be 0,1,2 for multi-gpu\n");
114114
fprintf(stderr, " -j load:proc:save thread count for load/proc/save (default=1:2:2) can be 1:2,2,2:2 for multi-gpu\n");
115115
fprintf(stdout, " -x enable tta mode\n");
116116
fprintf(stdout, " -u enable UHD mode\n");
@@ -732,7 +732,7 @@ int main(int argc, char** argv)
732732
int gpu_count = ncnn::get_gpu_count();
733733
for (int i=0; i<use_gpu_count; i++)
734734
{
735-
if (gpuid[i] < 0 || gpuid[i] >= gpu_count)
735+
if (gpuid[i] < -1 || gpuid[i] >= gpu_count)
736736
{
737737
fprintf(stderr, "invalid gpu device\n");
738738

@@ -744,17 +744,27 @@ int main(int argc, char** argv)
744744
int total_jobs_proc = 0;
745745
for (int i=0; i<use_gpu_count; i++)
746746
{
747-
int gpu_queue_count = ncnn::get_gpu_info(gpuid[i]).compute_queue_count();
748-
jobs_proc[i] = std::min(jobs_proc[i], gpu_queue_count);
749-
total_jobs_proc += jobs_proc[i];
747+
if (gpuid[i] == -1)
748+
{
749+
jobs_proc[i] = std::min(jobs_proc[i], cpu_count);
750+
total_jobs_proc += 1;
751+
}
752+
else
753+
{
754+
int gpu_queue_count = ncnn::get_gpu_info(gpuid[i]).compute_queue_count();
755+
jobs_proc[i] = std::min(jobs_proc[i], gpu_queue_count);
756+
total_jobs_proc += jobs_proc[i];
757+
}
750758
}
751759

752760
{
753761
std::vector<RIFE*> rife(use_gpu_count);
754762

755763
for (int i=0; i<use_gpu_count; i++)
756764
{
757-
rife[i] = new RIFE(gpuid[i], tta_mode, uhd_mode);
765+
int num_threads = gpuid[i] == -1 ? jobs_proc[i] : 1;
766+
767+
rife[i] = new RIFE(gpuid[i], tta_mode, uhd_mode, num_threads);
758768

759769
rife[i]->load(modeldir);
760770
}
@@ -783,10 +793,17 @@ int main(int argc, char** argv)
783793
int total_jobs_proc_id = 0;
784794
for (int i=0; i<use_gpu_count; i++)
785795
{
786-
for (int j=0; j<jobs_proc[i]; j++)
796+
if (gpuid[i] == -1)
787797
{
788798
proc_threads[total_jobs_proc_id++] = new ncnn::Thread(proc, (void*)&ptp[i]);
789799
}
800+
else
801+
{
802+
for (int j=0; j<jobs_proc[i]; j++)
803+
{
804+
proc_threads[total_jobs_proc_id++] = new ncnn::Thread(proc, (void*)&ptp[i]);
805+
}
806+
}
790807
}
791808
}
792809

0 commit comments

Comments
 (0)